diff options
| author | Michael Forney <mforney@mforney.org> | 2016-12-11 16:04:20 -0800 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2016-12-13 23:10:30 -0800 |
| commit | 293f5a93b77d92fd65db7f3d0df654f102e46cfb (patch) | |
| tree | 6ecd1170e3dd793862dd852814dc1b4cd5e44260 /desktop | |
| parent | 9a506a6834df01a26795cea222b410f206efa9fa (diff) | |
Move to flat package hierarchy
Note to self: never try to move submodules again
To migrate your existing submodules (more or less):
set -x
set -e
mkdir .git/modules/pkg
for old in */*/src ; do
new="pkg/${old#*/}"
if ! [ -f "$old/.git" ] || [ "${old%%/*}" = pkg ] ; then
continue
fi
git -C ".git/modules/$old" config core.worktree "../../../../../$new"
rmdir "$new"
mv "$old" "$new"
sed -e "s,$old,$new," "$new/.git" > "$new/.git.tmp"
mv "$new/.git.tmp" "$new/.git"
mkdir ".git/modules/${new%/src}"
mv ".git/modules/$old" ".git/modules/$new"
rm "${old%/src}"/*.ninja
mv "${old%/src}"/*.tar.{gz,xz,bz2} "${new%/src}/"
rmdir "${old%/src}" || true
done
sed -e 's,^\[submodule "[^/]*/,[submodule "pkg/,' .git/config > .git/config.tmp
mv .git/config.tmp .git/config
Diffstat (limited to 'desktop')
80 files changed, 0 insertions, 22855 deletions
diff --git a/desktop/dmenu/config.h b/desktop/dmenu/config.h deleted file mode 100644 index 7ed23a78..00000000 --- a/desktop/dmenu/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -/* Default settings; can be overriden by command line. */ - -static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ -/* -fn option overrides fonts[0]; default X11 font or font set */ -static const char *fonts[] = { - "Terminus:pixelsize=14" -}; -static const char *prompt = NULL; /* -p option; prompt to the left of input field */ -static const char *colors[SchemeLast][2] = { - /* fg bg */ - [SchemeNorm] = { "#999999", "#1a1a1a" }, - [SchemeSel] = { "#ffffff", "#338833" }, - [SchemeOut] = { "#000000", "#aaffaa" }, -}; -/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ -static unsigned int lines = 0; - -/* - * Characters not considered part of a word while deleting words - * for example: " /?\"&[]" - */ -static const char worddelimiters[] = " "; diff --git a/desktop/dmenu/gen.rc b/desktop/dmenu/gen.rc deleted file mode 100644 index 7500c452..00000000 --- a/desktop/dmenu/gen.rc +++ /dev/null @@ -1,32 +0,0 @@ -cflags\ - -D 'VERSION=''"4.6"''' \ - -isystem desktop/fontconfig/src\ - -isystem desktop/libxkbcommon/src\ - -isystem '$builddir'/desktop/pixman/include\ - -isystem '$builddir'/desktop/swc/include\ - -isystem '$builddir'/desktop/wayland/include\ - -isystem '$builddir'/desktop/wld/include\ - -I '$dir' - -phony deps\ - '$builddir'/desktop/^(fontconfig libxkbcommon)^/fetch.stamp\ - desktop/^(pixman swc wayland wld)^/headers - -exe dmenu -d '$dir'/deps dmenu.c drw.c util.c '$builddir'/^(\ - desktop/swc/swc-protocol.c.o\ - desktop/libxkbcommon/libxkbcommon.a\ - desktop/wld/libwld.a.d\ - desktop/fontconfig/libfontconfig.a.d\ - desktop/wayland/libwayland-client.a.d\ -) -file bin/dmenu '$outdir'/dmenu 755 -file share/man/man1/dmenu.1 '$srcdir'/dmenu.1 644 - -exe stest stest.c -file bin/stest '$outdir'/stest 755 -file share/man/man1/stest.1 '$srcdir'/stest.1 644 - -for(f in dmenu_path dmenu_run) - file bin/$f '$srcdir'/$f 755 - -fetch git diff --git a/desktop/dmenu/patch/0001-Port-to-wayland-using-wld-and-swc-panels.patch b/desktop/dmenu/patch/0001-Port-to-wayland-using-wld-and-swc-panels.patch deleted file mode 100644 index 3c059c36..00000000 --- a/desktop/dmenu/patch/0001-Port-to-wayland-using-wld-and-swc-panels.patch +++ /dev/null @@ -1,1234 +0,0 @@ -From d0d4bd1e7d5d39fe955dab33fa39d5a5115c89a7 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Thu, 27 Oct 2016 21:04:23 -0700 -Subject: [PATCH] Port to wayland using wld and swc panels - ---- - Makefile | 16 +- - config.mk | 20 +-- - dmenu.c | 540 +++++++++++++++++++++++++++++++++----------------------------- - drw.c | 123 +++++++------- - drw.h | 26 ++- - 5 files changed, 372 insertions(+), 353 deletions(-) - -diff --git a/Makefile b/Makefile -index a7cd04f..5747934 100644 ---- a/Makefile -+++ b/Makefile -@@ -3,7 +3,7 @@ - - include config.mk - --SRC = drw.c dmenu.c stest.c util.c -+SRC = drw.c dmenu.c stest.c panel-protocol.c util.c - OBJ = ${SRC:.c=.o} - - all: options dmenu stest -@@ -22,11 +22,19 @@ config.h: - @echo creating $@ from config.def.h - @cp config.def.h $@ - --${OBJ}: arg.h config.h config.mk drw.h -+swc-protocol.c: $(SWCPROTO) -+ @echo GEN $@ -+ @wayland-scanner code < $< > $@ - --dmenu: dmenu.o drw.o util.o -+swc-client-protocol.h: $(SWCPROTO) -+ @echo GEN $@ -+ @wayland-scanner client-header < $< > $@ -+ -+${OBJ}: arg.h config.h config.mk drw.h swc-client-protocol.h -+ -+dmenu: dmenu.o drw.o swc-protocol.o util.o - @echo CC -o $@ -- @${CC} -o $@ dmenu.o drw.o util.o ${LDFLAGS} -+ @${CC} -o $@ dmenu.o drw.o swc-protocol.o util.o ${LDFLAGS} - - stest: stest.o - @echo CC -o $@ -diff --git a/config.mk b/config.mk -index 4d908a5..c6416ad 100644 ---- a/config.mk -+++ b/config.mk -@@ -5,25 +5,15 @@ VERSION = 4.6 - PREFIX = /usr/local - MANPREFIX = ${PREFIX}/share/man - --X11INC = /usr/X11R6/include --X11LIB = /usr/X11R6/lib -- --# Xinerama, comment if you don't want it --XINERAMALIBS = -lXinerama --XINERAMAFLAGS = -DXINERAMA -- --# freetype --FREETYPELIBS = -lfontconfig -lXft --FREETYPEINC = /usr/include/freetype2 --# OpenBSD (uncomment) --#FREETYPEINC = ${X11INC}/freetype2 -+PIXMANINC = /usr/include/pixman-1 -+SWCPROTO = /usr/share/swc/swc.xml - - # includes and libs --INCS = -I${X11INC} -I${FREETYPEINC} --LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -+INCS = -I${PIXMANINC} -+LIBS = -lwayland-client -lxkbcommon -lwld - - # flags --CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} -+CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" - CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} - LDFLAGS = -s ${LIBS} - -diff --git a/dmenu.c b/dmenu.c -index 9278e91..9cd3c23 100644 ---- a/dmenu.c -+++ b/dmenu.c -@@ -5,18 +5,18 @@ - #include <stdlib.h> - #include <string.h> - #include <strings.h> -+#include <sys/mman.h> - #include <time.h> -+#include <unistd.h> - --#include <X11/Xlib.h> --#include <X11/Xatom.h> --#include <X11/Xutil.h> --#ifdef XINERAMA --#include <X11/extensions/Xinerama.h> --#endif --#include <X11/Xft/Xft.h> -+#include <wayland-client.h> -+#include <wld/wayland.h> -+#include <wld/wld.h> -+#include <xkbcommon/xkbcommon.h> - - #include "drw.h" - #include "util.h" -+#include "swc-client-protocol.h" - - /* macros */ - #define INTERSECT(x,y,w,h,r) (MAX(0, MIN((x)+(w),(r).x_org+(r).width) - MAX((x),(r).x_org)) \ -@@ -33,8 +33,16 @@ struct item { - int out; - }; - -+struct xkb { -+ struct xkb_context *context; -+ struct xkb_state *state; -+ struct xkb_keymap *keymap; -+ xkb_mod_index_t ctrl, alt, shift; -+}; -+ -+static void paste(void); -+ - static char text[BUFSIZ] = ""; --static char *embed; - static int bh, mw, mh; - static int inputw = 0, promptw; - static int lrpad; /* sum of left and right padding */ -@@ -42,12 +50,21 @@ static size_t cursor; - static struct item *items = NULL; - static struct item *matches, *matchend; - static struct item *prev, *curr, *next, *sel; --static int mon = -1, screen; -- --static Atom clip, utf8; --static Display *dpy; --static Window root, parentwin, win; --static XIC xic; -+static int mon = -1; -+ -+static struct wl_display *dpy; -+static struct wl_compositor *compositor; -+static struct wl_keyboard *kbd; -+static struct wl_seat *seat; -+static struct wl_shell *shell; -+static struct wl_surface *surface; -+static struct wl_data_device_manager *datadevman; -+static struct wl_data_device *datadev; -+static struct wl_data_offer *seloffer; -+static struct swc_screen *screen; -+static struct swc_panel_manager *panelman; -+static struct swc_panel *panel; -+static struct xkb xkb; - - static Drw *drw; - static Clr *scheme[SchemeLast]; -@@ -93,12 +110,10 @@ cleanup(void) - { - size_t i; - -- XUngrabKey(dpy, AnyKey, AnyModifier, root); - for (i = 0; i < SchemeLast; i++) - free(scheme[i]); - drw_free(drw); -- XSync(dpy, False); -- XCloseDisplay(dpy); -+ wl_display_disconnect(dpy); - } - - static char * -@@ -132,6 +147,7 @@ drawmenu(void) - struct item *item; - int x = 0, y = 0, w; - -+ wld_set_target_surface(drw->renderer, drw->surface); - drw_setscheme(drw, scheme[SchemeNorm]); - drw_rect(drw, 0, 0, mw, mh, 1, 1); - -@@ -171,42 +187,7 @@ drawmenu(void) - drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0); - } - } -- drw_map(drw, win, 0, 0, mw, mh); --} -- --static void --grabfocus(void) --{ -- struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; -- Window focuswin; -- int i, revertwin; -- -- for (i = 0; i < 100; ++i) { -- XGetInputFocus(dpy, &focuswin, &revertwin); -- if (focuswin == win) -- return; -- XSetInputFocus(dpy, win, RevertToParent, CurrentTime); -- nanosleep(&ts, NULL); -- } -- die("cannot grab focus"); --} -- --static void --grabkeyboard(void) --{ -- struct timespec ts = { .tv_sec = 0, .tv_nsec = 1000000 }; -- int i; -- -- if (embed) -- return; -- /* try to grab keyboard, we may have to wait for another process to ungrab */ -- for (i = 0; i < 1000; i++) { -- if (XGrabKeyboard(dpy, DefaultRootWindow(dpy), True, GrabModeAsync, -- GrabModeAsync, CurrentTime) == GrabSuccess) -- return; -- nanosleep(&ts, NULL); -- } -- die("cannot grab keyboard"); -+ drw_map(drw, surface, 0, 0, mw, mh); - } - - static void -@@ -288,88 +269,92 @@ nextrune(int inc) - } - - static void --keypress(XKeyEvent *ev) -+kbdkey(void *d, struct wl_keyboard *kbd, uint32_t serial, uint32_t time, -+ uint32_t key, uint32_t state) - { - char buf[32]; - int len; -- KeySym ksym = NoSymbol; -- Status status; -+ xkb_keysym_t ksym = XKB_KEY_NoSymbol; -+ int ctrl = xkb_state_mod_index_is_active(xkb.state, xkb.ctrl, XKB_STATE_MODS_EFFECTIVE); -+ int shift = xkb_state_mod_index_is_active(xkb.state, xkb.shift, XKB_STATE_MODS_EFFECTIVE); -+ int alt = xkb_state_mod_index_is_active(xkb.state, xkb.alt, XKB_STATE_MODS_EFFECTIVE); - -- len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status); -- if (status == XBufferOverflow) -- return; -- if (ev->state & ControlMask) -+ if (state == WL_KEYBOARD_KEY_STATE_RELEASED) -+ goto update_state; -+ -+ ksym = xkb_state_key_get_one_sym(xkb.state, key + 8); -+ len = xkb_keysym_to_utf8(ksym, buf, sizeof buf) - 1; -+ if (ctrl) - switch(ksym) { -- case XK_a: ksym = XK_Home; break; -- case XK_b: ksym = XK_Left; break; -- case XK_c: ksym = XK_Escape; break; -- case XK_d: ksym = XK_Delete; break; -- case XK_e: ksym = XK_End; break; -- case XK_f: ksym = XK_Right; break; -- case XK_g: ksym = XK_Escape; break; -- case XK_h: ksym = XK_BackSpace; break; -- case XK_i: ksym = XK_Tab; break; -- case XK_j: /* fallthrough */ -- case XK_J: /* fallthrough */ -- case XK_m: /* fallthrough */ -- case XK_M: ksym = XK_Return; ev->state &= ~ControlMask; break; -- case XK_n: ksym = XK_Down; break; -- case XK_p: ksym = XK_Up; break; -- -- case XK_k: /* delete right */ -+ case XKB_KEY_a: ksym = XKB_KEY_Home; break; -+ case XKB_KEY_b: ksym = XKB_KEY_Left; break; -+ case XKB_KEY_c: ksym = XKB_KEY_Escape; break; -+ case XKB_KEY_d: ksym = XKB_KEY_Delete; break; -+ case XKB_KEY_e: ksym = XKB_KEY_End; break; -+ case XKB_KEY_f: ksym = XKB_KEY_Right; break; -+ case XKB_KEY_g: ksym = XKB_KEY_Escape; break; -+ case XKB_KEY_h: ksym = XKB_KEY_BackSpace; break; -+ case XKB_KEY_i: ksym = XKB_KEY_Tab; break; -+ case XKB_KEY_j: /* fallthrough */ -+ case XKB_KEY_J: /* fallthrough */ -+ case XKB_KEY_m: /* fallthrough */ -+ case XKB_KEY_M: ksym = XKB_KEY_Return; ctrl = 0; break; -+ case XKB_KEY_n: ksym = XKB_KEY_Down; break; -+ case XKB_KEY_p: ksym = XKB_KEY_Up; break; -+ -+ case XKB_KEY_k: /* delete right */ - text[cursor] = '\0'; - match(); - break; -- case XK_u: /* delete left */ -+ case XKB_KEY_u: /* delete left */ - insert(NULL, 0 - cursor); - break; -- case XK_w: /* delete word */ -+ case XKB_KEY_w: /* delete word */ - while (cursor > 0 && strchr(worddelimiters, text[nextrune(-1)])) - insert(NULL, nextrune(-1) - cursor); - while (cursor > 0 && !strchr(worddelimiters, text[nextrune(-1)])) - insert(NULL, nextrune(-1) - cursor); - break; -- case XK_y: /* paste selection */ -- case XK_Y: -- XConvertSelection(dpy, (ev->state & ShiftMask) ? clip : XA_PRIMARY, -- utf8, utf8, win, CurrentTime); -+ case XKB_KEY_y: /* paste selection */ -+ case XKB_KEY_Y: -+ paste(); - return; -- case XK_Return: -- case XK_KP_Enter: -+ case XKB_KEY_Return: -+ case XKB_KEY_KP_Enter: - break; -- case XK_bracketleft: -+ case XKB_KEY_bracketleft: - cleanup(); - exit(1); - default: - return; - } -- else if (ev->state & Mod1Mask) -+ else if (alt) - switch(ksym) { -- case XK_g: ksym = XK_Home; break; -- case XK_G: ksym = XK_End; break; -- case XK_h: ksym = XK_Up; break; -- case XK_j: ksym = XK_Next; break; -- case XK_k: ksym = XK_Prior; break; -- case XK_l: ksym = XK_Down; break; -+ case XKB_KEY_g: ksym = XKB_KEY_Home; break; -+ case XKB_KEY_G: ksym = XKB_KEY_End; break; -+ case XKB_KEY_h: ksym = XKB_KEY_Up; break; -+ case XKB_KEY_j: ksym = XKB_KEY_Next; break; -+ case XKB_KEY_k: ksym = XKB_KEY_Prior; break; -+ case XKB_KEY_l: ksym = XKB_KEY_Down; break; - default: - return; - } -- switch(ksym) { -+ switch (ksym) { - default: - if (!iscntrl(*buf)) - insert(buf, len); - break; -- case XK_Delete: -+ case XKB_KEY_Delete: - if (text[cursor] == '\0') - return; - cursor = nextrune(+1); - /* fallthrough */ -- case XK_BackSpace: -+ case XKB_KEY_BackSpace: - if (cursor == 0) - return; - insert(NULL, nextrune(-1) - cursor); - break; -- case XK_End: -+ case XKB_KEY_End: - if (text[cursor] != '\0') { - cursor = strlen(text); - break; -@@ -385,10 +370,10 @@ keypress(XKeyEvent *ev) - } - sel = matchend; - break; -- case XK_Escape: -+ case XKB_KEY_Escape: - cleanup(); - exit(1); -- case XK_Home: -+ case XKB_KEY_Home: - if (sel == matches) { - cursor = 0; - break; -@@ -396,7 +381,7 @@ keypress(XKeyEvent *ev) - sel = curr = matches; - calcoffsets(); - break; -- case XK_Left: -+ case XKB_KEY_Left: - if (cursor > 0 && (!sel || !sel->left || lines > 0)) { - cursor = nextrune(-1); - break; -@@ -404,35 +389,35 @@ keypress(XKeyEvent *ev) - if (lines > 0) - return; - /* fallthrough */ -- case XK_Up: -+ case XKB_KEY_Up: - if (sel && sel->left && (sel = sel->left)->right == curr) { - curr = prev; - calcoffsets(); - } - break; -- case XK_Next: -+ case XKB_KEY_Next: - if (!next) - return; - sel = curr = next; - calcoffsets(); - break; -- case XK_Prior: -+ case XKB_KEY_Prior: - if (!prev) - return; - sel = curr = prev; - calcoffsets(); - break; -- case XK_Return: -- case XK_KP_Enter: -- puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); -- if (!(ev->state & ControlMask)) { -+ case XKB_KEY_Return: -+ case XKB_KEY_KP_Enter: -+ puts((sel && !shift) ? sel->text : text); -+ if (!ctrl) { - cleanup(); - exit(0); - } -- if (sel) -+ if(sel) - sel->out = 1; - break; -- case XK_Right: -+ case XKB_KEY_Right: - if (text[cursor] != '\0') { - cursor = nextrune(+1); - break; -@@ -440,13 +425,13 @@ keypress(XKeyEvent *ev) - if (lines > 0) - return; - /* fallthrough */ -- case XK_Down: -+ case XKB_KEY_Down: - if (sel && sel->right && (sel = sel->right) == next) { - curr = next; - calcoffsets(); - } - break; -- case XK_Tab: -+ case XKB_KEY_Tab: - if (!sel) - return; - strncpy(text, sel->text, sizeof text - 1); -@@ -456,22 +441,28 @@ keypress(XKeyEvent *ev) - break; - } - drawmenu(); -+ -+update_state: -+ xkb_state_update_key(xkb.state, key + 8, -+ state == WL_KEYBOARD_KEY_STATE_PRESSED ? XKB_KEY_DOWN : XKB_KEY_UP); - } - - static void - paste(void) - { -- char *p, *q; -- int di; -- unsigned long dl; -- Atom da; -- -- /* we have been given the current selection, now insert it into input */ -- XGetWindowProperty(dpy, win, utf8, 0, (sizeof text / 4) + 1, False, -- utf8, &da, &di, &dl, &dl, (unsigned char **)&p); -- insert(p, (q = strchr(p, '\n')) ? q - p : (ssize_t)strlen(p)); -- XFree(p); -- drawmenu(); -+ int fds[2], len; -+ char buf[BUFSIZ], *nl; -+ -+ if (seloffer) { -+ pipe(fds); -+ wl_data_offer_receive(seloffer, "text/plain", fds[1]); -+ wl_display_flush(dpy); -+ close(fds[1]); -+ while((len = read(fds[0], buf, sizeof buf)) > 0) -+ insert(buf, (nl = strchr(buf, '\n')) ? nl - buf : len); -+ close(fds[0]); -+ drawmenu(); -+ } - } - - static void -@@ -506,145 +497,203 @@ readstdin(void) - static void - run(void) - { -- XEvent ev; -+ while (wl_display_dispatch(dpy) != -1) -+ ; -+} - -- while (!XNextEvent(dpy, &ev)) { -- if (XFilterEvent(&ev, win)) -- continue; -- switch(ev.type) { -- case Expose: -- if (ev.xexpose.count == 0) -- drw_map(drw, win, 0, 0, mw, mh); -- break; -- case FocusIn: -- /* regrab focus from parent window */ -- if (ev.xfocus.window != win) -- grabfocus(); -- break; -- case KeyPress: -- keypress(&ev.xkey); -- break; -- case SelectionNotify: -- if (ev.xselection.property == utf8) -- paste(); -- break; -- case VisibilityNotify: -- if (ev.xvisibility.state != VisibilityUnobscured) -- XRaiseWindow(dpy, win); -- break; -- } -+/* wayland event handlers */ -+static void -+regglobal(void *d, struct wl_registry *r, uint32_t name, const char *interface, uint32_t version) -+{ -+ if(strcmp(interface, "wl_compositor") == 0) -+ compositor = wl_registry_bind(r, name, &wl_compositor_interface, 1); -+ else if(strcmp(interface, "wl_shell") == 0) -+ shell = wl_registry_bind(r, name, &wl_shell_interface, 1); -+ else if(strcmp(interface, "wl_seat") == 0) -+ seat = wl_registry_bind(r, name, &wl_seat_interface, 1); -+ else if(strcmp(interface, "wl_data_device_manager") == 0) -+ datadevman = wl_registry_bind(r, name, &wl_data_device_manager_interface, 1); -+ else if(strcmp(interface, "swc_panel_manager") == 0) -+ panelman = wl_registry_bind(r, name, &swc_panel_manager_interface, 1); -+ else if (strcmp(interface, "swc_screen") == 0) { -+ if (mon != -1 && mon-- == 0) -+ screen = wl_registry_bind(r, name, &swc_screen_interface, 1); - } - } - - static void -+regglobalremove(void *d, struct wl_registry *reg, uint32_t name) -+{ -+} -+ -+static const struct wl_registry_listener reglistener = { regglobal, regglobalremove }; -+ -+static void -+kbdenter(void *data, struct wl_keyboard *kbd, uint32_t serial, -+ struct wl_surface *surface, struct wl_array *keys) -+{ -+} -+ -+static void -+kbdleave(void *d, struct wl_keyboard *kbd, uint32_t serial, -+ struct wl_surface *surface) -+{ -+} -+ -+/* kbdkey is defined above to reduce merge conflicts */ -+ -+static void -+kbdkeymap(void *d, struct wl_keyboard *kbd, uint32_t format, int32_t fd, uint32_t size) -+{ -+ char *string; -+ -+ if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { -+ close(fd); -+ return; -+ } -+ -+ string = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); -+ -+ if (string == MAP_FAILED) { -+ close(fd); -+ return; -+ } -+ -+ xkb.keymap = xkb_keymap_new_from_string(xkb.context, string, -+ XKB_KEYMAP_FORMAT_TEXT_V1, 0); -+ munmap(string, size); -+ close(fd); -+ xkb.state = xkb_state_new(xkb.keymap); -+ -+ xkb.ctrl = xkb_keymap_mod_get_index(xkb.keymap, XKB_MOD_NAME_CTRL); -+ xkb.alt = xkb_keymap_mod_get_index(xkb.keymap, XKB_MOD_NAME_ALT); -+ xkb.shift = xkb_keymap_mod_get_index(xkb.keymap, XKB_MOD_NAME_SHIFT); -+} -+ -+static void -+kbdmodifiers(void *d, struct wl_keyboard *kbd, uint32_t serial, uint32_t dep, -+ uint32_t lat, uint32_t lck, uint32_t grp) -+{ -+ xkb_state_update_mask(xkb.state, dep, lat, lck, grp, 0, 0); -+} -+ -+static const struct wl_keyboard_listener kbdlistener = { -+ kbdkeymap, kbdenter, kbdleave, kbdkey, kbdmodifiers, -+}; -+ -+static void -+dataofferoffer(void *d, struct wl_data_offer *offer, const char *mimetype) -+{ -+ if (strncmp(mimetype, "text/plain", 10) == 0) -+ wl_data_offer_set_user_data(offer, (void *)(uintptr_t) 1); -+} -+ -+static const struct wl_data_offer_listener dataofferlistener = { dataofferoffer }; -+ -+static void -+datadevoffer(void *d, struct wl_data_device *datadev, struct wl_data_offer *offer) -+{ -+ wl_data_offer_add_listener(offer, &dataofferlistener, NULL); -+} -+ -+static void -+datadeventer(void *d, struct wl_data_device *datadev, uint32_t serial, -+ struct wl_surface *surface, wl_fixed_t x, wl_fixed_t y, -+ struct wl_data_offer *offer) -+{ -+} -+ -+static void -+datadevleave(void *d, struct wl_data_device *datadev) -+{ -+} -+ -+static void -+datadevmotion(void *d, struct wl_data_device *datadev, uint32_t time, -+ wl_fixed_t x, wl_fixed_t y) -+{ -+} -+ -+static void -+datadevdrop(void *d, struct wl_data_device *datadev) -+{ -+} -+ -+static void -+datadevselection(void *d, struct wl_data_device *datadev, struct wl_data_offer *offer) -+{ -+ if (offer && (uintptr_t) wl_data_offer_get_user_data(offer) == 1) -+ seloffer = offer; -+} -+ -+static const struct wl_data_device_listener datadevlistener = { -+ datadevoffer, datadeventer, datadevleave, datadevmotion, datadevdrop, -+ datadevselection, -+}; -+ -+static void -+paneldocked(void *d, struct swc_panel *panel, uint32_t length) -+{ -+ mw = length; -+} -+ -+static const struct swc_panel_listener panellistener = { paneldocked }; -+ -+static void - setup(void) - { -- int x, y; -- XSetWindowAttributes swa; -- XIM xim; --#ifdef XINERAMA -- XineramaScreenInfo *info; -- Window w, pw, dw, *dws; -- XWindowAttributes wa; -- int a, j, di, n, i = 0, area = 0; -- unsigned int du; --#endif -+ if (!compositor || !seat || !panelman) -+ exit(1); -+ -+ kbd = wl_seat_get_keyboard(seat); -+ wl_keyboard_add_listener(kbd, &kbdlistener, NULL); -+ datadev = wl_data_device_manager_get_data_device(datadevman, seat); -+ wl_data_device_add_listener(datadev, &datadevlistener, NULL); -+ -+ xkb.context = xkb_context_new(0); - - /* init appearance */ - scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 2); - scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 2); - scheme[SchemeOut] = drw_scm_create(drw, colors[SchemeOut], 2); - -- clip = XInternAtom(dpy, "CLIPBOARD", False); -- utf8 = XInternAtom(dpy, "UTF8_STRING", False); -- - /* calculate menu geometry */ -- bh = drw->fonts->h + 2; -+ bh = drw->fonts->wld->height + 2; - lines = MAX(lines, 0); - mh = (lines + 1) * bh; --#ifdef XINERAMA -- if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) { -- XGetInputFocus(dpy, &w, &di); -- if (mon >= 0 && mon < n) -- i = mon; -- else if (w != root && w != PointerRoot && w != None) { -- /* find top-level window containing current input focus */ -- do { -- if (XQueryTree(dpy, (pw = w), &dw, &w, &dws, &du) && dws) -- XFree(dws); -- } while (w != root && w != pw); -- /* find xinerama screen with which the window intersects most */ -- if (XGetWindowAttributes(dpy, pw, &wa)) -- for (j = 0; j < n; j++) -- if ((a = INTERSECT(wa.x, wa.y, wa.width, wa.height, info[j])) > area) { -- area = a; -- i = j; -- } -- } -- /* no focused window is on screen, so use pointer location instead */ -- if (mon < 0 && !area && XQueryPointer(dpy, root, &dw, &dw, &x, &y, &di, &di, &du)) -- for (i = 0; i < n; i++) -- if (INTERSECT(x, y, 1, 1, info[i])) -- break; -- -- x = info[i].x_org; -- y = info[i].y_org + (topbar ? 0 : info[i].height - mh); -- mw = info[i].width; -- XFree(info); -- } else --#endif -- { -- if (!XGetWindowAttributes(dpy, parentwin, &wa)) -- die("could not get embedding window attributes: 0x%lx", -- parentwin); -- x = 0; -- y = topbar ? 0 : wa.height - mh; -- mw = wa.width; -- } -+ -+ /* create menu surface */ -+ surface = wl_compositor_create_surface(compositor); -+ -+ panel = swc_panel_manager_create_panel(panelman, surface); -+ swc_panel_add_listener(panel, &panellistener, NULL); -+ swc_panel_dock(panel, topbar ? SWC_PANEL_EDGE_TOP : SWC_PANEL_EDGE_BOTTOM, screen, 1); -+ -+ wl_display_roundtrip(dpy); -+ if (!mw) -+ exit(1); -+ - promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; - inputw = MIN(inputw, mw/3); - match(); - -- /* create menu window */ -- swa.override_redirect = True; -- swa.background_pixel = scheme[SchemeNorm][ColBg].pixel; -- swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask; -- win = XCreateWindow(dpy, parentwin, x, y, mw, mh, 0, -- CopyFromParent, CopyFromParent, CopyFromParent, -- CWOverrideRedirect | CWBackPixel | CWEventMask, &swa); -- -- /* open input methods */ -- xim = XOpenIM(dpy, NULL, NULL, NULL); -- xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, -- XNClientWindow, win, XNFocusWindow, win, NULL); -- -- XMapRaised(dpy, win); -- if (embed) { -- XSelectInput(dpy, parentwin, FocusChangeMask); -- if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) { -- for (i = 0; i < du && dws[i] != win; ++i) -- XSelectInput(dpy, dws[i], FocusChangeMask); -- XFree(dws); -- } -- grabfocus(); -- } -- drw_resize(drw, mw, mh); -+ drw_resize(drw, surface, mw, mh); - drawmenu(); - } - - static void - usage(void) - { -- fputs("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" -- " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]\n", stderr); -+ fputs("usage: dmenu [-biv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" -+ " [-nb color] [-nf color] [-sb color] [-sf color]\n", stderr); - exit(1); - } - - int - main(int argc, char *argv[]) - { -- XWindowAttributes wa; -- int i, fast = 0; -+ struct wl_registry *reg; -+ int i; - - for (i = 1; i < argc; i++) - /* these options take no arguments */ -@@ -653,8 +702,6 @@ main(int argc, char *argv[]) - exit(0); - } else if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ - topbar = 0; -- else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ -- fast = 1; - else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ - fstrncmp = strncasecmp; - fstrstr = cistrstr; -@@ -677,34 +724,23 @@ main(int argc, char *argv[]) - colors[SchemeSel][ColBg] = argv[++i]; - else if (!strcmp(argv[i], "-sf")) /* selected foreground color */ - colors[SchemeSel][ColFg] = argv[++i]; -- else if (!strcmp(argv[i], "-w")) /* embedding window id */ -- embed = argv[++i]; - else - usage(); - -- if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) -+ if (!setlocale(LC_CTYPE, "")) - fputs("warning: no locale support\n", stderr); -- if (!(dpy = XOpenDisplay(NULL))) -+ if (!(dpy = wl_display_connect(NULL))) - die("cannot open display"); -- screen = DefaultScreen(dpy); -- root = RootWindow(dpy, screen); -- if (!embed || !(parentwin = strtol(embed, NULL, 0))) -- parentwin = root; -- if (!XGetWindowAttributes(dpy, parentwin, &wa)) -- die("could not get embedding window attributes: 0x%lx", -- parentwin); -- drw = drw_create(dpy, screen, root, wa.width, wa.height); -+ if (!(reg = wl_display_get_registry(dpy))) -+ die("cannot get registry"); -+ wl_registry_add_listener(reg, ®listener, NULL); -+ wl_display_roundtrip(dpy); -+ drw = drw_create(dpy); - if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) - die("no fonts could be loaded."); -- lrpad = drw->fonts->h; -- -- if (fast) { -- grabkeyboard(); -- readstdin(); -- } else { -- readstdin(); -- grabkeyboard(); -- } -+ lrpad = drw->fonts->wld->height; -+ -+ readstdin(); - setup(); - run(); - -diff --git a/drw.c b/drw.c -index c1582e7..b6e6d33 100644 ---- a/drw.c -+++ b/drw.c -@@ -2,8 +2,9 @@ - #include <stdio.h> - #include <stdlib.h> - #include <string.h> --#include <X11/Xlib.h> --#include <X11/Xft/Xft.h> -+#include <wayland-client.h> -+#include <wld/wld.h> -+#include <wld/wayland.h> - - #include "drw.h" - #include "util.h" -@@ -61,40 +62,33 @@ utf8decode(const char *c, long *u, size_t clen) - } - - Drw * --drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h) -+drw_create(struct wl_display *dpy) - { - Drw *drw = ecalloc(1, sizeof(Drw)); - - drw->dpy = dpy; -- drw->screen = screen; -- drw->root = root; -- drw->w = w; -- drw->h = h; -- drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen)); -- drw->gc = XCreateGC(dpy, root, 0, NULL); -- XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter); -+ drw->ctx = wld_wayland_create_context(dpy, WLD_ANY); -+ drw->renderer = wld_create_renderer(drw->ctx); -+ drw->fontctx = wld_font_create_context(); - - return drw; - } - - void --drw_resize(Drw *drw, unsigned int w, unsigned int h) -+drw_resize(Drw *drw, struct wl_surface *surface, unsigned int w, unsigned int h) - { -- if (!drw) -- return; -- -- drw->w = w; -- drw->h = h; -- if (drw->drawable) -- XFreePixmap(drw->dpy, drw->drawable); -- drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen)); -+ if (drw->surface) -+ wld_destroy_surface(drw->surface); -+ drw->surface = wld_wayland_create_surface(drw->ctx, w, h, WLD_FORMAT_XRGB8888, 0, surface); - } - - void - drw_free(Drw *drw) - { -- XFreePixmap(drw->dpy, drw->drawable); -- XFreeGC(drw->dpy, drw->gc); -+ wld_destroy_surface(drw->surface); -+ wld_destroy_renderer(drw->renderer); -+ wld_destroy_context(drw->ctx); -+ wld_font_destroy_context(drw->fontctx); - free(drw); - } - -@@ -102,10 +96,10 @@ drw_free(Drw *drw) - * drw_fontset_create instead. - */ - static Fnt * --xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) -+wldfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) - { - Fnt *font; -- XftFont *xfont = NULL; -+ struct wld_font *wld = NULL; - FcPattern *pattern = NULL; - - if (fontname) { -@@ -114,17 +108,17 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) - * FcNameParse; using the latter results in the desired fallback - * behaviour whereas the former just results in missing-character - * rectangles being drawn, at least with some fonts. */ -- if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) { -+ if (!(wld = wld_font_open_name(drw->fontctx, fontname))) { - fprintf(stderr, "error, cannot load font from name: '%s'\n", fontname); - return NULL; - } - if (!(pattern = FcNameParse((FcChar8 *) fontname))) { - fprintf(stderr, "error, cannot parse font name to pattern: '%s'\n", fontname); -- XftFontClose(drw->dpy, xfont); -+ wld_font_close(wld); - return NULL; - } - } else if (fontpattern) { -- if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) { -+ if (!(wld = wld_font_open_pattern(drw->fontctx, fontpattern))) { - fprintf(stderr, "error, cannot load font from pattern.\n"); - return NULL; - } -@@ -133,22 +127,20 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) - } - - font = ecalloc(1, sizeof(Fnt)); -- font->xfont = xfont; -+ font->wld = wld; - font->pattern = pattern; -- font->h = xfont->ascent + xfont->descent; -- font->dpy = drw->dpy; - - return font; - } - - static void --xfont_free(Fnt *font) -+wldfont_free(Fnt *font) - { - if (!font) - return; - if (font->pattern) - FcPatternDestroy(font->pattern); -- XftFontClose(font->dpy, font->xfont); -+ wld_font_close(font->wld); - free(font); - } - -@@ -162,7 +154,7 @@ drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount) - return NULL; - - for (i = 1; i <= fontcount; i++) { -- if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) { -+ if ((cur = wldfont_create(drw, fonts[fontcount - i], NULL))) { - cur->next = ret; - ret = cur; - } -@@ -175,7 +167,7 @@ drw_fontset_free(Fnt *font) - { - if (font) { - drw_fontset_free(font->next); -- xfont_free(font); -+ wldfont_free(font); - } - } - -@@ -184,10 +176,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) - { - if (!drw || !dest || !clrname) - return; -- -- if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), -- DefaultColormap(drw->dpy, drw->screen), -- clrname, dest)) -+ if (!(wld_lookup_named_color(clrname, dest))) - die("error, cannot allocate color '%s'", clrname); - } - -@@ -200,7 +189,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) - Clr *ret; - - /* need at least two colors for a scheme */ -- if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) -+ if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(*ret)))) - return NULL; - - for (i = 0; i < clrcount; i++) -@@ -227,11 +216,15 @@ drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int - { - if (!drw || !drw->scheme) - return; -- XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel); -+ Clr color = invert ? drw->scheme[ColBg] : drw->scheme[ColFg]; - if (filled) -- XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); -- else -- XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1); -+ wld_fill_rectangle(drw->renderer, color, x, y, w, h); -+ else { -+ wld_fill_rectangle(drw->renderer, color, x, y, w, 1); -+ wld_fill_rectangle(drw->renderer, color, x + w - 1, y + 1, 1, h - 2); -+ wld_fill_rectangle(drw->renderer, color, x, y + 1, 1, h - 2); -+ wld_fill_rectangle(drw->renderer, color, x, y - 1, w, 1); -+ } - } - - int -@@ -240,7 +233,6 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - char buf[1024]; - int ty; - unsigned int ew; -- XftDraw *d = NULL; - Fnt *usedfont, *curfont, *nextfont; - size_t i, len; - int utf8strlen, utf8charlen, render = x || y || w || h; -@@ -249,7 +241,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - FcCharSet *fccharset; - FcPattern *fcpattern; - FcPattern *match; -- XftResult result; -+ FcResult result; - int charexists = 0; - - if (!drw || (render && !drw->scheme) || !text || !drw->fonts) -@@ -258,11 +250,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - if (!render) { - w = ~w; - } else { -- XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel); -- XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); -- d = XftDrawCreate(drw->dpy, drw->drawable, -- DefaultVisual(drw->dpy, drw->screen), -- DefaultColormap(drw->dpy, drw->screen)); -+ wld_fill_rectangle(drw->renderer, drw->scheme[invert ? ColFg : ColBg], x, y, w, h); - x += lpad; - w -= lpad; - } -@@ -275,7 +263,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - while (*text) { - utf8charlen = utf8decode(text, &utf8codepoint, UTF_SIZ); - for (curfont = drw->fonts; curfont; curfont = curfont->next) { -- charexists = charexists || XftCharExists(drw->dpy, curfont->xfont, utf8codepoint); -+ charexists = charexists || wld_font_ensure_char(curfont->wld, utf8codepoint); - if (charexists) { - if (curfont == usedfont) { - utf8strlen += utf8charlen; -@@ -307,9 +295,9 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - ; /* NOP */ - - if (render) { -- ty = y + (h - usedfont->h) / 2 + usedfont->xfont->ascent; -- XftDrawStringUtf8(d, &drw->scheme[invert ? ColBg : ColFg], -- usedfont->xfont, x, ty, (XftChar8 *)buf, len); -+ ty = y + (h - usedfont->wld->height) / 2 + usedfont->wld->ascent; -+ wld_draw_text(drw->renderer, usedfont->wld, drw->scheme[invert ? ColBg : ColFg], -+ x, ty, buf, len, NULL); - } - x += ew; - w -= ew; -@@ -330,7 +318,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - FcCharSetAddChar(fccharset, utf8codepoint); - - if (!drw->fonts->pattern) { -- /* Refer to the comment in xfont_create for more information. */ -+ /* Refer to the comment in wldfont_create for more information. */ - die("the first font in the cache must be loaded from a font string."); - } - -@@ -340,38 +328,37 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp - - FcConfigSubstitute(NULL, fcpattern, FcMatchPattern); - FcDefaultSubstitute(fcpattern); -- match = XftFontMatch(drw->dpy, drw->screen, fcpattern, &result); -+ match = FcFontMatch(NULL, fcpattern, &result); - - FcCharSetDestroy(fccharset); - FcPatternDestroy(fcpattern); - - if (match) { -- usedfont = xfont_create(drw, NULL, match); -- if (usedfont && XftCharExists(drw->dpy, usedfont->xfont, utf8codepoint)) { -+ usedfont = wldfont_create(drw, NULL, match); -+ if (usedfont && wld_font_ensure_char(usedfont->wld, utf8codepoint)) { - for (curfont = drw->fonts; curfont->next; curfont = curfont->next) - ; /* NOP */ - curfont->next = usedfont; - } else { -- xfont_free(usedfont); -+ wldfont_free(usedfont); - usedfont = drw->fonts; - } - } - } - } -- if (d) -- XftDrawDestroy(d); - - return x + (render ? w : 0); - } - - void --drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h) -+drw_map(Drw *drw, struct wl_surface *surface, int x, int y, unsigned int w, unsigned int h) - { - if (!drw) - return; - -- XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y); -- XSync(drw->dpy, False); -+ wl_surface_damage(surface, x, y, w, h); -+ wld_flush(drw->renderer); -+ wld_swap(drw->surface); - } - - unsigned int -@@ -385,18 +372,19 @@ drw_fontset_getwidth(Drw *drw, const char *text) - void - drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) - { -- XGlyphInfo ext; -+ struct wld_extents ext; - - if (!font || !text) - return; - -- XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext); -+ wld_font_text_extents_n(font->wld, text, len, &ext); - if (w) -- *w = ext.xOff; -+ *w = ext.advance; - if (h) -- *h = font->h; -+ *h = font->wld->height; - } - -+#if 0 - Cur * - drw_cur_create(Drw *drw, int shape) - { -@@ -419,3 +407,4 @@ drw_cur_free(Drw *drw, Cur *cursor) - XFreeCursor(drw->dpy, cursor->cursor); - free(cursor); - } -+#endif -diff --git a/drw.h b/drw.h -index 4c67419..1f1967e 100644 ---- a/drw.h -+++ b/drw.h -@@ -1,34 +1,30 @@ - /* See LICENSE file for copyright and license details. */ - --typedef struct { -- Cursor cursor; --} Cur; -+typedef void Cur; - - typedef struct Fnt { -- Display *dpy; -- unsigned int h; -- XftFont *xfont; -+ struct wld_font *wld; - FcPattern *pattern; - struct Fnt *next; - } Fnt; - - enum { ColFg, ColBg }; /* Clr scheme index */ --typedef XftColor Clr; -+typedef uint32_t Clr; - - typedef struct { - unsigned int w, h; -- Display *dpy; -- int screen; -- Window root; -- Drawable drawable; -- GC gc; -+ struct wl_display *dpy; -+ struct wld_context *ctx; -+ struct wld_renderer *renderer; -+ struct wld_surface *surface; -+ struct wld_font_context *fontctx; - Clr *scheme; - Fnt *fonts; - } Drw; - - /* Drawable abstraction */ --Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h); --void drw_resize(Drw *drw, unsigned int w, unsigned int h); -+Drw *drw_create(struct wl_display *dpy); -+void drw_resize(Drw *drw, struct wl_surface *surface, unsigned int w, unsigned int h); - void drw_free(Drw *drw); - - /* Fnt abstraction */ -@@ -54,4 +50,4 @@ void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled - int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert); - - /* Map functions */ --void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h); -+void drw_map(Drw *drw, struct wl_surface *surface, int x, int y, unsigned int w, unsigned int h); --- -2.10.1 - diff --git a/desktop/dmenu/rev b/desktop/dmenu/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/dmenu/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/dmenu/src b/desktop/dmenu/src deleted file mode 160000 -Subproject a9a5c6cc2d7d55ed7e556a4fe9d75307c6df2e8 diff --git a/desktop/expat/expat_config.h b/desktop/expat/expat_config.h deleted file mode 100644 index 2fb97f3c..00000000 --- a/desktop/expat/expat_config.h +++ /dev/null @@ -1,22 +0,0 @@ -#include <config-posix.h> - -#define BYTEORDER 1234 -#define HAVE_BCOPY 1 -#define HAVE_GETPAGESIZE 1 -#define HAVE_MEMORY_H 1 -#define HAVE_SYS_PARAM_H 1 -#define LT_OBJDIR ".libs/" -#define PACKAGE_BUGREPORT "expat-bugs@libexpat.org" -#define PACKAGE_NAME "expat" -#define PACKAGE_STRING "expat 2.2.0" -#define PACKAGE_TARNAME "expat" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "2.2.0" -/* #undef WORDS_BIGENDIAN */ -#define XML_CONTEXT_BYTES 1024 -#define XML_DTD 1 -#define XML_NS 1 -/* #undef __func__ */ -/* #undef const */ -/* #undef off_t */ -/* #undef size_t */ diff --git a/desktop/expat/gen.rc b/desktop/expat/gen.rc deleted file mode 100644 index e1bb03c8..00000000 --- a/desktop/expat/gen.rc +++ /dev/null @@ -1,12 +0,0 @@ -cflags\ - -D HAVE_EXPAT_CONFIG_H\ - -I include\ - -I '$dir' - -lib libexpat.a expat/lib/^(xmlparse.c xmltok.c xmlrole.c) - -hdrs=(expat.h expat_external.h) -for(hdr in $hdrs) build '$outdir'/include/$hdr copy '$srcdir'/expat/lib/$hdr -phony headers '$outdir'/include/$hdrs - -fetch git diff --git a/desktop/expat/rev b/desktop/expat/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/expat/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/expat/src b/desktop/expat/src deleted file mode 160000 -Subproject fbc46fa2be307280648147543c053d05910f7a8 diff --git a/desktop/fontconfig/config.h b/desktop/fontconfig/config.h deleted file mode 100644 index e650a6ba..00000000 --- a/desktop/fontconfig/config.h +++ /dev/null @@ -1,108 +0,0 @@ -#include <config-posix.h> - -#define FC_CACHEDIR "/var/cache/fontconfig" -#define FONTCONFIG_PATH "/etc/fonts" - -/* #undef AC_APPLE_UNIVERSAL_BUILD */ -#define ALIGNOF_DOUBLE 8 -#define ALIGNOF_VOID_P 8 -/* #undef ENABLE_LIBXML2 */ -#define FC_ADD_FONTS "yes" -/* #undef FC_ARCHITECTURE */ -#define FC_DEFAULT_FONTS "/share/fonts" -#define FLEXIBLE_ARRAY_MEMBER /**/ -/* #undef HAVE_DOPRNT */ -#define HAVE_FSTATFS 1 -#define HAVE_FT_BITMAP_SIZE_Y_PPEM 1 -#define HAVE_FT_GET_BDF_PROPERTY 1 -#define HAVE_FT_GET_NEXT_CHAR 1 -#define HAVE_FT_GET_PS_FONT_INFO 1 -#define HAVE_FT_GET_X11_FONT_FORMAT 1 -#define HAVE_FT_HAS_PS_GLYPH_NAMES 1 -#define HAVE_FT_SELECT_SIZE 1 -/* #undef HAVE_GETEXECNAME */ -#define HAVE_GETOPT_LONG 1 -#define HAVE_GETPAGESIZE 1 -/* #undef HAVE_GETPROGNAME */ -#define HAVE_INTEL_ATOMIC_PRIMITIVES 1 -#define HAVE_MEMORY_H 1 -#define HAVE_MKOSTEMP 1 -/* #undef HAVE_NDIR_H */ -#define HAVE_PTHREAD 1 -#define HAVE_PTHREAD_PRIO_INHERIT 1 -/* #undef HAVE_RANDOM_R */ -/* #undef HAVE_SOLARIS_ATOMIC_OPS */ -#define HAVE_STRUCT_DIRENT_D_TYPE 1 -#define HAVE_STRUCT_STATFS_F_FLAGS 1 -/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ -/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */ -/* #undef HAVE_STRUCT_STATVFS_F_FSTYPENAME */ -#define HAVE_STRUCT_STAT_ST_MTIM 1 -/* #undef HAVE_SYS_DIR_H */ -#define HAVE_SYS_MOUNT_H 1 -/* #undef HAVE_SYS_NDIR_H */ -#define HAVE_SYS_PARAM_H 1 -#define HAVE_SYS_STATFS_H 1 -#define HAVE_SYS_VFS_H 1 -#define HAVE_TT_OS2_USLOWEROPTICALPOINTSIZE 1 -#define HAVE_TT_OS2_USUPPEROPTICALPOINTSIZE 1 -/* Can use #warning in C files */ -#define HAVE_WARNING_CPP_DIRECTIVE 1 -/* #undef HAVE_XMLPARSE_H */ -#define HAVE_XML_SETDOCTYPEDECLHANDLER 1 -/* #undef HAVE__MKTEMP_S */ -#define LT_OBJDIR ".libs/" -#define PACKAGE "fontconfig" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig" -#define PACKAGE_NAME "fontconfig" -#define PACKAGE_STRING "fontconfig 2.12.1" -#define PACKAGE_TARNAME "fontconfig" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "2.12.1" -/* #undef PTHREAD_CREATE_JOINABLE */ -/* #undef SIZEOF_CHAR */ -/* #undef SIZEOF_INT */ -/* #undef SIZEOF_LONG */ -/* #undef SIZEOF_SHORT */ -/* #undef SIZEOF_VOIDP */ -#define SIZEOF_VOID_P 8 -#define USE_ICONV 0 -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -#define VERSION "2.12.1" -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif -/* #undef _FILE_OFFSET_BITS */ -/* #undef _LARGE_FILES */ -/* #undef _MINIX */ -/* #undef _POSIX_1_SOURCE */ -/* #undef _POSIX_SOURCE */ -/* #undef const */ -#ifndef __cplusplus -/* #undef inline */ -#endif -/* #undef pid_t */ -#include "config-fixups.h" diff --git a/desktop/fontconfig/gen.rc b/desktop/fontconfig/gen.rc deleted file mode 100644 index 7dbf56b4..00000000 --- a/desktop/fontconfig/gen.rc +++ /dev/null @@ -1,58 +0,0 @@ -cflags\ - -D HAVE_CONFIG_H\ - -isystem '$builddir'/desktop/expat/include\ - -isystem desktop/freetype/src/include\ - -I include\ - -I '$dir' \ - -I '$outdir' \ - -I '$srcdir' - -deps=(desktop/expat/headers '$builddir'/desktop/freetype/fetch.stamp) - -rule makealias '$srcdir/src/makealias $srcdir/src $out $in' -fn makealias { - outs='$outdir'/^($1.h $1^tail.h) - deps=($deps $outs) - shift - build $"outs makealias '$srcdir'/$* '|' '$srcdir'/src/makealias -} - -makealias fcalias fontconfig/^(fontconfig.h fcprivate.h) src/fcdeprecate.h -makealias fcftalias fontconfig/fcfreetype.h - -phony deps $deps - -lib libfontconfig.a -d '$dir'/deps src/^(\ - fcatomic.c\ - fcblanks.c\ - fccache.c\ - fccfg.c\ - fccharset.c\ - fccompat.c\ - fcdbg.c\ - fcdefault.c\ - fcdir.c\ - fcformat.c\ - fcfreetype.c\ - fcfs.c\ - fcinit.c\ - fclang.c\ - fclist.c\ - fcmatch.c\ - fcmatrix.c\ - fcname.c\ - fcobjs.c\ - fcpat.c\ - fcrange.c\ - fcserialize.c\ - fcstat.c\ - fcstr.c\ - fcweight.c\ - fcxml.c\ - ftglue.c\ -) '$builddir'/^(\ - desktop/expat/libexpat.a\ - desktop/freetype/libfreetype.a.d\ -) - -fetch git diff --git a/desktop/fontconfig/patch/0001-Add-generated-sources-from-fontconfig-2.12.1-distrib.patch b/desktop/fontconfig/patch/0001-Add-generated-sources-from-fontconfig-2.12.1-distrib.patch deleted file mode 100644 index 8641d294..00000000 --- a/desktop/fontconfig/patch/0001-Add-generated-sources-from-fontconfig-2.12.1-distrib.patch +++ /dev/null @@ -1,10304 +0,0 @@ -From cd328e9d084bf3e547e2e0fa0bd7d4b187f21982 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Fri, 21 Oct 2016 00:09:21 -0700 -Subject: [PATCH] Add generated sources from fontconfig-2.12.1 distribution - archive - ---- - fc-blanks/fcblanks.h | 4223 ++++++++++++++++++++++++++++++++++++++++ - fc-case/fccase.h | 354 ++++ - fc-glyphname/fcglyphname.h | 781 ++++++++ - fc-lang/fclang.h | 4549 ++++++++++++++++++++++++++++++++++++++++++++ - src/fcobjshash.h | 328 ++++ - src/fcstdint.h | 9 + - 6 files changed, 10244 insertions(+) - create mode 100644 fc-blanks/fcblanks.h - create mode 100644 fc-case/fccase.h - create mode 100644 fc-glyphname/fcglyphname.h - create mode 100644 fc-lang/fclang.h - create mode 100644 src/fcobjshash.h - create mode 100644 src/fcstdint.h - -diff --git a/fc-blanks/fcblanks.h b/fc-blanks/fcblanks.h -new file mode 100644 -index 0000000..51ba34d ---- /dev/null -+++ b/fc-blanks/fcblanks.h -@@ -0,0 +1,4223 @@ -+/* -+ * fontconfig/fc-blanks/fcblanks.tmpl.h -+ * -+ * 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 the author(s) not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. The authors make no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL THE AUTHOR(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. -+ */ -+ -+static FcChar32 _fcBlanks[4191] = { -+ 0x0020 , -+ 0x00a0 , -+ 0x00ad , -+ 0x034f , -+ 0x061c , -+ 0x115f , -+ 0x1160 , -+ 0x1680 , -+ 0x17b4 , -+ 0x17b5 , -+ 0x180b , -+ 0x180c , -+ 0x180d , -+ 0x180e , -+ 0x2000 , -+ 0x2001 , -+ 0x2002 , -+ 0x2003 , -+ 0x2004 , -+ 0x2005 , -+ 0x2006 , -+ 0x2007 , -+ 0x2008 , -+ 0x2009 , -+ 0x200a , -+ 0x200b , -+ 0x200c , -+ 0x200d , -+ 0x200e , -+ 0x200f , -+ 0x202a , -+ 0x202b , -+ 0x202c , -+ 0x202d , -+ 0x202e , -+ 0x202f , -+ 0x205f , -+ 0x2060 , -+ 0x2061 , -+ 0x2062 , -+ 0x2063 , -+ 0x2064 , -+ 0x2065 , -+ 0x2066 , -+ 0x2067 , -+ 0x2068 , -+ 0x2069 , -+ 0x206a , -+ 0x206b , -+ 0x206c , -+ 0x206d , -+ 0x206e , -+ 0x206f , -+ 0x2800 , -+ 0x3000 , -+ 0x3164 , -+ 0xfe00 , -+ 0xfe01 , -+ 0xfe02 , -+ 0xfe03 , -+ 0xfe04 , -+ 0xfe05 , -+ 0xfe06 , -+ 0xfe07 , -+ 0xfe08 , -+ 0xfe09 , -+ 0xfe0a , -+ 0xfe0b , -+ 0xfe0c , -+ 0xfe0d , -+ 0xfe0e , -+ 0xfe0f , -+ 0xfeff , -+ 0xffa0 , -+ 0xfff0 , -+ 0xfff1 , -+ 0xfff2 , -+ 0xfff3 , -+ 0xfff4 , -+ 0xfff5 , -+ 0xfff6 , -+ 0xfff7 , -+ 0xfff8 , -+ 0x1bca0 , -+ 0x1bca1 , -+ 0x1bca2 , -+ 0x1bca3 , -+ 0x1d173 , -+ 0x1d174 , -+ 0x1d175 , -+ 0x1d176 , -+ 0x1d177 , -+ 0x1d178 , -+ 0x1d179 , -+ 0x1d17a , -+ 0xe0000 , -+ 0xe0001 , -+ 0xe0002 , -+ 0xe0003 , -+ 0xe0004 , -+ 0xe0005 , -+ 0xe0006 , -+ 0xe0007 , -+ 0xe0008 , -+ 0xe0009 , -+ 0xe000a , -+ 0xe000b , -+ 0xe000c , -+ 0xe000d , -+ 0xe000e , -+ 0xe000f , -+ 0xe0010 , -+ 0xe0011 , -+ 0xe0012 , -+ 0xe0013 , -+ 0xe0014 , -+ 0xe0015 , -+ 0xe0016 , -+ 0xe0017 , -+ 0xe0018 , -+ 0xe0019 , -+ 0xe001a , -+ 0xe001b , -+ 0xe001c , -+ 0xe001d , -+ 0xe001e , -+ 0xe001f , -+ 0xe0020 , -+ 0xe0021 , -+ 0xe0022 , -+ 0xe0023 , -+ 0xe0024 , -+ 0xe0025 , -+ 0xe0026 , -+ 0xe0027 , -+ 0xe0028 , -+ 0xe0029 , -+ 0xe002a , -+ 0xe002b , -+ 0xe002c , -+ 0xe002d , -+ 0xe002e , -+ 0xe002f , -+ 0xe0030 , -+ 0xe0031 , -+ 0xe0032 , -+ 0xe0033 , -+ 0xe0034 , -+ 0xe0035 , -+ 0xe0036 , -+ 0xe0037 , -+ 0xe0038 , -+ 0xe0039 , -+ 0xe003a , -+ 0xe003b , -+ 0xe003c , -+ 0xe003d , -+ 0xe003e , -+ 0xe003f , -+ 0xe0040 , -+ 0xe0041 , -+ 0xe0042 , -+ 0xe0043 , -+ 0xe0044 , -+ 0xe0045 , -+ 0xe0046 , -+ 0xe0047 , -+ 0xe0048 , -+ 0xe0049 , -+ 0xe004a , -+ 0xe004b , -+ 0xe004c , -+ 0xe004d , -+ 0xe004e , -+ 0xe004f , -+ 0xe0050 , -+ 0xe0051 , -+ 0xe0052 , -+ 0xe0053 , -+ 0xe0054 , -+ 0xe0055 , -+ 0xe0056 , -+ 0xe0057 , -+ 0xe0058 , -+ 0xe0059 , -+ 0xe005a , -+ 0xe005b , -+ 0xe005c , -+ 0xe005d , -+ 0xe005e , -+ 0xe005f , -+ 0xe0060 , -+ 0xe0061 , -+ 0xe0062 , -+ 0xe0063 , -+ 0xe0064 , -+ 0xe0065 , -+ 0xe0066 , -+ 0xe0067 , -+ 0xe0068 , -+ 0xe0069 , -+ 0xe006a , -+ 0xe006b , -+ 0xe006c , -+ 0xe006d , -+ 0xe006e , -+ 0xe006f , -+ 0xe0070 , -+ 0xe0071 , -+ 0xe0072 , -+ 0xe0073 , -+ 0xe0074 , -+ 0xe0075 , -+ 0xe0076 , -+ 0xe0077 , -+ 0xe0078 , -+ 0xe0079 , -+ 0xe007a , -+ 0xe007b , -+ 0xe007c , -+ 0xe007d , -+ 0xe007e , -+ 0xe007f , -+ 0xe0080 , -+ 0xe0081 , -+ 0xe0082 , -+ 0xe0083 , -+ 0xe0084 , -+ 0xe0085 , -+ 0xe0086 , -+ 0xe0087 , -+ 0xe0088 , -+ 0xe0089 , -+ 0xe008a , -+ 0xe008b , -+ 0xe008c , -+ 0xe008d , -+ 0xe008e , -+ 0xe008f , -+ 0xe0090 , -+ 0xe0091 , -+ 0xe0092 , -+ 0xe0093 , -+ 0xe0094 , -+ 0xe0095 , -+ 0xe0096 , -+ 0xe0097 , -+ 0xe0098 , -+ 0xe0099 , -+ 0xe009a , -+ 0xe009b , -+ 0xe009c , -+ 0xe009d , -+ 0xe009e , -+ 0xe009f , -+ 0xe00a0 , -+ 0xe00a1 , -+ 0xe00a2 , -+ 0xe00a3 , -+ 0xe00a4 , -+ 0xe00a5 , -+ 0xe00a6 , -+ 0xe00a7 , -+ 0xe00a8 , -+ 0xe00a9 , -+ 0xe00aa , -+ 0xe00ab , -+ 0xe00ac , -+ 0xe00ad , -+ 0xe00ae , -+ 0xe00af , -+ 0xe00b0 , -+ 0xe00b1 , -+ 0xe00b2 , -+ 0xe00b3 , -+ 0xe00b4 , -+ 0xe00b5 , -+ 0xe00b6 , -+ 0xe00b7 , -+ 0xe00b8 , -+ 0xe00b9 , -+ 0xe00ba , -+ 0xe00bb , -+ 0xe00bc , -+ 0xe00bd , -+ 0xe00be , -+ 0xe00bf , -+ 0xe00c0 , -+ 0xe00c1 , -+ 0xe00c2 , -+ 0xe00c3 , -+ 0xe00c4 , -+ 0xe00c5 , -+ 0xe00c6 , -+ 0xe00c7 , -+ 0xe00c8 , -+ 0xe00c9 , -+ 0xe00ca , -+ 0xe00cb , -+ 0xe00cc , -+ 0xe00cd , -+ 0xe00ce , -+ 0xe00cf , -+ 0xe00d0 , -+ 0xe00d1 , -+ 0xe00d2 , -+ 0xe00d3 , -+ 0xe00d4 , -+ 0xe00d5 , -+ 0xe00d6 , -+ 0xe00d7 , -+ 0xe00d8 , -+ 0xe00d9 , -+ 0xe00da , -+ 0xe00db , -+ 0xe00dc , -+ 0xe00dd , -+ 0xe00de , -+ 0xe00df , -+ 0xe00e0 , -+ 0xe00e1 , -+ 0xe00e2 , -+ 0xe00e3 , -+ 0xe00e4 , -+ 0xe00e5 , -+ 0xe00e6 , -+ 0xe00e7 , -+ 0xe00e8 , -+ 0xe00e9 , -+ 0xe00ea , -+ 0xe00eb , -+ 0xe00ec , -+ 0xe00ed , -+ 0xe00ee , -+ 0xe00ef , -+ 0xe00f0 , -+ 0xe00f1 , -+ 0xe00f2 , -+ 0xe00f3 , -+ 0xe00f4 , -+ 0xe00f5 , -+ 0xe00f6 , -+ 0xe00f7 , -+ 0xe00f8 , -+ 0xe00f9 , -+ 0xe00fa , -+ 0xe00fb , -+ 0xe00fc , -+ 0xe00fd , -+ 0xe00fe , -+ 0xe00ff , -+ 0xe0100 , -+ 0xe0101 , -+ 0xe0102 , -+ 0xe0103 , -+ 0xe0104 , -+ 0xe0105 , -+ 0xe0106 , -+ 0xe0107 , -+ 0xe0108 , -+ 0xe0109 , -+ 0xe010a , -+ 0xe010b , -+ 0xe010c , -+ 0xe010d , -+ 0xe010e , -+ 0xe010f , -+ 0xe0110 , -+ 0xe0111 , -+ 0xe0112 , -+ 0xe0113 , -+ 0xe0114 , -+ 0xe0115 , -+ 0xe0116 , -+ 0xe0117 , -+ 0xe0118 , -+ 0xe0119 , -+ 0xe011a , -+ 0xe011b , -+ 0xe011c , -+ 0xe011d , -+ 0xe011e , -+ 0xe011f , -+ 0xe0120 , -+ 0xe0121 , -+ 0xe0122 , -+ 0xe0123 , -+ 0xe0124 , -+ 0xe0125 , -+ 0xe0126 , -+ 0xe0127 , -+ 0xe0128 , -+ 0xe0129 , -+ 0xe012a , -+ 0xe012b , -+ 0xe012c , -+ 0xe012d , -+ 0xe012e , -+ 0xe012f , -+ 0xe0130 , -+ 0xe0131 , -+ 0xe0132 , -+ 0xe0133 , -+ 0xe0134 , -+ 0xe0135 , -+ 0xe0136 , -+ 0xe0137 , -+ 0xe0138 , -+ 0xe0139 , -+ 0xe013a , -+ 0xe013b , -+ 0xe013c , -+ 0xe013d , -+ 0xe013e , -+ 0xe013f , -+ 0xe0140 , -+ 0xe0141 , -+ 0xe0142 , -+ 0xe0143 , -+ 0xe0144 , -+ 0xe0145 , -+ 0xe0146 , -+ 0xe0147 , -+ 0xe0148 , -+ 0xe0149 , -+ 0xe014a , -+ 0xe014b , -+ 0xe014c , -+ 0xe014d , -+ 0xe014e , -+ 0xe014f , -+ 0xe0150 , -+ 0xe0151 , -+ 0xe0152 , -+ 0xe0153 , -+ 0xe0154 , -+ 0xe0155 , -+ 0xe0156 , -+ 0xe0157 , -+ 0xe0158 , -+ 0xe0159 , -+ 0xe015a , -+ 0xe015b , -+ 0xe015c , -+ 0xe015d , -+ 0xe015e , -+ 0xe015f , -+ 0xe0160 , -+ 0xe0161 , -+ 0xe0162 , -+ 0xe0163 , -+ 0xe0164 , -+ 0xe0165 , -+ 0xe0166 , -+ 0xe0167 , -+ 0xe0168 , -+ 0xe0169 , -+ 0xe016a , -+ 0xe016b , -+ 0xe016c , -+ 0xe016d , -+ 0xe016e , -+ 0xe016f , -+ 0xe0170 , -+ 0xe0171 , -+ 0xe0172 , -+ 0xe0173 , -+ 0xe0174 , -+ 0xe0175 , -+ 0xe0176 , -+ 0xe0177 , -+ 0xe0178 , -+ 0xe0179 , -+ 0xe017a , -+ 0xe017b , -+ 0xe017c , -+ 0xe017d , -+ 0xe017e , -+ 0xe017f , -+ 0xe0180 , -+ 0xe0181 , -+ 0xe0182 , -+ 0xe0183 , -+ 0xe0184 , -+ 0xe0185 , -+ 0xe0186 , -+ 0xe0187 , -+ 0xe0188 , -+ 0xe0189 , -+ 0xe018a , -+ 0xe018b , -+ 0xe018c , -+ 0xe018d , -+ 0xe018e , -+ 0xe018f , -+ 0xe0190 , -+ 0xe0191 , -+ 0xe0192 , -+ 0xe0193 , -+ 0xe0194 , -+ 0xe0195 , -+ 0xe0196 , -+ 0xe0197 , -+ 0xe0198 , -+ 0xe0199 , -+ 0xe019a , -+ 0xe019b , -+ 0xe019c , -+ 0xe019d , -+ 0xe019e , -+ 0xe019f , -+ 0xe01a0 , -+ 0xe01a1 , -+ 0xe01a2 , -+ 0xe01a3 , -+ 0xe01a4 , -+ 0xe01a5 , -+ 0xe01a6 , -+ 0xe01a7 , -+ 0xe01a8 , -+ 0xe01a9 , -+ 0xe01aa , -+ 0xe01ab , -+ 0xe01ac , -+ 0xe01ad , -+ 0xe01ae , -+ 0xe01af , -+ 0xe01b0 , -+ 0xe01b1 , -+ 0xe01b2 , -+ 0xe01b3 , -+ 0xe01b4 , -+ 0xe01b5 , -+ 0xe01b6 , -+ 0xe01b7 , -+ 0xe01b8 , -+ 0xe01b9 , -+ 0xe01ba , -+ 0xe01bb , -+ 0xe01bc , -+ 0xe01bd , -+ 0xe01be , -+ 0xe01bf , -+ 0xe01c0 , -+ 0xe01c1 , -+ 0xe01c2 , -+ 0xe01c3 , -+ 0xe01c4 , -+ 0xe01c5 , -+ 0xe01c6 , -+ 0xe01c7 , -+ 0xe01c8 , -+ 0xe01c9 , -+ 0xe01ca , -+ 0xe01cb , -+ 0xe01cc , -+ 0xe01cd , -+ 0xe01ce , -+ 0xe01cf , -+ 0xe01d0 , -+ 0xe01d1 , -+ 0xe01d2 , -+ 0xe01d3 , -+ 0xe01d4 , -+ 0xe01d5 , -+ 0xe01d6 , -+ 0xe01d7 , -+ 0xe01d8 , -+ 0xe01d9 , -+ 0xe01da , -+ 0xe01db , -+ 0xe01dc , -+ 0xe01dd , -+ 0xe01de , -+ 0xe01df , -+ 0xe01e0 , -+ 0xe01e1 , -+ 0xe01e2 , -+ 0xe01e3 , -+ 0xe01e4 , -+ 0xe01e5 , -+ 0xe01e6 , -+ 0xe01e7 , -+ 0xe01e8 , -+ 0xe01e9 , -+ 0xe01ea , -+ 0xe01eb , -+ 0xe01ec , -+ 0xe01ed , -+ 0xe01ee , -+ 0xe01ef , -+ 0xe01f0 , -+ 0xe01f1 , -+ 0xe01f2 , -+ 0xe01f3 , -+ 0xe01f4 , -+ 0xe01f5 , -+ 0xe01f6 , -+ 0xe01f7 , -+ 0xe01f8 , -+ 0xe01f9 , -+ 0xe01fa , -+ 0xe01fb , -+ 0xe01fc , -+ 0xe01fd , -+ 0xe01fe , -+ 0xe01ff , -+ 0xe0200 , -+ 0xe0201 , -+ 0xe0202 , -+ 0xe0203 , -+ 0xe0204 , -+ 0xe0205 , -+ 0xe0206 , -+ 0xe0207 , -+ 0xe0208 , -+ 0xe0209 , -+ 0xe020a , -+ 0xe020b , -+ 0xe020c , -+ 0xe020d , -+ 0xe020e , -+ 0xe020f , -+ 0xe0210 , -+ 0xe0211 , -+ 0xe0212 , -+ 0xe0213 , -+ 0xe0214 , -+ 0xe0215 , -+ 0xe0216 , -+ 0xe0217 , -+ 0xe0218 , -+ 0xe0219 , -+ 0xe021a , -+ 0xe021b , -+ 0xe021c , -+ 0xe021d , -+ 0xe021e , -+ 0xe021f , -+ 0xe0220 , -+ 0xe0221 , -+ 0xe0222 , -+ 0xe0223 , -+ 0xe0224 , -+ 0xe0225 , -+ 0xe0226 , -+ 0xe0227 , -+ 0xe0228 , -+ 0xe0229 , -+ 0xe022a , -+ 0xe022b , -+ 0xe022c , -+ 0xe022d , -+ 0xe022e , -+ 0xe022f , -+ 0xe0230 , -+ 0xe0231 , -+ 0xe0232 , -+ 0xe0233 , -+ 0xe0234 , -+ 0xe0235 , -+ 0xe0236 , -+ 0xe0237 , -+ 0xe0238 , -+ 0xe0239 , -+ 0xe023a , -+ 0xe023b , -+ 0xe023c , -+ 0xe023d , -+ 0xe023e , -+ 0xe023f , -+ 0xe0240 , -+ 0xe0241 , -+ 0xe0242 , -+ 0xe0243 , -+ 0xe0244 , -+ 0xe0245 , -+ 0xe0246 , -+ 0xe0247 , -+ 0xe0248 , -+ 0xe0249 , -+ 0xe024a , -+ 0xe024b , -+ 0xe024c , -+ 0xe024d , -+ 0xe024e , -+ 0xe024f , -+ 0xe0250 , -+ 0xe0251 , -+ 0xe0252 , -+ 0xe0253 , -+ 0xe0254 , -+ 0xe0255 , -+ 0xe0256 , -+ 0xe0257 , -+ 0xe0258 , -+ 0xe0259 , -+ 0xe025a , -+ 0xe025b , -+ 0xe025c , -+ 0xe025d , -+ 0xe025e , -+ 0xe025f , -+ 0xe0260 , -+ 0xe0261 , -+ 0xe0262 , -+ 0xe0263 , -+ 0xe0264 , -+ 0xe0265 , -+ 0xe0266 , -+ 0xe0267 , -+ 0xe0268 , -+ 0xe0269 , -+ 0xe026a , -+ 0xe026b , -+ 0xe026c , -+ 0xe026d , -+ 0xe026e , -+ 0xe026f , -+ 0xe0270 , -+ 0xe0271 , -+ 0xe0272 , -+ 0xe0273 , -+ 0xe0274 , -+ 0xe0275 , -+ 0xe0276 , -+ 0xe0277 , -+ 0xe0278 , -+ 0xe0279 , -+ 0xe027a , -+ 0xe027b , -+ 0xe027c , -+ 0xe027d , -+ 0xe027e , -+ 0xe027f , -+ 0xe0280 , -+ 0xe0281 , -+ 0xe0282 , -+ 0xe0283 , -+ 0xe0284 , -+ 0xe0285 , -+ 0xe0286 , -+ 0xe0287 , -+ 0xe0288 , -+ 0xe0289 , -+ 0xe028a , -+ 0xe028b , -+ 0xe028c , -+ 0xe028d , -+ 0xe028e , -+ 0xe028f , -+ 0xe0290 , -+ 0xe0291 , -+ 0xe0292 , -+ 0xe0293 , -+ 0xe0294 , -+ 0xe0295 , -+ 0xe0296 , -+ 0xe0297 , -+ 0xe0298 , -+ 0xe0299 , -+ 0xe029a , -+ 0xe029b , -+ 0xe029c , -+ 0xe029d , -+ 0xe029e , -+ 0xe029f , -+ 0xe02a0 , -+ 0xe02a1 , -+ 0xe02a2 , -+ 0xe02a3 , -+ 0xe02a4 , -+ 0xe02a5 , -+ 0xe02a6 , -+ 0xe02a7 , -+ 0xe02a8 , -+ 0xe02a9 , -+ 0xe02aa , -+ 0xe02ab , -+ 0xe02ac , -+ 0xe02ad , -+ 0xe02ae , -+ 0xe02af , -+ 0xe02b0 , -+ 0xe02b1 , -+ 0xe02b2 , -+ 0xe02b3 , -+ 0xe02b4 , -+ 0xe02b5 , -+ 0xe02b6 , -+ 0xe02b7 , -+ 0xe02b8 , -+ 0xe02b9 , -+ 0xe02ba , -+ 0xe02bb , -+ 0xe02bc , -+ 0xe02bd , -+ 0xe02be , -+ 0xe02bf , -+ 0xe02c0 , -+ 0xe02c1 , -+ 0xe02c2 , -+ 0xe02c3 , -+ 0xe02c4 , -+ 0xe02c5 , -+ 0xe02c6 , -+ 0xe02c7 , -+ 0xe02c8 , -+ 0xe02c9 , -+ 0xe02ca , -+ 0xe02cb , -+ 0xe02cc , -+ 0xe02cd , -+ 0xe02ce , -+ 0xe02cf , -+ 0xe02d0 , -+ 0xe02d1 , -+ 0xe02d2 , -+ 0xe02d3 , -+ 0xe02d4 , -+ 0xe02d5 , -+ 0xe02d6 , -+ 0xe02d7 , -+ 0xe02d8 , -+ 0xe02d9 , -+ 0xe02da , -+ 0xe02db , -+ 0xe02dc , -+ 0xe02dd , -+ 0xe02de , -+ 0xe02df , -+ 0xe02e0 , -+ 0xe02e1 , -+ 0xe02e2 , -+ 0xe02e3 , -+ 0xe02e4 , -+ 0xe02e5 , -+ 0xe02e6 , -+ 0xe02e7 , -+ 0xe02e8 , -+ 0xe02e9 , -+ 0xe02ea , -+ 0xe02eb , -+ 0xe02ec , -+ 0xe02ed , -+ 0xe02ee , -+ 0xe02ef , -+ 0xe02f0 , -+ 0xe02f1 , -+ 0xe02f2 , -+ 0xe02f3 , -+ 0xe02f4 , -+ 0xe02f5 , -+ 0xe02f6 , -+ 0xe02f7 , -+ 0xe02f8 , -+ 0xe02f9 , -+ 0xe02fa , -+ 0xe02fb , -+ 0xe02fc , -+ 0xe02fd , -+ 0xe02fe , -+ 0xe02ff , -+ 0xe0300 , -+ 0xe0301 , -+ 0xe0302 , -+ 0xe0303 , -+ 0xe0304 , -+ 0xe0305 , -+ 0xe0306 , -+ 0xe0307 , -+ 0xe0308 , -+ 0xe0309 , -+ 0xe030a , -+ 0xe030b , -+ 0xe030c , -+ 0xe030d , -+ 0xe030e , -+ 0xe030f , -+ 0xe0310 , -+ 0xe0311 , -+ 0xe0312 , -+ 0xe0313 , -+ 0xe0314 , -+ 0xe0315 , -+ 0xe0316 , -+ 0xe0317 , -+ 0xe0318 , -+ 0xe0319 , -+ 0xe031a , -+ 0xe031b , -+ 0xe031c , -+ 0xe031d , -+ 0xe031e , -+ 0xe031f , -+ 0xe0320 , -+ 0xe0321 , -+ 0xe0322 , -+ 0xe0323 , -+ 0xe0324 , -+ 0xe0325 , -+ 0xe0326 , -+ 0xe0327 , -+ 0xe0328 , -+ 0xe0329 , -+ 0xe032a , -+ 0xe032b , -+ 0xe032c , -+ 0xe032d , -+ 0xe032e , -+ 0xe032f , -+ 0xe0330 , -+ 0xe0331 , -+ 0xe0332 , -+ 0xe0333 , -+ 0xe0334 , -+ 0xe0335 , -+ 0xe0336 , -+ 0xe0337 , -+ 0xe0338 , -+ 0xe0339 , -+ 0xe033a , -+ 0xe033b , -+ 0xe033c , -+ 0xe033d , -+ 0xe033e , -+ 0xe033f , -+ 0xe0340 , -+ 0xe0341 , -+ 0xe0342 , -+ 0xe0343 , -+ 0xe0344 , -+ 0xe0345 , -+ 0xe0346 , -+ 0xe0347 , -+ 0xe0348 , -+ 0xe0349 , -+ 0xe034a , -+ 0xe034b , -+ 0xe034c , -+ 0xe034d , -+ 0xe034e , -+ 0xe034f , -+ 0xe0350 , -+ 0xe0351 , -+ 0xe0352 , -+ 0xe0353 , -+ 0xe0354 , -+ 0xe0355 , -+ 0xe0356 , -+ 0xe0357 , -+ 0xe0358 , -+ 0xe0359 , -+ 0xe035a , -+ 0xe035b , -+ 0xe035c , -+ 0xe035d , -+ 0xe035e , -+ 0xe035f , -+ 0xe0360 , -+ 0xe0361 , -+ 0xe0362 , -+ 0xe0363 , -+ 0xe0364 , -+ 0xe0365 , -+ 0xe0366 , -+ 0xe0367 , -+ 0xe0368 , -+ 0xe0369 , -+ 0xe036a , -+ 0xe036b , -+ 0xe036c , -+ 0xe036d , -+ 0xe036e , -+ 0xe036f , -+ 0xe0370 , -+ 0xe0371 , -+ 0xe0372 , -+ 0xe0373 , -+ 0xe0374 , -+ 0xe0375 , -+ 0xe0376 , -+ 0xe0377 , -+ 0xe0378 , -+ 0xe0379 , -+ 0xe037a , -+ 0xe037b , -+ 0xe037c , -+ 0xe037d , -+ 0xe037e , -+ 0xe037f , -+ 0xe0380 , -+ 0xe0381 , -+ 0xe0382 , -+ 0xe0383 , -+ 0xe0384 , -+ 0xe0385 , -+ 0xe0386 , -+ 0xe0387 , -+ 0xe0388 , -+ 0xe0389 , -+ 0xe038a , -+ 0xe038b , -+ 0xe038c , -+ 0xe038d , -+ 0xe038e , -+ 0xe038f , -+ 0xe0390 , -+ 0xe0391 , -+ 0xe0392 , -+ 0xe0393 , -+ 0xe0394 , -+ 0xe0395 , -+ 0xe0396 , -+ 0xe0397 , -+ 0xe0398 , -+ 0xe0399 , -+ 0xe039a , -+ 0xe039b , -+ 0xe039c , -+ 0xe039d , -+ 0xe039e , -+ 0xe039f , -+ 0xe03a0 , -+ 0xe03a1 , -+ 0xe03a2 , -+ 0xe03a3 , -+ 0xe03a4 , -+ 0xe03a5 , -+ 0xe03a6 , -+ 0xe03a7 , -+ 0xe03a8 , -+ 0xe03a9 , -+ 0xe03aa , -+ 0xe03ab , -+ 0xe03ac , -+ 0xe03ad , -+ 0xe03ae , -+ 0xe03af , -+ 0xe03b0 , -+ 0xe03b1 , -+ 0xe03b2 , -+ 0xe03b3 , -+ 0xe03b4 , -+ 0xe03b5 , -+ 0xe03b6 , -+ 0xe03b7 , -+ 0xe03b8 , -+ 0xe03b9 , -+ 0xe03ba , -+ 0xe03bb , -+ 0xe03bc , -+ 0xe03bd , -+ 0xe03be , -+ 0xe03bf , -+ 0xe03c0 , -+ 0xe03c1 , -+ 0xe03c2 , -+ 0xe03c3 , -+ 0xe03c4 , -+ 0xe03c5 , -+ 0xe03c6 , -+ 0xe03c7 , -+ 0xe03c8 , -+ 0xe03c9 , -+ 0xe03ca , -+ 0xe03cb , -+ 0xe03cc , -+ 0xe03cd , -+ 0xe03ce , -+ 0xe03cf , -+ 0xe03d0 , -+ 0xe03d1 , -+ 0xe03d2 , -+ 0xe03d3 , -+ 0xe03d4 , -+ 0xe03d5 , -+ 0xe03d6 , -+ 0xe03d7 , -+ 0xe03d8 , -+ 0xe03d9 , -+ 0xe03da , -+ 0xe03db , -+ 0xe03dc , -+ 0xe03dd , -+ 0xe03de , -+ 0xe03df , -+ 0xe03e0 , -+ 0xe03e1 , -+ 0xe03e2 , -+ 0xe03e3 , -+ 0xe03e4 , -+ 0xe03e5 , -+ 0xe03e6 , -+ 0xe03e7 , -+ 0xe03e8 , -+ 0xe03e9 , -+ 0xe03ea , -+ 0xe03eb , -+ 0xe03ec , -+ 0xe03ed , -+ 0xe03ee , -+ 0xe03ef , -+ 0xe03f0 , -+ 0xe03f1 , -+ 0xe03f2 , -+ 0xe03f3 , -+ 0xe03f4 , -+ 0xe03f5 , -+ 0xe03f6 , -+ 0xe03f7 , -+ 0xe03f8 , -+ 0xe03f9 , -+ 0xe03fa , -+ 0xe03fb , -+ 0xe03fc , -+ 0xe03fd , -+ 0xe03fe , -+ 0xe03ff , -+ 0xe0400 , -+ 0xe0401 , -+ 0xe0402 , -+ 0xe0403 , -+ 0xe0404 , -+ 0xe0405 , -+ 0xe0406 , -+ 0xe0407 , -+ 0xe0408 , -+ 0xe0409 , -+ 0xe040a , -+ 0xe040b , -+ 0xe040c , -+ 0xe040d , -+ 0xe040e , -+ 0xe040f , -+ 0xe0410 , -+ 0xe0411 , -+ 0xe0412 , -+ 0xe0413 , -+ 0xe0414 , -+ 0xe0415 , -+ 0xe0416 , -+ 0xe0417 , -+ 0xe0418 , -+ 0xe0419 , -+ 0xe041a , -+ 0xe041b , -+ 0xe041c , -+ 0xe041d , -+ 0xe041e , -+ 0xe041f , -+ 0xe0420 , -+ 0xe0421 , -+ 0xe0422 , -+ 0xe0423 , -+ 0xe0424 , -+ 0xe0425 , -+ 0xe0426 , -+ 0xe0427 , -+ 0xe0428 , -+ 0xe0429 , -+ 0xe042a , -+ 0xe042b , -+ 0xe042c , -+ 0xe042d , -+ 0xe042e , -+ 0xe042f , -+ 0xe0430 , -+ 0xe0431 , -+ 0xe0432 , -+ 0xe0433 , -+ 0xe0434 , -+ 0xe0435 , -+ 0xe0436 , -+ 0xe0437 , -+ 0xe0438 , -+ 0xe0439 , -+ 0xe043a , -+ 0xe043b , -+ 0xe043c , -+ 0xe043d , -+ 0xe043e , -+ 0xe043f , -+ 0xe0440 , -+ 0xe0441 , -+ 0xe0442 , -+ 0xe0443 , -+ 0xe0444 , -+ 0xe0445 , -+ 0xe0446 , -+ 0xe0447 , -+ 0xe0448 , -+ 0xe0449 , -+ 0xe044a , -+ 0xe044b , -+ 0xe044c , -+ 0xe044d , -+ 0xe044e , -+ 0xe044f , -+ 0xe0450 , -+ 0xe0451 , -+ 0xe0452 , -+ 0xe0453 , -+ 0xe0454 , -+ 0xe0455 , -+ 0xe0456 , -+ 0xe0457 , -+ 0xe0458 , -+ 0xe0459 , -+ 0xe045a , -+ 0xe045b , -+ 0xe045c , -+ 0xe045d , -+ 0xe045e , -+ 0xe045f , -+ 0xe0460 , -+ 0xe0461 , -+ 0xe0462 , -+ 0xe0463 , -+ 0xe0464 , -+ 0xe0465 , -+ 0xe0466 , -+ 0xe0467 , -+ 0xe0468 , -+ 0xe0469 , -+ 0xe046a , -+ 0xe046b , -+ 0xe046c , -+ 0xe046d , -+ 0xe046e , -+ 0xe046f , -+ 0xe0470 , -+ 0xe0471 , -+ 0xe0472 , -+ 0xe0473 , -+ 0xe0474 , -+ 0xe0475 , -+ 0xe0476 , -+ 0xe0477 , -+ 0xe0478 , -+ 0xe0479 , -+ 0xe047a , -+ 0xe047b , -+ 0xe047c , -+ 0xe047d , -+ 0xe047e , -+ 0xe047f , -+ 0xe0480 , -+ 0xe0481 , -+ 0xe0482 , -+ 0xe0483 , -+ 0xe0484 , -+ 0xe0485 , -+ 0xe0486 , -+ 0xe0487 , -+ 0xe0488 , -+ 0xe0489 , -+ 0xe048a , -+ 0xe048b , -+ 0xe048c , -+ 0xe048d , -+ 0xe048e , -+ 0xe048f , -+ 0xe0490 , -+ 0xe0491 , -+ 0xe0492 , -+ 0xe0493 , -+ 0xe0494 , -+ 0xe0495 , -+ 0xe0496 , -+ 0xe0497 , -+ 0xe0498 , -+ 0xe0499 , -+ 0xe049a , -+ 0xe049b , -+ 0xe049c , -+ 0xe049d , -+ 0xe049e , -+ 0xe049f , -+ 0xe04a0 , -+ 0xe04a1 , -+ 0xe04a2 , -+ 0xe04a3 , -+ 0xe04a4 , -+ 0xe04a5 , -+ 0xe04a6 , -+ 0xe04a7 , -+ 0xe04a8 , -+ 0xe04a9 , -+ 0xe04aa , -+ 0xe04ab , -+ 0xe04ac , -+ 0xe04ad , -+ 0xe04ae , -+ 0xe04af , -+ 0xe04b0 , -+ 0xe04b1 , -+ 0xe04b2 , -+ 0xe04b3 , -+ 0xe04b4 , -+ 0xe04b5 , -+ 0xe04b6 , -+ 0xe04b7 , -+ 0xe04b8 , -+ 0xe04b9 , -+ 0xe04ba , -+ 0xe04bb , -+ 0xe04bc , -+ 0xe04bd , -+ 0xe04be , -+ 0xe04bf , -+ 0xe04c0 , -+ 0xe04c1 , -+ 0xe04c2 , -+ 0xe04c3 , -+ 0xe04c4 , -+ 0xe04c5 , -+ 0xe04c6 , -+ 0xe04c7 , -+ 0xe04c8 , -+ 0xe04c9 , -+ 0xe04ca , -+ 0xe04cb , -+ 0xe04cc , -+ 0xe04cd , -+ 0xe04ce , -+ 0xe04cf , -+ 0xe04d0 , -+ 0xe04d1 , -+ 0xe04d2 , -+ 0xe04d3 , -+ 0xe04d4 , -+ 0xe04d5 , -+ 0xe04d6 , -+ 0xe04d7 , -+ 0xe04d8 , -+ 0xe04d9 , -+ 0xe04da , -+ 0xe04db , -+ 0xe04dc , -+ 0xe04dd , -+ 0xe04de , -+ 0xe04df , -+ 0xe04e0 , -+ 0xe04e1 , -+ 0xe04e2 , -+ 0xe04e3 , -+ 0xe04e4 , -+ 0xe04e5 , -+ 0xe04e6 , -+ 0xe04e7 , -+ 0xe04e8 , -+ 0xe04e9 , -+ 0xe04ea , -+ 0xe04eb , -+ 0xe04ec , -+ 0xe04ed , -+ 0xe04ee , -+ 0xe04ef , -+ 0xe04f0 , -+ 0xe04f1 , -+ 0xe04f2 , -+ 0xe04f3 , -+ 0xe04f4 , -+ 0xe04f5 , -+ 0xe04f6 , -+ 0xe04f7 , -+ 0xe04f8 , -+ 0xe04f9 , -+ 0xe04fa , -+ 0xe04fb , -+ 0xe04fc , -+ 0xe04fd , -+ 0xe04fe , -+ 0xe04ff , -+ 0xe0500 , -+ 0xe0501 , -+ 0xe0502 , -+ 0xe0503 , -+ 0xe0504 , -+ 0xe0505 , -+ 0xe0506 , -+ 0xe0507 , -+ 0xe0508 , -+ 0xe0509 , -+ 0xe050a , -+ 0xe050b , -+ 0xe050c , -+ 0xe050d , -+ 0xe050e , -+ 0xe050f , -+ 0xe0510 , -+ 0xe0511 , -+ 0xe0512 , -+ 0xe0513 , -+ 0xe0514 , -+ 0xe0515 , -+ 0xe0516 , -+ 0xe0517 , -+ 0xe0518 , -+ 0xe0519 , -+ 0xe051a , -+ 0xe051b , -+ 0xe051c , -+ 0xe051d , -+ 0xe051e , -+ 0xe051f , -+ 0xe0520 , -+ 0xe0521 , -+ 0xe0522 , -+ 0xe0523 , -+ 0xe0524 , -+ 0xe0525 , -+ 0xe0526 , -+ 0xe0527 , -+ 0xe0528 , -+ 0xe0529 , -+ 0xe052a , -+ 0xe052b , -+ 0xe052c , -+ 0xe052d , -+ 0xe052e , -+ 0xe052f , -+ 0xe0530 , -+ 0xe0531 , -+ 0xe0532 , -+ 0xe0533 , -+ 0xe0534 , -+ 0xe0535 , -+ 0xe0536 , -+ 0xe0537 , -+ 0xe0538 , -+ 0xe0539 , -+ 0xe053a , -+ 0xe053b , -+ 0xe053c , -+ 0xe053d , -+ 0xe053e , -+ 0xe053f , -+ 0xe0540 , -+ 0xe0541 , -+ 0xe0542 , -+ 0xe0543 , -+ 0xe0544 , -+ 0xe0545 , -+ 0xe0546 , -+ 0xe0547 , -+ 0xe0548 , -+ 0xe0549 , -+ 0xe054a , -+ 0xe054b , -+ 0xe054c , -+ 0xe054d , -+ 0xe054e , -+ 0xe054f , -+ 0xe0550 , -+ 0xe0551 , -+ 0xe0552 , -+ 0xe0553 , -+ 0xe0554 , -+ 0xe0555 , -+ 0xe0556 , -+ 0xe0557 , -+ 0xe0558 , -+ 0xe0559 , -+ 0xe055a , -+ 0xe055b , -+ 0xe055c , -+ 0xe055d , -+ 0xe055e , -+ 0xe055f , -+ 0xe0560 , -+ 0xe0561 , -+ 0xe0562 , -+ 0xe0563 , -+ 0xe0564 , -+ 0xe0565 , -+ 0xe0566 , -+ 0xe0567 , -+ 0xe0568 , -+ 0xe0569 , -+ 0xe056a , -+ 0xe056b , -+ 0xe056c , -+ 0xe056d , -+ 0xe056e , -+ 0xe056f , -+ 0xe0570 , -+ 0xe0571 , -+ 0xe0572 , -+ 0xe0573 , -+ 0xe0574 , -+ 0xe0575 , -+ 0xe0576 , -+ 0xe0577 , -+ 0xe0578 , -+ 0xe0579 , -+ 0xe057a , -+ 0xe057b , -+ 0xe057c , -+ 0xe057d , -+ 0xe057e , -+ 0xe057f , -+ 0xe0580 , -+ 0xe0581 , -+ 0xe0582 , -+ 0xe0583 , -+ 0xe0584 , -+ 0xe0585 , -+ 0xe0586 , -+ 0xe0587 , -+ 0xe0588 , -+ 0xe0589 , -+ 0xe058a , -+ 0xe058b , -+ 0xe058c , -+ 0xe058d , -+ 0xe058e , -+ 0xe058f , -+ 0xe0590 , -+ 0xe0591 , -+ 0xe0592 , -+ 0xe0593 , -+ 0xe0594 , -+ 0xe0595 , -+ 0xe0596 , -+ 0xe0597 , -+ 0xe0598 , -+ 0xe0599 , -+ 0xe059a , -+ 0xe059b , -+ 0xe059c , -+ 0xe059d , -+ 0xe059e , -+ 0xe059f , -+ 0xe05a0 , -+ 0xe05a1 , -+ 0xe05a2 , -+ 0xe05a3 , -+ 0xe05a4 , -+ 0xe05a5 , -+ 0xe05a6 , -+ 0xe05a7 , -+ 0xe05a8 , -+ 0xe05a9 , -+ 0xe05aa , -+ 0xe05ab , -+ 0xe05ac , -+ 0xe05ad , -+ 0xe05ae , -+ 0xe05af , -+ 0xe05b0 , -+ 0xe05b1 , -+ 0xe05b2 , -+ 0xe05b3 , -+ 0xe05b4 , -+ 0xe05b5 , -+ 0xe05b6 , -+ 0xe05b7 , -+ 0xe05b8 , -+ 0xe05b9 , -+ 0xe05ba , -+ 0xe05bb , -+ 0xe05bc , -+ 0xe05bd , -+ 0xe05be , -+ 0xe05bf , -+ 0xe05c0 , -+ 0xe05c1 , -+ 0xe05c2 , -+ 0xe05c3 , -+ 0xe05c4 , -+ 0xe05c5 , -+ 0xe05c6 , -+ 0xe05c7 , -+ 0xe05c8 , -+ 0xe05c9 , -+ 0xe05ca , -+ 0xe05cb , -+ 0xe05cc , -+ 0xe05cd , -+ 0xe05ce , -+ 0xe05cf , -+ 0xe05d0 , -+ 0xe05d1 , -+ 0xe05d2 , -+ 0xe05d3 , -+ 0xe05d4 , -+ 0xe05d5 , -+ 0xe05d6 , -+ 0xe05d7 , -+ 0xe05d8 , -+ 0xe05d9 , -+ 0xe05da , -+ 0xe05db , -+ 0xe05dc , -+ 0xe05dd , -+ 0xe05de , -+ 0xe05df , -+ 0xe05e0 , -+ 0xe05e1 , -+ 0xe05e2 , -+ 0xe05e3 , -+ 0xe05e4 , -+ 0xe05e5 , -+ 0xe05e6 , -+ 0xe05e7 , -+ 0xe05e8 , -+ 0xe05e9 , -+ 0xe05ea , -+ 0xe05eb , -+ 0xe05ec , -+ 0xe05ed , -+ 0xe05ee , -+ 0xe05ef , -+ 0xe05f0 , -+ 0xe05f1 , -+ 0xe05f2 , -+ 0xe05f3 , -+ 0xe05f4 , -+ 0xe05f5 , -+ 0xe05f6 , -+ 0xe05f7 , -+ 0xe05f8 , -+ 0xe05f9 , -+ 0xe05fa , -+ 0xe05fb , -+ 0xe05fc , -+ 0xe05fd , -+ 0xe05fe , -+ 0xe05ff , -+ 0xe0600 , -+ 0xe0601 , -+ 0xe0602 , -+ 0xe0603 , -+ 0xe0604 , -+ 0xe0605 , -+ 0xe0606 , -+ 0xe0607 , -+ 0xe0608 , -+ 0xe0609 , -+ 0xe060a , -+ 0xe060b , -+ 0xe060c , -+ 0xe060d , -+ 0xe060e , -+ 0xe060f , -+ 0xe0610 , -+ 0xe0611 , -+ 0xe0612 , -+ 0xe0613 , -+ 0xe0614 , -+ 0xe0615 , -+ 0xe0616 , -+ 0xe0617 , -+ 0xe0618 , -+ 0xe0619 , -+ 0xe061a , -+ 0xe061b , -+ 0xe061c , -+ 0xe061d , -+ 0xe061e , -+ 0xe061f , -+ 0xe0620 , -+ 0xe0621 , -+ 0xe0622 , -+ 0xe0623 , -+ 0xe0624 , -+ 0xe0625 , -+ 0xe0626 , -+ 0xe0627 , -+ 0xe0628 , -+ 0xe0629 , -+ 0xe062a , -+ 0xe062b , -+ 0xe062c , -+ 0xe062d , -+ 0xe062e , -+ 0xe062f , -+ 0xe0630 , -+ 0xe0631 , -+ 0xe0632 , -+ 0xe0633 , -+ 0xe0634 , -+ 0xe0635 , -+ 0xe0636 , -+ 0xe0637 , -+ 0xe0638 , -+ 0xe0639 , -+ 0xe063a , -+ 0xe063b , -+ 0xe063c , -+ 0xe063d , -+ 0xe063e , -+ 0xe063f , -+ 0xe0640 , -+ 0xe0641 , -+ 0xe0642 , -+ 0xe0643 , -+ 0xe0644 , -+ 0xe0645 , -+ 0xe0646 , -+ 0xe0647 , -+ 0xe0648 , -+ 0xe0649 , -+ 0xe064a , -+ 0xe064b , -+ 0xe064c , -+ 0xe064d , -+ 0xe064e , -+ 0xe064f , -+ 0xe0650 , -+ 0xe0651 , -+ 0xe0652 , -+ 0xe0653 , -+ 0xe0654 , -+ 0xe0655 , -+ 0xe0656 , -+ 0xe0657 , -+ 0xe0658 , -+ 0xe0659 , -+ 0xe065a , -+ 0xe065b , -+ 0xe065c , -+ 0xe065d , -+ 0xe065e , -+ 0xe065f , -+ 0xe0660 , -+ 0xe0661 , -+ 0xe0662 , -+ 0xe0663 , -+ 0xe0664 , -+ 0xe0665 , -+ 0xe0666 , -+ 0xe0667 , -+ 0xe0668 , -+ 0xe0669 , -+ 0xe066a , -+ 0xe066b , -+ 0xe066c , -+ 0xe066d , -+ 0xe066e , -+ 0xe066f , -+ 0xe0670 , -+ 0xe0671 , -+ 0xe0672 , -+ 0xe0673 , -+ 0xe0674 , -+ 0xe0675 , -+ 0xe0676 , -+ 0xe0677 , -+ 0xe0678 , -+ 0xe0679 , -+ 0xe067a , -+ 0xe067b , -+ 0xe067c , -+ 0xe067d , -+ 0xe067e , -+ 0xe067f , -+ 0xe0680 , -+ 0xe0681 , -+ 0xe0682 , -+ 0xe0683 , -+ 0xe0684 , -+ 0xe0685 , -+ 0xe0686 , -+ 0xe0687 , -+ 0xe0688 , -+ 0xe0689 , -+ 0xe068a , -+ 0xe068b , -+ 0xe068c , -+ 0xe068d , -+ 0xe068e , -+ 0xe068f , -+ 0xe0690 , -+ 0xe0691 , -+ 0xe0692 , -+ 0xe0693 , -+ 0xe0694 , -+ 0xe0695 , -+ 0xe0696 , -+ 0xe0697 , -+ 0xe0698 , -+ 0xe0699 , -+ 0xe069a , -+ 0xe069b , -+ 0xe069c , -+ 0xe069d , -+ 0xe069e , -+ 0xe069f , -+ 0xe06a0 , -+ 0xe06a1 , -+ 0xe06a2 , -+ 0xe06a3 , -+ 0xe06a4 , -+ 0xe06a5 , -+ 0xe06a6 , -+ 0xe06a7 , -+ 0xe06a8 , -+ 0xe06a9 , -+ 0xe06aa , -+ 0xe06ab , -+ 0xe06ac , -+ 0xe06ad , -+ 0xe06ae , -+ 0xe06af , -+ 0xe06b0 , -+ 0xe06b1 , -+ 0xe06b2 , -+ 0xe06b3 , -+ 0xe06b4 , -+ 0xe06b5 , -+ 0xe06b6 , -+ 0xe06b7 , -+ 0xe06b8 , -+ 0xe06b9 , -+ 0xe06ba , -+ 0xe06bb , -+ 0xe06bc , -+ 0xe06bd , -+ 0xe06be , -+ 0xe06bf , -+ 0xe06c0 , -+ 0xe06c1 , -+ 0xe06c2 , -+ 0xe06c3 , -+ 0xe06c4 , -+ 0xe06c5 , -+ 0xe06c6 , -+ 0xe06c7 , -+ 0xe06c8 , -+ 0xe06c9 , -+ 0xe06ca , -+ 0xe06cb , -+ 0xe06cc , -+ 0xe06cd , -+ 0xe06ce , -+ 0xe06cf , -+ 0xe06d0 , -+ 0xe06d1 , -+ 0xe06d2 , -+ 0xe06d3 , -+ 0xe06d4 , -+ 0xe06d5 , -+ 0xe06d6 , -+ 0xe06d7 , -+ 0xe06d8 , -+ 0xe06d9 , -+ 0xe06da , -+ 0xe06db , -+ 0xe06dc , -+ 0xe06dd , -+ 0xe06de , -+ 0xe06df , -+ 0xe06e0 , -+ 0xe06e1 , -+ 0xe06e2 , -+ 0xe06e3 , -+ 0xe06e4 , -+ 0xe06e5 , -+ 0xe06e6 , -+ 0xe06e7 , -+ 0xe06e8 , -+ 0xe06e9 , -+ 0xe06ea , -+ 0xe06eb , -+ 0xe06ec , -+ 0xe06ed , -+ 0xe06ee , -+ 0xe06ef , -+ 0xe06f0 , -+ 0xe06f1 , -+ 0xe06f2 , -+ 0xe06f3 , -+ 0xe06f4 , -+ 0xe06f5 , -+ 0xe06f6 , -+ 0xe06f7 , -+ 0xe06f8 , -+ 0xe06f9 , -+ 0xe06fa , -+ 0xe06fb , -+ 0xe06fc , -+ 0xe06fd , -+ 0xe06fe , -+ 0xe06ff , -+ 0xe0700 , -+ 0xe0701 , -+ 0xe0702 , -+ 0xe0703 , -+ 0xe0704 , -+ 0xe0705 , -+ 0xe0706 , -+ 0xe0707 , -+ 0xe0708 , -+ 0xe0709 , -+ 0xe070a , -+ 0xe070b , -+ 0xe070c , -+ 0xe070d , -+ 0xe070e , -+ 0xe070f , -+ 0xe0710 , -+ 0xe0711 , -+ 0xe0712 , -+ 0xe0713 , -+ 0xe0714 , -+ 0xe0715 , -+ 0xe0716 , -+ 0xe0717 , -+ 0xe0718 , -+ 0xe0719 , -+ 0xe071a , -+ 0xe071b , -+ 0xe071c , -+ 0xe071d , -+ 0xe071e , -+ 0xe071f , -+ 0xe0720 , -+ 0xe0721 , -+ 0xe0722 , -+ 0xe0723 , -+ 0xe0724 , -+ 0xe0725 , -+ 0xe0726 , -+ 0xe0727 , -+ 0xe0728 , -+ 0xe0729 , -+ 0xe072a , -+ 0xe072b , -+ 0xe072c , -+ 0xe072d , -+ 0xe072e , -+ 0xe072f , -+ 0xe0730 , -+ 0xe0731 , -+ 0xe0732 , -+ 0xe0733 , -+ 0xe0734 , -+ 0xe0735 , -+ 0xe0736 , -+ 0xe0737 , -+ 0xe0738 , -+ 0xe0739 , -+ 0xe073a , -+ 0xe073b , -+ 0xe073c , -+ 0xe073d , -+ 0xe073e , -+ 0xe073f , -+ 0xe0740 , -+ 0xe0741 , -+ 0xe0742 , -+ 0xe0743 , -+ 0xe0744 , -+ 0xe0745 , -+ 0xe0746 , -+ 0xe0747 , -+ 0xe0748 , -+ 0xe0749 , -+ 0xe074a , -+ 0xe074b , -+ 0xe074c , -+ 0xe074d , -+ 0xe074e , -+ 0xe074f , -+ 0xe0750 , -+ 0xe0751 , -+ 0xe0752 , -+ 0xe0753 , -+ 0xe0754 , -+ 0xe0755 , -+ 0xe0756 , -+ 0xe0757 , -+ 0xe0758 , -+ 0xe0759 , -+ 0xe075a , -+ 0xe075b , -+ 0xe075c , -+ 0xe075d , -+ 0xe075e , -+ 0xe075f , -+ 0xe0760 , -+ 0xe0761 , -+ 0xe0762 , -+ 0xe0763 , -+ 0xe0764 , -+ 0xe0765 , -+ 0xe0766 , -+ 0xe0767 , -+ 0xe0768 , -+ 0xe0769 , -+ 0xe076a , -+ 0xe076b , -+ 0xe076c , -+ 0xe076d , -+ 0xe076e , -+ 0xe076f , -+ 0xe0770 , -+ 0xe0771 , -+ 0xe0772 , -+ 0xe0773 , -+ 0xe0774 , -+ 0xe0775 , -+ 0xe0776 , -+ 0xe0777 , -+ 0xe0778 , -+ 0xe0779 , -+ 0xe077a , -+ 0xe077b , -+ 0xe077c , -+ 0xe077d , -+ 0xe077e , -+ 0xe077f , -+ 0xe0780 , -+ 0xe0781 , -+ 0xe0782 , -+ 0xe0783 , -+ 0xe0784 , -+ 0xe0785 , -+ 0xe0786 , -+ 0xe0787 , -+ 0xe0788 , -+ 0xe0789 , -+ 0xe078a , -+ 0xe078b , -+ 0xe078c , -+ 0xe078d , -+ 0xe078e , -+ 0xe078f , -+ 0xe0790 , -+ 0xe0791 , -+ 0xe0792 , -+ 0xe0793 , -+ 0xe0794 , -+ 0xe0795 , -+ 0xe0796 , -+ 0xe0797 , -+ 0xe0798 , -+ 0xe0799 , -+ 0xe079a , -+ 0xe079b , -+ 0xe079c , -+ 0xe079d , -+ 0xe079e , -+ 0xe079f , -+ 0xe07a0 , -+ 0xe07a1 , -+ 0xe07a2 , -+ 0xe07a3 , -+ 0xe07a4 , -+ 0xe07a5 , -+ 0xe07a6 , -+ 0xe07a7 , -+ 0xe07a8 , -+ 0xe07a9 , -+ 0xe07aa , -+ 0xe07ab , -+ 0xe07ac , -+ 0xe07ad , -+ 0xe07ae , -+ 0xe07af , -+ 0xe07b0 , -+ 0xe07b1 , -+ 0xe07b2 , -+ 0xe07b3 , -+ 0xe07b4 , -+ 0xe07b5 , -+ 0xe07b6 , -+ 0xe07b7 , -+ 0xe07b8 , -+ 0xe07b9 , -+ 0xe07ba , -+ 0xe07bb , -+ 0xe07bc , -+ 0xe07bd , -+ 0xe07be , -+ 0xe07bf , -+ 0xe07c0 , -+ 0xe07c1 , -+ 0xe07c2 , -+ 0xe07c3 , -+ 0xe07c4 , -+ 0xe07c5 , -+ 0xe07c6 , -+ 0xe07c7 , -+ 0xe07c8 , -+ 0xe07c9 , -+ 0xe07ca , -+ 0xe07cb , -+ 0xe07cc , -+ 0xe07cd , -+ 0xe07ce , -+ 0xe07cf , -+ 0xe07d0 , -+ 0xe07d1 , -+ 0xe07d2 , -+ 0xe07d3 , -+ 0xe07d4 , -+ 0xe07d5 , -+ 0xe07d6 , -+ 0xe07d7 , -+ 0xe07d8 , -+ 0xe07d9 , -+ 0xe07da , -+ 0xe07db , -+ 0xe07dc , -+ 0xe07dd , -+ 0xe07de , -+ 0xe07df , -+ 0xe07e0 , -+ 0xe07e1 , -+ 0xe07e2 , -+ 0xe07e3 , -+ 0xe07e4 , -+ 0xe07e5 , -+ 0xe07e6 , -+ 0xe07e7 , -+ 0xe07e8 , -+ 0xe07e9 , -+ 0xe07ea , -+ 0xe07eb , -+ 0xe07ec , -+ 0xe07ed , -+ 0xe07ee , -+ 0xe07ef , -+ 0xe07f0 , -+ 0xe07f1 , -+ 0xe07f2 , -+ 0xe07f3 , -+ 0xe07f4 , -+ 0xe07f5 , -+ 0xe07f6 , -+ 0xe07f7 , -+ 0xe07f8 , -+ 0xe07f9 , -+ 0xe07fa , -+ 0xe07fb , -+ 0xe07fc , -+ 0xe07fd , -+ 0xe07fe , -+ 0xe07ff , -+ 0xe0800 , -+ 0xe0801 , -+ 0xe0802 , -+ 0xe0803 , -+ 0xe0804 , -+ 0xe0805 , -+ 0xe0806 , -+ 0xe0807 , -+ 0xe0808 , -+ 0xe0809 , -+ 0xe080a , -+ 0xe080b , -+ 0xe080c , -+ 0xe080d , -+ 0xe080e , -+ 0xe080f , -+ 0xe0810 , -+ 0xe0811 , -+ 0xe0812 , -+ 0xe0813 , -+ 0xe0814 , -+ 0xe0815 , -+ 0xe0816 , -+ 0xe0817 , -+ 0xe0818 , -+ 0xe0819 , -+ 0xe081a , -+ 0xe081b , -+ 0xe081c , -+ 0xe081d , -+ 0xe081e , -+ 0xe081f , -+ 0xe0820 , -+ 0xe0821 , -+ 0xe0822 , -+ 0xe0823 , -+ 0xe0824 , -+ 0xe0825 , -+ 0xe0826 , -+ 0xe0827 , -+ 0xe0828 , -+ 0xe0829 , -+ 0xe082a , -+ 0xe082b , -+ 0xe082c , -+ 0xe082d , -+ 0xe082e , -+ 0xe082f , -+ 0xe0830 , -+ 0xe0831 , -+ 0xe0832 , -+ 0xe0833 , -+ 0xe0834 , -+ 0xe0835 , -+ 0xe0836 , -+ 0xe0837 , -+ 0xe0838 , -+ 0xe0839 , -+ 0xe083a , -+ 0xe083b , -+ 0xe083c , -+ 0xe083d , -+ 0xe083e , -+ 0xe083f , -+ 0xe0840 , -+ 0xe0841 , -+ 0xe0842 , -+ 0xe0843 , -+ 0xe0844 , -+ 0xe0845 , -+ 0xe0846 , -+ 0xe0847 , -+ 0xe0848 , -+ 0xe0849 , -+ 0xe084a , -+ 0xe084b , -+ 0xe084c , -+ 0xe084d , -+ 0xe084e , -+ 0xe084f , -+ 0xe0850 , -+ 0xe0851 , -+ 0xe0852 , -+ 0xe0853 , -+ 0xe0854 , -+ 0xe0855 , -+ 0xe0856 , -+ 0xe0857 , -+ 0xe0858 , -+ 0xe0859 , -+ 0xe085a , -+ 0xe085b , -+ 0xe085c , -+ 0xe085d , -+ 0xe085e , -+ 0xe085f , -+ 0xe0860 , -+ 0xe0861 , -+ 0xe0862 , -+ 0xe0863 , -+ 0xe0864 , -+ 0xe0865 , -+ 0xe0866 , -+ 0xe0867 , -+ 0xe0868 , -+ 0xe0869 , -+ 0xe086a , -+ 0xe086b , -+ 0xe086c , -+ 0xe086d , -+ 0xe086e , -+ 0xe086f , -+ 0xe0870 , -+ 0xe0871 , -+ 0xe0872 , -+ 0xe0873 , -+ 0xe0874 , -+ 0xe0875 , -+ 0xe0876 , -+ 0xe0877 , -+ 0xe0878 , -+ 0xe0879 , -+ 0xe087a , -+ 0xe087b , -+ 0xe087c , -+ 0xe087d , -+ 0xe087e , -+ 0xe087f , -+ 0xe0880 , -+ 0xe0881 , -+ 0xe0882 , -+ 0xe0883 , -+ 0xe0884 , -+ 0xe0885 , -+ 0xe0886 , -+ 0xe0887 , -+ 0xe0888 , -+ 0xe0889 , -+ 0xe088a , -+ 0xe088b , -+ 0xe088c , -+ 0xe088d , -+ 0xe088e , -+ 0xe088f , -+ 0xe0890 , -+ 0xe0891 , -+ 0xe0892 , -+ 0xe0893 , -+ 0xe0894 , -+ 0xe0895 , -+ 0xe0896 , -+ 0xe0897 , -+ 0xe0898 , -+ 0xe0899 , -+ 0xe089a , -+ 0xe089b , -+ 0xe089c , -+ 0xe089d , -+ 0xe089e , -+ 0xe089f , -+ 0xe08a0 , -+ 0xe08a1 , -+ 0xe08a2 , -+ 0xe08a3 , -+ 0xe08a4 , -+ 0xe08a5 , -+ 0xe08a6 , -+ 0xe08a7 , -+ 0xe08a8 , -+ 0xe08a9 , -+ 0xe08aa , -+ 0xe08ab , -+ 0xe08ac , -+ 0xe08ad , -+ 0xe08ae , -+ 0xe08af , -+ 0xe08b0 , -+ 0xe08b1 , -+ 0xe08b2 , -+ 0xe08b3 , -+ 0xe08b4 , -+ 0xe08b5 , -+ 0xe08b6 , -+ 0xe08b7 , -+ 0xe08b8 , -+ 0xe08b9 , -+ 0xe08ba , -+ 0xe08bb , -+ 0xe08bc , -+ 0xe08bd , -+ 0xe08be , -+ 0xe08bf , -+ 0xe08c0 , -+ 0xe08c1 , -+ 0xe08c2 , -+ 0xe08c3 , -+ 0xe08c4 , -+ 0xe08c5 , -+ 0xe08c6 , -+ 0xe08c7 , -+ 0xe08c8 , -+ 0xe08c9 , -+ 0xe08ca , -+ 0xe08cb , -+ 0xe08cc , -+ 0xe08cd , -+ 0xe08ce , -+ 0xe08cf , -+ 0xe08d0 , -+ 0xe08d1 , -+ 0xe08d2 , -+ 0xe08d3 , -+ 0xe08d4 , -+ 0xe08d5 , -+ 0xe08d6 , -+ 0xe08d7 , -+ 0xe08d8 , -+ 0xe08d9 , -+ 0xe08da , -+ 0xe08db , -+ 0xe08dc , -+ 0xe08dd , -+ 0xe08de , -+ 0xe08df , -+ 0xe08e0 , -+ 0xe08e1 , -+ 0xe08e2 , -+ 0xe08e3 , -+ 0xe08e4 , -+ 0xe08e5 , -+ 0xe08e6 , -+ 0xe08e7 , -+ 0xe08e8 , -+ 0xe08e9 , -+ 0xe08ea , -+ 0xe08eb , -+ 0xe08ec , -+ 0xe08ed , -+ 0xe08ee , -+ 0xe08ef , -+ 0xe08f0 , -+ 0xe08f1 , -+ 0xe08f2 , -+ 0xe08f3 , -+ 0xe08f4 , -+ 0xe08f5 , -+ 0xe08f6 , -+ 0xe08f7 , -+ 0xe08f8 , -+ 0xe08f9 , -+ 0xe08fa , -+ 0xe08fb , -+ 0xe08fc , -+ 0xe08fd , -+ 0xe08fe , -+ 0xe08ff , -+ 0xe0900 , -+ 0xe0901 , -+ 0xe0902 , -+ 0xe0903 , -+ 0xe0904 , -+ 0xe0905 , -+ 0xe0906 , -+ 0xe0907 , -+ 0xe0908 , -+ 0xe0909 , -+ 0xe090a , -+ 0xe090b , -+ 0xe090c , -+ 0xe090d , -+ 0xe090e , -+ 0xe090f , -+ 0xe0910 , -+ 0xe0911 , -+ 0xe0912 , -+ 0xe0913 , -+ 0xe0914 , -+ 0xe0915 , -+ 0xe0916 , -+ 0xe0917 , -+ 0xe0918 , -+ 0xe0919 , -+ 0xe091a , -+ 0xe091b , -+ 0xe091c , -+ 0xe091d , -+ 0xe091e , -+ 0xe091f , -+ 0xe0920 , -+ 0xe0921 , -+ 0xe0922 , -+ 0xe0923 , -+ 0xe0924 , -+ 0xe0925 , -+ 0xe0926 , -+ 0xe0927 , -+ 0xe0928 , -+ 0xe0929 , -+ 0xe092a , -+ 0xe092b , -+ 0xe092c , -+ 0xe092d , -+ 0xe092e , -+ 0xe092f , -+ 0xe0930 , -+ 0xe0931 , -+ 0xe0932 , -+ 0xe0933 , -+ 0xe0934 , -+ 0xe0935 , -+ 0xe0936 , -+ 0xe0937 , -+ 0xe0938 , -+ 0xe0939 , -+ 0xe093a , -+ 0xe093b , -+ 0xe093c , -+ 0xe093d , -+ 0xe093e , -+ 0xe093f , -+ 0xe0940 , -+ 0xe0941 , -+ 0xe0942 , -+ 0xe0943 , -+ 0xe0944 , -+ 0xe0945 , -+ 0xe0946 , -+ 0xe0947 , -+ 0xe0948 , -+ 0xe0949 , -+ 0xe094a , -+ 0xe094b , -+ 0xe094c , -+ 0xe094d , -+ 0xe094e , -+ 0xe094f , -+ 0xe0950 , -+ 0xe0951 , -+ 0xe0952 , -+ 0xe0953 , -+ 0xe0954 , -+ 0xe0955 , -+ 0xe0956 , -+ 0xe0957 , -+ 0xe0958 , -+ 0xe0959 , -+ 0xe095a , -+ 0xe095b , -+ 0xe095c , -+ 0xe095d , -+ 0xe095e , -+ 0xe095f , -+ 0xe0960 , -+ 0xe0961 , -+ 0xe0962 , -+ 0xe0963 , -+ 0xe0964 , -+ 0xe0965 , -+ 0xe0966 , -+ 0xe0967 , -+ 0xe0968 , -+ 0xe0969 , -+ 0xe096a , -+ 0xe096b , -+ 0xe096c , -+ 0xe096d , -+ 0xe096e , -+ 0xe096f , -+ 0xe0970 , -+ 0xe0971 , -+ 0xe0972 , -+ 0xe0973 , -+ 0xe0974 , -+ 0xe0975 , -+ 0xe0976 , -+ 0xe0977 , -+ 0xe0978 , -+ 0xe0979 , -+ 0xe097a , -+ 0xe097b , -+ 0xe097c , -+ 0xe097d , -+ 0xe097e , -+ 0xe097f , -+ 0xe0980 , -+ 0xe0981 , -+ 0xe0982 , -+ 0xe0983 , -+ 0xe0984 , -+ 0xe0985 , -+ 0xe0986 , -+ 0xe0987 , -+ 0xe0988 , -+ 0xe0989 , -+ 0xe098a , -+ 0xe098b , -+ 0xe098c , -+ 0xe098d , -+ 0xe098e , -+ 0xe098f , -+ 0xe0990 , -+ 0xe0991 , -+ 0xe0992 , -+ 0xe0993 , -+ 0xe0994 , -+ 0xe0995 , -+ 0xe0996 , -+ 0xe0997 , -+ 0xe0998 , -+ 0xe0999 , -+ 0xe099a , -+ 0xe099b , -+ 0xe099c , -+ 0xe099d , -+ 0xe099e , -+ 0xe099f , -+ 0xe09a0 , -+ 0xe09a1 , -+ 0xe09a2 , -+ 0xe09a3 , -+ 0xe09a4 , -+ 0xe09a5 , -+ 0xe09a6 , -+ 0xe09a7 , -+ 0xe09a8 , -+ 0xe09a9 , -+ 0xe09aa , -+ 0xe09ab , -+ 0xe09ac , -+ 0xe09ad , -+ 0xe09ae , -+ 0xe09af , -+ 0xe09b0 , -+ 0xe09b1 , -+ 0xe09b2 , -+ 0xe09b3 , -+ 0xe09b4 , -+ 0xe09b5 , -+ 0xe09b6 , -+ 0xe09b7 , -+ 0xe09b8 , -+ 0xe09b9 , -+ 0xe09ba , -+ 0xe09bb , -+ 0xe09bc , -+ 0xe09bd , -+ 0xe09be , -+ 0xe09bf , -+ 0xe09c0 , -+ 0xe09c1 , -+ 0xe09c2 , -+ 0xe09c3 , -+ 0xe09c4 , -+ 0xe09c5 , -+ 0xe09c6 , -+ 0xe09c7 , -+ 0xe09c8 , -+ 0xe09c9 , -+ 0xe09ca , -+ 0xe09cb , -+ 0xe09cc , -+ 0xe09cd , -+ 0xe09ce , -+ 0xe09cf , -+ 0xe09d0 , -+ 0xe09d1 , -+ 0xe09d2 , -+ 0xe09d3 , -+ 0xe09d4 , -+ 0xe09d5 , -+ 0xe09d6 , -+ 0xe09d7 , -+ 0xe09d8 , -+ 0xe09d9 , -+ 0xe09da , -+ 0xe09db , -+ 0xe09dc , -+ 0xe09dd , -+ 0xe09de , -+ 0xe09df , -+ 0xe09e0 , -+ 0xe09e1 , -+ 0xe09e2 , -+ 0xe09e3 , -+ 0xe09e4 , -+ 0xe09e5 , -+ 0xe09e6 , -+ 0xe09e7 , -+ 0xe09e8 , -+ 0xe09e9 , -+ 0xe09ea , -+ 0xe09eb , -+ 0xe09ec , -+ 0xe09ed , -+ 0xe09ee , -+ 0xe09ef , -+ 0xe09f0 , -+ 0xe09f1 , -+ 0xe09f2 , -+ 0xe09f3 , -+ 0xe09f4 , -+ 0xe09f5 , -+ 0xe09f6 , -+ 0xe09f7 , -+ 0xe09f8 , -+ 0xe09f9 , -+ 0xe09fa , -+ 0xe09fb , -+ 0xe09fc , -+ 0xe09fd , -+ 0xe09fe , -+ 0xe09ff , -+ 0xe0a00 , -+ 0xe0a01 , -+ 0xe0a02 , -+ 0xe0a03 , -+ 0xe0a04 , -+ 0xe0a05 , -+ 0xe0a06 , -+ 0xe0a07 , -+ 0xe0a08 , -+ 0xe0a09 , -+ 0xe0a0a , -+ 0xe0a0b , -+ 0xe0a0c , -+ 0xe0a0d , -+ 0xe0a0e , -+ 0xe0a0f , -+ 0xe0a10 , -+ 0xe0a11 , -+ 0xe0a12 , -+ 0xe0a13 , -+ 0xe0a14 , -+ 0xe0a15 , -+ 0xe0a16 , -+ 0xe0a17 , -+ 0xe0a18 , -+ 0xe0a19 , -+ 0xe0a1a , -+ 0xe0a1b , -+ 0xe0a1c , -+ 0xe0a1d , -+ 0xe0a1e , -+ 0xe0a1f , -+ 0xe0a20 , -+ 0xe0a21 , -+ 0xe0a22 , -+ 0xe0a23 , -+ 0xe0a24 , -+ 0xe0a25 , -+ 0xe0a26 , -+ 0xe0a27 , -+ 0xe0a28 , -+ 0xe0a29 , -+ 0xe0a2a , -+ 0xe0a2b , -+ 0xe0a2c , -+ 0xe0a2d , -+ 0xe0a2e , -+ 0xe0a2f , -+ 0xe0a30 , -+ 0xe0a31 , -+ 0xe0a32 , -+ 0xe0a33 , -+ 0xe0a34 , -+ 0xe0a35 , -+ 0xe0a36 , -+ 0xe0a37 , -+ 0xe0a38 , -+ 0xe0a39 , -+ 0xe0a3a , -+ 0xe0a3b , -+ 0xe0a3c , -+ 0xe0a3d , -+ 0xe0a3e , -+ 0xe0a3f , -+ 0xe0a40 , -+ 0xe0a41 , -+ 0xe0a42 , -+ 0xe0a43 , -+ 0xe0a44 , -+ 0xe0a45 , -+ 0xe0a46 , -+ 0xe0a47 , -+ 0xe0a48 , -+ 0xe0a49 , -+ 0xe0a4a , -+ 0xe0a4b , -+ 0xe0a4c , -+ 0xe0a4d , -+ 0xe0a4e , -+ 0xe0a4f , -+ 0xe0a50 , -+ 0xe0a51 , -+ 0xe0a52 , -+ 0xe0a53 , -+ 0xe0a54 , -+ 0xe0a55 , -+ 0xe0a56 , -+ 0xe0a57 , -+ 0xe0a58 , -+ 0xe0a59 , -+ 0xe0a5a , -+ 0xe0a5b , -+ 0xe0a5c , -+ 0xe0a5d , -+ 0xe0a5e , -+ 0xe0a5f , -+ 0xe0a60 , -+ 0xe0a61 , -+ 0xe0a62 , -+ 0xe0a63 , -+ 0xe0a64 , -+ 0xe0a65 , -+ 0xe0a66 , -+ 0xe0a67 , -+ 0xe0a68 , -+ 0xe0a69 , -+ 0xe0a6a , -+ 0xe0a6b , -+ 0xe0a6c , -+ 0xe0a6d , -+ 0xe0a6e , -+ 0xe0a6f , -+ 0xe0a70 , -+ 0xe0a71 , -+ 0xe0a72 , -+ 0xe0a73 , -+ 0xe0a74 , -+ 0xe0a75 , -+ 0xe0a76 , -+ 0xe0a77 , -+ 0xe0a78 , -+ 0xe0a79 , -+ 0xe0a7a , -+ 0xe0a7b , -+ 0xe0a7c , -+ 0xe0a7d , -+ 0xe0a7e , -+ 0xe0a7f , -+ 0xe0a80 , -+ 0xe0a81 , -+ 0xe0a82 , -+ 0xe0a83 , -+ 0xe0a84 , -+ 0xe0a85 , -+ 0xe0a86 , -+ 0xe0a87 , -+ 0xe0a88 , -+ 0xe0a89 , -+ 0xe0a8a , -+ 0xe0a8b , -+ 0xe0a8c , -+ 0xe0a8d , -+ 0xe0a8e , -+ 0xe0a8f , -+ 0xe0a90 , -+ 0xe0a91 , -+ 0xe0a92 , -+ 0xe0a93 , -+ 0xe0a94 , -+ 0xe0a95 , -+ 0xe0a96 , -+ 0xe0a97 , -+ 0xe0a98 , -+ 0xe0a99 , -+ 0xe0a9a , -+ 0xe0a9b , -+ 0xe0a9c , -+ 0xe0a9d , -+ 0xe0a9e , -+ 0xe0a9f , -+ 0xe0aa0 , -+ 0xe0aa1 , -+ 0xe0aa2 , -+ 0xe0aa3 , -+ 0xe0aa4 , -+ 0xe0aa5 , -+ 0xe0aa6 , -+ 0xe0aa7 , -+ 0xe0aa8 , -+ 0xe0aa9 , -+ 0xe0aaa , -+ 0xe0aab , -+ 0xe0aac , -+ 0xe0aad , -+ 0xe0aae , -+ 0xe0aaf , -+ 0xe0ab0 , -+ 0xe0ab1 , -+ 0xe0ab2 , -+ 0xe0ab3 , -+ 0xe0ab4 , -+ 0xe0ab5 , -+ 0xe0ab6 , -+ 0xe0ab7 , -+ 0xe0ab8 , -+ 0xe0ab9 , -+ 0xe0aba , -+ 0xe0abb , -+ 0xe0abc , -+ 0xe0abd , -+ 0xe0abe , -+ 0xe0abf , -+ 0xe0ac0 , -+ 0xe0ac1 , -+ 0xe0ac2 , -+ 0xe0ac3 , -+ 0xe0ac4 , -+ 0xe0ac5 , -+ 0xe0ac6 , -+ 0xe0ac7 , -+ 0xe0ac8 , -+ 0xe0ac9 , -+ 0xe0aca , -+ 0xe0acb , -+ 0xe0acc , -+ 0xe0acd , -+ 0xe0ace , -+ 0xe0acf , -+ 0xe0ad0 , -+ 0xe0ad1 , -+ 0xe0ad2 , -+ 0xe0ad3 , -+ 0xe0ad4 , -+ 0xe0ad5 , -+ 0xe0ad6 , -+ 0xe0ad7 , -+ 0xe0ad8 , -+ 0xe0ad9 , -+ 0xe0ada , -+ 0xe0adb , -+ 0xe0adc , -+ 0xe0add , -+ 0xe0ade , -+ 0xe0adf , -+ 0xe0ae0 , -+ 0xe0ae1 , -+ 0xe0ae2 , -+ 0xe0ae3 , -+ 0xe0ae4 , -+ 0xe0ae5 , -+ 0xe0ae6 , -+ 0xe0ae7 , -+ 0xe0ae8 , -+ 0xe0ae9 , -+ 0xe0aea , -+ 0xe0aeb , -+ 0xe0aec , -+ 0xe0aed , -+ 0xe0aee , -+ 0xe0aef , -+ 0xe0af0 , -+ 0xe0af1 , -+ 0xe0af2 , -+ 0xe0af3 , -+ 0xe0af4 , -+ 0xe0af5 , -+ 0xe0af6 , -+ 0xe0af7 , -+ 0xe0af8 , -+ 0xe0af9 , -+ 0xe0afa , -+ 0xe0afb , -+ 0xe0afc , -+ 0xe0afd , -+ 0xe0afe , -+ 0xe0aff , -+ 0xe0b00 , -+ 0xe0b01 , -+ 0xe0b02 , -+ 0xe0b03 , -+ 0xe0b04 , -+ 0xe0b05 , -+ 0xe0b06 , -+ 0xe0b07 , -+ 0xe0b08 , -+ 0xe0b09 , -+ 0xe0b0a , -+ 0xe0b0b , -+ 0xe0b0c , -+ 0xe0b0d , -+ 0xe0b0e , -+ 0xe0b0f , -+ 0xe0b10 , -+ 0xe0b11 , -+ 0xe0b12 , -+ 0xe0b13 , -+ 0xe0b14 , -+ 0xe0b15 , -+ 0xe0b16 , -+ 0xe0b17 , -+ 0xe0b18 , -+ 0xe0b19 , -+ 0xe0b1a , -+ 0xe0b1b , -+ 0xe0b1c , -+ 0xe0b1d , -+ 0xe0b1e , -+ 0xe0b1f , -+ 0xe0b20 , -+ 0xe0b21 , -+ 0xe0b22 , -+ 0xe0b23 , -+ 0xe0b24 , -+ 0xe0b25 , -+ 0xe0b26 , -+ 0xe0b27 , -+ 0xe0b28 , -+ 0xe0b29 , -+ 0xe0b2a , -+ 0xe0b2b , -+ 0xe0b2c , -+ 0xe0b2d , -+ 0xe0b2e , -+ 0xe0b2f , -+ 0xe0b30 , -+ 0xe0b31 , -+ 0xe0b32 , -+ 0xe0b33 , -+ 0xe0b34 , -+ 0xe0b35 , -+ 0xe0b36 , -+ 0xe0b37 , -+ 0xe0b38 , -+ 0xe0b39 , -+ 0xe0b3a , -+ 0xe0b3b , -+ 0xe0b3c , -+ 0xe0b3d , -+ 0xe0b3e , -+ 0xe0b3f , -+ 0xe0b40 , -+ 0xe0b41 , -+ 0xe0b42 , -+ 0xe0b43 , -+ 0xe0b44 , -+ 0xe0b45 , -+ 0xe0b46 , -+ 0xe0b47 , -+ 0xe0b48 , -+ 0xe0b49 , -+ 0xe0b4a , -+ 0xe0b4b , -+ 0xe0b4c , -+ 0xe0b4d , -+ 0xe0b4e , -+ 0xe0b4f , -+ 0xe0b50 , -+ 0xe0b51 , -+ 0xe0b52 , -+ 0xe0b53 , -+ 0xe0b54 , -+ 0xe0b55 , -+ 0xe0b56 , -+ 0xe0b57 , -+ 0xe0b58 , -+ 0xe0b59 , -+ 0xe0b5a , -+ 0xe0b5b , -+ 0xe0b5c , -+ 0xe0b5d , -+ 0xe0b5e , -+ 0xe0b5f , -+ 0xe0b60 , -+ 0xe0b61 , -+ 0xe0b62 , -+ 0xe0b63 , -+ 0xe0b64 , -+ 0xe0b65 , -+ 0xe0b66 , -+ 0xe0b67 , -+ 0xe0b68 , -+ 0xe0b69 , -+ 0xe0b6a , -+ 0xe0b6b , -+ 0xe0b6c , -+ 0xe0b6d , -+ 0xe0b6e , -+ 0xe0b6f , -+ 0xe0b70 , -+ 0xe0b71 , -+ 0xe0b72 , -+ 0xe0b73 , -+ 0xe0b74 , -+ 0xe0b75 , -+ 0xe0b76 , -+ 0xe0b77 , -+ 0xe0b78 , -+ 0xe0b79 , -+ 0xe0b7a , -+ 0xe0b7b , -+ 0xe0b7c , -+ 0xe0b7d , -+ 0xe0b7e , -+ 0xe0b7f , -+ 0xe0b80 , -+ 0xe0b81 , -+ 0xe0b82 , -+ 0xe0b83 , -+ 0xe0b84 , -+ 0xe0b85 , -+ 0xe0b86 , -+ 0xe0b87 , -+ 0xe0b88 , -+ 0xe0b89 , -+ 0xe0b8a , -+ 0xe0b8b , -+ 0xe0b8c , -+ 0xe0b8d , -+ 0xe0b8e , -+ 0xe0b8f , -+ 0xe0b90 , -+ 0xe0b91 , -+ 0xe0b92 , -+ 0xe0b93 , -+ 0xe0b94 , -+ 0xe0b95 , -+ 0xe0b96 , -+ 0xe0b97 , -+ 0xe0b98 , -+ 0xe0b99 , -+ 0xe0b9a , -+ 0xe0b9b , -+ 0xe0b9c , -+ 0xe0b9d , -+ 0xe0b9e , -+ 0xe0b9f , -+ 0xe0ba0 , -+ 0xe0ba1 , -+ 0xe0ba2 , -+ 0xe0ba3 , -+ 0xe0ba4 , -+ 0xe0ba5 , -+ 0xe0ba6 , -+ 0xe0ba7 , -+ 0xe0ba8 , -+ 0xe0ba9 , -+ 0xe0baa , -+ 0xe0bab , -+ 0xe0bac , -+ 0xe0bad , -+ 0xe0bae , -+ 0xe0baf , -+ 0xe0bb0 , -+ 0xe0bb1 , -+ 0xe0bb2 , -+ 0xe0bb3 , -+ 0xe0bb4 , -+ 0xe0bb5 , -+ 0xe0bb6 , -+ 0xe0bb7 , -+ 0xe0bb8 , -+ 0xe0bb9 , -+ 0xe0bba , -+ 0xe0bbb , -+ 0xe0bbc , -+ 0xe0bbd , -+ 0xe0bbe , -+ 0xe0bbf , -+ 0xe0bc0 , -+ 0xe0bc1 , -+ 0xe0bc2 , -+ 0xe0bc3 , -+ 0xe0bc4 , -+ 0xe0bc5 , -+ 0xe0bc6 , -+ 0xe0bc7 , -+ 0xe0bc8 , -+ 0xe0bc9 , -+ 0xe0bca , -+ 0xe0bcb , -+ 0xe0bcc , -+ 0xe0bcd , -+ 0xe0bce , -+ 0xe0bcf , -+ 0xe0bd0 , -+ 0xe0bd1 , -+ 0xe0bd2 , -+ 0xe0bd3 , -+ 0xe0bd4 , -+ 0xe0bd5 , -+ 0xe0bd6 , -+ 0xe0bd7 , -+ 0xe0bd8 , -+ 0xe0bd9 , -+ 0xe0bda , -+ 0xe0bdb , -+ 0xe0bdc , -+ 0xe0bdd , -+ 0xe0bde , -+ 0xe0bdf , -+ 0xe0be0 , -+ 0xe0be1 , -+ 0xe0be2 , -+ 0xe0be3 , -+ 0xe0be4 , -+ 0xe0be5 , -+ 0xe0be6 , -+ 0xe0be7 , -+ 0xe0be8 , -+ 0xe0be9 , -+ 0xe0bea , -+ 0xe0beb , -+ 0xe0bec , -+ 0xe0bed , -+ 0xe0bee , -+ 0xe0bef , -+ 0xe0bf0 , -+ 0xe0bf1 , -+ 0xe0bf2 , -+ 0xe0bf3 , -+ 0xe0bf4 , -+ 0xe0bf5 , -+ 0xe0bf6 , -+ 0xe0bf7 , -+ 0xe0bf8 , -+ 0xe0bf9 , -+ 0xe0bfa , -+ 0xe0bfb , -+ 0xe0bfc , -+ 0xe0bfd , -+ 0xe0bfe , -+ 0xe0bff , -+ 0xe0c00 , -+ 0xe0c01 , -+ 0xe0c02 , -+ 0xe0c03 , -+ 0xe0c04 , -+ 0xe0c05 , -+ 0xe0c06 , -+ 0xe0c07 , -+ 0xe0c08 , -+ 0xe0c09 , -+ 0xe0c0a , -+ 0xe0c0b , -+ 0xe0c0c , -+ 0xe0c0d , -+ 0xe0c0e , -+ 0xe0c0f , -+ 0xe0c10 , -+ 0xe0c11 , -+ 0xe0c12 , -+ 0xe0c13 , -+ 0xe0c14 , -+ 0xe0c15 , -+ 0xe0c16 , -+ 0xe0c17 , -+ 0xe0c18 , -+ 0xe0c19 , -+ 0xe0c1a , -+ 0xe0c1b , -+ 0xe0c1c , -+ 0xe0c1d , -+ 0xe0c1e , -+ 0xe0c1f , -+ 0xe0c20 , -+ 0xe0c21 , -+ 0xe0c22 , -+ 0xe0c23 , -+ 0xe0c24 , -+ 0xe0c25 , -+ 0xe0c26 , -+ 0xe0c27 , -+ 0xe0c28 , -+ 0xe0c29 , -+ 0xe0c2a , -+ 0xe0c2b , -+ 0xe0c2c , -+ 0xe0c2d , -+ 0xe0c2e , -+ 0xe0c2f , -+ 0xe0c30 , -+ 0xe0c31 , -+ 0xe0c32 , -+ 0xe0c33 , -+ 0xe0c34 , -+ 0xe0c35 , -+ 0xe0c36 , -+ 0xe0c37 , -+ 0xe0c38 , -+ 0xe0c39 , -+ 0xe0c3a , -+ 0xe0c3b , -+ 0xe0c3c , -+ 0xe0c3d , -+ 0xe0c3e , -+ 0xe0c3f , -+ 0xe0c40 , -+ 0xe0c41 , -+ 0xe0c42 , -+ 0xe0c43 , -+ 0xe0c44 , -+ 0xe0c45 , -+ 0xe0c46 , -+ 0xe0c47 , -+ 0xe0c48 , -+ 0xe0c49 , -+ 0xe0c4a , -+ 0xe0c4b , -+ 0xe0c4c , -+ 0xe0c4d , -+ 0xe0c4e , -+ 0xe0c4f , -+ 0xe0c50 , -+ 0xe0c51 , -+ 0xe0c52 , -+ 0xe0c53 , -+ 0xe0c54 , -+ 0xe0c55 , -+ 0xe0c56 , -+ 0xe0c57 , -+ 0xe0c58 , -+ 0xe0c59 , -+ 0xe0c5a , -+ 0xe0c5b , -+ 0xe0c5c , -+ 0xe0c5d , -+ 0xe0c5e , -+ 0xe0c5f , -+ 0xe0c60 , -+ 0xe0c61 , -+ 0xe0c62 , -+ 0xe0c63 , -+ 0xe0c64 , -+ 0xe0c65 , -+ 0xe0c66 , -+ 0xe0c67 , -+ 0xe0c68 , -+ 0xe0c69 , -+ 0xe0c6a , -+ 0xe0c6b , -+ 0xe0c6c , -+ 0xe0c6d , -+ 0xe0c6e , -+ 0xe0c6f , -+ 0xe0c70 , -+ 0xe0c71 , -+ 0xe0c72 , -+ 0xe0c73 , -+ 0xe0c74 , -+ 0xe0c75 , -+ 0xe0c76 , -+ 0xe0c77 , -+ 0xe0c78 , -+ 0xe0c79 , -+ 0xe0c7a , -+ 0xe0c7b , -+ 0xe0c7c , -+ 0xe0c7d , -+ 0xe0c7e , -+ 0xe0c7f , -+ 0xe0c80 , -+ 0xe0c81 , -+ 0xe0c82 , -+ 0xe0c83 , -+ 0xe0c84 , -+ 0xe0c85 , -+ 0xe0c86 , -+ 0xe0c87 , -+ 0xe0c88 , -+ 0xe0c89 , -+ 0xe0c8a , -+ 0xe0c8b , -+ 0xe0c8c , -+ 0xe0c8d , -+ 0xe0c8e , -+ 0xe0c8f , -+ 0xe0c90 , -+ 0xe0c91 , -+ 0xe0c92 , -+ 0xe0c93 , -+ 0xe0c94 , -+ 0xe0c95 , -+ 0xe0c96 , -+ 0xe0c97 , -+ 0xe0c98 , -+ 0xe0c99 , -+ 0xe0c9a , -+ 0xe0c9b , -+ 0xe0c9c , -+ 0xe0c9d , -+ 0xe0c9e , -+ 0xe0c9f , -+ 0xe0ca0 , -+ 0xe0ca1 , -+ 0xe0ca2 , -+ 0xe0ca3 , -+ 0xe0ca4 , -+ 0xe0ca5 , -+ 0xe0ca6 , -+ 0xe0ca7 , -+ 0xe0ca8 , -+ 0xe0ca9 , -+ 0xe0caa , -+ 0xe0cab , -+ 0xe0cac , -+ 0xe0cad , -+ 0xe0cae , -+ 0xe0caf , -+ 0xe0cb0 , -+ 0xe0cb1 , -+ 0xe0cb2 , -+ 0xe0cb3 , -+ 0xe0cb4 , -+ 0xe0cb5 , -+ 0xe0cb6 , -+ 0xe0cb7 , -+ 0xe0cb8 , -+ 0xe0cb9 , -+ 0xe0cba , -+ 0xe0cbb , -+ 0xe0cbc , -+ 0xe0cbd , -+ 0xe0cbe , -+ 0xe0cbf , -+ 0xe0cc0 , -+ 0xe0cc1 , -+ 0xe0cc2 , -+ 0xe0cc3 , -+ 0xe0cc4 , -+ 0xe0cc5 , -+ 0xe0cc6 , -+ 0xe0cc7 , -+ 0xe0cc8 , -+ 0xe0cc9 , -+ 0xe0cca , -+ 0xe0ccb , -+ 0xe0ccc , -+ 0xe0ccd , -+ 0xe0cce , -+ 0xe0ccf , -+ 0xe0cd0 , -+ 0xe0cd1 , -+ 0xe0cd2 , -+ 0xe0cd3 , -+ 0xe0cd4 , -+ 0xe0cd5 , -+ 0xe0cd6 , -+ 0xe0cd7 , -+ 0xe0cd8 , -+ 0xe0cd9 , -+ 0xe0cda , -+ 0xe0cdb , -+ 0xe0cdc , -+ 0xe0cdd , -+ 0xe0cde , -+ 0xe0cdf , -+ 0xe0ce0 , -+ 0xe0ce1 , -+ 0xe0ce2 , -+ 0xe0ce3 , -+ 0xe0ce4 , -+ 0xe0ce5 , -+ 0xe0ce6 , -+ 0xe0ce7 , -+ 0xe0ce8 , -+ 0xe0ce9 , -+ 0xe0cea , -+ 0xe0ceb , -+ 0xe0cec , -+ 0xe0ced , -+ 0xe0cee , -+ 0xe0cef , -+ 0xe0cf0 , -+ 0xe0cf1 , -+ 0xe0cf2 , -+ 0xe0cf3 , -+ 0xe0cf4 , -+ 0xe0cf5 , -+ 0xe0cf6 , -+ 0xe0cf7 , -+ 0xe0cf8 , -+ 0xe0cf9 , -+ 0xe0cfa , -+ 0xe0cfb , -+ 0xe0cfc , -+ 0xe0cfd , -+ 0xe0cfe , -+ 0xe0cff , -+ 0xe0d00 , -+ 0xe0d01 , -+ 0xe0d02 , -+ 0xe0d03 , -+ 0xe0d04 , -+ 0xe0d05 , -+ 0xe0d06 , -+ 0xe0d07 , -+ 0xe0d08 , -+ 0xe0d09 , -+ 0xe0d0a , -+ 0xe0d0b , -+ 0xe0d0c , -+ 0xe0d0d , -+ 0xe0d0e , -+ 0xe0d0f , -+ 0xe0d10 , -+ 0xe0d11 , -+ 0xe0d12 , -+ 0xe0d13 , -+ 0xe0d14 , -+ 0xe0d15 , -+ 0xe0d16 , -+ 0xe0d17 , -+ 0xe0d18 , -+ 0xe0d19 , -+ 0xe0d1a , -+ 0xe0d1b , -+ 0xe0d1c , -+ 0xe0d1d , -+ 0xe0d1e , -+ 0xe0d1f , -+ 0xe0d20 , -+ 0xe0d21 , -+ 0xe0d22 , -+ 0xe0d23 , -+ 0xe0d24 , -+ 0xe0d25 , -+ 0xe0d26 , -+ 0xe0d27 , -+ 0xe0d28 , -+ 0xe0d29 , -+ 0xe0d2a , -+ 0xe0d2b , -+ 0xe0d2c , -+ 0xe0d2d , -+ 0xe0d2e , -+ 0xe0d2f , -+ 0xe0d30 , -+ 0xe0d31 , -+ 0xe0d32 , -+ 0xe0d33 , -+ 0xe0d34 , -+ 0xe0d35 , -+ 0xe0d36 , -+ 0xe0d37 , -+ 0xe0d38 , -+ 0xe0d39 , -+ 0xe0d3a , -+ 0xe0d3b , -+ 0xe0d3c , -+ 0xe0d3d , -+ 0xe0d3e , -+ 0xe0d3f , -+ 0xe0d40 , -+ 0xe0d41 , -+ 0xe0d42 , -+ 0xe0d43 , -+ 0xe0d44 , -+ 0xe0d45 , -+ 0xe0d46 , -+ 0xe0d47 , -+ 0xe0d48 , -+ 0xe0d49 , -+ 0xe0d4a , -+ 0xe0d4b , -+ 0xe0d4c , -+ 0xe0d4d , -+ 0xe0d4e , -+ 0xe0d4f , -+ 0xe0d50 , -+ 0xe0d51 , -+ 0xe0d52 , -+ 0xe0d53 , -+ 0xe0d54 , -+ 0xe0d55 , -+ 0xe0d56 , -+ 0xe0d57 , -+ 0xe0d58 , -+ 0xe0d59 , -+ 0xe0d5a , -+ 0xe0d5b , -+ 0xe0d5c , -+ 0xe0d5d , -+ 0xe0d5e , -+ 0xe0d5f , -+ 0xe0d60 , -+ 0xe0d61 , -+ 0xe0d62 , -+ 0xe0d63 , -+ 0xe0d64 , -+ 0xe0d65 , -+ 0xe0d66 , -+ 0xe0d67 , -+ 0xe0d68 , -+ 0xe0d69 , -+ 0xe0d6a , -+ 0xe0d6b , -+ 0xe0d6c , -+ 0xe0d6d , -+ 0xe0d6e , -+ 0xe0d6f , -+ 0xe0d70 , -+ 0xe0d71 , -+ 0xe0d72 , -+ 0xe0d73 , -+ 0xe0d74 , -+ 0xe0d75 , -+ 0xe0d76 , -+ 0xe0d77 , -+ 0xe0d78 , -+ 0xe0d79 , -+ 0xe0d7a , -+ 0xe0d7b , -+ 0xe0d7c , -+ 0xe0d7d , -+ 0xe0d7e , -+ 0xe0d7f , -+ 0xe0d80 , -+ 0xe0d81 , -+ 0xe0d82 , -+ 0xe0d83 , -+ 0xe0d84 , -+ 0xe0d85 , -+ 0xe0d86 , -+ 0xe0d87 , -+ 0xe0d88 , -+ 0xe0d89 , -+ 0xe0d8a , -+ 0xe0d8b , -+ 0xe0d8c , -+ 0xe0d8d , -+ 0xe0d8e , -+ 0xe0d8f , -+ 0xe0d90 , -+ 0xe0d91 , -+ 0xe0d92 , -+ 0xe0d93 , -+ 0xe0d94 , -+ 0xe0d95 , -+ 0xe0d96 , -+ 0xe0d97 , -+ 0xe0d98 , -+ 0xe0d99 , -+ 0xe0d9a , -+ 0xe0d9b , -+ 0xe0d9c , -+ 0xe0d9d , -+ 0xe0d9e , -+ 0xe0d9f , -+ 0xe0da0 , -+ 0xe0da1 , -+ 0xe0da2 , -+ 0xe0da3 , -+ 0xe0da4 , -+ 0xe0da5 , -+ 0xe0da6 , -+ 0xe0da7 , -+ 0xe0da8 , -+ 0xe0da9 , -+ 0xe0daa , -+ 0xe0dab , -+ 0xe0dac , -+ 0xe0dad , -+ 0xe0dae , -+ 0xe0daf , -+ 0xe0db0 , -+ 0xe0db1 , -+ 0xe0db2 , -+ 0xe0db3 , -+ 0xe0db4 , -+ 0xe0db5 , -+ 0xe0db6 , -+ 0xe0db7 , -+ 0xe0db8 , -+ 0xe0db9 , -+ 0xe0dba , -+ 0xe0dbb , -+ 0xe0dbc , -+ 0xe0dbd , -+ 0xe0dbe , -+ 0xe0dbf , -+ 0xe0dc0 , -+ 0xe0dc1 , -+ 0xe0dc2 , -+ 0xe0dc3 , -+ 0xe0dc4 , -+ 0xe0dc5 , -+ 0xe0dc6 , -+ 0xe0dc7 , -+ 0xe0dc8 , -+ 0xe0dc9 , -+ 0xe0dca , -+ 0xe0dcb , -+ 0xe0dcc , -+ 0xe0dcd , -+ 0xe0dce , -+ 0xe0dcf , -+ 0xe0dd0 , -+ 0xe0dd1 , -+ 0xe0dd2 , -+ 0xe0dd3 , -+ 0xe0dd4 , -+ 0xe0dd5 , -+ 0xe0dd6 , -+ 0xe0dd7 , -+ 0xe0dd8 , -+ 0xe0dd9 , -+ 0xe0dda , -+ 0xe0ddb , -+ 0xe0ddc , -+ 0xe0ddd , -+ 0xe0dde , -+ 0xe0ddf , -+ 0xe0de0 , -+ 0xe0de1 , -+ 0xe0de2 , -+ 0xe0de3 , -+ 0xe0de4 , -+ 0xe0de5 , -+ 0xe0de6 , -+ 0xe0de7 , -+ 0xe0de8 , -+ 0xe0de9 , -+ 0xe0dea , -+ 0xe0deb , -+ 0xe0dec , -+ 0xe0ded , -+ 0xe0dee , -+ 0xe0def , -+ 0xe0df0 , -+ 0xe0df1 , -+ 0xe0df2 , -+ 0xe0df3 , -+ 0xe0df4 , -+ 0xe0df5 , -+ 0xe0df6 , -+ 0xe0df7 , -+ 0xe0df8 , -+ 0xe0df9 , -+ 0xe0dfa , -+ 0xe0dfb , -+ 0xe0dfc , -+ 0xe0dfd , -+ 0xe0dfe , -+ 0xe0dff , -+ 0xe0e00 , -+ 0xe0e01 , -+ 0xe0e02 , -+ 0xe0e03 , -+ 0xe0e04 , -+ 0xe0e05 , -+ 0xe0e06 , -+ 0xe0e07 , -+ 0xe0e08 , -+ 0xe0e09 , -+ 0xe0e0a , -+ 0xe0e0b , -+ 0xe0e0c , -+ 0xe0e0d , -+ 0xe0e0e , -+ 0xe0e0f , -+ 0xe0e10 , -+ 0xe0e11 , -+ 0xe0e12 , -+ 0xe0e13 , -+ 0xe0e14 , -+ 0xe0e15 , -+ 0xe0e16 , -+ 0xe0e17 , -+ 0xe0e18 , -+ 0xe0e19 , -+ 0xe0e1a , -+ 0xe0e1b , -+ 0xe0e1c , -+ 0xe0e1d , -+ 0xe0e1e , -+ 0xe0e1f , -+ 0xe0e20 , -+ 0xe0e21 , -+ 0xe0e22 , -+ 0xe0e23 , -+ 0xe0e24 , -+ 0xe0e25 , -+ 0xe0e26 , -+ 0xe0e27 , -+ 0xe0e28 , -+ 0xe0e29 , -+ 0xe0e2a , -+ 0xe0e2b , -+ 0xe0e2c , -+ 0xe0e2d , -+ 0xe0e2e , -+ 0xe0e2f , -+ 0xe0e30 , -+ 0xe0e31 , -+ 0xe0e32 , -+ 0xe0e33 , -+ 0xe0e34 , -+ 0xe0e35 , -+ 0xe0e36 , -+ 0xe0e37 , -+ 0xe0e38 , -+ 0xe0e39 , -+ 0xe0e3a , -+ 0xe0e3b , -+ 0xe0e3c , -+ 0xe0e3d , -+ 0xe0e3e , -+ 0xe0e3f , -+ 0xe0e40 , -+ 0xe0e41 , -+ 0xe0e42 , -+ 0xe0e43 , -+ 0xe0e44 , -+ 0xe0e45 , -+ 0xe0e46 , -+ 0xe0e47 , -+ 0xe0e48 , -+ 0xe0e49 , -+ 0xe0e4a , -+ 0xe0e4b , -+ 0xe0e4c , -+ 0xe0e4d , -+ 0xe0e4e , -+ 0xe0e4f , -+ 0xe0e50 , -+ 0xe0e51 , -+ 0xe0e52 , -+ 0xe0e53 , -+ 0xe0e54 , -+ 0xe0e55 , -+ 0xe0e56 , -+ 0xe0e57 , -+ 0xe0e58 , -+ 0xe0e59 , -+ 0xe0e5a , -+ 0xe0e5b , -+ 0xe0e5c , -+ 0xe0e5d , -+ 0xe0e5e , -+ 0xe0e5f , -+ 0xe0e60 , -+ 0xe0e61 , -+ 0xe0e62 , -+ 0xe0e63 , -+ 0xe0e64 , -+ 0xe0e65 , -+ 0xe0e66 , -+ 0xe0e67 , -+ 0xe0e68 , -+ 0xe0e69 , -+ 0xe0e6a , -+ 0xe0e6b , -+ 0xe0e6c , -+ 0xe0e6d , -+ 0xe0e6e , -+ 0xe0e6f , -+ 0xe0e70 , -+ 0xe0e71 , -+ 0xe0e72 , -+ 0xe0e73 , -+ 0xe0e74 , -+ 0xe0e75 , -+ 0xe0e76 , -+ 0xe0e77 , -+ 0xe0e78 , -+ 0xe0e79 , -+ 0xe0e7a , -+ 0xe0e7b , -+ 0xe0e7c , -+ 0xe0e7d , -+ 0xe0e7e , -+ 0xe0e7f , -+ 0xe0e80 , -+ 0xe0e81 , -+ 0xe0e82 , -+ 0xe0e83 , -+ 0xe0e84 , -+ 0xe0e85 , -+ 0xe0e86 , -+ 0xe0e87 , -+ 0xe0e88 , -+ 0xe0e89 , -+ 0xe0e8a , -+ 0xe0e8b , -+ 0xe0e8c , -+ 0xe0e8d , -+ 0xe0e8e , -+ 0xe0e8f , -+ 0xe0e90 , -+ 0xe0e91 , -+ 0xe0e92 , -+ 0xe0e93 , -+ 0xe0e94 , -+ 0xe0e95 , -+ 0xe0e96 , -+ 0xe0e97 , -+ 0xe0e98 , -+ 0xe0e99 , -+ 0xe0e9a , -+ 0xe0e9b , -+ 0xe0e9c , -+ 0xe0e9d , -+ 0xe0e9e , -+ 0xe0e9f , -+ 0xe0ea0 , -+ 0xe0ea1 , -+ 0xe0ea2 , -+ 0xe0ea3 , -+ 0xe0ea4 , -+ 0xe0ea5 , -+ 0xe0ea6 , -+ 0xe0ea7 , -+ 0xe0ea8 , -+ 0xe0ea9 , -+ 0xe0eaa , -+ 0xe0eab , -+ 0xe0eac , -+ 0xe0ead , -+ 0xe0eae , -+ 0xe0eaf , -+ 0xe0eb0 , -+ 0xe0eb1 , -+ 0xe0eb2 , -+ 0xe0eb3 , -+ 0xe0eb4 , -+ 0xe0eb5 , -+ 0xe0eb6 , -+ 0xe0eb7 , -+ 0xe0eb8 , -+ 0xe0eb9 , -+ 0xe0eba , -+ 0xe0ebb , -+ 0xe0ebc , -+ 0xe0ebd , -+ 0xe0ebe , -+ 0xe0ebf , -+ 0xe0ec0 , -+ 0xe0ec1 , -+ 0xe0ec2 , -+ 0xe0ec3 , -+ 0xe0ec4 , -+ 0xe0ec5 , -+ 0xe0ec6 , -+ 0xe0ec7 , -+ 0xe0ec8 , -+ 0xe0ec9 , -+ 0xe0eca , -+ 0xe0ecb , -+ 0xe0ecc , -+ 0xe0ecd , -+ 0xe0ece , -+ 0xe0ecf , -+ 0xe0ed0 , -+ 0xe0ed1 , -+ 0xe0ed2 , -+ 0xe0ed3 , -+ 0xe0ed4 , -+ 0xe0ed5 , -+ 0xe0ed6 , -+ 0xe0ed7 , -+ 0xe0ed8 , -+ 0xe0ed9 , -+ 0xe0eda , -+ 0xe0edb , -+ 0xe0edc , -+ 0xe0edd , -+ 0xe0ede , -+ 0xe0edf , -+ 0xe0ee0 , -+ 0xe0ee1 , -+ 0xe0ee2 , -+ 0xe0ee3 , -+ 0xe0ee4 , -+ 0xe0ee5 , -+ 0xe0ee6 , -+ 0xe0ee7 , -+ 0xe0ee8 , -+ 0xe0ee9 , -+ 0xe0eea , -+ 0xe0eeb , -+ 0xe0eec , -+ 0xe0eed , -+ 0xe0eee , -+ 0xe0eef , -+ 0xe0ef0 , -+ 0xe0ef1 , -+ 0xe0ef2 , -+ 0xe0ef3 , -+ 0xe0ef4 , -+ 0xe0ef5 , -+ 0xe0ef6 , -+ 0xe0ef7 , -+ 0xe0ef8 , -+ 0xe0ef9 , -+ 0xe0efa , -+ 0xe0efb , -+ 0xe0efc , -+ 0xe0efd , -+ 0xe0efe , -+ 0xe0eff , -+ 0xe0f00 , -+ 0xe0f01 , -+ 0xe0f02 , -+ 0xe0f03 , -+ 0xe0f04 , -+ 0xe0f05 , -+ 0xe0f06 , -+ 0xe0f07 , -+ 0xe0f08 , -+ 0xe0f09 , -+ 0xe0f0a , -+ 0xe0f0b , -+ 0xe0f0c , -+ 0xe0f0d , -+ 0xe0f0e , -+ 0xe0f0f , -+ 0xe0f10 , -+ 0xe0f11 , -+ 0xe0f12 , -+ 0xe0f13 , -+ 0xe0f14 , -+ 0xe0f15 , -+ 0xe0f16 , -+ 0xe0f17 , -+ 0xe0f18 , -+ 0xe0f19 , -+ 0xe0f1a , -+ 0xe0f1b , -+ 0xe0f1c , -+ 0xe0f1d , -+ 0xe0f1e , -+ 0xe0f1f , -+ 0xe0f20 , -+ 0xe0f21 , -+ 0xe0f22 , -+ 0xe0f23 , -+ 0xe0f24 , -+ 0xe0f25 , -+ 0xe0f26 , -+ 0xe0f27 , -+ 0xe0f28 , -+ 0xe0f29 , -+ 0xe0f2a , -+ 0xe0f2b , -+ 0xe0f2c , -+ 0xe0f2d , -+ 0xe0f2e , -+ 0xe0f2f , -+ 0xe0f30 , -+ 0xe0f31 , -+ 0xe0f32 , -+ 0xe0f33 , -+ 0xe0f34 , -+ 0xe0f35 , -+ 0xe0f36 , -+ 0xe0f37 , -+ 0xe0f38 , -+ 0xe0f39 , -+ 0xe0f3a , -+ 0xe0f3b , -+ 0xe0f3c , -+ 0xe0f3d , -+ 0xe0f3e , -+ 0xe0f3f , -+ 0xe0f40 , -+ 0xe0f41 , -+ 0xe0f42 , -+ 0xe0f43 , -+ 0xe0f44 , -+ 0xe0f45 , -+ 0xe0f46 , -+ 0xe0f47 , -+ 0xe0f48 , -+ 0xe0f49 , -+ 0xe0f4a , -+ 0xe0f4b , -+ 0xe0f4c , -+ 0xe0f4d , -+ 0xe0f4e , -+ 0xe0f4f , -+ 0xe0f50 , -+ 0xe0f51 , -+ 0xe0f52 , -+ 0xe0f53 , -+ 0xe0f54 , -+ 0xe0f55 , -+ 0xe0f56 , -+ 0xe0f57 , -+ 0xe0f58 , -+ 0xe0f59 , -+ 0xe0f5a , -+ 0xe0f5b , -+ 0xe0f5c , -+ 0xe0f5d , -+ 0xe0f5e , -+ 0xe0f5f , -+ 0xe0f60 , -+ 0xe0f61 , -+ 0xe0f62 , -+ 0xe0f63 , -+ 0xe0f64 , -+ 0xe0f65 , -+ 0xe0f66 , -+ 0xe0f67 , -+ 0xe0f68 , -+ 0xe0f69 , -+ 0xe0f6a , -+ 0xe0f6b , -+ 0xe0f6c , -+ 0xe0f6d , -+ 0xe0f6e , -+ 0xe0f6f , -+ 0xe0f70 , -+ 0xe0f71 , -+ 0xe0f72 , -+ 0xe0f73 , -+ 0xe0f74 , -+ 0xe0f75 , -+ 0xe0f76 , -+ 0xe0f77 , -+ 0xe0f78 , -+ 0xe0f79 , -+ 0xe0f7a , -+ 0xe0f7b , -+ 0xe0f7c , -+ 0xe0f7d , -+ 0xe0f7e , -+ 0xe0f7f , -+ 0xe0f80 , -+ 0xe0f81 , -+ 0xe0f82 , -+ 0xe0f83 , -+ 0xe0f84 , -+ 0xe0f85 , -+ 0xe0f86 , -+ 0xe0f87 , -+ 0xe0f88 , -+ 0xe0f89 , -+ 0xe0f8a , -+ 0xe0f8b , -+ 0xe0f8c , -+ 0xe0f8d , -+ 0xe0f8e , -+ 0xe0f8f , -+ 0xe0f90 , -+ 0xe0f91 , -+ 0xe0f92 , -+ 0xe0f93 , -+ 0xe0f94 , -+ 0xe0f95 , -+ 0xe0f96 , -+ 0xe0f97 , -+ 0xe0f98 , -+ 0xe0f99 , -+ 0xe0f9a , -+ 0xe0f9b , -+ 0xe0f9c , -+ 0xe0f9d , -+ 0xe0f9e , -+ 0xe0f9f , -+ 0xe0fa0 , -+ 0xe0fa1 , -+ 0xe0fa2 , -+ 0xe0fa3 , -+ 0xe0fa4 , -+ 0xe0fa5 , -+ 0xe0fa6 , -+ 0xe0fa7 , -+ 0xe0fa8 , -+ 0xe0fa9 , -+ 0xe0faa , -+ 0xe0fab , -+ 0xe0fac , -+ 0xe0fad , -+ 0xe0fae , -+ 0xe0faf , -+ 0xe0fb0 , -+ 0xe0fb1 , -+ 0xe0fb2 , -+ 0xe0fb3 , -+ 0xe0fb4 , -+ 0xe0fb5 , -+ 0xe0fb6 , -+ 0xe0fb7 , -+ 0xe0fb8 , -+ 0xe0fb9 , -+ 0xe0fba , -+ 0xe0fbb , -+ 0xe0fbc , -+ 0xe0fbd , -+ 0xe0fbe , -+ 0xe0fbf , -+ 0xe0fc0 , -+ 0xe0fc1 , -+ 0xe0fc2 , -+ 0xe0fc3 , -+ 0xe0fc4 , -+ 0xe0fc5 , -+ 0xe0fc6 , -+ 0xe0fc7 , -+ 0xe0fc8 , -+ 0xe0fc9 , -+ 0xe0fca , -+ 0xe0fcb , -+ 0xe0fcc , -+ 0xe0fcd , -+ 0xe0fce , -+ 0xe0fcf , -+ 0xe0fd0 , -+ 0xe0fd1 , -+ 0xe0fd2 , -+ 0xe0fd3 , -+ 0xe0fd4 , -+ 0xe0fd5 , -+ 0xe0fd6 , -+ 0xe0fd7 , -+ 0xe0fd8 , -+ 0xe0fd9 , -+ 0xe0fda , -+ 0xe0fdb , -+ 0xe0fdc , -+ 0xe0fdd , -+ 0xe0fde , -+ 0xe0fdf , -+ 0xe0fe0 , -+ 0xe0fe1 , -+ 0xe0fe2 , -+ 0xe0fe3 , -+ 0xe0fe4 , -+ 0xe0fe5 , -+ 0xe0fe6 , -+ 0xe0fe7 , -+ 0xe0fe8 , -+ 0xe0fe9 , -+ 0xe0fea , -+ 0xe0feb , -+ 0xe0fec , -+ 0xe0fed , -+ 0xe0fee , -+ 0xe0fef , -+ 0xe0ff0 , -+ 0xe0ff1 , -+ 0xe0ff2 , -+ 0xe0ff3 , -+ 0xe0ff4 , -+ 0xe0ff5 , -+ 0xe0ff6 , -+ 0xe0ff7 , -+ 0xe0ff8 , -+ 0xe0ff9 , -+ 0xe0ffa , -+ 0xe0ffb , -+ 0xe0ffc , -+ 0xe0ffd , -+ 0xe0ffe , -+ 0xe0fff }; -+ -+static FcBlanks fcBlanks = { -+ 4191, -+ -1, -+ _fcBlanks -+}; -+ -diff --git a/fc-case/fccase.h b/fc-case/fccase.h -new file mode 100644 -index 0000000..5be716d ---- /dev/null -+++ b/fc-case/fccase.h -@@ -0,0 +1,354 @@ -+/* -+ * fontconfig/fc-case/fccase.tmpl.h -+ * -+ * 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 the author(s) not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. The authors make no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL THE AUTHOR(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. -+ */ -+ -+#define FC_NUM_CASE_FOLD 288 -+#define FC_NUM_CASE_FOLD_CHARS 471 -+#define FC_MAX_CASE_FOLD_CHARS 6 -+#define FC_MAX_CASE_FOLD_EXPAND 4 -+#define FC_MIN_FOLD_CHAR 0x00000041 -+#define FC_MAX_FOLD_CHAR 0x0001e921 -+ -+static const FcCaseFold fcCaseFold[FC_NUM_CASE_FOLD] = { -+ { 0x00000041, FC_CASE_FOLD_RANGE, 0x001a, 32 }, -+ { 0x000000b5, FC_CASE_FOLD_RANGE, 0x0001, 775 }, -+ { 0x000000c0, FC_CASE_FOLD_RANGE, 0x0017, 32 }, -+ { 0x000000d8, FC_CASE_FOLD_RANGE, 0x0007, 32 }, -+ { 0x000000df, FC_CASE_FOLD_FULL, 0x0002, 0 }, -+ { 0x00000100, FC_CASE_FOLD_EVEN_ODD, 0x002f, 1 }, -+ { 0x00000130, FC_CASE_FOLD_FULL, 0x0003, 2 }, -+ { 0x00000132, FC_CASE_FOLD_EVEN_ODD, 0x0005, 1 }, -+ { 0x00000139, FC_CASE_FOLD_EVEN_ODD, 0x000f, 1 }, -+ { 0x00000149, FC_CASE_FOLD_FULL, 0x0003, 5 }, -+ { 0x0000014a, FC_CASE_FOLD_EVEN_ODD, 0x002d, 1 }, -+ { 0x00000178, FC_CASE_FOLD_RANGE, 0x0001, -121 }, -+ { 0x00000179, FC_CASE_FOLD_EVEN_ODD, 0x0005, 1 }, -+ { 0x0000017f, FC_CASE_FOLD_RANGE, 0x0001, -268 }, -+ { 0x00000181, FC_CASE_FOLD_RANGE, 0x0001, 210 }, -+ { 0x00000182, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x00000186, FC_CASE_FOLD_RANGE, 0x0001, 206 }, -+ { 0x00000187, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00000189, FC_CASE_FOLD_RANGE, 0x0002, 205 }, -+ { 0x0000018b, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000018e, FC_CASE_FOLD_RANGE, 0x0001, 79 }, -+ { 0x0000018f, FC_CASE_FOLD_RANGE, 0x0001, 202 }, -+ { 0x00000190, FC_CASE_FOLD_RANGE, 0x0001, 203 }, -+ { 0x00000191, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00000193, FC_CASE_FOLD_RANGE, 0x0001, 205 }, -+ { 0x00000194, FC_CASE_FOLD_RANGE, 0x0001, 207 }, -+ { 0x00000196, FC_CASE_FOLD_RANGE, 0x0001, 211 }, -+ { 0x00000197, FC_CASE_FOLD_RANGE, 0x0001, 209 }, -+ { 0x00000198, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000019c, FC_CASE_FOLD_RANGE, 0x0001, 211 }, -+ { 0x0000019d, FC_CASE_FOLD_RANGE, 0x0001, 213 }, -+ { 0x0000019f, FC_CASE_FOLD_RANGE, 0x0001, 214 }, -+ { 0x000001a0, FC_CASE_FOLD_EVEN_ODD, 0x0005, 1 }, -+ { 0x000001a6, FC_CASE_FOLD_RANGE, 0x0001, 218 }, -+ { 0x000001a7, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001a9, FC_CASE_FOLD_RANGE, 0x0001, 218 }, -+ { 0x000001ac, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001ae, FC_CASE_FOLD_RANGE, 0x0001, 218 }, -+ { 0x000001af, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001b1, FC_CASE_FOLD_RANGE, 0x0002, 217 }, -+ { 0x000001b3, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x000001b7, FC_CASE_FOLD_RANGE, 0x0001, 219 }, -+ { 0x000001b8, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001bc, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001c4, FC_CASE_FOLD_RANGE, 0x0001, 2 }, -+ { 0x000001c5, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001c7, FC_CASE_FOLD_RANGE, 0x0001, 2 }, -+ { 0x000001c8, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000001ca, FC_CASE_FOLD_RANGE, 0x0001, 2 }, -+ { 0x000001cb, FC_CASE_FOLD_EVEN_ODD, 0x0011, 1 }, -+ { 0x000001de, FC_CASE_FOLD_EVEN_ODD, 0x0011, 1 }, -+ { 0x000001f0, FC_CASE_FOLD_FULL, 0x0003, 8 }, -+ { 0x000001f1, FC_CASE_FOLD_RANGE, 0x0001, 2 }, -+ { 0x000001f2, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x000001f6, FC_CASE_FOLD_RANGE, 0x0001, -97 }, -+ { 0x000001f7, FC_CASE_FOLD_RANGE, 0x0001, -56 }, -+ { 0x000001f8, FC_CASE_FOLD_EVEN_ODD, 0x0027, 1 }, -+ { 0x00000220, FC_CASE_FOLD_RANGE, 0x0001, -130 }, -+ { 0x00000222, FC_CASE_FOLD_EVEN_ODD, 0x0011, 1 }, -+ { 0x0000023a, FC_CASE_FOLD_RANGE, 0x0001, 10795 }, -+ { 0x0000023b, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000023d, FC_CASE_FOLD_RANGE, 0x0001, -163 }, -+ { 0x0000023e, FC_CASE_FOLD_RANGE, 0x0001, 10792 }, -+ { 0x00000241, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00000243, FC_CASE_FOLD_RANGE, 0x0001, -195 }, -+ { 0x00000244, FC_CASE_FOLD_RANGE, 0x0001, 69 }, -+ { 0x00000245, FC_CASE_FOLD_RANGE, 0x0001, 71 }, -+ { 0x00000246, FC_CASE_FOLD_EVEN_ODD, 0x0009, 1 }, -+ { 0x00000345, FC_CASE_FOLD_RANGE, 0x0001, 116 }, -+ { 0x00000370, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x00000376, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000037f, FC_CASE_FOLD_RANGE, 0x0001, 116 }, -+ { 0x00000386, FC_CASE_FOLD_RANGE, 0x0001, 38 }, -+ { 0x00000388, FC_CASE_FOLD_RANGE, 0x0003, 37 }, -+ { 0x0000038c, FC_CASE_FOLD_RANGE, 0x0001, 64 }, -+ { 0x0000038e, FC_CASE_FOLD_RANGE, 0x0002, 63 }, -+ { 0x00000390, FC_CASE_FOLD_FULL, 0x0006, 11 }, -+ { 0x00000391, FC_CASE_FOLD_RANGE, 0x0011, 32 }, -+ { 0x000003a3, FC_CASE_FOLD_RANGE, 0x0009, 32 }, -+ { 0x000003b0, FC_CASE_FOLD_FULL, 0x0006, 17 }, -+ { 0x000003c2, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000003cf, FC_CASE_FOLD_RANGE, 0x0001, 8 }, -+ { 0x000003d0, FC_CASE_FOLD_RANGE, 0x0001, -30 }, -+ { 0x000003d1, FC_CASE_FOLD_RANGE, 0x0001, -25 }, -+ { 0x000003d5, FC_CASE_FOLD_RANGE, 0x0001, -15 }, -+ { 0x000003d6, FC_CASE_FOLD_RANGE, 0x0001, -22 }, -+ { 0x000003d8, FC_CASE_FOLD_EVEN_ODD, 0x0017, 1 }, -+ { 0x000003f0, FC_CASE_FOLD_RANGE, 0x0001, -54 }, -+ { 0x000003f1, FC_CASE_FOLD_RANGE, 0x0001, -48 }, -+ { 0x000003f4, FC_CASE_FOLD_RANGE, 0x0001, -60 }, -+ { 0x000003f5, FC_CASE_FOLD_RANGE, 0x0001, -64 }, -+ { 0x000003f7, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000003f9, FC_CASE_FOLD_RANGE, 0x0001, -7 }, -+ { 0x000003fa, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000003fd, FC_CASE_FOLD_RANGE, 0x0003, -130 }, -+ { 0x00000400, FC_CASE_FOLD_RANGE, 0x0010, 80 }, -+ { 0x00000410, FC_CASE_FOLD_RANGE, 0x0020, 32 }, -+ { 0x00000460, FC_CASE_FOLD_EVEN_ODD, 0x0021, 1 }, -+ { 0x0000048a, FC_CASE_FOLD_EVEN_ODD, 0x0035, 1 }, -+ { 0x000004c0, FC_CASE_FOLD_RANGE, 0x0001, 15 }, -+ { 0x000004c1, FC_CASE_FOLD_EVEN_ODD, 0x000d, 1 }, -+ { 0x000004d0, FC_CASE_FOLD_EVEN_ODD, 0x005f, 1 }, -+ { 0x00000531, FC_CASE_FOLD_RANGE, 0x0026, 48 }, -+ { 0x00000587, FC_CASE_FOLD_FULL, 0x0004, 23 }, -+ { 0x000010a0, FC_CASE_FOLD_RANGE, 0x0026, 7264 }, -+ { 0x000010c7, FC_CASE_FOLD_RANGE, 0x0001, 7264 }, -+ { 0x000010cd, FC_CASE_FOLD_RANGE, 0x0001, 7264 }, -+ { 0x000013f8, FC_CASE_FOLD_RANGE, 0x0006, -8 }, -+ { 0x00001c80, FC_CASE_FOLD_RANGE, 0x0001, -6222 }, -+ { 0x00001c81, FC_CASE_FOLD_RANGE, 0x0001, -6221 }, -+ { 0x00001c82, FC_CASE_FOLD_RANGE, 0x0001, -6212 }, -+ { 0x00001c83, FC_CASE_FOLD_RANGE, 0x0002, -6210 }, -+ { 0x00001c85, FC_CASE_FOLD_RANGE, 0x0001, -6211 }, -+ { 0x00001c86, FC_CASE_FOLD_RANGE, 0x0001, -6204 }, -+ { 0x00001c87, FC_CASE_FOLD_RANGE, 0x0001, -6180 }, -+ { 0x00001c88, FC_CASE_FOLD_RANGE, 0x0001, -30269 }, -+ { 0x00001e00, FC_CASE_FOLD_EVEN_ODD, 0x0095, 1 }, -+ { 0x00001e96, FC_CASE_FOLD_FULL, 0x0003, 27 }, -+ { 0x00001e97, FC_CASE_FOLD_FULL, 0x0003, 30 }, -+ { 0x00001e98, FC_CASE_FOLD_FULL, 0x0003, 33 }, -+ { 0x00001e99, FC_CASE_FOLD_FULL, 0x0003, 36 }, -+ { 0x00001e9a, FC_CASE_FOLD_FULL, 0x0003, 39 }, -+ { 0x00001e9b, FC_CASE_FOLD_RANGE, 0x0001, -58 }, -+ { 0x00001e9e, FC_CASE_FOLD_FULL, 0x0002, 42 }, -+ { 0x00001ea0, FC_CASE_FOLD_EVEN_ODD, 0x005f, 1 }, -+ { 0x00001f08, FC_CASE_FOLD_RANGE, 0x0008, -8 }, -+ { 0x00001f18, FC_CASE_FOLD_RANGE, 0x0006, -8 }, -+ { 0x00001f28, FC_CASE_FOLD_RANGE, 0x0008, -8 }, -+ { 0x00001f38, FC_CASE_FOLD_RANGE, 0x0008, -8 }, -+ { 0x00001f48, FC_CASE_FOLD_RANGE, 0x0006, -8 }, -+ { 0x00001f50, FC_CASE_FOLD_FULL, 0x0004, 44 }, -+ { 0x00001f52, FC_CASE_FOLD_FULL, 0x0006, 48 }, -+ { 0x00001f54, FC_CASE_FOLD_FULL, 0x0006, 54 }, -+ { 0x00001f56, FC_CASE_FOLD_FULL, 0x0006, 60 }, -+ { 0x00001f59, FC_CASE_FOLD_RANGE, 0x0001, -8 }, -+ { 0x00001f5b, FC_CASE_FOLD_RANGE, 0x0001, -8 }, -+ { 0x00001f5d, FC_CASE_FOLD_RANGE, 0x0001, -8 }, -+ { 0x00001f5f, FC_CASE_FOLD_RANGE, 0x0001, -8 }, -+ { 0x00001f68, FC_CASE_FOLD_RANGE, 0x0008, -8 }, -+ { 0x00001f80, FC_CASE_FOLD_FULL, 0x0005, 66 }, -+ { 0x00001f81, FC_CASE_FOLD_FULL, 0x0005, 71 }, -+ { 0x00001f82, FC_CASE_FOLD_FULL, 0x0005, 76 }, -+ { 0x00001f83, FC_CASE_FOLD_FULL, 0x0005, 81 }, -+ { 0x00001f84, FC_CASE_FOLD_FULL, 0x0005, 86 }, -+ { 0x00001f85, FC_CASE_FOLD_FULL, 0x0005, 91 }, -+ { 0x00001f86, FC_CASE_FOLD_FULL, 0x0005, 96 }, -+ { 0x00001f87, FC_CASE_FOLD_FULL, 0x0005, 101 }, -+ { 0x00001f88, FC_CASE_FOLD_FULL, 0x0005, 106 }, -+ { 0x00001f89, FC_CASE_FOLD_FULL, 0x0005, 111 }, -+ { 0x00001f8a, FC_CASE_FOLD_FULL, 0x0005, 116 }, -+ { 0x00001f8b, FC_CASE_FOLD_FULL, 0x0005, 121 }, -+ { 0x00001f8c, FC_CASE_FOLD_FULL, 0x0005, 126 }, -+ { 0x00001f8d, FC_CASE_FOLD_FULL, 0x0005, 131 }, -+ { 0x00001f8e, FC_CASE_FOLD_FULL, 0x0005, 136 }, -+ { 0x00001f8f, FC_CASE_FOLD_FULL, 0x0005, 141 }, -+ { 0x00001f90, FC_CASE_FOLD_FULL, 0x0005, 146 }, -+ { 0x00001f91, FC_CASE_FOLD_FULL, 0x0005, 151 }, -+ { 0x00001f92, FC_CASE_FOLD_FULL, 0x0005, 156 }, -+ { 0x00001f93, FC_CASE_FOLD_FULL, 0x0005, 161 }, -+ { 0x00001f94, FC_CASE_FOLD_FULL, 0x0005, 166 }, -+ { 0x00001f95, FC_CASE_FOLD_FULL, 0x0005, 171 }, -+ { 0x00001f96, FC_CASE_FOLD_FULL, 0x0005, 176 }, -+ { 0x00001f97, FC_CASE_FOLD_FULL, 0x0005, 181 }, -+ { 0x00001f98, FC_CASE_FOLD_FULL, 0x0005, 186 }, -+ { 0x00001f99, FC_CASE_FOLD_FULL, 0x0005, 191 }, -+ { 0x00001f9a, FC_CASE_FOLD_FULL, 0x0005, 196 }, -+ { 0x00001f9b, FC_CASE_FOLD_FULL, 0x0005, 201 }, -+ { 0x00001f9c, FC_CASE_FOLD_FULL, 0x0005, 206 }, -+ { 0x00001f9d, FC_CASE_FOLD_FULL, 0x0005, 211 }, -+ { 0x00001f9e, FC_CASE_FOLD_FULL, 0x0005, 216 }, -+ { 0x00001f9f, FC_CASE_FOLD_FULL, 0x0005, 221 }, -+ { 0x00001fa0, FC_CASE_FOLD_FULL, 0x0005, 226 }, -+ { 0x00001fa1, FC_CASE_FOLD_FULL, 0x0005, 231 }, -+ { 0x00001fa2, FC_CASE_FOLD_FULL, 0x0005, 236 }, -+ { 0x00001fa3, FC_CASE_FOLD_FULL, 0x0005, 241 }, -+ { 0x00001fa4, FC_CASE_FOLD_FULL, 0x0005, 246 }, -+ { 0x00001fa5, FC_CASE_FOLD_FULL, 0x0005, 251 }, -+ { 0x00001fa6, FC_CASE_FOLD_FULL, 0x0005, 256 }, -+ { 0x00001fa7, FC_CASE_FOLD_FULL, 0x0005, 261 }, -+ { 0x00001fa8, FC_CASE_FOLD_FULL, 0x0005, 266 }, -+ { 0x00001fa9, FC_CASE_FOLD_FULL, 0x0005, 271 }, -+ { 0x00001faa, FC_CASE_FOLD_FULL, 0x0005, 276 }, -+ { 0x00001fab, FC_CASE_FOLD_FULL, 0x0005, 281 }, -+ { 0x00001fac, FC_CASE_FOLD_FULL, 0x0005, 286 }, -+ { 0x00001fad, FC_CASE_FOLD_FULL, 0x0005, 291 }, -+ { 0x00001fae, FC_CASE_FOLD_FULL, 0x0005, 296 }, -+ { 0x00001faf, FC_CASE_FOLD_FULL, 0x0005, 301 }, -+ { 0x00001fb2, FC_CASE_FOLD_FULL, 0x0005, 306 }, -+ { 0x00001fb3, FC_CASE_FOLD_FULL, 0x0004, 311 }, -+ { 0x00001fb4, FC_CASE_FOLD_FULL, 0x0004, 315 }, -+ { 0x00001fb6, FC_CASE_FOLD_FULL, 0x0004, 319 }, -+ { 0x00001fb7, FC_CASE_FOLD_FULL, 0x0006, 323 }, -+ { 0x00001fb8, FC_CASE_FOLD_RANGE, 0x0002, -8 }, -+ { 0x00001fba, FC_CASE_FOLD_RANGE, 0x0002, -74 }, -+ { 0x00001fbc, FC_CASE_FOLD_FULL, 0x0004, 329 }, -+ { 0x00001fbe, FC_CASE_FOLD_RANGE, 0x0001, -7173 }, -+ { 0x00001fc2, FC_CASE_FOLD_FULL, 0x0005, 333 }, -+ { 0x00001fc3, FC_CASE_FOLD_FULL, 0x0004, 338 }, -+ { 0x00001fc4, FC_CASE_FOLD_FULL, 0x0004, 342 }, -+ { 0x00001fc6, FC_CASE_FOLD_FULL, 0x0004, 346 }, -+ { 0x00001fc7, FC_CASE_FOLD_FULL, 0x0006, 350 }, -+ { 0x00001fc8, FC_CASE_FOLD_RANGE, 0x0004, -86 }, -+ { 0x00001fcc, FC_CASE_FOLD_FULL, 0x0004, 356 }, -+ { 0x00001fd2, FC_CASE_FOLD_FULL, 0x0006, 360 }, -+ { 0x00001fd3, FC_CASE_FOLD_FULL, 0x0006, 366 }, -+ { 0x00001fd6, FC_CASE_FOLD_FULL, 0x0004, 372 }, -+ { 0x00001fd7, FC_CASE_FOLD_FULL, 0x0006, 376 }, -+ { 0x00001fd8, FC_CASE_FOLD_RANGE, 0x0002, -8 }, -+ { 0x00001fda, FC_CASE_FOLD_RANGE, 0x0002, -100 }, -+ { 0x00001fe2, FC_CASE_FOLD_FULL, 0x0006, 382 }, -+ { 0x00001fe3, FC_CASE_FOLD_FULL, 0x0006, 388 }, -+ { 0x00001fe4, FC_CASE_FOLD_FULL, 0x0004, 394 }, -+ { 0x00001fe6, FC_CASE_FOLD_FULL, 0x0004, 398 }, -+ { 0x00001fe7, FC_CASE_FOLD_FULL, 0x0006, 402 }, -+ { 0x00001fe8, FC_CASE_FOLD_RANGE, 0x0002, -8 }, -+ { 0x00001fea, FC_CASE_FOLD_RANGE, 0x0002, -112 }, -+ { 0x00001fec, FC_CASE_FOLD_RANGE, 0x0001, -7 }, -+ { 0x00001ff2, FC_CASE_FOLD_FULL, 0x0005, 408 }, -+ { 0x00001ff3, FC_CASE_FOLD_FULL, 0x0004, 413 }, -+ { 0x00001ff4, FC_CASE_FOLD_FULL, 0x0004, 417 }, -+ { 0x00001ff6, FC_CASE_FOLD_FULL, 0x0004, 421 }, -+ { 0x00001ff7, FC_CASE_FOLD_FULL, 0x0006, 425 }, -+ { 0x00001ff8, FC_CASE_FOLD_RANGE, 0x0002, -128 }, -+ { 0x00001ffa, FC_CASE_FOLD_RANGE, 0x0002, -126 }, -+ { 0x00001ffc, FC_CASE_FOLD_FULL, 0x0004, 431 }, -+ { 0x00002126, FC_CASE_FOLD_RANGE, 0x0001, -7517 }, -+ { 0x0000212a, FC_CASE_FOLD_RANGE, 0x0001, -8383 }, -+ { 0x0000212b, FC_CASE_FOLD_RANGE, 0x0001, -8262 }, -+ { 0x00002132, FC_CASE_FOLD_RANGE, 0x0001, 28 }, -+ { 0x00002160, FC_CASE_FOLD_RANGE, 0x0010, 16 }, -+ { 0x00002183, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x000024b6, FC_CASE_FOLD_RANGE, 0x001a, 26 }, -+ { 0x00002c00, FC_CASE_FOLD_RANGE, 0x002f, 48 }, -+ { 0x00002c60, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00002c62, FC_CASE_FOLD_RANGE, 0x0001, -10743 }, -+ { 0x00002c63, FC_CASE_FOLD_RANGE, 0x0001, -3814 }, -+ { 0x00002c64, FC_CASE_FOLD_RANGE, 0x0001, -10727 }, -+ { 0x00002c67, FC_CASE_FOLD_EVEN_ODD, 0x0005, 1 }, -+ { 0x00002c6d, FC_CASE_FOLD_RANGE, 0x0001, -10780 }, -+ { 0x00002c6e, FC_CASE_FOLD_RANGE, 0x0001, -10749 }, -+ { 0x00002c6f, FC_CASE_FOLD_RANGE, 0x0001, -10783 }, -+ { 0x00002c70, FC_CASE_FOLD_RANGE, 0x0001, -10782 }, -+ { 0x00002c72, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00002c75, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x00002c7e, FC_CASE_FOLD_RANGE, 0x0002, -10815 }, -+ { 0x00002c80, FC_CASE_FOLD_EVEN_ODD, 0x0063, 1 }, -+ { 0x00002ceb, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x00002cf2, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000a640, FC_CASE_FOLD_EVEN_ODD, 0x002d, 1 }, -+ { 0x0000a680, FC_CASE_FOLD_EVEN_ODD, 0x001b, 1 }, -+ { 0x0000a722, FC_CASE_FOLD_EVEN_ODD, 0x000d, 1 }, -+ { 0x0000a732, FC_CASE_FOLD_EVEN_ODD, 0x003d, 1 }, -+ { 0x0000a779, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x0000a77d, FC_CASE_FOLD_RANGE, 0x0001, 30204 }, -+ { 0x0000a77e, FC_CASE_FOLD_EVEN_ODD, 0x0009, 1 }, -+ { 0x0000a78b, FC_CASE_FOLD_EVEN_ODD, 0x0001, 1 }, -+ { 0x0000a78d, FC_CASE_FOLD_RANGE, 0x0001, 23256 }, -+ { 0x0000a790, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x0000a796, FC_CASE_FOLD_EVEN_ODD, 0x0013, 1 }, -+ { 0x0000a7aa, FC_CASE_FOLD_RANGE, 0x0001, 23228 }, -+ { 0x0000a7ab, FC_CASE_FOLD_RANGE, 0x0001, 23217 }, -+ { 0x0000a7ac, FC_CASE_FOLD_RANGE, 0x0001, 23221 }, -+ { 0x0000a7ad, FC_CASE_FOLD_RANGE, 0x0001, 23231 }, -+ { 0x0000a7ae, FC_CASE_FOLD_RANGE, 0x0001, 23228 }, -+ { 0x0000a7b0, FC_CASE_FOLD_RANGE, 0x0001, 23278 }, -+ { 0x0000a7b1, FC_CASE_FOLD_RANGE, 0x0001, 23254 }, -+ { 0x0000a7b2, FC_CASE_FOLD_RANGE, 0x0001, 23275 }, -+ { 0x0000a7b3, FC_CASE_FOLD_RANGE, 0x0001, 928 }, -+ { 0x0000a7b4, FC_CASE_FOLD_EVEN_ODD, 0x0003, 1 }, -+ { 0x0000ab70, FC_CASE_FOLD_RANGE, 0x0050, 26672 }, -+ { 0x0000fb00, FC_CASE_FOLD_FULL, 0x0002, 435 }, -+ { 0x0000fb01, FC_CASE_FOLD_FULL, 0x0002, 437 }, -+ { 0x0000fb02, FC_CASE_FOLD_FULL, 0x0002, 439 }, -+ { 0x0000fb03, FC_CASE_FOLD_FULL, 0x0003, 441 }, -+ { 0x0000fb04, FC_CASE_FOLD_FULL, 0x0003, 444 }, -+ { 0x0000fb05, FC_CASE_FOLD_FULL, 0x0002, 447 }, -+ { 0x0000fb06, FC_CASE_FOLD_FULL, 0x0002, 449 }, -+ { 0x0000fb13, FC_CASE_FOLD_FULL, 0x0004, 451 }, -+ { 0x0000fb14, FC_CASE_FOLD_FULL, 0x0004, 455 }, -+ { 0x0000fb15, FC_CASE_FOLD_FULL, 0x0004, 459 }, -+ { 0x0000fb16, FC_CASE_FOLD_FULL, 0x0004, 463 }, -+ { 0x0000fb17, FC_CASE_FOLD_FULL, 0x0004, 467 }, -+ { 0x0000ff21, FC_CASE_FOLD_RANGE, 0x001a, 32 }, -+ { 0x00010400, FC_CASE_FOLD_RANGE, 0x0028, 40 }, -+ { 0x000104b0, FC_CASE_FOLD_RANGE, 0x0024, 40 }, -+ { 0x00010c80, FC_CASE_FOLD_RANGE, 0x0033, 64 }, -+ { 0x000118a0, FC_CASE_FOLD_RANGE, 0x0020, 32 }, -+ { 0x0001e900, FC_CASE_FOLD_RANGE, 0x0022, 34 }, -+}; -+ -+static const FcChar8 fcCaseFoldChars[FC_NUM_CASE_FOLD_CHARS] = { -+0x73,0x73,0x69,0xcc,0x87,0xca,0xbc,0x6e,0x6a,0xcc,0x8c,0xce,0xb9,0xcc,0x88,0xcc, -+0x81,0xcf,0x85,0xcc,0x88,0xcc,0x81,0xd5,0xa5,0xd6,0x82,0x68,0xcc,0xb1,0x74,0xcc, -+0x88,0x77,0xcc,0x8a,0x79,0xcc,0x8a,0x61,0xca,0xbe,0x73,0x73,0xcf,0x85,0xcc,0x93, -+0xcf,0x85,0xcc,0x93,0xcc,0x80,0xcf,0x85,0xcc,0x93,0xcc,0x81,0xcf,0x85,0xcc,0x93, -+0xcd,0x82,0xe1,0xbc,0x80,0xce,0xb9,0xe1,0xbc,0x81,0xce,0xb9,0xe1,0xbc,0x82,0xce, -+0xb9,0xe1,0xbc,0x83,0xce,0xb9,0xe1,0xbc,0x84,0xce,0xb9,0xe1,0xbc,0x85,0xce,0xb9, -+0xe1,0xbc,0x86,0xce,0xb9,0xe1,0xbc,0x87,0xce,0xb9,0xe1,0xbc,0x80,0xce,0xb9,0xe1, -+0xbc,0x81,0xce,0xb9,0xe1,0xbc,0x82,0xce,0xb9,0xe1,0xbc,0x83,0xce,0xb9,0xe1,0xbc, -+0x84,0xce,0xb9,0xe1,0xbc,0x85,0xce,0xb9,0xe1,0xbc,0x86,0xce,0xb9,0xe1,0xbc,0x87, -+0xce,0xb9,0xe1,0xbc,0xa0,0xce,0xb9,0xe1,0xbc,0xa1,0xce,0xb9,0xe1,0xbc,0xa2,0xce, -+0xb9,0xe1,0xbc,0xa3,0xce,0xb9,0xe1,0xbc,0xa4,0xce,0xb9,0xe1,0xbc,0xa5,0xce,0xb9, -+0xe1,0xbc,0xa6,0xce,0xb9,0xe1,0xbc,0xa7,0xce,0xb9,0xe1,0xbc,0xa0,0xce,0xb9,0xe1, -+0xbc,0xa1,0xce,0xb9,0xe1,0xbc,0xa2,0xce,0xb9,0xe1,0xbc,0xa3,0xce,0xb9,0xe1,0xbc, -+0xa4,0xce,0xb9,0xe1,0xbc,0xa5,0xce,0xb9,0xe1,0xbc,0xa6,0xce,0xb9,0xe1,0xbc,0xa7, -+0xce,0xb9,0xe1,0xbd,0xa0,0xce,0xb9,0xe1,0xbd,0xa1,0xce,0xb9,0xe1,0xbd,0xa2,0xce, -+0xb9,0xe1,0xbd,0xa3,0xce,0xb9,0xe1,0xbd,0xa4,0xce,0xb9,0xe1,0xbd,0xa5,0xce,0xb9, -+0xe1,0xbd,0xa6,0xce,0xb9,0xe1,0xbd,0xa7,0xce,0xb9,0xe1,0xbd,0xa0,0xce,0xb9,0xe1, -+0xbd,0xa1,0xce,0xb9,0xe1,0xbd,0xa2,0xce,0xb9,0xe1,0xbd,0xa3,0xce,0xb9,0xe1,0xbd, -+0xa4,0xce,0xb9,0xe1,0xbd,0xa5,0xce,0xb9,0xe1,0xbd,0xa6,0xce,0xb9,0xe1,0xbd,0xa7, -+0xce,0xb9,0xe1,0xbd,0xb0,0xce,0xb9,0xce,0xb1,0xce,0xb9,0xce,0xac,0xce,0xb9,0xce, -+0xb1,0xcd,0x82,0xce,0xb1,0xcd,0x82,0xce,0xb9,0xce,0xb1,0xce,0xb9,0xe1,0xbd,0xb4, -+0xce,0xb9,0xce,0xb7,0xce,0xb9,0xce,0xae,0xce,0xb9,0xce,0xb7,0xcd,0x82,0xce,0xb7, -+0xcd,0x82,0xce,0xb9,0xce,0xb7,0xce,0xb9,0xce,0xb9,0xcc,0x88,0xcc,0x80,0xce,0xb9, -+0xcc,0x88,0xcc,0x81,0xce,0xb9,0xcd,0x82,0xce,0xb9,0xcc,0x88,0xcd,0x82,0xcf,0x85, -+0xcc,0x88,0xcc,0x80,0xcf,0x85,0xcc,0x88,0xcc,0x81,0xcf,0x81,0xcc,0x93,0xcf,0x85, -+0xcd,0x82,0xcf,0x85,0xcc,0x88,0xcd,0x82,0xe1,0xbd,0xbc,0xce,0xb9,0xcf,0x89,0xce, -+0xb9,0xcf,0x8e,0xce,0xb9,0xcf,0x89,0xcd,0x82,0xcf,0x89,0xcd,0x82,0xce,0xb9,0xcf, -+0x89,0xce,0xb9,0x66,0x66,0x66,0x69,0x66,0x6c,0x66,0x66,0x69,0x66,0x66,0x6c,0x73, -+0x74,0x73,0x74,0xd5,0xb4,0xd5,0xb6,0xd5,0xb4,0xd5,0xa5,0xd5,0xb4,0xd5,0xab,0xd5, -+0xbe,0xd5,0xb6,0xd5,0xb4,0xd5,0xad -+}; -diff --git a/fc-glyphname/fcglyphname.h b/fc-glyphname/fcglyphname.h -new file mode 100644 -index 0000000..f9e5343 ---- /dev/null -+++ b/fc-glyphname/fcglyphname.h -@@ -0,0 +1,781 @@ -+/* -+ * fontconfig/fc-glyphname/fcglyphname.tmpl.h -+ * -+ * 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 the author(s) not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. The authors make no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL THE AUTHOR(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. -+ */ -+ -+/* 201 glyphnames in 271 entries, 74% occupancy */ -+ -+#define FC_GLYPHNAME_HASH 271 -+#define FC_GLYPHNAME_REHASH 269 -+#define FC_GLYPHNAME_MAXLEN 4 -+ -+typedef int16_t FcGlyphId; -+ -+static const struct { const FcChar32 ucs; const FcChar8 name[5]; } _fc_glyph_names[201] = { -+ { 0x2701, "a1" }, -+ { 0x2721, "a10" }, -+ { 0x275e, "a100" }, -+ { 0x2761, "a101" }, -+ { 0x2762, "a102" }, -+ { 0x2763, "a103" }, -+ { 0x2764, "a104" }, -+ { 0x2710, "a105" }, -+ { 0x2765, "a106" }, -+ { 0x2766, "a107" }, -+ { 0x2767, "a108" }, -+ { 0x2660, "a109" }, -+ { 0x261b, "a11" }, -+ { 0x2665, "a110" }, -+ { 0x2666, "a111" }, -+ { 0x2663, "a112" }, -+ { 0x2709, "a117" }, -+ { 0x2708, "a118" }, -+ { 0x2707, "a119" }, -+ { 0x261e, "a12" }, -+ { 0x2460, "a120" }, -+ { 0x2461, "a121" }, -+ { 0x2462, "a122" }, -+ { 0x2463, "a123" }, -+ { 0x2464, "a124" }, -+ { 0x2465, "a125" }, -+ { 0x2466, "a126" }, -+ { 0x2467, "a127" }, -+ { 0x2468, "a128" }, -+ { 0x2469, "a129" }, -+ { 0x270c, "a13" }, -+ { 0x2776, "a130" }, -+ { 0x2777, "a131" }, -+ { 0x2778, "a132" }, -+ { 0x2779, "a133" }, -+ { 0x277a, "a134" }, -+ { 0x277b, "a135" }, -+ { 0x277c, "a136" }, -+ { 0x277d, "a137" }, -+ { 0x277e, "a138" }, -+ { 0x277f, "a139" }, -+ { 0x270d, "a14" }, -+ { 0x2780, "a140" }, -+ { 0x2781, "a141" }, -+ { 0x2782, "a142" }, -+ { 0x2783, "a143" }, -+ { 0x2784, "a144" }, -+ { 0x2785, "a145" }, -+ { 0x2786, "a146" }, -+ { 0x2787, "a147" }, -+ { 0x2788, "a148" }, -+ { 0x2789, "a149" }, -+ { 0x270e, "a15" }, -+ { 0x278a, "a150" }, -+ { 0x278b, "a151" }, -+ { 0x278c, "a152" }, -+ { 0x278d, "a153" }, -+ { 0x278e, "a154" }, -+ { 0x278f, "a155" }, -+ { 0x2790, "a156" }, -+ { 0x2791, "a157" }, -+ { 0x2792, "a158" }, -+ { 0x2793, "a159" }, -+ { 0x270f, "a16" }, -+ { 0x2794, "a160" }, -+ { 0x2192, "a161" }, -+ { 0x27a3, "a162" }, -+ { 0x2194, "a163" }, -+ { 0x2195, "a164" }, -+ { 0x2799, "a165" }, -+ { 0x279b, "a166" }, -+ { 0x279c, "a167" }, -+ { 0x279d, "a168" }, -+ { 0x279e, "a169" }, -+ { 0x2711, "a17" }, -+ { 0x279f, "a170" }, -+ { 0x27a0, "a171" }, -+ { 0x27a1, "a172" }, -+ { 0x27a2, "a173" }, -+ { 0x27a4, "a174" }, -+ { 0x27a5, "a175" }, -+ { 0x27a6, "a176" }, -+ { 0x27a7, "a177" }, -+ { 0x27a8, "a178" }, -+ { 0x27a9, "a179" }, -+ { 0x2712, "a18" }, -+ { 0x27ab, "a180" }, -+ { 0x27ad, "a181" }, -+ { 0x27af, "a182" }, -+ { 0x27b2, "a183" }, -+ { 0x27b3, "a184" }, -+ { 0x27b5, "a185" }, -+ { 0x27b8, "a186" }, -+ { 0x27ba, "a187" }, -+ { 0x27bb, "a188" }, -+ { 0x27bc, "a189" }, -+ { 0x2713, "a19" }, -+ { 0x27bd, "a190" }, -+ { 0x27be, "a191" }, -+ { 0x279a, "a192" }, -+ { 0x27aa, "a193" }, -+ { 0x27b6, "a194" }, -+ { 0x27b9, "a195" }, -+ { 0x2798, "a196" }, -+ { 0x27b4, "a197" }, -+ { 0x27b7, "a198" }, -+ { 0x27ac, "a199" }, -+ { 0x2702, "a2" }, -+ { 0x2714, "a20" }, -+ { 0x27ae, "a200" }, -+ { 0x27b1, "a201" }, -+ { 0x2703, "a202" }, -+ { 0x2750, "a203" }, -+ { 0x2752, "a204" }, -+ { 0x276e, "a205" }, -+ { 0x2770, "a206" }, -+ { 0x2715, "a21" }, -+ { 0x2716, "a22" }, -+ { 0x2717, "a23" }, -+ { 0x2718, "a24" }, -+ { 0x2719, "a25" }, -+ { 0x271a, "a26" }, -+ { 0x271b, "a27" }, -+ { 0x271c, "a28" }, -+ { 0x2722, "a29" }, -+ { 0x2704, "a3" }, -+ { 0x2723, "a30" }, -+ { 0x2724, "a31" }, -+ { 0x2725, "a32" }, -+ { 0x2726, "a33" }, -+ { 0x2727, "a34" }, -+ { 0x2605, "a35" }, -+ { 0x2729, "a36" }, -+ { 0x272a, "a37" }, -+ { 0x272b, "a38" }, -+ { 0x272c, "a39" }, -+ { 0x260e, "a4" }, -+ { 0x272d, "a40" }, -+ { 0x272e, "a41" }, -+ { 0x272f, "a42" }, -+ { 0x2730, "a43" }, -+ { 0x2731, "a44" }, -+ { 0x2732, "a45" }, -+ { 0x2733, "a46" }, -+ { 0x2734, "a47" }, -+ { 0x2735, "a48" }, -+ { 0x2736, "a49" }, -+ { 0x2706, "a5" }, -+ { 0x2737, "a50" }, -+ { 0x2738, "a51" }, -+ { 0x2739, "a52" }, -+ { 0x273a, "a53" }, -+ { 0x273b, "a54" }, -+ { 0x273c, "a55" }, -+ { 0x273d, "a56" }, -+ { 0x273e, "a57" }, -+ { 0x273f, "a58" }, -+ { 0x2740, "a59" }, -+ { 0x271d, "a6" }, -+ { 0x2741, "a60" }, -+ { 0x2742, "a61" }, -+ { 0x2743, "a62" }, -+ { 0x2744, "a63" }, -+ { 0x2745, "a64" }, -+ { 0x2746, "a65" }, -+ { 0x2747, "a66" }, -+ { 0x2748, "a67" }, -+ { 0x2749, "a68" }, -+ { 0x274a, "a69" }, -+ { 0x271e, "a7" }, -+ { 0x274b, "a70" }, -+ { 0x25cf, "a71" }, -+ { 0x274d, "a72" }, -+ { 0x25a0, "a73" }, -+ { 0x274f, "a74" }, -+ { 0x2751, "a75" }, -+ { 0x25b2, "a76" }, -+ { 0x25bc, "a77" }, -+ { 0x25c6, "a78" }, -+ { 0x2756, "a79" }, -+ { 0x271f, "a8" }, -+ { 0x25d7, "a81" }, -+ { 0x2758, "a82" }, -+ { 0x2759, "a83" }, -+ { 0x275a, "a84" }, -+ { 0x276f, "a85" }, -+ { 0x2771, "a86" }, -+ { 0x2772, "a87" }, -+ { 0x2773, "a88" }, -+ { 0x2768, "a89" }, -+ { 0x2720, "a9" }, -+ { 0x2769, "a90" }, -+ { 0x276c, "a91" }, -+ { 0x276d, "a92" }, -+ { 0x276a, "a93" }, -+ { 0x276b, "a94" }, -+ { 0x2774, "a95" }, -+ { 0x2775, "a96" }, -+ { 0x275b, "a97" }, -+ { 0x275c, "a98" }, -+ { 0x275d, "a99" }, -+}; -+static const FcGlyphId _fc_name_to_ucs[271] = { -+ 123, -+ 81, -+ 198, -+ 154, -+ 142, -+ 186, -+ 82, -+ -1, -+ 143, -+ 172, -+ 181, -+ 79, -+ 153, -+ 191, -+ -1, -+ -1, -+ 80, -+ 195, -+ 179, -+ 170, -+ 151, -+ 129, -+ 101, -+ 194, -+ 85, -+ 102, -+ 73, -+ 171, -+ 99, -+ -1, -+ -1, -+ 100, -+ 196, -+ -1, -+ 189, -+ 163, -+ 110, -+ 199, -+ -1, -+ -1, -+ 59, -+ 50, -+ -1, -+ 60, -+ 75, -+ -1, -+ 51, -+ -1, -+ -1, -+ 58, -+ -1, -+ 61, -+ 55, -+ -1, -+ 192, -+ 56, -+ 62, -+ -1, -+ 53, -+ 166, -+ 113, -+ 54, -+ -1, -+ 157, -+ 33, -+ 188, -+ 177, -+ 21, -+ -1, -+ -1, -+ 31, -+ -1, -+ -1, -+ 32, -+ -1, -+ -1, -+ 24, -+ 160, -+ -1, -+ 38, -+ -1, -+ -1, -+ 26, -+ -1, -+ 161, -+ 27, -+ 197, -+ 94, -+ 95, -+ 105, -+ 106, -+ 90, -+ 91, -+ 92, -+ 93, -+ 86, -+ 87, -+ 88, -+ 89, -+ 28, -+ 29, -+ 39, -+ 40, -+ 10, -+ 11, -+ 17, -+ 18, -+ 6, -+ 7, -+ 8, -+ 9, -+ 2, -+ 3, -+ 4, -+ 5, -+ -1, -+ -1, -+ 114, -+ 108, -+ 146, -+ 74, -+ -1, -+ 117, -+ 115, -+ 118, -+ 156, -+ 119, -+ -1, -+ 120, -+ -1, -+ 121, -+ 131, -+ 122, -+ -1, -+ 109, -+ -1, -+ 124, -+ 141, -+ 134, -+ 174, -+ 144, -+ -1, -+ 137, -+ 155, -+ 138, -+ -1, -+ 64, -+ -1, -+ 140, -+ 152, -+ 65, -+ -1, -+ 111, -+ -1, -+ 57, -+ 162, -+ -1, -+ -1, -+ 67, -+ -1, -+ -1, -+ 150, -+ 68, -+ -1, -+ 167, -+ -1, -+ 69, -+ 164, -+ -1, -+ 116, -+ 70, -+ -1, -+ -1, -+ 148, -+ 71, -+ -1, -+ -1, -+ 184, -+ 72, -+ 149, -+ 176, -+ 193, -+ 34, -+ 182, -+ 145, -+ -1, -+ 83, -+ 187, -+ -1, -+ 103, -+ 84, -+ 104, -+ 200, -+ 63, -+ 37, -+ 41, -+ 52, -+ 19, -+ 30, -+ 1, -+ 12, -+ 97, -+ 35, -+ 98, -+ 135, -+ 46, -+ 36, -+ 47, -+ 96, -+ 48, -+ 159, -+ 49, -+ -1, -+ 42, -+ 112, -+ 43, -+ 173, -+ 44, -+ 168, -+ 45, -+ -1, -+ 20, -+ 183, -+ 16, -+ 147, -+ 22, -+ 178, -+ 23, -+ -1, -+ 15, -+ -1, -+ 25, -+ 190, -+ 13, -+ 139, -+ 14, -+ -1, -+ -1, -+ -1, -+ 128, -+ 107, -+ 125, -+ -1, -+ 0, -+ 158, -+ 169, -+ 136, -+ 126, -+ -1, -+ -1, -+ 180, -+ 127, -+ 77, -+ -1, -+ -1, -+ 132, -+ -1, -+ 78, -+ -1, -+ 133, -+ -1, -+ 165, -+ 66, -+ 130, -+ -1, -+ -1, -+ -1, -+ 76, -+ -1, -+ 185, -+ 175, -+}; -+static const FcGlyphId _fc_ucs_to_name[271] = { -+ 56, -+ 135, -+ 19, -+ 138, -+ 58, -+ 140, -+ 59, -+ 142, -+ 60, -+ 144, -+ 61, -+ 146, -+ 62, -+ 149, -+ 64, -+ 151, -+ 152, -+ 153, -+ 154, -+ 155, -+ 156, -+ 157, -+ 159, -+ 160, -+ 161, -+ 162, -+ 163, -+ 131, -+ 165, -+ 166, -+ 167, -+ 168, -+ 170, -+ -1, -+ 172, -+ -1, -+ 174, -+ 112, -+ 175, -+ 113, -+ -1, -+ 173, -+ -1, -+ 179, -+ -1, -+ 182, -+ 183, -+ 158, -+ 198, -+ 199, -+ 200, -+ 2, -+ -1, -+ -1, -+ 3, -+ 4, -+ 5, -+ 6, -+ 8, -+ 9, -+ 10, -+ 189, -+ 164, -+ 194, -+ 195, -+ 192, -+ 193, -+ 114, -+ 11, -+ 115, -+ 186, -+ 15, -+ 188, -+ 13, -+ 14, -+ 31, -+ 32, -+ 33, -+ 34, -+ 35, -+ 36, -+ 37, -+ 38, -+ 39, -+ 40, -+ 42, -+ 43, -+ 44, -+ 45, -+ 46, -+ 47, -+ 48, -+ 49, -+ 50, -+ 51, -+ 53, -+ 54, -+ 55, -+ 20, -+ 21, -+ 22, -+ 23, -+ 24, -+ 25, -+ 26, -+ 27, -+ 28, -+ 29, -+ -1, -+ 103, -+ 69, -+ 99, -+ 70, -+ 71, -+ 72, -+ 73, -+ 75, -+ 76, -+ 77, -+ 78, -+ 66, -+ 79, -+ 80, -+ 81, -+ 82, -+ 83, -+ 84, -+ 100, -+ 86, -+ 106, -+ 87, -+ 109, -+ 88, -+ -1, -+ 110, -+ 89, -+ 90, -+ 104, -+ 91, -+ 101, -+ 105, -+ 92, -+ 102, -+ 93, -+ 94, -+ 95, -+ 97, -+ 98, -+ 196, -+ -1, -+ 134, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 137, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 139, -+ -1, -+ -1, -+ 176, -+ -1, -+ -1, -+ 141, -+ 184, -+ -1, -+ -1, -+ -1, -+ -1, -+ 143, -+ 177, -+ 57, -+ -1, -+ -1, -+ -1, -+ 145, -+ -1, -+ -1, -+ -1, -+ -1, -+ 178, -+ 148, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 150, -+ 65, -+ 171, -+ 67, -+ 68, -+ -1, -+ -1, -+ 191, -+ -1, -+ -1, -+ 181, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 185, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 187, -+ -1, -+ -1, -+ -1, -+ 133, -+ -1, -+ 197, -+ -1, -+ -1, -+ -1, -+ -1, -+ -1, -+ 0, -+ 107, -+ 111, -+ 125, -+ -1, -+ 147, -+ 18, -+ 17, -+ 16, -+ -1, -+ -1, -+ 30, -+ 41, -+ 52, -+ 63, -+ 7, -+ 74, -+ 85, -+ 96, -+ 108, -+ 116, -+ 117, -+ 118, -+ 119, -+ 120, -+ 121, -+ 122, -+ 123, -+ 136, -+ 169, -+ 180, -+ 190, -+ 1, -+ 124, -+ 126, -+ 127, -+ 128, -+ 129, -+ 130, -+ -1, -+ 132, -+ 12, -+}; -diff --git a/fc-lang/fclang.h b/fc-lang/fclang.h -new file mode 100644 -index 0000000..9a49913 ---- /dev/null -+++ b/fc-lang/fclang.h -@@ -0,0 +1,4549 @@ -+/* -+ * fontconfig/fc-lang/fclang.tmpl.h -+ * -+ * Copyright © 2002 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 author(s) not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. The authors make no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL THE AUTHOR(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. -+ */ -+ -+/* total size: 1087 unique leaves: 702 */ -+ -+#define LEAF0 (244 * sizeof (FcLangCharSet)) -+#define OFF0 (LEAF0 + 702 * sizeof (FcCharLeaf)) -+#define NUM0 (OFF0 + 755 * sizeof (uintptr_t)) -+#define SET(n) (n * sizeof (FcLangCharSet) + offsetof (FcLangCharSet, charset)) -+#define OFF(s,o) (OFF0 + o * sizeof (uintptr_t) - SET(s)) -+#define NUM(s,n) (NUM0 + n * sizeof (FcChar16) - SET(s)) -+#define LEAF(o,l) (LEAF0 + l * sizeof (FcCharLeaf) - (OFF0 + o * sizeof (intptr_t))) -+#define fcLangCharSets (fcLangData.langCharSets) -+#define fcLangCharSetIndices (fcLangData.langIndices) -+#define fcLangCharSetIndicesInv (fcLangData.langIndicesInv) -+ -+static const struct { -+ FcLangCharSet langCharSets[244]; -+ FcCharLeaf leaves[702]; -+ uintptr_t leaf_offsets[755]; -+ FcChar16 numbers[755]; -+ FcChar8 langIndices[244]; -+ FcChar8 langIndicesInv[244]; -+} fcLangData = { -+{ -+ { "aa", { FC_REF_CONSTANT, 1, OFF(0,0), NUM(0,0) } }, /* 0 */ -+ { "ab", { FC_REF_CONSTANT, 1, OFF(1,1), NUM(1,1) } }, /* 1 */ -+ { "af", { FC_REF_CONSTANT, 2, OFF(2,2), NUM(2,2) } }, /* 2 */ -+ { "ak", { FC_REF_CONSTANT, 5, OFF(3,4), NUM(3,4) } }, /* 3 */ -+ { "am", { FC_REF_CONSTANT, 2, OFF(4,9), NUM(4,9) } }, /* 4 */ -+ { "an", { FC_REF_CONSTANT, 1, OFF(5,11), NUM(5,11) } }, /* 5 */ -+ { "ar", { FC_REF_CONSTANT, 1, OFF(6,12), NUM(6,12) } }, /* 6 */ -+ { "as", { FC_REF_CONSTANT, 1, OFF(7,13), NUM(7,13) } }, /* 7 */ -+ { "ast", { FC_REF_CONSTANT, 2, OFF(8,14), NUM(8,14) } }, /* 8 */ -+ { "av", { FC_REF_CONSTANT, 1, OFF(9,16), NUM(9,16) } }, /* 9 */ -+ { "ay", { FC_REF_CONSTANT, 1, OFF(10,17), NUM(10,17) } }, /* 10 */ -+ { "az-az", { FC_REF_CONSTANT, 3, OFF(11,18), NUM(11,18) } }, /* 11 */ -+ { "az-ir", { FC_REF_CONSTANT, 1, OFF(12,21), NUM(12,21) } }, /* 12 */ -+ { "ba", { FC_REF_CONSTANT, 1, OFF(13,22), NUM(13,22) } }, /* 13 */ -+ { "be", { FC_REF_CONSTANT, 1, OFF(14,23), NUM(14,23) } }, /* 14 */ -+ { "ber-dz", { FC_REF_CONSTANT, 4, OFF(15,24), NUM(15,24) } }, /* 15 */ -+ { "ber-ma", { FC_REF_CONSTANT, 1, OFF(16,28), NUM(16,28) } }, /* 16 */ -+ { "bg", { FC_REF_CONSTANT, 1, OFF(17,29), NUM(17,29) } }, /* 17 */ -+ { "bh", { FC_REF_CONSTANT, 1, OFF(18,30), NUM(18,30) } }, /* 18 */ -+ { "bho", { FC_REF_CONSTANT, 1, OFF(19,30), NUM(19,30) } }, /* 19 */ -+ { "bi", { FC_REF_CONSTANT, 1, OFF(20,31), NUM(20,31) } }, /* 20 */ -+ { "bin", { FC_REF_CONSTANT, 3, OFF(21,32), NUM(21,32) } }, /* 21 */ -+ { "bm", { FC_REF_CONSTANT, 3, OFF(22,35), NUM(22,35) } }, /* 22 */ -+ { "bn", { FC_REF_CONSTANT, 1, OFF(23,38), NUM(23,38) } }, /* 23 */ -+ { "bo", { FC_REF_CONSTANT, 1, OFF(24,39), NUM(24,39) } }, /* 24 */ -+ { "br", { FC_REF_CONSTANT, 1, OFF(25,40), NUM(25,40) } }, /* 25 */ -+ { "brx", { FC_REF_CONSTANT, 1, OFF(26,41), NUM(26,41) } }, /* 26 */ -+ { "bs", { FC_REF_CONSTANT, 2, OFF(27,42), NUM(27,42) } }, /* 27 */ -+ { "bua", { FC_REF_CONSTANT, 1, OFF(28,44), NUM(28,44) } }, /* 28 */ -+ { "byn", { FC_REF_CONSTANT, 2, OFF(29,45), NUM(29,45) } }, /* 29 */ -+ { "ca", { FC_REF_CONSTANT, 2, OFF(30,47), NUM(30,47) } }, /* 30 */ -+ { "ce", { FC_REF_CONSTANT, 1, OFF(31,16), NUM(31,16) } }, /* 31 */ -+ { "ch", { FC_REF_CONSTANT, 1, OFF(32,49), NUM(32,49) } }, /* 32 */ -+ { "chm", { FC_REF_CONSTANT, 1, OFF(33,50), NUM(33,50) } }, /* 33 */ -+ { "chr", { FC_REF_CONSTANT, 1, OFF(34,51), NUM(34,51) } }, /* 34 */ -+ { "co", { FC_REF_CONSTANT, 2, OFF(35,52), NUM(35,52) } }, /* 35 */ -+ { "crh", { FC_REF_CONSTANT, 2, OFF(36,54), NUM(36,54) } }, /* 36 */ -+ { "cs", { FC_REF_CONSTANT, 2, OFF(37,56), NUM(37,56) } }, /* 37 */ -+ { "csb", { FC_REF_CONSTANT, 2, OFF(38,58), NUM(38,58) } }, /* 38 */ -+ { "cu", { FC_REF_CONSTANT, 1, OFF(39,60), NUM(39,60) } }, /* 39 */ -+ { "cv", { FC_REF_CONSTANT, 2, OFF(40,61), NUM(40,61) } }, /* 40 */ -+ { "cy", { FC_REF_CONSTANT, 3, OFF(41,63), NUM(41,63) } }, /* 41 */ -+ { "da", { FC_REF_CONSTANT, 1, OFF(42,66), NUM(42,66) } }, /* 42 */ -+ { "de", { FC_REF_CONSTANT, 1, OFF(43,67), NUM(43,67) } }, /* 43 */ -+ { "doi", { FC_REF_CONSTANT, 1, OFF(44,68), NUM(44,68) } }, /* 44 */ -+ { "dv", { FC_REF_CONSTANT, 1, OFF(45,69), NUM(45,69) } }, /* 45 */ -+ { "dz", { FC_REF_CONSTANT, 1, OFF(46,39), NUM(46,39) } }, /* 46 */ -+ { "ee", { FC_REF_CONSTANT, 4, OFF(47,70), NUM(47,70) } }, /* 47 */ -+ { "el", { FC_REF_CONSTANT, 1, OFF(48,74), NUM(48,74) } }, /* 48 */ -+ { "en", { FC_REF_CONSTANT, 1, OFF(49,75), NUM(49,75) } }, /* 49 */ -+ { "eo", { FC_REF_CONSTANT, 2, OFF(50,76), NUM(50,76) } }, /* 50 */ -+ { "es", { FC_REF_CONSTANT, 1, OFF(51,11), NUM(51,11) } }, /* 51 */ -+ { "et", { FC_REF_CONSTANT, 2, OFF(52,78), NUM(52,78) } }, /* 52 */ -+ { "eu", { FC_REF_CONSTANT, 1, OFF(53,80), NUM(53,80) } }, /* 53 */ -+ { "fa", { FC_REF_CONSTANT, 1, OFF(54,21), NUM(54,21) } }, /* 54 */ -+ { "fat", { FC_REF_CONSTANT, 5, OFF(55,4), NUM(55,4) } }, /* 55 */ -+ { "ff", { FC_REF_CONSTANT, 3, OFF(56,81), NUM(56,81) } }, /* 56 */ -+ { "fi", { FC_REF_CONSTANT, 2, OFF(57,84), NUM(57,84) } }, /* 57 */ -+ { "fil", { FC_REF_CONSTANT, 1, OFF(58,86), NUM(58,86) } }, /* 58 */ -+ { "fj", { FC_REF_CONSTANT, 1, OFF(59,87), NUM(59,87) } }, /* 59 */ -+ { "fo", { FC_REF_CONSTANT, 1, OFF(60,88), NUM(60,88) } }, /* 60 */ -+ { "fr", { FC_REF_CONSTANT, 2, OFF(61,52), NUM(61,52) } }, /* 61 */ -+ { "fur", { FC_REF_CONSTANT, 1, OFF(62,89), NUM(62,89) } }, /* 62 */ -+ { "fy", { FC_REF_CONSTANT, 1, OFF(63,90), NUM(63,90) } }, /* 63 */ -+ { "ga", { FC_REF_CONSTANT, 3, OFF(64,91), NUM(64,91) } }, /* 64 */ -+ { "gd", { FC_REF_CONSTANT, 1, OFF(65,94), NUM(65,94) } }, /* 65 */ -+ { "gez", { FC_REF_CONSTANT, 2, OFF(66,95), NUM(66,95) } }, /* 66 */ -+ { "gl", { FC_REF_CONSTANT, 1, OFF(67,11), NUM(67,11) } }, /* 67 */ -+ { "gn", { FC_REF_CONSTANT, 3, OFF(68,97), NUM(68,97) } }, /* 68 */ -+ { "gu", { FC_REF_CONSTANT, 1, OFF(69,100), NUM(69,100) } }, /* 69 */ -+ { "gv", { FC_REF_CONSTANT, 1, OFF(70,101), NUM(70,101) } }, /* 70 */ -+ { "ha", { FC_REF_CONSTANT, 3, OFF(71,102), NUM(71,102) } }, /* 71 */ -+ { "haw", { FC_REF_CONSTANT, 3, OFF(72,105), NUM(72,105) } }, /* 72 */ -+ { "he", { FC_REF_CONSTANT, 1, OFF(73,108), NUM(73,108) } }, /* 73 */ -+ { "hi", { FC_REF_CONSTANT, 1, OFF(74,30), NUM(74,30) } }, /* 74 */ -+ { "hne", { FC_REF_CONSTANT, 1, OFF(75,30), NUM(75,30) } }, /* 75 */ -+ { "ho", { FC_REF_CONSTANT, 1, OFF(76,87), NUM(76,87) } }, /* 76 */ -+ { "hr", { FC_REF_CONSTANT, 2, OFF(77,42), NUM(77,42) } }, /* 77 */ -+ { "hsb", { FC_REF_CONSTANT, 2, OFF(78,109), NUM(78,109) } }, /* 78 */ -+ { "ht", { FC_REF_CONSTANT, 1, OFF(79,111), NUM(79,111) } }, /* 79 */ -+ { "hu", { FC_REF_CONSTANT, 2, OFF(80,112), NUM(80,112) } }, /* 80 */ -+ { "hy", { FC_REF_CONSTANT, 1, OFF(81,114), NUM(81,114) } }, /* 81 */ -+ { "hz", { FC_REF_CONSTANT, 3, OFF(82,115), NUM(82,115) } }, /* 82 */ -+ { "ia", { FC_REF_CONSTANT, 1, OFF(83,87), NUM(83,87) } }, /* 83 */ -+ { "id", { FC_REF_CONSTANT, 1, OFF(84,118), NUM(84,118) } }, /* 84 */ -+ { "ie", { FC_REF_CONSTANT, 1, OFF(85,87), NUM(85,87) } }, /* 85 */ -+ { "ig", { FC_REF_CONSTANT, 2, OFF(86,119), NUM(86,119) } }, /* 86 */ -+ { "ii", { FC_REF_CONSTANT, 5, OFF(87,121), NUM(87,121) } }, /* 87 */ -+ { "ik", { FC_REF_CONSTANT, 1, OFF(88,126), NUM(88,126) } }, /* 88 */ -+ { "io", { FC_REF_CONSTANT, 1, OFF(89,87), NUM(89,87) } }, /* 89 */ -+ { "is", { FC_REF_CONSTANT, 1, OFF(90,127), NUM(90,127) } }, /* 90 */ -+ { "it", { FC_REF_CONSTANT, 1, OFF(91,128), NUM(91,128) } }, /* 91 */ -+ { "iu", { FC_REF_CONSTANT, 3, OFF(92,129), NUM(92,129) } }, /* 92 */ -+ { "ja", { FC_REF_CONSTANT, 83, OFF(93,132), NUM(93,132) } }, /* 93 */ -+ { "jv", { FC_REF_CONSTANT, 1, OFF(94,215), NUM(94,215) } }, /* 94 */ -+ { "ka", { FC_REF_CONSTANT, 1, OFF(95,216), NUM(95,216) } }, /* 95 */ -+ { "kaa", { FC_REF_CONSTANT, 1, OFF(96,217), NUM(96,217) } }, /* 96 */ -+ { "kab", { FC_REF_CONSTANT, 4, OFF(97,24), NUM(97,24) } }, /* 97 */ -+ { "ki", { FC_REF_CONSTANT, 2, OFF(98,218), NUM(98,218) } }, /* 98 */ -+ { "kj", { FC_REF_CONSTANT, 1, OFF(99,87), NUM(99,87) } }, /* 99 */ -+ { "kk", { FC_REF_CONSTANT, 1, OFF(100,220), NUM(100,220) } }, /* 100 */ -+ { "kl", { FC_REF_CONSTANT, 2, OFF(101,221), NUM(101,221) } }, /* 101 */ -+ { "km", { FC_REF_CONSTANT, 1, OFF(102,223), NUM(102,223) } }, /* 102 */ -+ { "kn", { FC_REF_CONSTANT, 1, OFF(103,224), NUM(103,224) } }, /* 103 */ -+ { "ko", { FC_REF_CONSTANT, 45, OFF(104,225), NUM(104,225) } }, /* 104 */ -+ { "kok", { FC_REF_CONSTANT, 1, OFF(105,30), NUM(105,30) } }, /* 105 */ -+ { "kr", { FC_REF_CONSTANT, 3, OFF(106,270), NUM(106,270) } }, /* 106 */ -+ { "ks", { FC_REF_CONSTANT, 1, OFF(107,273), NUM(107,273) } }, /* 107 */ -+ { "ku-am", { FC_REF_CONSTANT, 2, OFF(108,274), NUM(108,274) } }, /* 108 */ -+ { "ku-iq", { FC_REF_CONSTANT, 1, OFF(109,276), NUM(109,276) } }, /* 109 */ -+ { "ku-ir", { FC_REF_CONSTANT, 1, OFF(110,276), NUM(110,276) } }, /* 110 */ -+ { "ku-tr", { FC_REF_CONSTANT, 2, OFF(111,277), NUM(111,277) } }, /* 111 */ -+ { "kum", { FC_REF_CONSTANT, 1, OFF(112,279), NUM(112,279) } }, /* 112 */ -+ { "kv", { FC_REF_CONSTANT, 1, OFF(113,280), NUM(113,280) } }, /* 113 */ -+ { "kw", { FC_REF_CONSTANT, 3, OFF(114,281), NUM(114,281) } }, /* 114 */ -+ { "kwm", { FC_REF_CONSTANT, 1, OFF(115,87), NUM(115,87) } }, /* 115 */ -+ { "ky", { FC_REF_CONSTANT, 1, OFF(116,284), NUM(116,284) } }, /* 116 */ -+ { "la", { FC_REF_CONSTANT, 2, OFF(117,285), NUM(117,285) } }, /* 117 */ -+ { "lah", { FC_REF_CONSTANT, 1, OFF(118,287), NUM(118,287) } }, /* 118 */ -+ { "lb", { FC_REF_CONSTANT, 1, OFF(119,288), NUM(119,288) } }, /* 119 */ -+ { "lez", { FC_REF_CONSTANT, 1, OFF(120,16), NUM(120,16) } }, /* 120 */ -+ { "lg", { FC_REF_CONSTANT, 2, OFF(121,289), NUM(121,289) } }, /* 121 */ -+ { "li", { FC_REF_CONSTANT, 1, OFF(122,291), NUM(122,291) } }, /* 122 */ -+ { "ln", { FC_REF_CONSTANT, 4, OFF(123,292), NUM(123,292) } }, /* 123 */ -+ { "lo", { FC_REF_CONSTANT, 1, OFF(124,296), NUM(124,296) } }, /* 124 */ -+ { "lt", { FC_REF_CONSTANT, 2, OFF(125,297), NUM(125,297) } }, /* 125 */ -+ { "lv", { FC_REF_CONSTANT, 2, OFF(126,299), NUM(126,299) } }, /* 126 */ -+ { "mai", { FC_REF_CONSTANT, 1, OFF(127,30), NUM(127,30) } }, /* 127 */ -+ { "mg", { FC_REF_CONSTANT, 1, OFF(128,301), NUM(128,301) } }, /* 128 */ -+ { "mh", { FC_REF_CONSTANT, 2, OFF(129,302), NUM(129,302) } }, /* 129 */ -+ { "mi", { FC_REF_CONSTANT, 3, OFF(130,304), NUM(130,304) } }, /* 130 */ -+ { "mk", { FC_REF_CONSTANT, 1, OFF(131,307), NUM(131,307) } }, /* 131 */ -+ { "ml", { FC_REF_CONSTANT, 1, OFF(132,308), NUM(132,308) } }, /* 132 */ -+ { "mn-cn", { FC_REF_CONSTANT, 1, OFF(133,309), NUM(133,309) } }, /* 133 */ -+ { "mn-mn", { FC_REF_CONSTANT, 1, OFF(134,310), NUM(134,310) } }, /* 134 */ -+ { "mni", { FC_REF_CONSTANT, 1, OFF(135,311), NUM(135,311) } }, /* 135 */ -+ { "mo", { FC_REF_CONSTANT, 4, OFF(136,312), NUM(136,312) } }, /* 136 */ -+ { "mr", { FC_REF_CONSTANT, 1, OFF(137,30), NUM(137,30) } }, /* 137 */ -+ { "ms", { FC_REF_CONSTANT, 1, OFF(138,87), NUM(138,87) } }, /* 138 */ -+ { "mt", { FC_REF_CONSTANT, 2, OFF(139,316), NUM(139,316) } }, /* 139 */ -+ { "my", { FC_REF_CONSTANT, 1, OFF(140,318), NUM(140,318) } }, /* 140 */ -+ { "na", { FC_REF_CONSTANT, 2, OFF(141,319), NUM(141,319) } }, /* 141 */ -+ { "nb", { FC_REF_CONSTANT, 1, OFF(142,321), NUM(142,321) } }, /* 142 */ -+ { "nds", { FC_REF_CONSTANT, 1, OFF(143,67), NUM(143,67) } }, /* 143 */ -+ { "ne", { FC_REF_CONSTANT, 1, OFF(144,322), NUM(144,322) } }, /* 144 */ -+ { "ng", { FC_REF_CONSTANT, 1, OFF(145,87), NUM(145,87) } }, /* 145 */ -+ { "nl", { FC_REF_CONSTANT, 1, OFF(146,323), NUM(146,323) } }, /* 146 */ -+ { "nn", { FC_REF_CONSTANT, 1, OFF(147,324), NUM(147,324) } }, /* 147 */ -+ { "no", { FC_REF_CONSTANT, 1, OFF(148,321), NUM(148,321) } }, /* 148 */ -+ { "nqo", { FC_REF_CONSTANT, 1, OFF(149,325), NUM(149,325) } }, /* 149 */ -+ { "nr", { FC_REF_CONSTANT, 1, OFF(150,87), NUM(150,87) } }, /* 150 */ -+ { "nso", { FC_REF_CONSTANT, 2, OFF(151,326), NUM(151,326) } }, /* 151 */ -+ { "nv", { FC_REF_CONSTANT, 4, OFF(152,328), NUM(152,328) } }, /* 152 */ -+ { "ny", { FC_REF_CONSTANT, 2, OFF(153,332), NUM(153,332) } }, /* 153 */ -+ { "oc", { FC_REF_CONSTANT, 1, OFF(154,334), NUM(154,334) } }, /* 154 */ -+ { "om", { FC_REF_CONSTANT, 1, OFF(155,87), NUM(155,87) } }, /* 155 */ -+ { "or", { FC_REF_CONSTANT, 1, OFF(156,335), NUM(156,335) } }, /* 156 */ -+ { "os", { FC_REF_CONSTANT, 1, OFF(157,279), NUM(157,279) } }, /* 157 */ -+ { "ota", { FC_REF_CONSTANT, 1, OFF(158,336), NUM(158,336) } }, /* 158 */ -+ { "pa", { FC_REF_CONSTANT, 1, OFF(159,337), NUM(159,337) } }, /* 159 */ -+ { "pa-pk", { FC_REF_CONSTANT, 1, OFF(160,287), NUM(160,287) } }, /* 160 */ -+ { "pap-an", { FC_REF_CONSTANT, 1, OFF(161,338), NUM(161,338) } }, /* 161 */ -+ { "pap-aw", { FC_REF_CONSTANT, 1, OFF(162,339), NUM(162,339) } }, /* 162 */ -+ { "pl", { FC_REF_CONSTANT, 2, OFF(163,340), NUM(163,340) } }, /* 163 */ -+ { "ps-af", { FC_REF_CONSTANT, 1, OFF(164,342), NUM(164,342) } }, /* 164 */ -+ { "ps-pk", { FC_REF_CONSTANT, 1, OFF(165,343), NUM(165,343) } }, /* 165 */ -+ { "pt", { FC_REF_CONSTANT, 1, OFF(166,344), NUM(166,344) } }, /* 166 */ -+ { "qu", { FC_REF_CONSTANT, 2, OFF(167,345), NUM(167,345) } }, /* 167 */ -+ { "quz", { FC_REF_CONSTANT, 2, OFF(168,345), NUM(168,345) } }, /* 168 */ -+ { "rm", { FC_REF_CONSTANT, 1, OFF(169,347), NUM(169,347) } }, /* 169 */ -+ { "rn", { FC_REF_CONSTANT, 1, OFF(170,87), NUM(170,87) } }, /* 170 */ -+ { "ro", { FC_REF_CONSTANT, 3, OFF(171,348), NUM(171,348) } }, /* 171 */ -+ { "ru", { FC_REF_CONSTANT, 1, OFF(172,279), NUM(172,279) } }, /* 172 */ -+ { "rw", { FC_REF_CONSTANT, 1, OFF(173,87), NUM(173,87) } }, /* 173 */ -+ { "sa", { FC_REF_CONSTANT, 1, OFF(174,30), NUM(174,30) } }, /* 174 */ -+ { "sah", { FC_REF_CONSTANT, 1, OFF(175,351), NUM(175,351) } }, /* 175 */ -+ { "sat", { FC_REF_CONSTANT, 1, OFF(176,352), NUM(176,352) } }, /* 176 */ -+ { "sc", { FC_REF_CONSTANT, 1, OFF(177,353), NUM(177,353) } }, /* 177 */ -+ { "sco", { FC_REF_CONSTANT, 3, OFF(178,354), NUM(178,354) } }, /* 178 */ -+ { "sd", { FC_REF_CONSTANT, 1, OFF(179,357), NUM(179,357) } }, /* 179 */ -+ { "se", { FC_REF_CONSTANT, 2, OFF(180,358), NUM(180,358) } }, /* 180 */ -+ { "sel", { FC_REF_CONSTANT, 1, OFF(181,279), NUM(181,279) } }, /* 181 */ -+ { "sg", { FC_REF_CONSTANT, 1, OFF(182,360), NUM(182,360) } }, /* 182 */ -+ { "sh", { FC_REF_CONSTANT, 3, OFF(183,361), NUM(183,361) } }, /* 183 */ -+ { "shs", { FC_REF_CONSTANT, 2, OFF(184,364), NUM(184,364) } }, /* 184 */ -+ { "si", { FC_REF_CONSTANT, 1, OFF(185,366), NUM(185,366) } }, /* 185 */ -+ { "sid", { FC_REF_CONSTANT, 2, OFF(186,367), NUM(186,367) } }, /* 186 */ -+ { "sk", { FC_REF_CONSTANT, 2, OFF(187,369), NUM(187,369) } }, /* 187 */ -+ { "sl", { FC_REF_CONSTANT, 2, OFF(188,42), NUM(188,42) } }, /* 188 */ -+ { "sm", { FC_REF_CONSTANT, 2, OFF(189,371), NUM(189,371) } }, /* 189 */ -+ { "sma", { FC_REF_CONSTANT, 1, OFF(190,373), NUM(190,373) } }, /* 190 */ -+ { "smj", { FC_REF_CONSTANT, 1, OFF(191,374), NUM(191,374) } }, /* 191 */ -+ { "smn", { FC_REF_CONSTANT, 2, OFF(192,375), NUM(192,375) } }, /* 192 */ -+ { "sms", { FC_REF_CONSTANT, 3, OFF(193,377), NUM(193,377) } }, /* 193 */ -+ { "sn", { FC_REF_CONSTANT, 1, OFF(194,87), NUM(194,87) } }, /* 194 */ -+ { "so", { FC_REF_CONSTANT, 1, OFF(195,87), NUM(195,87) } }, /* 195 */ -+ { "sq", { FC_REF_CONSTANT, 1, OFF(196,380), NUM(196,380) } }, /* 196 */ -+ { "sr", { FC_REF_CONSTANT, 1, OFF(197,381), NUM(197,381) } }, /* 197 */ -+ { "ss", { FC_REF_CONSTANT, 1, OFF(198,87), NUM(198,87) } }, /* 198 */ -+ { "st", { FC_REF_CONSTANT, 1, OFF(199,87), NUM(199,87) } }, /* 199 */ -+ { "su", { FC_REF_CONSTANT, 1, OFF(200,118), NUM(200,118) } }, /* 200 */ -+ { "sv", { FC_REF_CONSTANT, 1, OFF(201,382), NUM(201,382) } }, /* 201 */ -+ { "sw", { FC_REF_CONSTANT, 1, OFF(202,87), NUM(202,87) } }, /* 202 */ -+ { "syr", { FC_REF_CONSTANT, 1, OFF(203,383), NUM(203,383) } }, /* 203 */ -+ { "ta", { FC_REF_CONSTANT, 1, OFF(204,384), NUM(204,384) } }, /* 204 */ -+ { "te", { FC_REF_CONSTANT, 1, OFF(205,385), NUM(205,385) } }, /* 205 */ -+ { "tg", { FC_REF_CONSTANT, 1, OFF(206,386), NUM(206,386) } }, /* 206 */ -+ { "th", { FC_REF_CONSTANT, 1, OFF(207,387), NUM(207,387) } }, /* 207 */ -+ { "ti-er", { FC_REF_CONSTANT, 2, OFF(208,45), NUM(208,45) } }, /* 208 */ -+ { "ti-et", { FC_REF_CONSTANT, 2, OFF(209,367), NUM(209,367) } }, /* 209 */ -+ { "tig", { FC_REF_CONSTANT, 2, OFF(210,388), NUM(210,388) } }, /* 210 */ -+ { "tk", { FC_REF_CONSTANT, 2, OFF(211,390), NUM(211,390) } }, /* 211 */ -+ { "tl", { FC_REF_CONSTANT, 1, OFF(212,86), NUM(212,86) } }, /* 212 */ -+ { "tn", { FC_REF_CONSTANT, 2, OFF(213,326), NUM(213,326) } }, /* 213 */ -+ { "to", { FC_REF_CONSTANT, 2, OFF(214,371), NUM(214,371) } }, /* 214 */ -+ { "tr", { FC_REF_CONSTANT, 2, OFF(215,392), NUM(215,392) } }, /* 215 */ -+ { "ts", { FC_REF_CONSTANT, 1, OFF(216,87), NUM(216,87) } }, /* 216 */ -+ { "tt", { FC_REF_CONSTANT, 1, OFF(217,394), NUM(217,394) } }, /* 217 */ -+ { "tw", { FC_REF_CONSTANT, 5, OFF(218,4), NUM(218,4) } }, /* 218 */ -+ { "ty", { FC_REF_CONSTANT, 3, OFF(219,395), NUM(219,395) } }, /* 219 */ -+ { "tyv", { FC_REF_CONSTANT, 1, OFF(220,284), NUM(220,284) } }, /* 220 */ -+ { "ug", { FC_REF_CONSTANT, 1, OFF(221,398), NUM(221,398) } }, /* 221 */ -+ { "uk", { FC_REF_CONSTANT, 1, OFF(222,399), NUM(222,399) } }, /* 222 */ -+ { "ur", { FC_REF_CONSTANT, 1, OFF(223,287), NUM(223,287) } }, /* 223 */ -+ { "uz", { FC_REF_CONSTANT, 1, OFF(224,87), NUM(224,87) } }, /* 224 */ -+ { "ve", { FC_REF_CONSTANT, 2, OFF(225,400), NUM(225,400) } }, /* 225 */ -+ { "vi", { FC_REF_CONSTANT, 4, OFF(226,402), NUM(226,402) } }, /* 226 */ -+ { "vo", { FC_REF_CONSTANT, 1, OFF(227,406), NUM(227,406) } }, /* 227 */ -+ { "vot", { FC_REF_CONSTANT, 2, OFF(228,407), NUM(228,407) } }, /* 228 */ -+ { "wa", { FC_REF_CONSTANT, 1, OFF(229,409), NUM(229,409) } }, /* 229 */ -+ { "wal", { FC_REF_CONSTANT, 2, OFF(230,367), NUM(230,367) } }, /* 230 */ -+ { "wen", { FC_REF_CONSTANT, 2, OFF(231,410), NUM(231,410) } }, /* 231 */ -+ { "wo", { FC_REF_CONSTANT, 2, OFF(232,412), NUM(232,412) } }, /* 232 */ -+ { "xh", { FC_REF_CONSTANT, 1, OFF(233,87), NUM(233,87) } }, /* 233 */ -+ { "yap", { FC_REF_CONSTANT, 1, OFF(234,414), NUM(234,414) } }, /* 234 */ -+ { "yi", { FC_REF_CONSTANT, 1, OFF(235,108), NUM(235,108) } }, /* 235 */ -+ { "yo", { FC_REF_CONSTANT, 4, OFF(236,415), NUM(236,415) } }, /* 236 */ -+ { "za", { FC_REF_CONSTANT, 1, OFF(237,87), NUM(237,87) } }, /* 237 */ -+ { "zh-cn", { FC_REF_CONSTANT, 82, OFF(238,419), NUM(238,419) } }, /* 238 */ -+ { "zh-hk", { FC_REF_CONSTANT, 171, OFF(239,501), NUM(239,501) } }, /* 239 */ -+ { "zh-mo", { FC_REF_CONSTANT, 171, OFF(240,501), NUM(240,501) } }, /* 240 */ -+ { "zh-sg", { FC_REF_CONSTANT, 82, OFF(241,419), NUM(241,419) } }, /* 241 */ -+ { "zh-tw", { FC_REF_CONSTANT, 83, OFF(242,672), NUM(242,672) } }, /* 242 */ -+ { "zu", { FC_REF_CONSTANT, 1, OFF(243,87), NUM(243,87) } }, /* 243 */ -+}, -+{ -+ { { /* 0 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x08104404, 0x08104404, -+ } }, -+ { { /* 1 */ -+ 0xffff8002, 0xffffffff, 0x8002ffff, 0x00000000, -+ 0xc0000000, 0xf0fc33c0, 0x03000000, 0x00000003, -+ } }, -+ { { /* 2 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0810cf00, 0x0810cf00, -+ } }, -+ { { /* 3 */ -+ 0x00000000, 0x00000000, 0x00000200, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 4 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00220008, 0x00220008, -+ } }, -+ { { /* 5 */ -+ 0x00000000, 0x00000300, 0x00000000, 0x00000300, -+ 0x00010040, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 6 */ -+ 0x00000000, 0x00000000, 0x08100000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 7 */ -+ 0x00000048, 0x00000200, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 8 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x30000000, 0x00000000, 0x03000000, -+ } }, -+ { { /* 9 */ -+ 0xff7fff7f, 0xff01ff7f, 0x00003d7f, 0xffff7fff, -+ 0xffff3d7f, 0x003d7fff, 0xff7f7f00, 0x00ff7fff, -+ } }, -+ { { /* 10 */ -+ 0x003d7fff, 0xffffffff, 0x007fff7f, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 11 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x140a2202, 0x140a2202, -+ } }, -+ { { /* 12 */ -+ 0x00000000, 0x07fffffe, 0x000007fe, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 13 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfff99fee, 0xd3c4fdff, 0xb000399f, 0x00030000, -+ } }, -+ { { /* 14 */ -+ 0x00000000, 0x00c00030, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 15 */ -+ 0xffff0042, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 16 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10028010, 0x10028010, -+ } }, -+ { { /* 17 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10400080, 0x10400080, -+ } }, -+ { { /* 18 */ -+ 0xc0000000, 0x00030000, 0xc0000000, 0x00000000, -+ 0x00008000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 19 */ -+ 0x00000000, 0x00000000, 0x02000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 20 */ -+ 0x00000000, 0x07ffffde, 0x001009f6, 0x40000000, -+ 0x01000040, 0x00008200, 0x00001000, 0x00000000, -+ } }, -+ { { /* 21 */ -+ 0xffff0000, 0xffffffff, 0x0000ffff, 0x00000000, -+ 0x030c0000, 0x0c00cc0f, 0x03000000, 0x00000300, -+ } }, -+ { { /* 22 */ -+ 0xffff4040, 0xffffffff, 0x4040ffff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 23 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 24 */ -+ 0x00003000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00110000, 0x00000000, 0x00000000, 0x000000c0, -+ } }, -+ { { /* 25 */ -+ 0x00000000, 0x00000000, 0x08000000, 0x00000008, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 26 */ -+ 0x00003000, 0x00000030, 0x00000000, 0x0000300c, -+ 0x000c0000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 27 */ -+ 0x00000000, 0x3a8b0000, 0x9e78e6b9, 0x0000802e, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 28 */ -+ 0xffff0000, 0xffffd7ff, 0x0000d7ff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 29 */ -+ 0xffffffe0, 0x83ffffff, 0x00003fff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 30 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10008200, 0x10008200, -+ } }, -+ { { /* 31 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x060c3303, 0x060c3303, -+ } }, -+ { { /* 32 */ -+ 0x00000003, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 33 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x03000000, 0x00003000, 0x00000000, -+ } }, -+ { { /* 34 */ -+ 0x00000000, 0x00000000, 0x00000c00, 0x00000000, -+ 0x20010040, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 35 */ -+ 0x00000000, 0x00000000, 0x08100000, 0x00040000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 36 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfff99fee, 0xd3c5fdff, 0xb000399f, 0x00000000, -+ } }, -+ { { /* 37 */ -+ 0x00000000, 0x00000000, 0xfffffeff, 0x3d7e03ff, -+ 0xfeff0003, 0x03ffffff, 0x00000000, 0x00000000, -+ } }, -+ { { /* 38 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x12120404, 0x12120404, -+ } }, -+ { { /* 39 */ -+ 0xfff99fee, 0xf3e5fdff, 0x0007399f, 0x0001ffff, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 40 */ -+ 0x000330c0, 0x00000000, 0x00000000, 0x60000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 41 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x0c00c000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 42 */ -+ 0xff7fff7f, 0xff01ff00, 0x3d7f3d7f, 0xffff7fff, -+ 0xffff0000, 0x003d7fff, 0xff7f7f3d, 0x00ff7fff, -+ } }, -+ { { /* 43 */ -+ 0x003d7fff, 0xffffffff, 0x007fff00, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 44 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x140ca381, 0x140ca381, -+ } }, -+ { { /* 45 */ -+ 0x00000000, 0x80000000, 0x00000001, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 46 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10020004, 0x10020004, -+ } }, -+ { { /* 47 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x00000030, 0x000c0000, 0x030300c0, -+ } }, -+ { { /* 48 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0xffffffff, 0xffffffff, 0x001fffff, -+ } }, -+ { { /* 49 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x1a10cfc5, 0x9a10cfc5, -+ } }, -+ { { /* 50 */ -+ 0x00000000, 0x00000000, 0x000c0000, 0x01000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 51 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10420084, 0x10420084, -+ } }, -+ { { /* 52 */ -+ 0xc0000000, 0x00030000, 0xc0000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 53 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x24082202, 0x24082202, -+ } }, -+ { { /* 54 */ -+ 0x0c00f000, 0x00000000, 0x03000180, 0x6000c033, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 55 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x021c0a08, 0x021c0a08, -+ } }, -+ { { /* 56 */ -+ 0x00000030, 0x00000000, 0x0000001e, 0x18000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 57 */ -+ 0xfdffa966, 0xffffdfff, 0xa965dfff, 0x03ffffff, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 58 */ -+ 0x0000000c, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 59 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x00000c00, 0x00c00000, 0x000c0000, -+ } }, -+ { { /* 60 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0010c604, 0x8010c604, -+ } }, -+ { { /* 61 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x01f00000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 62 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x0000003f, 0x00000000, 0x00000000, 0x000c0000, -+ } }, -+ { { /* 63 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x25082262, 0x25082262, -+ } }, -+ { { /* 64 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x90400010, 0x10400010, -+ } }, -+ { { /* 65 */ -+ 0xfff99fec, 0xf3e5fdff, 0xf807399f, 0x0000ffff, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 66 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xffffffff, 0x0001ffff, 0x00000000, 0x00000000, -+ } }, -+ { { /* 67 */ -+ 0x0c000000, 0x00000000, 0x00000c00, 0x00000000, -+ 0x00170240, 0x00040000, 0x001fe000, 0x00000000, -+ } }, -+ { { /* 68 */ -+ 0x00000000, 0x00000000, 0x08500000, 0x00000008, -+ 0x00000800, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 69 */ -+ 0x00001003, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 70 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xffffd740, 0xfffffffb, 0x00007fff, 0x00000000, -+ } }, -+ { { /* 71 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00528f81, 0x00528f81, -+ } }, -+ { { /* 72 */ -+ 0x30000300, 0x00300030, 0x30000000, 0x00003000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 73 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10600010, 0x10600010, -+ } }, -+ { { /* 74 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x60000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 75 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10020000, 0x10020000, -+ } }, -+ { { /* 76 */ -+ 0x00000000, 0x00000000, 0x00000c00, 0x00000000, -+ 0x20000402, 0x00180000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 77 */ -+ 0x00000000, 0x00000000, 0x00880000, 0x00040000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 78 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00400030, 0x00400030, -+ } }, -+ { { /* 79 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0e1e7707, 0x0e1e7707, -+ } }, -+ { { /* 80 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x25092042, 0x25092042, -+ } }, -+ { { /* 81 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x02041107, 0x02041107, -+ } }, -+ { { /* 82 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x9c508e14, 0x1c508e14, -+ } }, -+ { { /* 83 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x04082202, 0x04082202, -+ } }, -+ { { /* 84 */ -+ 0x00000c00, 0x00000003, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 85 */ -+ 0xc0000c0c, 0x00000000, 0x00c00003, 0x00000c03, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 86 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x020c1383, 0x020c1383, -+ } }, -+ { { /* 87 */ -+ 0xff7fff7f, 0xff01ff7f, 0x00003d7f, 0x00ff00ff, -+ 0x00ff3d7f, 0x003d7fff, 0xff7f7f00, 0x00ff7f00, -+ } }, -+ { { /* 88 */ -+ 0x003d7f00, 0xffff01ff, 0x007fff7f, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 89 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x040a2202, 0x042a220a, -+ } }, -+ { { /* 90 */ -+ 0x00000000, 0x00000200, 0x00000000, 0x00000200, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 91 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x20000000, 0x00000000, 0x02000000, -+ } }, -+ { { /* 92 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfffbafee, 0xf3edfdff, 0x00013bbf, 0x00000001, -+ } }, -+ { { /* 93 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000080, 0x00000080, -+ } }, -+ { { /* 94 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x03000402, 0x00180000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 95 */ -+ 0x00000000, 0x00000000, 0x00880000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 96 */ -+ 0x000c0003, 0x00000c00, 0x00003000, 0x00000c00, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 97 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x08000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 98 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0xffff0000, 0x000007ff, -+ } }, -+ { { /* 99 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00080000, 0x00080000, -+ } }, -+ { { /* 100 */ -+ 0x0c0030c0, 0x00000000, 0x0300001e, 0x66000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 101 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00040100, 0x00040100, -+ } }, -+ { { /* 102 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x14482202, 0x14482202, -+ } }, -+ { { /* 103 */ -+ 0x00000000, 0x00000000, 0x00030000, 0x00030000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 104 */ -+ 0x00000000, 0xfffe0000, 0x007fffff, 0xfffffffe, -+ 0x000000ff, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 105 */ -+ 0x00000000, 0x00008000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 106 */ -+ 0x000c0000, 0x00000000, 0x00000c00, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 107 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000200, 0x00000200, -+ } }, -+ { { /* 108 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00003c00, 0x00000030, -+ } }, -+ { { /* 109 */ -+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, -+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, -+ } }, -+ { { /* 110 */ -+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, -+ 0x00001fff, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 111 */ -+ 0xffff4002, 0xffffffff, 0x4002ffff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 112 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x64092242, 0x64092242, -+ } }, -+ { { /* 113 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x060cb301, 0x060cb301, -+ } }, -+ { { /* 114 */ -+ 0x00000c7e, 0x031f8000, 0x0063f200, 0x000df840, -+ 0x00037e08, 0x08000dfa, 0x0df901bf, 0x5437e400, -+ } }, -+ { { /* 115 */ -+ 0x00000025, 0x40006fc0, 0x27f91be4, 0xdee00000, -+ 0x007ff83f, 0x00007f7f, 0x00000000, 0x00000000, -+ } }, -+ { { /* 116 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x007f8000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 117 */ -+ 0x000000a7, 0x00000000, 0xfffffffe, 0xffffffff, -+ 0x780fffff, 0xfffffffe, 0xffffffff, 0x787fffff, -+ } }, -+ { { /* 118 */ -+ 0x03506f8b, 0x1b042042, 0x62808020, 0x400a0000, -+ 0x10341b41, 0x04003812, 0x03608c02, 0x08454038, -+ } }, -+ { { /* 119 */ -+ 0x2403c002, 0x15108000, 0x1229e040, 0x80280000, -+ 0x28002800, 0x8060c002, 0x2080040c, 0x05284002, -+ } }, -+ { { /* 120 */ -+ 0x82042a00, 0x02000818, 0x10008200, 0x20700020, -+ 0x03022000, 0x40a41000, 0x0420a020, 0x00000080, -+ } }, -+ { { /* 121 */ -+ 0x80040011, 0x00000400, 0x04012b78, 0x11a23920, -+ 0x02842460, 0x00c01021, 0x20002050, 0x07400042, -+ } }, -+ { { /* 122 */ -+ 0x208205c9, 0x0fc10230, 0x08402480, 0x00258018, -+ 0x88000080, 0x42120609, 0xa32002a8, 0x40040094, -+ } }, -+ { { /* 123 */ -+ 0x00c00024, 0x8e000001, 0x059e058a, 0x013b0001, -+ 0x85000010, 0x08080000, 0x02d07d04, 0x018d9838, -+ } }, -+ { { /* 124 */ -+ 0x8803f310, 0x03000840, 0x00000704, 0x30080500, -+ 0x00001000, 0x20040000, 0x00000003, 0x04040002, -+ } }, -+ { { /* 125 */ -+ 0x000100d0, 0x40028000, 0x00088040, 0x00000000, -+ 0x34000210, 0x00400e00, 0x00000020, 0x00000008, -+ } }, -+ { { /* 126 */ -+ 0x00000040, 0x00060000, 0x00000000, 0x00100100, -+ 0x00000080, 0x00000000, 0x4c000000, 0x240d0009, -+ } }, -+ { { /* 127 */ -+ 0x80048000, 0x00010180, 0x00020484, 0x00000400, -+ 0x00000804, 0x00000008, 0x80004800, 0x16800000, -+ } }, -+ { { /* 128 */ -+ 0x00200065, 0x00120410, 0x44920403, 0x40000200, -+ 0x10880008, 0x40080100, 0x00001482, 0x00074800, -+ } }, -+ { { /* 129 */ -+ 0x14608200, 0x00024e84, 0x00128380, 0x20184520, -+ 0x0240041c, 0x0a001120, 0x00180a00, 0x88000800, -+ } }, -+ { { /* 130 */ -+ 0x01000002, 0x00008001, 0x04000040, 0x80000040, -+ 0x08040000, 0x00000000, 0x00001202, 0x00000002, -+ } }, -+ { { /* 131 */ -+ 0x00000000, 0x00000004, 0x21910000, 0x00000858, -+ 0xbf8013a0, 0x8279401c, 0xa8041054, 0xc5004282, -+ } }, -+ { { /* 132 */ -+ 0x0402ce56, 0xfc020000, 0x40200d21, 0x00028030, -+ 0x00010000, 0x01081202, 0x00000000, 0x00410003, -+ } }, -+ { { /* 133 */ -+ 0x00404080, 0x00000200, 0x00010000, 0x00000000, -+ 0x00000000, 0x00000000, 0x60000000, 0x480241ea, -+ } }, -+ { { /* 134 */ -+ 0x2000104c, 0x2109a820, 0x00200020, 0x7b1c0008, -+ 0x10a0840a, 0x01c028c0, 0x00000608, 0x04c00000, -+ } }, -+ { { /* 135 */ -+ 0x80398412, 0x40a200e0, 0x02080000, 0x12030a04, -+ 0x008d1833, 0x02184602, 0x13803028, 0x00200801, -+ } }, -+ { { /* 136 */ -+ 0x20440000, 0x000005a1, 0x00050800, 0x0020a328, -+ 0x80100000, 0x10040649, 0x10020020, 0x00090180, -+ } }, -+ { { /* 137 */ -+ 0x8c008202, 0x00000000, 0x00205910, 0x0041410c, -+ 0x00004004, 0x40441290, 0x00010080, 0x01040000, -+ } }, -+ { { /* 138 */ -+ 0x04070000, 0x89108040, 0x00282a81, 0x82420000, -+ 0x51a20411, 0x32220800, 0x2b0d2220, 0x40c83003, -+ } }, -+ { { /* 139 */ -+ 0x82020082, 0x80008900, 0x10a00200, 0x08004100, -+ 0x09041108, 0x000405a6, 0x0c018000, 0x04104002, -+ } }, -+ { { /* 140 */ -+ 0x00002000, 0x44003000, 0x01000004, 0x00008200, -+ 0x00000008, 0x00044010, 0x00002002, 0x00001040, -+ } }, -+ { { /* 141 */ -+ 0x00000000, 0xca008000, 0x02828020, 0x00b1100c, -+ 0x12824280, 0x22013030, 0x00808820, 0x040013e4, -+ } }, -+ { { /* 142 */ -+ 0x801840c0, 0x1000a1a1, 0x00000004, 0x0050c200, -+ 0x00c20082, 0x00104840, 0x10400080, 0xa3140000, -+ } }, -+ { { /* 143 */ -+ 0xa8a02301, 0x24123d00, 0x80030200, 0xc0028022, -+ 0x34a10000, 0x00408005, 0x00190010, 0x882a0000, -+ } }, -+ { { /* 144 */ -+ 0x00080018, 0x33000402, 0x9002010a, 0x00000000, -+ 0x00800020, 0x00010100, 0x84040810, 0x04004000, -+ } }, -+ { { /* 145 */ -+ 0x10006020, 0x00000000, 0x00000000, 0x30a02000, -+ 0x00000004, 0x00000000, 0x01000800, 0x20000000, -+ } }, -+ { { /* 146 */ -+ 0x02000000, 0x02000602, 0x80000800, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 147 */ -+ 0x00000010, 0x44040083, 0x00081000, 0x0818824c, -+ 0x00400e00, 0x8c300000, 0x08146001, 0x00000000, -+ } }, -+ { { /* 148 */ -+ 0x00828000, 0x41900000, 0x84804006, 0x24010001, -+ 0x02400108, 0x9b080006, 0x00201602, 0x0009012e, -+ } }, -+ { { /* 149 */ -+ 0x40800800, 0x48000420, 0x10000032, 0x01904440, -+ 0x02000100, 0x10048000, 0x00020000, 0x08820802, -+ } }, -+ { { /* 150 */ -+ 0x08080ba0, 0x00009242, 0x00400000, 0xc0008080, -+ 0x20410001, 0x04400000, 0x60020820, 0x00100000, -+ } }, -+ { { /* 151 */ -+ 0x00108046, 0x01001805, 0x90100000, 0x00014010, -+ 0x00000010, 0x00000000, 0x0000000b, 0x00008800, -+ } }, -+ { { /* 152 */ -+ 0x00000000, 0x00001000, 0x00000000, 0x20018800, -+ 0x00004600, 0x06002000, 0x00000100, 0x00000000, -+ } }, -+ { { /* 153 */ -+ 0x00000000, 0x10400042, 0x02004000, 0x00004280, -+ 0x80000400, 0x00020000, 0x00000008, 0x00000020, -+ } }, -+ { { /* 154 */ -+ 0x00000040, 0x20600400, 0x0a000180, 0x02040280, -+ 0x00000000, 0x00409001, 0x02000004, 0x00003200, -+ } }, -+ { { /* 155 */ -+ 0x88000000, 0x80404800, 0x00000010, 0x00040008, -+ 0x00000a90, 0x00000200, 0x00002000, 0x40002001, -+ } }, -+ { { /* 156 */ -+ 0x00000048, 0x00100000, 0x00000000, 0x00000001, -+ 0x00000008, 0x20010080, 0x00000000, 0x00400040, -+ } }, -+ { { /* 157 */ -+ 0x85000000, 0x0c8f0108, 0x32129000, 0x80090420, -+ 0x00024000, 0x40040800, 0x092000a0, 0x00100204, -+ } }, -+ { { /* 158 */ -+ 0x00002000, 0x00000000, 0x00440004, 0x6c000000, -+ 0x000000d0, 0x80004000, 0x88800440, 0x41144018, -+ } }, -+ { { /* 159 */ -+ 0x80001a02, 0x14000001, 0x00000001, 0x0000004a, -+ 0x00000000, 0x00083000, 0x08000000, 0x0008a024, -+ } }, -+ { { /* 160 */ -+ 0x00300004, 0x00140000, 0x20000000, 0x00001800, -+ 0x00020002, 0x04000000, 0x00000002, 0x00000100, -+ } }, -+ { { /* 161 */ -+ 0x00004002, 0x54000000, 0x60400300, 0x00002120, -+ 0x0000a022, 0x00000000, 0x81060803, 0x08010200, -+ } }, -+ { { /* 162 */ -+ 0x04004800, 0xb0044000, 0x0000a005, 0x04500800, -+ 0x800c000a, 0x0000c000, 0x10000800, 0x02408021, -+ } }, -+ { { /* 163 */ -+ 0x08020000, 0x00001040, 0x00540a40, 0x00000000, -+ 0x00800880, 0x01020002, 0x00000211, 0x00000010, -+ } }, -+ { { /* 164 */ -+ 0x00000000, 0x80000002, 0x00002000, 0x00080001, -+ 0x09840a00, 0x40000080, 0x00400000, 0x49000080, -+ } }, -+ { { /* 165 */ -+ 0x0e102831, 0x06098807, 0x40011014, 0x02620042, -+ 0x06000000, 0x88062000, 0x04068400, 0x08108301, -+ } }, -+ { { /* 166 */ -+ 0x08000012, 0x40004840, 0x00300402, 0x00012000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 167 */ -+ 0x00000000, 0x00400000, 0x00000000, 0x00a54400, -+ 0x40004420, 0x20000310, 0x00041002, 0x18000000, -+ } }, -+ { { /* 168 */ -+ 0x00a1002a, 0x00080000, 0x40400000, 0x00900000, -+ 0x21401200, 0x04048626, 0x40005048, 0x21100000, -+ } }, -+ { { /* 169 */ -+ 0x040005a4, 0x000a0000, 0x00214000, 0x07010800, -+ 0x34000000, 0x00080100, 0x00080040, 0x10182508, -+ } }, -+ { { /* 170 */ -+ 0xc0805100, 0x02c01400, 0x00000080, 0x00448040, -+ 0x20000800, 0x210a8000, 0x08800000, 0x00020060, -+ } }, -+ { { /* 171 */ -+ 0x00004004, 0x00400100, 0x01040200, 0x00800000, -+ 0x00000000, 0x00000000, 0x10081400, 0x00008000, -+ } }, -+ { { /* 172 */ -+ 0x00004000, 0x20000000, 0x08800200, 0x00001000, -+ 0x00000000, 0x01000000, 0x00000810, 0x00000000, -+ } }, -+ { { /* 173 */ -+ 0x00020000, 0x20200000, 0x00000000, 0x00000000, -+ 0x00000010, 0x00001c40, 0x00002000, 0x08000210, -+ } }, -+ { { /* 174 */ -+ 0x00000000, 0x00000000, 0x54014000, 0x02000800, -+ 0x00200400, 0x00000000, 0x00002080, 0x00004000, -+ } }, -+ { { /* 175 */ -+ 0x10000004, 0x00000000, 0x00000000, 0x00000000, -+ 0x00002000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 176 */ -+ 0x00000000, 0x00000000, 0x28881041, 0x0081010a, -+ 0x00400800, 0x00000800, 0x10208026, 0x61000000, -+ } }, -+ { { /* 177 */ -+ 0x00050080, 0x00000000, 0x80000000, 0x80040000, -+ 0x044088c2, 0x00080480, 0x00040000, 0x00000048, -+ } }, -+ { { /* 178 */ -+ 0x8188410d, 0x141a2400, 0x40310000, 0x000f4249, -+ 0x41283280, 0x80053011, 0x00400880, 0x410060c0, -+ } }, -+ { { /* 179 */ -+ 0x2a004013, 0x02000002, 0x11000000, 0x00850040, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 180 */ -+ 0x00000000, 0x00800000, 0x04000440, 0x00000402, -+ 0x60001000, 0x99909f87, 0x5808049d, 0x10002445, -+ } }, -+ { { /* 181 */ -+ 0x00000100, 0x00000000, 0x00000000, 0x00910050, -+ 0x00000420, 0x00080008, 0x20000000, 0x00288002, -+ } }, -+ { { /* 182 */ -+ 0x00008400, 0x00000400, 0x00000000, 0x00100000, -+ 0x00002000, 0x00000800, 0x80043400, 0x21000004, -+ } }, -+ { { /* 183 */ -+ 0x20000208, 0x01000600, 0x00000010, 0x00000000, -+ 0x48000000, 0x14060008, 0x00124020, 0x20812800, -+ } }, -+ { { /* 184 */ -+ 0xa419804b, 0x01064009, 0x10386ca4, 0x85a0620b, -+ 0x00000010, 0x01000448, 0x00004400, 0x20a02102, -+ } }, -+ { { /* 185 */ -+ 0x00000000, 0x00000000, 0x00147000, 0x01a01404, -+ 0x10040000, 0x01000000, 0x3002f180, 0x00000008, -+ } }, -+ { { /* 186 */ -+ 0x00002000, 0x00100000, 0x08000010, 0x00020004, -+ 0x01000029, 0x00002000, 0x00000000, 0x10082000, -+ } }, -+ { { /* 187 */ -+ 0x00000000, 0x0004d041, 0x08000800, 0x00200000, -+ 0x00401000, 0x00004000, 0x00000000, 0x00000002, -+ } }, -+ { { /* 188 */ -+ 0x01000000, 0x00000000, 0x00020000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 189 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00800000, -+ 0x000a0a01, 0x0004002c, 0x01000080, 0x00000000, -+ } }, -+ { { /* 190 */ -+ 0x10000000, 0x08040400, 0x08012010, 0x2569043c, -+ 0x1a10c460, 0x08800009, 0x000210f0, 0x08c5050c, -+ } }, -+ { { /* 191 */ -+ 0x10000481, 0x00040080, 0x42040000, 0x00100204, -+ 0x00000000, 0x00000000, 0x00080000, 0x88080000, -+ } }, -+ { { /* 192 */ -+ 0x010f016c, 0x18002000, 0x41307000, 0x00000080, -+ 0x00000000, 0x00000100, 0x88000000, 0x70048004, -+ } }, -+ { { /* 193 */ -+ 0x00081420, 0x00000100, 0x00000000, 0x00000000, -+ 0x02400000, 0x00001000, 0x00050070, 0x00000000, -+ } }, -+ { { /* 194 */ -+ 0x000c4000, 0x00010000, 0x04000000, 0x00000000, -+ 0x00000000, 0x01000100, 0x01000010, 0x00000400, -+ } }, -+ { { /* 195 */ -+ 0x00000000, 0x10020000, 0x04100024, 0x00000000, -+ 0x00000000, 0x00004000, 0x00000000, 0x00000100, -+ } }, -+ { { /* 196 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00100020, -+ } }, -+ { { /* 197 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00008000, 0x00100000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 198 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x80000000, -+ 0x00880000, 0x0c000040, 0x02040010, 0x00000000, -+ } }, -+ { { /* 199 */ -+ 0x00080000, 0x08000000, 0x00000000, 0x00000004, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 200 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000300, 0x00000300, -+ } }, -+ { { /* 201 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0xffff0000, 0x0001ffff, -+ } }, -+ { { /* 202 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x0c0c0000, 0x000cc00c, 0x03000000, 0x00000000, -+ } }, -+ { { /* 203 */ -+ 0x00000000, 0x00000300, 0x00000000, 0x00000300, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 204 */ -+ 0xffff0000, 0xffffffff, 0x0040ffff, 0x00000000, -+ 0x0c0c0000, 0x0c00000c, 0x03000000, 0x00000300, -+ } }, -+ { { /* 205 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0d10646e, 0x0d10646e, -+ } }, -+ { { /* 206 */ -+ 0x00000000, 0x01000300, 0x00000000, 0x00000300, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 207 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x9fffffff, 0xffcffee7, 0x0000003f, 0x00000000, -+ } }, -+ { { /* 208 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfffddfec, 0xc3effdff, 0x40603ddf, 0x00000003, -+ } }, -+ { { /* 209 */ -+ 0x00000000, 0xfffe0000, 0xffffffff, 0xffffffef, -+ 0x00007fff, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 210 */ -+ 0x3eff0793, 0x1303b011, 0x11102801, 0x05930000, -+ 0xb0111e7b, 0x3b019703, 0x00a01112, 0x306b9593, -+ } }, -+ { { /* 211 */ -+ 0x1102b051, 0x11303201, 0x011102b0, 0xb879300a, -+ 0x30011306, 0x00800010, 0x100b0113, 0x93000011, -+ } }, -+ { { /* 212 */ -+ 0x00102b03, 0x05930000, 0xb051746b, 0x3b011323, -+ 0x00001030, 0x70000000, 0x1303b011, 0x11102900, -+ } }, -+ { { /* 213 */ -+ 0x00012180, 0xb0153000, 0x3001030e, 0x02000030, -+ 0x10230111, 0x13000000, 0x10106b81, 0x01130300, -+ } }, -+ { { /* 214 */ -+ 0x30111013, 0x00000100, 0x22b85530, 0x30000000, -+ 0x9702b011, 0x113afb07, 0x011303b0, 0x00000021, -+ } }, -+ { { /* 215 */ -+ 0x3b0d1b00, 0x03b01138, 0x11330113, 0x13000001, -+ 0x111c2b05, 0x00000100, 0xb0111000, 0x2a011300, -+ } }, -+ { { /* 216 */ -+ 0x02b01930, 0x10100001, 0x11000000, 0x10300301, -+ 0x07130230, 0x0011146b, 0x2b051300, 0x8fb8f974, -+ } }, -+ { { /* 217 */ -+ 0x103b0113, 0x00000000, 0xd9700000, 0x01134ab0, -+ 0x0011103b, 0x00001103, 0x2ab15930, 0x10000111, -+ } }, -+ { { /* 218 */ -+ 0x11010000, 0x00100b01, 0x01130000, 0x0000102b, -+ 0x20000101, 0x02a01110, 0x30210111, 0x0102b059, -+ } }, -+ { { /* 219 */ -+ 0x19300000, 0x011307b0, 0xb011383b, 0x00000003, -+ 0x00000000, 0x383b0d13, 0x0103b011, 0x00001000, -+ } }, -+ { { /* 220 */ -+ 0x01130000, 0x00101020, 0x00000100, 0x00000110, -+ 0x30000000, 0x00021811, 0x00100000, 0x01110000, -+ } }, -+ { { /* 221 */ -+ 0x00000023, 0x0b019300, 0x00301110, 0x302b0111, -+ 0x13c7b011, 0x01303b01, 0x00000280, 0xb0113000, -+ } }, -+ { { /* 222 */ -+ 0x2b011383, 0x03b01130, 0x300a0011, 0x1102b011, -+ 0x00002000, 0x01110100, 0xa011102b, 0x2b011302, -+ } }, -+ { { /* 223 */ -+ 0x01000010, 0x30000001, 0x13029011, 0x11302b01, -+ 0x000066b0, 0xb0113000, 0x6b07d302, 0x07b0113a, -+ } }, -+ { { /* 224 */ -+ 0x00200103, 0x13000000, 0x11386b05, 0x011303b0, -+ 0x000010b8, 0x2b051b00, 0x03000110, 0x10000000, -+ } }, -+ { { /* 225 */ -+ 0x1102a011, 0x79700a01, 0x0111a2b0, 0x0000100a, -+ 0x00011100, 0x00901110, 0x00090111, 0x93000000, -+ } }, -+ { { /* 226 */ -+ 0xf9f2bb05, 0x011322b0, 0x2001323b, 0x00000000, -+ 0x06b05930, 0x303b0193, 0x1123a011, 0x11700000, -+ } }, -+ { { /* 227 */ -+ 0x001102b0, 0x00001010, 0x03011301, 0x00000110, -+ 0x162b0793, 0x01010010, 0x11300000, 0x01110200, -+ } }, -+ { { /* 228 */ -+ 0xb0113029, 0x00000000, 0x0eb05130, 0x383b0513, -+ 0x0303b011, 0x00000100, 0x01930000, 0x00001039, -+ } }, -+ { { /* 229 */ -+ 0x3b000302, 0x00000000, 0x00230113, 0x00000000, -+ 0x00100000, 0x00010000, 0x90113020, 0x00000002, -+ } }, -+ { { /* 230 */ -+ 0x00000000, 0x10000000, 0x11020000, 0x00000301, -+ 0x01130000, 0xb079b02b, 0x3b011323, 0x02b01130, -+ } }, -+ { { /* 231 */ -+ 0xf0210111, 0x1343b0d9, 0x11303b01, 0x011103b0, -+ 0xb0517020, 0x20011322, 0x01901110, 0x300b0111, -+ } }, -+ { { /* 232 */ -+ 0x9302b011, 0x0016ab01, 0x01130100, 0xb0113021, -+ 0x29010302, 0x02b03130, 0x30000000, 0x1b42b819, -+ } }, -+ { { /* 233 */ -+ 0x11383301, 0x00000330, 0x00000020, 0x33051300, -+ 0x00001110, 0x00000000, 0x93000000, 0x01302305, -+ } }, -+ { { /* 234 */ -+ 0x00010100, 0x30111010, 0x00000100, 0x02301130, -+ 0x10100001, 0x11000000, 0x00000000, 0x85130200, -+ } }, -+ { { /* 235 */ -+ 0x10111003, 0x2b011300, 0x63b87730, 0x303b0113, -+ 0x11a2b091, 0x7b300201, 0x011357f0, 0xf0d1702b, -+ } }, -+ { { /* 236 */ -+ 0x1b0111e3, 0x0ab97130, 0x303b0113, 0x13029001, -+ 0x11302b01, 0x071302b0, 0x3011302b, 0x23011303, -+ } }, -+ { { /* 237 */ -+ 0x02b01130, 0x30ab0113, 0x11feb411, 0x71300901, -+ 0x05d347b8, 0xb011307b, 0x21015303, 0x00001110, -+ } }, -+ { { /* 238 */ -+ 0x306b0513, 0x1102b011, 0x00103301, 0x05130000, -+ 0xa01038eb, 0x30000102, 0x02b01110, 0x30200013, -+ } }, -+ { { /* 239 */ -+ 0x0102b071, 0x00101000, 0x01130000, 0x1011100b, -+ 0x2b011300, 0x00000000, 0x366b0593, 0x1303b095, -+ } }, -+ { { /* 240 */ -+ 0x01103b01, 0x00000200, 0xb0113000, 0x20000103, -+ 0x01000010, 0x30000000, 0x030ab011, 0x00101001, -+ } }, -+ { { /* 241 */ -+ 0x01110100, 0x00000003, 0x23011302, 0x03000010, -+ 0x10000000, 0x01000000, 0x00100000, 0x00000290, -+ } }, -+ { { /* 242 */ -+ 0x30113000, 0x7b015386, 0x03b01130, 0x00210151, -+ 0x13000000, 0x11303b01, 0x001102b0, 0x00011010, -+ } }, -+ { { /* 243 */ -+ 0x2b011302, 0x02001110, 0x10000000, 0x0102b011, -+ 0x11300100, 0x000102b0, 0x00011010, 0x2b011100, -+ } }, -+ { { /* 244 */ -+ 0x02101110, 0x002b0113, 0x93000000, 0x11302b03, -+ 0x011302b0, 0x0000303b, 0x00000002, 0x03b01930, -+ } }, -+ { { /* 245 */ -+ 0x102b0113, 0x0103b011, 0x11300000, 0x011302b0, -+ 0x00001021, 0x00010102, 0x00000010, 0x102b0113, -+ } }, -+ { { /* 246 */ -+ 0x01020011, 0x11302000, 0x011102b0, 0x30113001, -+ 0x00000002, 0x02b01130, 0x303b0313, 0x0103b011, -+ } }, -+ { { /* 247 */ -+ 0x00002000, 0x05130000, 0xb011303b, 0x10001102, -+ 0x00000110, 0x142b0113, 0x01000001, 0x01100000, -+ } }, -+ { { /* 248 */ -+ 0x00010280, 0xb0113000, 0x10000102, 0x00000010, -+ 0x10230113, 0x93021011, 0x11100b05, 0x01130030, -+ } }, -+ { { /* 249 */ -+ 0xb051702b, 0x3b011323, 0x00000030, 0x30000000, -+ 0x1303b011, 0x11102b01, 0x01010330, 0xb011300a, -+ } }, -+ { { /* 250 */ -+ 0x20000102, 0x00000000, 0x10000011, 0x9300a011, -+ 0x00102b05, 0x00000200, 0x90111000, 0x29011100, -+ } }, -+ { { /* 251 */ -+ 0x00b01110, 0x30000000, 0x1302b011, 0x11302b21, -+ 0x000103b0, 0x00000020, 0x2b051300, 0x02b01130, -+ } }, -+ { { /* 252 */ -+ 0x103b0113, 0x13002011, 0x11322b21, 0x00130280, -+ 0xa0113028, 0x0a011102, 0x02921130, 0x30210111, -+ } }, -+ { { /* 253 */ -+ 0x13020011, 0x11302b01, 0x03d30290, 0x3011122b, -+ 0x2b011302, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 254 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00004000, 0x00000000, 0x20000000, 0x00000000, -+ } }, -+ { { /* 255 */ -+ 0x00000000, 0x00000000, 0x00003000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 256 */ -+ 0x00000000, 0x040001df, 0x80800176, 0x420c0000, -+ 0x01020140, 0x44008200, 0x00041018, 0x00000000, -+ } }, -+ { { /* 257 */ -+ 0xffff0000, 0xffff27bf, 0x000027bf, 0x00000000, -+ 0x00000000, 0x0c000000, 0x03000000, 0x000000c0, -+ } }, -+ { { /* 258 */ -+ 0x3c000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 259 */ -+ 0x00000000, 0x061ef5c0, 0x000001f6, 0x40000000, -+ 0x01040040, 0x00208210, 0x00005040, 0x00000000, -+ } }, -+ { { /* 260 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x08004480, 0x08004480, -+ } }, -+ { { /* 261 */ -+ 0x00000000, 0x00000000, 0xc0000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 262 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 263 */ -+ 0xffff0042, 0xffffffff, 0x0042ffff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x000000c0, -+ } }, -+ { { /* 264 */ -+ 0x00000000, 0x000c0000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 265 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x0000c00c, 0x00000000, 0x00000000, -+ } }, -+ { { /* 266 */ -+ 0x000c0003, 0x00003c00, 0x0000f000, 0x00003c00, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 267 */ -+ 0x00000000, 0x040001de, 0x00000176, 0x42000000, -+ 0x01020140, 0x44008200, 0x00041008, 0x00000000, -+ } }, -+ { { /* 268 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x98504f14, 0x18504f14, -+ } }, -+ { { /* 269 */ -+ 0x00000000, 0x00000000, 0x00000c00, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 270 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00480910, 0x00480910, -+ } }, -+ { { /* 271 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0c186606, 0x0c186606, -+ } }, -+ { { /* 272 */ -+ 0x0c000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00010040, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 273 */ -+ 0x00001006, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 274 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfef02596, 0x3bffecae, 0x30003f5f, 0x00000000, -+ } }, -+ { { /* 275 */ -+ 0x03c03030, 0x0000c000, 0x00000000, 0x600c0c03, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 276 */ -+ 0x000c3003, 0x18c00c0c, 0x00c03060, 0x60000c03, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 277 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00100002, 0x00100002, -+ } }, -+ { { /* 278 */ -+ 0x00000003, 0x18000000, 0x00003060, 0x00000c00, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 279 */ -+ 0x00000000, 0x00300000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 280 */ -+ 0xfdffb729, 0x000001ff, 0xb7290000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 281 */ -+ 0xfffddfec, 0xc3fffdff, 0x00803dcf, 0x00000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 282 */ -+ 0x00000000, 0xffffffff, 0xffffffff, 0x00ffffff, -+ 0xffffffff, 0x000003ff, 0x00000000, 0x00000000, -+ } }, -+ { { /* 283 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00000000, 0x0000c000, 0x00000000, 0x00000300, -+ } }, -+ { { /* 284 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000010, -+ 0xfff99fee, 0xf3c5fdff, 0xb000798f, 0x0002ffc0, -+ } }, -+ { { /* 285 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00004004, 0x00004004, -+ } }, -+ { { /* 286 */ -+ 0x0f000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 287 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x02045101, 0x02045101, -+ } }, -+ { { /* 288 */ -+ 0x00000c00, 0x000000c3, 0x00000000, 0x18000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 289 */ -+ 0xffffffff, 0x0007f6fb, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 290 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000300, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 291 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x011c0661, 0x011c0661, -+ } }, -+ { { /* 292 */ -+ 0xfff98fee, 0xc3e5fdff, 0x0001398f, 0x0001fff0, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 293 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x1c58af16, 0x1c58af16, -+ } }, -+ { { /* 294 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x115c0671, 0x115c0671, -+ } }, -+ { { /* 295 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0xffffffff, 0x07ffffff, -+ } }, -+ { { /* 296 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00100400, 0x00100400, -+ } }, -+ { { /* 297 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 298 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00082202, 0x00082202, -+ } }, -+ { { /* 299 */ -+ 0x03000030, 0x0000c000, 0x00000006, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000c00, -+ } }, -+ { { /* 300 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x10000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 301 */ -+ 0x00000002, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 302 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00300000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 303 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x040c2383, 0x040c2383, -+ } }, -+ { { /* 304 */ -+ 0xfff99fee, 0xf3cdfdff, 0xb0c0398f, 0x00000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 305 */ -+ 0x00000000, 0x07ffffc6, 0x000001fe, 0x40000000, -+ 0x01000040, 0x0000a000, 0x00001000, 0x00000000, -+ } }, -+ { { /* 306 */ -+ 0xfff987e0, 0xd36dfdff, 0x1e003987, 0x001f0000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 307 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x160e2302, 0x160e2302, -+ } }, -+ { { /* 308 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00020000, 0x00020000, -+ } }, -+ { { /* 309 */ -+ 0x030000f0, 0x00000000, 0x0c00001e, 0x1e000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 310 */ -+ 0x00000000, 0x07ffffde, 0x000005f6, 0x50000000, -+ 0x05480262, 0x10000a00, 0x00013000, 0x00000000, -+ } }, -+ { { /* 311 */ -+ 0x00000000, 0x07ffffde, 0x000005f6, 0x50000000, -+ 0x05480262, 0x10000a00, 0x00052000, 0x00000000, -+ } }, -+ { { /* 312 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x143c278f, 0x143c278f, -+ } }, -+ { { /* 313 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000100, 0x00000000, -+ } }, -+ { { /* 314 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x02045301, 0x02045301, -+ } }, -+ { { /* 315 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00300000, 0x0c00c030, 0x03000000, 0x00000000, -+ } }, -+ { { /* 316 */ -+ 0xfff987ee, 0xf325fdff, 0x00013987, 0x0001fff0, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 317 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x02041101, 0x02041101, -+ } }, -+ { { /* 318 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00800000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 319 */ -+ 0x30000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00040000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 320 */ -+ 0x00000000, 0x07fffdd6, 0x000005f6, 0xec000000, -+ 0x0200b4d9, 0x480a8640, 0x00000000, 0x00000000, -+ } }, -+ { { /* 321 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000002, 0x00000002, -+ } }, -+ { { /* 322 */ -+ 0x00033000, 0x00000000, 0x00000c00, 0x600000c3, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 323 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x1850cc14, 0x1850cc14, -+ } }, -+ { { /* 324 */ -+ 0xffff8f04, 0xffffffff, 0x8f04ffff, 0x00000000, -+ 0x030c0000, 0x0c00cc0f, 0x03000000, 0x00000300, -+ } }, -+ { { /* 325 */ -+ 0x00000000, 0x00800000, 0x03bffbaa, 0x03bffbaa, -+ 0x00000000, 0x00000000, 0x00002202, 0x00002202, -+ } }, -+ { { /* 326 */ -+ 0x00080000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 327 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xfc7e3fec, 0x2ffbffbf, 0x7f5f847f, 0x00040000, -+ } }, -+ { { /* 328 */ -+ 0xff7fff7f, 0xff01ff7f, 0x3d7f3d7f, 0xffff7fff, -+ 0xffff3d7f, 0x003d7fff, 0xff7f7f3d, 0x00ff7fff, -+ } }, -+ { { /* 329 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x24182212, 0x24182212, -+ } }, -+ { { /* 330 */ -+ 0x0000f000, 0x66000000, 0x00300180, 0x60000033, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 331 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00408030, 0x00408030, -+ } }, -+ { { /* 332 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00020032, 0x00020032, -+ } }, -+ { { /* 333 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000016, 0x00000016, -+ } }, -+ { { /* 334 */ -+ 0x00033000, 0x00000000, 0x00000c00, 0x60000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 335 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00200034, 0x00200034, -+ } }, -+ { { /* 336 */ -+ 0x00033000, 0x00000000, 0x00000c00, 0x60000003, -+ 0x00000000, 0x00800000, 0x00000000, 0x0000c3f0, -+ } }, -+ { { /* 337 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00040000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 338 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00000880, 0x00000880, -+ } }, -+ { { /* 339 */ -+ 0xfdff8f04, 0xfdff01ff, 0x8f0401ff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 340 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10400a33, 0x10400a33, -+ } }, -+ { { /* 341 */ -+ 0xffff0000, 0xffff1fff, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 342 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0xd63dc7e8, 0xc3bfc718, 0x00803dc7, 0x00000000, -+ } }, -+ { { /* 343 */ -+ 0xfffddfee, 0xc3effdff, 0x00603ddf, 0x00000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 344 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x0c0c0000, 0x00cc0000, 0x00000000, 0x0000c00c, -+ } }, -+ { { /* 345 */ -+ 0xfffffffe, 0x87ffffff, 0x00007fff, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 346 */ -+ 0xff7fff7f, 0xff01ff00, 0x00003d7f, 0xffff7fff, -+ 0x00ff0000, 0x003d7f7f, 0xff7f7f00, 0x00ff7f00, -+ } }, -+ { { /* 347 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x30400090, 0x30400090, -+ } }, -+ { { /* 348 */ -+ 0x00000000, 0x00000000, 0xc0000180, 0x60000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 349 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x18404084, 0x18404084, -+ } }, -+ { { /* 350 */ -+ 0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000, -+ 0x00c00000, 0x0c00c00c, 0x03000000, 0x00000000, -+ } }, -+ { { /* 351 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00008000, 0x00008000, -+ } }, -+ { { /* 352 */ -+ 0x00000000, 0x041ed5c0, 0x0000077e, 0x40000000, -+ 0x01000040, 0x4000a000, 0x002109c0, 0x00000000, -+ } }, -+ { { /* 353 */ -+ 0xffff00d0, 0xffffffff, 0x00d0ffff, 0x00000000, -+ 0x00030000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 354 */ -+ 0x000c0000, 0x30000000, 0x00000c30, 0x00030000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 355 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x263c370f, 0x263c370f, -+ } }, -+ { { /* 356 */ -+ 0x0003000c, 0x00000300, 0x00000000, 0x00000300, -+ 0x00000000, 0x00018003, 0x00000000, 0x00000000, -+ } }, -+ { { /* 357 */ -+ 0x0800024f, 0x00000008, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 358 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0xffffffff, 0xffffffff, 0x03ffffff, -+ } }, -+ { { /* 359 */ -+ 0x00000000, 0x00000000, 0x077dfffe, 0x077dfffe, -+ 0x00000000, 0x00000000, 0x10400010, 0x10400010, -+ } }, -+ { { /* 360 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x10400010, 0x10400010, -+ } }, -+ { { /* 361 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x081047a4, 0x081047a4, -+ } }, -+ { { /* 362 */ -+ 0x0c0030c0, 0x00000000, 0x0f30001e, 0x66000003, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 363 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x000a0a09, 0x000a0a09, -+ } }, -+ { { /* 364 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x00400810, 0x00400810, -+ } }, -+ { { /* 365 */ -+ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, -+ 0x00000000, 0x00000000, 0x0e3c770f, 0x0e3c770f, -+ } }, -+ { { /* 366 */ -+ 0x0c000000, 0x00000300, 0x00000018, 0x00000300, -+ 0x00000000, 0x00000000, 0x001fe000, 0x03000000, -+ } }, -+ { { /* 367 */ -+ 0x0000100f, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 368 */ -+ 0x00000000, 0xc0000000, 0x00000000, 0x0000000c, -+ 0x00000000, 0x33000000, 0x00003000, 0x00000000, -+ } }, -+ { { /* 369 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000280, 0x00000000, -+ } }, -+ { { /* 370 */ -+ 0x7f7b7f8b, 0xef553db4, 0xf35dfba8, 0x400b0243, -+ 0x8d3efb40, 0x8c2c7bf7, 0xe3fa6eff, 0xa8ed1d3a, -+ } }, -+ { { /* 371 */ -+ 0xcf83e602, 0x35558cf5, 0xffabe048, 0xd85992b9, -+ 0x2892ab18, 0x8020d7e9, 0xf583c438, 0x450ae74a, -+ } }, -+ { { /* 372 */ -+ 0x9714b000, 0x54007762, 0x1420d188, 0xc8c01020, -+ 0x00002121, 0x0c0413a8, 0x04408000, 0x082870c0, -+ } }, -+ { { /* 373 */ -+ 0x000408c0, 0x80000002, 0x14722b7b, 0x3bfb7924, -+ 0x1ae43327, 0x38ef9835, 0x28029ad1, 0xbf69a813, -+ } }, -+ { { /* 374 */ -+ 0x2fc665cf, 0xafc96b11, 0x5053340f, 0xa00486a2, -+ 0xe8090106, 0xc00e3f0f, 0x81450a88, 0xc6010010, -+ } }, -+ { { /* 375 */ -+ 0x26e1a161, 0xce00444b, 0xd4eec7aa, 0x85bbcadf, -+ 0xa5203a74, 0x8840436c, 0x8bd23f06, 0x3befff79, -+ } }, -+ { { /* 376 */ -+ 0xe8eff75a, 0x5b36fbcb, 0x1bfd0d49, 0x39ee0154, -+ 0x2e75d855, 0xa91abfd8, 0xf6bff3d7, 0xb40c67e0, -+ } }, -+ { { /* 377 */ -+ 0x081382c2, 0xd08bd49d, 0x1061065a, 0x59e074f2, -+ 0xb3128f9f, 0x6aaa0080, 0xb05e3230, 0x60ac9d7a, -+ } }, -+ { { /* 378 */ -+ 0xc900d303, 0x8a563098, 0x13907000, 0x18421f14, -+ 0x0008c060, 0x10808008, 0xec900400, 0xe6332817, -+ } }, -+ { { /* 379 */ -+ 0x90000758, 0x4e09f708, 0xfc83f485, 0x18c8af53, -+ 0x080c187c, 0x01146adf, 0xa734c80c, 0x2710a011, -+ } }, -+ { { /* 380 */ -+ 0x422228c5, 0x00210413, 0x41123010, 0x40001820, -+ 0xc60c022b, 0x10000300, 0x00220022, 0x02495810, -+ } }, -+ { { /* 381 */ -+ 0x9670a094, 0x1792eeb0, 0x05f2cb96, 0x23580025, -+ 0x42cc25de, 0x4a04cf38, 0x359f0c40, 0x8a001128, -+ } }, -+ { { /* 382 */ -+ 0x910a13fa, 0x10560229, 0x04200641, 0x84f00484, -+ 0x0c040000, 0x412c0400, 0x11541206, 0x00020a4b, -+ } }, -+ { { /* 383 */ -+ 0x00c00200, 0x00940000, 0xbfbb0001, 0x242b167c, -+ 0x7fa89bbb, 0xe3790c7f, 0xe00d10f4, 0x9f014132, -+ } }, -+ { { /* 384 */ -+ 0x35728652, 0xff1210b4, 0x4223cf27, 0x8602c06b, -+ 0x1fd33106, 0xa1aa3a0c, 0x02040812, 0x08012572, -+ } }, -+ { { /* 385 */ -+ 0x485040cc, 0x601062d0, 0x29001c80, 0x00109a00, -+ 0x22000004, 0x00800000, 0x68002020, 0x609ecbe6, -+ } }, -+ { { /* 386 */ -+ 0x3f73916e, 0x398260c0, 0x48301034, 0xbd5c0006, -+ 0xd6fb8cd1, 0x43e820e1, 0x084e0600, 0xc4d00500, -+ } }, -+ { { /* 387 */ -+ 0x89aa8d1f, 0x1602a6e1, 0x21ed0001, 0x1a8b3656, -+ 0x13a51fb7, 0x30a06502, 0x23c7b278, 0xe9226c93, -+ } }, -+ { { /* 388 */ -+ 0x3a74e47f, 0x98208fe3, 0x2625280e, 0xbf49bf9c, -+ 0xac543218, 0x1916b949, 0xb5220c60, 0x0659fbc1, -+ } }, -+ { { /* 389 */ -+ 0x8420e343, 0x800008d9, 0x20225500, 0x00a10184, -+ 0x20104800, 0x40801380, 0x00160d04, 0x80200040, -+ } }, -+ { { /* 390 */ -+ 0x8de7fd40, 0xe0985436, 0x091e7b8b, 0xd249fec8, -+ 0x8dee0611, 0xba221937, 0x9fdd77f4, 0xf0daf3ec, -+ } }, -+ { { /* 391 */ -+ 0xec424386, 0x26048d3f, 0xc021fa6c, 0x0cc2628e, -+ 0x0145d785, 0x559977ad, 0x4045e250, 0xa154260b, -+ } }, -+ { { /* 392 */ -+ 0x58199827, 0xa4103443, 0x411405f2, 0x07002280, -+ 0x426600b4, 0x15a17210, 0x41856025, 0x00000054, -+ } }, -+ { { /* 393 */ -+ 0x01040201, 0xcb70c820, 0x6a629320, 0x0095184c, -+ 0x9a8b1880, 0x3201aab2, 0x00c4d87a, 0x04c3f3e5, -+ } }, -+ { { /* 394 */ -+ 0xa238d44d, 0x5072a1a1, 0x84fc980a, 0x44d1c152, -+ 0x20c21094, 0x42104180, 0x3a000000, 0xd29d0240, -+ } }, -+ { { /* 395 */ -+ 0xa8b12f01, 0x2432bd40, 0xd04bd34d, 0xd0ada723, -+ 0x75a10a92, 0x01e9adac, 0x771f801a, 0xa01b9225, -+ } }, -+ { { /* 396 */ -+ 0x20cadfa1, 0x738c0602, 0x003b577f, 0x00d00bff, -+ 0x0088806a, 0x0029a1c4, 0x05242a05, 0x16234009, -+ } }, -+ { { /* 397 */ -+ 0x80056822, 0xa2112011, 0x64900004, 0x13824849, -+ 0x193023d5, 0x08922980, 0x88115402, 0xa0042001, -+ } }, -+ { { /* 398 */ -+ 0x81800400, 0x60228502, 0x0b010090, 0x12020022, -+ 0x00834011, 0x00001a01, 0x00000000, 0x00000000, -+ } }, -+ { { /* 399 */ -+ 0x00000000, 0x4684009f, 0x020012c8, 0x1a0004fc, -+ 0x0c4c2ede, 0x80b80402, 0x0afca826, 0x22288c02, -+ } }, -+ { { /* 400 */ -+ 0x8f7ba0e0, 0x2135c7d6, 0xf8b106c7, 0x62550713, -+ 0x8a19936e, 0xfb0e6efa, 0x48f91630, 0x7debcd2f, -+ } }, -+ { { /* 401 */ -+ 0x4e845892, 0x7a2e4ca0, 0x561eedea, 0x1190c649, -+ 0xe83a5324, 0x8124cfdb, 0x634218f1, 0x1a8a5853, -+ } }, -+ { { /* 402 */ -+ 0x24d37420, 0x0514aa3b, 0x89586018, 0xc0004800, -+ 0x91018268, 0x2cd684a4, 0xc4ba8886, 0x02100377, -+ } }, -+ { { /* 403 */ -+ 0x00388244, 0x404aae11, 0x510028c0, 0x15146044, -+ 0x10007310, 0x02480082, 0x40060205, 0x0000c003, -+ } }, -+ { { /* 404 */ -+ 0x0c020000, 0x02200008, 0x40009000, 0xd161b800, -+ 0x32744621, 0x3b8af800, 0x8b00050f, 0x2280bbd0, -+ } }, -+ { { /* 405 */ -+ 0x07690600, 0x00438040, 0x50005420, 0x250c41d0, -+ 0x83108410, 0x02281101, 0x00304008, 0x020040a1, -+ } }, -+ { { /* 406 */ -+ 0x20000040, 0xabe31500, 0xaa443180, 0xc624c2c6, -+ 0x8004ac13, 0x03d1b000, 0x4285611e, 0x1d9ff303, -+ } }, -+ { { /* 407 */ -+ 0x78e8440a, 0xc3925e26, 0x00852000, 0x4000b001, -+ 0x88424a90, 0x0c8dca04, 0x4203a705, 0x000422a1, -+ } }, -+ { { /* 408 */ -+ 0x0c018668, 0x10795564, 0xdea00002, 0x40c12000, -+ 0x5001488b, 0x04000380, 0x50040000, 0x80d0c05d, -+ } }, -+ { { /* 409 */ -+ 0x970aa010, 0x4dafbb20, 0x1e10d921, 0x83140460, -+ 0xa6d68848, 0x733fd83b, 0x497427bc, 0x92130ddc, -+ } }, -+ { { /* 410 */ -+ 0x8ba1142b, 0xd1392e75, 0x50503009, 0x69008808, -+ 0x024a49d4, 0x80164010, 0x89d7e564, 0x5316c020, -+ } }, -+ { { /* 411 */ -+ 0x86002b92, 0x15e0a345, 0x0c03008b, 0xe200196e, -+ 0x80067031, 0xa82916a5, 0x18802000, 0xe1487aac, -+ } }, -+ { { /* 412 */ -+ 0xb5d63207, 0x5f9132e8, 0x20e550a1, 0x10807c00, -+ 0x9d8a7280, 0x421f00aa, 0x02310e22, 0x04941100, -+ } }, -+ { { /* 413 */ -+ 0x40080022, 0x5c100010, 0xfcc80343, 0x0580a1a5, -+ 0x04008433, 0x6e080080, 0x81262a4b, 0x2901aad8, -+ } }, -+ { { /* 414 */ -+ 0x4490684d, 0xba880009, 0x00820040, 0x87d10000, -+ 0xb1e6215b, 0x80083161, 0xc2400800, 0xa600a069, -+ } }, -+ { { /* 415 */ -+ 0x4a328d58, 0x550a5d71, 0x2d579aa0, 0x4aa64005, -+ 0x30b12021, 0x01123fc6, 0x260a10c2, 0x50824462, -+ } }, -+ { { /* 416 */ -+ 0x80409880, 0x810004c0, 0x00002003, 0x38180000, -+ 0xf1a60200, 0x720e4434, 0x92e035a2, 0x09008101, -+ } }, -+ { { /* 417 */ -+ 0x00000400, 0x00008885, 0x00000000, 0x00804000, -+ 0x00000000, 0x00004040, 0x00000000, 0x00000000, -+ } }, -+ { { /* 418 */ -+ 0x00000000, 0x08000000, 0x00000082, 0x00000000, -+ 0x88000004, 0xe7efbfff, 0xffbfffff, 0xfdffefef, -+ } }, -+ { { /* 419 */ -+ 0xbffefbff, 0x057fffff, 0x85b30034, 0x42164706, -+ 0xe4105402, 0xb3058092, 0x81305422, 0x180b4263, -+ } }, -+ { { /* 420 */ -+ 0x13f5387b, 0xa9ea07e5, 0x05143c4c, 0x80020600, -+ 0xbd481ad9, 0xf496ee37, 0x7ec0705f, 0x355fbfb2, -+ } }, -+ { { /* 421 */ -+ 0x455fe644, 0x41469000, 0x063b1d40, 0xfe1362a1, -+ 0x39028505, 0x0c080548, 0x0000144f, 0x58183488, -+ } }, -+ { { /* 422 */ -+ 0xd8153077, 0x4bfbbd0e, 0x85008a90, 0xe61dc100, -+ 0xb386ed14, 0x639bff72, 0xd9befd92, 0x0a92887b, -+ } }, -+ { { /* 423 */ -+ 0x1cb2d3fe, 0x177ab980, 0xdc1782c9, 0x3980fffb, -+ 0x590c4260, 0x37df0f01, 0xb15094a3, 0x23070623, -+ } }, -+ { { /* 424 */ -+ 0x3102f85a, 0x310201f0, 0x1e820040, 0x056a3a0a, -+ 0x12805b84, 0xa7148002, 0xa04b2612, 0x90011069, -+ } }, -+ { { /* 425 */ -+ 0x848a1000, 0x3f801802, 0x42400708, 0x4e140110, -+ 0x180080b0, 0x0281c510, 0x10298202, 0x88000210, -+ } }, -+ { { /* 426 */ -+ 0x00420020, 0x11000280, 0x4413e000, 0xfe025804, -+ 0x30283c07, 0x04739798, 0xcb13ced1, 0x431f6210, -+ } }, -+ { { /* 427 */ -+ 0x55ac278d, 0xc892422e, 0x02885380, 0x78514039, -+ 0x8088292c, 0x2428b900, 0x080e0c41, 0x42004421, -+ } }, -+ { { /* 428 */ -+ 0x08680408, 0x12040006, 0x02903031, 0xe0855b3e, -+ 0x10442936, 0x10822814, 0x83344266, 0x531b013c, -+ } }, -+ { { /* 429 */ -+ 0x0e0d0404, 0x00510c22, 0xc0000012, 0x88000040, -+ 0x0000004a, 0x00000000, 0x5447dff6, 0x00088868, -+ } }, -+ { { /* 430 */ -+ 0x00000081, 0x40000000, 0x00000100, 0x02000000, -+ 0x00080600, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 431 */ -+ 0x00000080, 0x00000040, 0x00000000, 0x00001040, -+ 0x00000000, 0xf7fdefff, 0xfffeff7f, 0xfffffbff, -+ } }, -+ { { /* 432 */ -+ 0xbffffdff, 0x00ffffff, 0x042012c2, 0x07080c06, -+ 0x01101624, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 433 */ -+ 0xe0000000, 0xfffffffe, 0x7f79ffff, 0x00f928df, -+ 0x80120c32, 0xd53a0008, 0xecc2d858, 0x2fa89d18, -+ } }, -+ { { /* 434 */ -+ 0xe0109620, 0x2622d60c, 0x02060f97, 0x9055b240, -+ 0x501180a2, 0x04049800, 0x00004000, 0x00000000, -+ } }, -+ { { /* 435 */ -+ 0x00000000, 0x00000000, 0x00000000, 0xfffffbc0, -+ 0xdffbeffe, 0x62430b08, 0xfb3b41b6, 0x23896f74, -+ } }, -+ { { /* 436 */ -+ 0xecd7ae7f, 0x5960e047, 0x098fa096, 0xa030612c, -+ 0x2aaa090d, 0x4f7bd44e, 0x388bc4b2, 0x6110a9c6, -+ } }, -+ { { /* 437 */ -+ 0x42000014, 0x0202800c, 0x6485fe48, 0xe3f7d63e, -+ 0x0c073aa0, 0x0430e40c, 0x1002f680, 0x00000000, -+ } }, -+ { { /* 438 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00100000, -+ 0x00004000, 0x00004000, 0x00000100, 0x00000000, -+ } }, -+ { { /* 439 */ -+ 0x00000000, 0x40000000, 0x00000000, 0x00000400, -+ 0x00008000, 0x00000000, 0x00400400, 0x00000000, -+ } }, -+ { { /* 440 */ -+ 0x00000000, 0x40000000, 0x00000000, 0x00000800, -+ 0xfebdffe0, 0xffffffff, 0xfbe77f7f, 0xf7ffffbf, -+ } }, -+ { { /* 441 */ -+ 0xefffffff, 0xdff7ff7e, 0xfbdff6f7, 0x804fbffe, -+ 0x00000000, 0x00000000, 0x00000000, 0x7fffef00, -+ } }, -+ { { /* 442 */ -+ 0xb6f7ff7f, 0xb87e4406, 0x88313bf5, 0x00f41796, -+ 0x1391a960, 0x72490080, 0x0024f2f3, 0x42c88701, -+ } }, -+ { { /* 443 */ -+ 0x5048e3d3, 0x43052400, 0x4a4c0000, 0x10580227, -+ 0x01162820, 0x0014a809, 0x00000000, 0x00683ec0, -+ } }, -+ { { /* 444 */ -+ 0x00000000, 0x00000000, 0x00000000, 0xffe00000, -+ 0xfddbb7ff, 0x000000f7, 0xc72e4000, 0x00000180, -+ } }, -+ { { /* 445 */ -+ 0x00012000, 0x00004000, 0x00300000, 0xb4f7ffa8, -+ 0x03ffadf3, 0x00000120, 0x00000000, 0x00000000, -+ } }, -+ { { /* 446 */ -+ 0x00000000, 0x00000000, 0x00000000, 0xfffbf000, -+ 0xfdcf9df7, 0x15c301bf, 0x810a1827, 0x0a00a842, -+ } }, -+ { { /* 447 */ -+ 0x80088108, 0x18048008, 0x0012a3be, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 448 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x90000000, -+ 0xdc3769e6, 0x3dff6bff, 0xf3f9fcf8, 0x00000004, -+ } }, -+ { { /* 449 */ -+ 0x80000000, 0xe7eebf6f, 0x5da2dffe, 0xc00b3fd8, -+ 0xa00c0984, 0x69100040, 0xb912e210, 0x5a0086a5, -+ } }, -+ { { /* 450 */ -+ 0x02896800, 0x6a809005, 0x00030010, 0x80000000, -+ 0x8e001ff9, 0x00000001, 0x00000000, 0x00000000, -+ } }, -+ { { /* 451 */ -+ 0x00000080, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 452 */ -+ 0x00000000, 0x00000000, 0x00001000, 0x64080010, -+ 0x00480000, 0x10000020, 0x80000102, 0x08000010, -+ } }, -+ { { /* 453 */ -+ 0x00000040, 0x40000000, 0x00020000, 0x01852002, -+ 0x00800010, 0x80002022, 0x084444a2, 0x480e0000, -+ } }, -+ { { /* 454 */ -+ 0x04000200, 0x02202008, 0x80004380, 0x04000000, -+ 0x00000002, 0x12231420, 0x2058003a, 0x00200060, -+ } }, -+ { { /* 455 */ -+ 0x10002508, 0x040d0028, 0x00000009, 0x00008004, -+ 0x00800000, 0x42000001, 0x00000000, 0x09040000, -+ } }, -+ { { /* 456 */ -+ 0x02008000, 0x01402001, 0x00000000, 0x00000008, -+ 0x00000000, 0x00000001, 0x00021008, 0x04000000, -+ } }, -+ { { /* 457 */ -+ 0x00100100, 0x80040080, 0x00002000, 0x00000008, -+ 0x08040601, 0x01000012, 0x10000000, 0x49001024, -+ } }, -+ { { /* 458 */ -+ 0x0180004a, 0x00100600, 0x50840800, 0x000000c0, -+ 0x00800000, 0x20000800, 0x40000000, 0x08050000, -+ } }, -+ { { /* 459 */ -+ 0x02004000, 0x02000804, 0x01000004, 0x18060001, -+ 0x02400001, 0x40000002, 0x20800014, 0x000c1000, -+ } }, -+ { { /* 460 */ -+ 0x00222000, 0x00000000, 0x00100000, 0x00000000, -+ 0x00000000, 0x00000000, 0x10422800, 0x00000800, -+ } }, -+ { { /* 461 */ -+ 0x20080000, 0x00040000, 0x80025040, 0x20208604, -+ 0x00028020, 0x80102020, 0x080820c0, 0x10880800, -+ } }, -+ { { /* 462 */ -+ 0x00000000, 0x00000000, 0x00200109, 0x00100000, -+ 0x00000000, 0x81022700, 0x40c21404, 0x84010882, -+ } }, -+ { { /* 463 */ -+ 0x00004010, 0x00000000, 0x03000000, 0x00000008, -+ 0x00080000, 0x00000000, 0x10800001, 0x06002020, -+ } }, -+ { { /* 464 */ -+ 0x00000010, 0x02000000, 0x00880020, 0x00008424, -+ 0x00000000, 0x88000000, 0x81000100, 0x04000000, -+ } }, -+ { { /* 465 */ -+ 0x00004218, 0x00040000, 0x00000000, 0x80005080, -+ 0x00010000, 0x00040000, 0x08008000, 0x02008000, -+ } }, -+ { { /* 466 */ -+ 0x00020000, 0x00000000, 0x00000001, 0x04000401, -+ 0x00100000, 0x12200004, 0x00000000, 0x18100000, -+ } }, -+ { { /* 467 */ -+ 0x00000000, 0x00000800, 0x00000000, 0x00004000, -+ 0x00800000, 0x04000000, 0x82000002, 0x00042000, -+ } }, -+ { { /* 468 */ -+ 0x00080006, 0x00000000, 0x00000000, 0x04000000, -+ 0x80008000, 0x00810001, 0xa0000000, 0x00100410, -+ } }, -+ { { /* 469 */ -+ 0x00400218, 0x88084080, 0x00260008, 0x00800404, -+ 0x00000020, 0x00000000, 0x00000000, 0x00000200, -+ } }, -+ { { /* 470 */ -+ 0x00a08048, 0x00000000, 0x08000000, 0x04000000, -+ 0x00000000, 0x00000000, 0x00018000, 0x00200000, -+ } }, -+ { { /* 471 */ -+ 0x01000000, 0x00000000, 0x00000000, 0x10000000, -+ 0x00000000, 0x00000000, 0x00200000, 0x00102000, -+ } }, -+ { { /* 472 */ -+ 0x00000801, 0x00000000, 0x00000000, 0x00020000, -+ 0x08000000, 0x00002000, 0x20010000, 0x04002000, -+ } }, -+ { { /* 473 */ -+ 0x40000040, 0x50202400, 0x000a0020, 0x00040420, -+ 0x00000200, 0x00000080, 0x80000000, 0x00000020, -+ } }, -+ { { /* 474 */ -+ 0x20008000, 0x00200010, 0x00000000, 0x00000000, -+ 0x00400000, 0x01100000, 0x00020000, 0x80000010, -+ } }, -+ { { /* 475 */ -+ 0x02000000, 0x00801000, 0x00000000, 0x48058000, -+ 0x20c94000, 0x60000000, 0x00000001, 0x00000000, -+ } }, -+ { { /* 476 */ -+ 0x00004090, 0x48000000, 0x08000000, 0x28802000, -+ 0x00000002, 0x00014000, 0x00002000, 0x00002002, -+ } }, -+ { { /* 477 */ -+ 0x00010200, 0x00100000, 0x00000000, 0x00800000, -+ 0x10020000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 478 */ -+ 0x00000010, 0x00000402, 0x0c000000, 0x01000400, -+ 0x01000021, 0x00000000, 0x00004000, 0x00004000, -+ } }, -+ { { /* 479 */ -+ 0x00000000, 0x00800000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x02000020, -+ } }, -+ { { /* 480 */ -+ 0x00000100, 0x08000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00002000, 0x00000000, -+ } }, -+ { { /* 481 */ -+ 0x00006000, 0x00000000, 0x00000000, 0x00000400, -+ 0x04000040, 0x003c0180, 0x00000200, 0x00102000, -+ } }, -+ { { /* 482 */ -+ 0x00000800, 0x101000c0, 0x00800000, 0x00000000, -+ 0x00008000, 0x02200000, 0x00020020, 0x00000000, -+ } }, -+ { { /* 483 */ -+ 0x00000000, 0x01000000, 0x00000000, 0x20100000, -+ 0x00080000, 0x00000141, 0x02001002, 0x40400001, -+ } }, -+ { { /* 484 */ -+ 0x00580000, 0x00000002, 0x00003000, 0x00002400, -+ 0x00988000, 0x00040010, 0x00002800, 0x00000008, -+ } }, -+ { { /* 485 */ -+ 0x40080004, 0x00000020, 0x20080000, 0x02060a00, -+ 0x00010040, 0x14010200, 0x40800000, 0x08031000, -+ } }, -+ { { /* 486 */ -+ 0x40020020, 0x0000202c, 0x2014a008, 0x00000000, -+ 0x80040200, 0x82020012, 0x00400000, 0x20000000, -+ } }, -+ { { /* 487 */ -+ 0x00000000, 0x00000000, 0x00000004, 0x04000000, -+ 0x00000000, 0x00000000, 0x40800100, 0x00000000, -+ } }, -+ { { /* 488 */ -+ 0x00000008, 0x04000040, 0x00000001, 0x000c0200, -+ 0x00000000, 0x08000400, 0x00000000, 0x080c0001, -+ } }, -+ { { /* 489 */ -+ 0x00000400, 0x00000000, 0x00000000, 0x00200000, -+ 0x80000000, 0x00001000, 0x00000200, 0x01000800, -+ } }, -+ { { /* 490 */ -+ 0x00000000, 0x00000800, 0x00000000, 0x40000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x04040000, -+ } }, -+ { { /* 491 */ -+ 0x00000000, 0x00000000, 0x00000040, 0x00002000, -+ 0xa0000000, 0x00000000, 0x08000008, 0x00080000, -+ } }, -+ { { /* 492 */ -+ 0x00000020, 0x00000000, 0x40000400, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00008000, -+ } }, -+ { { /* 493 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000800, 0x00000000, 0x00000000, 0x00200000, -+ } }, -+ { { /* 494 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x04000000, -+ 0x00000008, 0x00000000, 0x00010000, 0x1b000000, -+ } }, -+ { { /* 495 */ -+ 0x00007000, 0x00000000, 0x10000000, 0x00000000, -+ 0x00000000, 0x00000080, 0x80000000, 0x00000000, -+ } }, -+ { { /* 496 */ -+ 0x00000000, 0x00020000, 0x00000000, 0x00200000, -+ 0x40000000, 0x00000010, 0x00800000, 0x00000008, -+ } }, -+ { { /* 497 */ -+ 0x00000000, 0x00000000, 0x02000000, 0x20000010, -+ 0x00000080, 0x00000000, 0x00010000, 0x00000000, -+ } }, -+ { { /* 498 */ -+ 0x00000000, 0x02000000, 0x00000000, 0x00000000, -+ 0x20000000, 0x00000040, 0x00200028, 0x00000000, -+ } }, -+ { { /* 499 */ -+ 0x00000000, 0x00020000, 0x00000000, 0x02000000, -+ 0x00000000, 0x02000000, 0x40020000, 0x51000040, -+ } }, -+ { { /* 500 */ -+ 0x00000080, 0x04040000, 0x00000000, 0x10000000, -+ 0x00022000, 0x00100000, 0x20000000, 0x00000082, -+ } }, -+ { { /* 501 */ -+ 0x40000000, 0x00010000, 0x00002000, 0x00000000, -+ 0x00000240, 0x00000000, 0x00000000, 0x00000008, -+ } }, -+ { { /* 502 */ -+ 0x00000000, 0x00010000, 0x00000810, 0x00080880, -+ 0x00004000, 0x00000000, 0x00000000, 0x00020000, -+ } }, -+ { { /* 503 */ -+ 0x00000000, 0x00400020, 0x00000000, 0x00000082, -+ 0x00000000, 0x00020001, 0x00000000, 0x00000000, -+ } }, -+ { { /* 504 */ -+ 0x40000018, 0x00000004, 0x00000000, 0x00000000, -+ 0x01000000, 0x00400000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 505 */ -+ 0x00000001, 0x00400000, 0x00000000, 0x00080002, -+ 0x00000400, 0x00040000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 506 */ -+ 0x00000800, 0x00000800, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000100, 0x00000000, -+ } }, -+ { { /* 507 */ -+ 0x00000000, 0x00200000, 0x00000000, 0x04108000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000002, -+ } }, -+ { { /* 508 */ -+ 0x00000000, 0x02800000, 0x04000000, 0x00000000, -+ 0x00000000, 0x00000004, 0x00000000, 0x00000400, -+ } }, -+ { { /* 509 */ -+ 0x00000000, 0x00000000, 0x10000000, 0x00040000, -+ 0x00400000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 510 */ -+ 0x00200000, 0x00000200, 0x00000000, 0x10000000, -+ 0x00000000, 0x00000000, 0x2a000000, 0x00000000, -+ } }, -+ { { /* 511 */ -+ 0x00400000, 0x00000000, 0x00400000, 0x00000000, -+ 0x00000002, 0x40000000, 0x00000000, 0x00400000, -+ } }, -+ { { /* 512 */ -+ 0x40000000, 0x00001000, 0x00000000, 0x00000000, -+ 0x00000202, 0x02000000, 0x80000000, 0x00020000, -+ } }, -+ { { /* 513 */ -+ 0x00000020, 0x00000800, 0x00020421, 0x00020000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00400000, -+ } }, -+ { { /* 514 */ -+ 0x00200000, 0x00000000, 0x00000001, 0x00000000, -+ 0x00000084, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 515 */ -+ 0x00000000, 0x00004400, 0x00000002, 0x00100000, -+ 0x00000000, 0x00000000, 0x00008200, 0x00000000, -+ } }, -+ { { /* 516 */ -+ 0x00000000, 0x12000000, 0x00000100, 0x00000001, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 517 */ -+ 0x00000020, 0x08100000, 0x000a0400, 0x00000081, -+ 0x00006000, 0x00120000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 518 */ -+ 0x00000004, 0x08000000, 0x00004000, 0x044000c0, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 519 */ -+ 0x40001000, 0x00000000, 0x01000001, 0x05000000, -+ 0x00080000, 0x02000000, 0x00000800, 0x00000000, -+ } }, -+ { { /* 520 */ -+ 0x00000100, 0x00000000, 0x00000000, 0x00000000, -+ 0x00002002, 0x01020000, 0x00800000, 0x00000000, -+ } }, -+ { { /* 521 */ -+ 0x00000040, 0x00004000, 0x01000000, 0x00000004, -+ 0x00020000, 0x00000000, 0x00000010, 0x00000000, -+ } }, -+ { { /* 522 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00080000, 0x00010000, 0x30000300, 0x00000400, -+ } }, -+ { { /* 523 */ -+ 0x00000800, 0x02000000, 0x00000000, 0x00008000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 524 */ -+ 0x00200000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x000040c0, 0x00002200, 0x12002000, -+ } }, -+ { { /* 525 */ -+ 0x00000000, 0x00000020, 0x20000000, 0x00000000, -+ 0x00000200, 0x00080800, 0x1000a000, 0x00000000, -+ } }, -+ { { /* 526 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00004000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 527 */ -+ 0x00000000, 0x00000000, 0x00004280, 0x01000000, -+ 0x00800000, 0x00000008, 0x00000000, 0x00000000, -+ } }, -+ { { /* 528 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000002, -+ 0x00000000, 0x20400000, 0x00000040, 0x00000000, -+ } }, -+ { { /* 529 */ -+ 0x00800080, 0x00800000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00400020, 0x00000000, 0x00008000, -+ } }, -+ { { /* 530 */ -+ 0x01000000, 0x00000040, 0x00000000, 0x00400000, -+ 0x00000000, 0x00000440, 0x00000000, 0x00800000, -+ } }, -+ { { /* 531 */ -+ 0x01000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00080000, 0x00000000, -+ } }, -+ { { /* 532 */ -+ 0x01000000, 0x00000001, 0x00000000, 0x00020000, -+ 0x00000000, 0x20002000, 0x00000000, 0x00000004, -+ } }, -+ { { /* 533 */ -+ 0x00000008, 0x00100000, 0x00000000, 0x00010000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 534 */ -+ 0x00000004, 0x00008000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00008000, -+ } }, -+ { { /* 535 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000040, 0x00000000, 0x00004000, 0x00000000, -+ } }, -+ { { /* 536 */ -+ 0x00000010, 0x00002000, 0x40000040, 0x00000000, -+ 0x10000000, 0x00000000, 0x00008080, 0x00000000, -+ } }, -+ { { /* 537 */ -+ 0x00000000, 0x00000000, 0x00000080, 0x00000000, -+ 0x00100080, 0x000000a0, 0x00000000, 0x00000000, -+ } }, -+ { { /* 538 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00100000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 539 */ -+ 0x00000000, 0x00000000, 0x00001000, 0x00000000, -+ 0x0001000a, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 540 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x08002000, 0x00000000, -+ } }, -+ { { /* 541 */ -+ 0x00000808, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 542 */ -+ 0x00004000, 0x00002400, 0x00008000, 0x40000000, -+ 0x00000001, 0x00002000, 0x04000000, 0x00040004, -+ } }, -+ { { /* 543 */ -+ 0x00000000, 0x00002000, 0x00000000, 0x00000000, -+ 0x00000000, 0x1c200000, 0x00000000, 0x02000000, -+ } }, -+ { { /* 544 */ -+ 0x00000000, 0x00080000, 0x00400000, 0x00000002, -+ 0x00000000, 0x00000100, 0x00000000, 0x00000000, -+ } }, -+ { { /* 545 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00400000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 546 */ -+ 0x00004100, 0x00000400, 0x20200010, 0x00004004, -+ 0x00000000, 0x42000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 547 */ -+ 0x00000080, 0x00000000, 0x00000121, 0x00000200, -+ 0x000000b0, 0x80002000, 0x00000000, 0x00010000, -+ } }, -+ { { /* 548 */ -+ 0x00000010, 0x000000c0, 0x08100000, 0x00000020, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 549 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x02000000, 0x00000404, 0x00000000, 0x00000000, -+ } }, -+ { { /* 550 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00400000, 0x00000008, 0x00000000, 0x00000000, -+ } }, -+ { { /* 551 */ -+ 0x00000000, 0x00000002, 0x00020000, 0x00002000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00204000, -+ } }, -+ { { /* 552 */ -+ 0x00000000, 0x00100000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00800000, 0x00000100, 0x00000001, -+ } }, -+ { { /* 553 */ -+ 0x10000000, 0x01000000, 0x00002400, 0x00000004, -+ 0x00000000, 0x00000000, 0x00000020, 0x00000002, -+ } }, -+ { { /* 554 */ -+ 0x00010000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 555 */ -+ 0x00000000, 0x00002400, 0x00000000, 0x00000000, -+ 0x00004802, 0x00000000, 0x00000000, 0x80022000, -+ } }, -+ { { /* 556 */ -+ 0x00001004, 0x04208000, 0x20000020, 0x00040000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 557 */ -+ 0x00000000, 0x00100000, 0x40010000, 0x00000000, -+ 0x00080000, 0x00000000, 0x00100211, 0x00000000, -+ } }, -+ { { /* 558 */ -+ 0x00001400, 0x00000000, 0x00000000, 0x00000000, -+ 0x00610000, 0x80008c00, 0x00000000, 0x00000000, -+ } }, -+ { { /* 559 */ -+ 0x00000100, 0x00000040, 0x00000000, 0x00000004, -+ 0x00004000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 560 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000400, 0x00000000, -+ } }, -+ { { /* 561 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000210, 0x00000000, 0x00000000, -+ } }, -+ { { /* 562 */ -+ 0x00000000, 0x00000020, 0x00000002, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 563 */ -+ 0x00004000, 0x00000000, 0x00000000, 0x02000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 564 */ -+ 0x00000000, 0x00000000, 0x00080002, 0x01000020, -+ 0x00400000, 0x00200000, 0x00008000, 0x00000000, -+ } }, -+ { { /* 565 */ -+ 0x00000000, 0x00020000, 0x00000000, 0xc0020000, -+ 0x10000000, 0x00000080, 0x00000000, 0x00000000, -+ } }, -+ { { /* 566 */ -+ 0x00000210, 0x00000000, 0x00001000, 0x04480000, -+ 0x20000000, 0x00000004, 0x00800000, 0x02000000, -+ } }, -+ { { /* 567 */ -+ 0x00000000, 0x08006000, 0x00001000, 0x00000000, -+ 0x00000000, 0x00100000, 0x00000000, 0x00000400, -+ } }, -+ { { /* 568 */ -+ 0x00100000, 0x00000000, 0x10000000, 0x08608000, -+ 0x00000000, 0x00000000, 0x00080002, 0x00000000, -+ } }, -+ { { /* 569 */ -+ 0x00000000, 0x20000000, 0x00008020, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 570 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x10000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 571 */ -+ 0x00000000, 0x00100000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 572 */ -+ 0x00000000, 0x00000400, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 573 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x02000000, -+ } }, -+ { { /* 574 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000080, 0x00000000, -+ } }, -+ { { /* 575 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000002, 0x00000000, 0x00000000, -+ } }, -+ { { /* 576 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00008000, 0x00000000, -+ } }, -+ { { /* 577 */ -+ 0x00000000, 0x00000000, 0x00000008, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000400, 0x00000000, -+ } }, -+ { { /* 578 */ -+ 0x00000000, 0x00000000, 0x00220000, 0x00000004, -+ 0x00000000, 0x00040000, 0x00000004, 0x00000000, -+ } }, -+ { { /* 579 */ -+ 0x00000000, 0x00000000, 0x00001000, 0x00000080, -+ 0x00002000, 0x00000000, 0x00000000, 0x00004000, -+ } }, -+ { { /* 580 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00100000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 581 */ -+ 0x00000000, 0x00020000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 582 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00200000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 583 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x04000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 584 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000200, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 585 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000001, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 586 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00080000, 0x00000000, -+ } }, -+ { { /* 587 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x01000000, 0x00000000, 0x00000400, -+ } }, -+ { { /* 588 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000080, 0x00000000, 0x00000000, -+ } }, -+ { { /* 589 */ -+ 0x00000000, 0x00000800, 0x00000100, 0x40000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 590 */ -+ 0x00000000, 0x00200000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 591 */ -+ 0x00000000, 0x00000000, 0x01000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 592 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x04000000, 0x00000000, -+ } }, -+ { { /* 593 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00001000, 0x00000000, -+ } }, -+ { { /* 594 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000400, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 595 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x04040000, -+ } }, -+ { { /* 596 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000020, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 597 */ -+ 0x00000000, 0x00000000, 0x00800000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 598 */ -+ 0x00000000, 0x00200000, 0x40000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 599 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x20000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 600 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x04000000, -+ 0x00000000, 0x00000001, 0x00000000, 0x00000000, -+ } }, -+ { { /* 601 */ -+ 0x00000000, 0x40000000, 0x02000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 602 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00080000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 603 */ -+ 0x00000000, 0x00000010, 0x00000000, 0x00000000, -+ 0x00000000, 0x20000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 604 */ -+ 0x00000000, 0x00000000, 0x20000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 605 */ -+ 0x00000080, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000004, -+ } }, -+ { { /* 606 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00002000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 607 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x10000001, 0x00000000, -+ } }, -+ { { /* 608 */ -+ 0x00008000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 609 */ -+ 0x00000000, 0x00000000, 0x00004040, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 610 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00042400, 0x00000000, -+ } }, -+ { { /* 611 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x02000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 612 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000080, -+ } }, -+ { { /* 613 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000020, -+ } }, -+ { { /* 614 */ -+ 0x00000000, 0x00000001, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 615 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00020000, 0x00000000, -+ } }, -+ { { /* 616 */ -+ 0x00000000, 0x00000000, 0x00002000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 617 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ 0x01000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 618 */ -+ 0x00000000, 0x00040000, 0x08000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 619 */ -+ 0xc373ff8b, 0x1b0f6840, 0xf34ce9ac, 0xc0080200, -+ 0xca3e795c, 0x06487976, 0xf7f02fdf, 0xa8ff033a, -+ } }, -+ { { /* 620 */ -+ 0x233fef37, 0xfd59b004, 0xfffff3ca, 0xfff9de9f, -+ 0x7df7abff, 0x8eecc000, 0xffdbeebf, 0x45fad003, -+ } }, -+ { { /* 621 */ -+ 0xdffefae1, 0x10abbfef, 0xfcaaffeb, 0x24fdef3f, -+ 0x7f7678ad, 0xedfff00c, 0x2cfacff6, 0xeb6bf7f9, -+ } }, -+ { { /* 622 */ -+ 0x95bf1ffd, 0xbfbf6677, 0xfeb43bfb, 0x11e27bae, -+ 0x41bea681, 0x72c31435, 0x71917d70, 0x276b0003, -+ } }, -+ { { /* 623 */ -+ 0x70cf57cb, 0x0def4732, 0xfc747eda, 0xbdb4fe06, -+ 0x8bca3f9f, 0x58007e49, 0xebec228f, 0xddbb8a5c, -+ } }, -+ { { /* 624 */ -+ 0xb6e7ef60, 0xf293a40f, 0x549e37bb, 0x9bafd04b, -+ 0xf7d4c414, 0x0a1430b0, 0x88d02f08, 0x192fff7e, -+ } }, -+ { { /* 625 */ -+ 0xfb07ffda, 0x7beb7ff1, 0x0010c5ef, 0xfdff99ff, -+ 0x056779d7, 0xfdcbffe7, 0x4040c3ff, 0xbd8e6ff7, -+ } }, -+ { { /* 626 */ -+ 0x0497dffa, 0x5bfff4c0, 0xd0e7ed7b, 0xf8e0047e, -+ 0xb73eff9f, 0x882e7dfe, 0xbe7ffffd, 0xf6c483fe, -+ } }, -+ { { /* 627 */ -+ 0xb8fdf357, 0xef7dd680, 0x47885767, 0xc3dfff7d, -+ 0x37a9f0ff, 0x70fc7de0, 0xec9a3f6f, 0x86814cb3, -+ } }, -+ { { /* 628 */ -+ 0xdd5c3f9e, 0x4819f70d, 0x0007fea3, 0x38ffaf56, -+ 0xefb8980d, 0xb760403d, 0x9035d8ce, 0x3fff72bf, -+ } }, -+ { { /* 629 */ -+ 0x7a117ff7, 0xabfff7bb, 0x6fbeff00, 0xfe72a93c, -+ 0xf11bcfef, 0xf40adb6b, 0xef7ec3e6, 0xf6109b9c, -+ } }, -+ { { /* 630 */ -+ 0x16f4f048, 0x5182feb5, 0x15bbc7b1, 0xfbdf6e87, -+ 0x63cde43f, 0x7e7ec1ff, 0x7d5ffdeb, 0xfcfe777b, -+ } }, -+ { { /* 631 */ -+ 0xdbea960b, 0x53e86229, 0xfdef37df, 0xbd8136f5, -+ 0xfcbddc18, 0xffffd2e4, 0xffe03fd7, 0xabf87f6f, -+ } }, -+ { { /* 632 */ -+ 0x6ed99bae, 0xf115f5fb, 0xbdfb79a9, 0xadaf5a3c, -+ 0x1facdbba, 0x837971fc, 0xc35f7cf7, 0x0567dfff, -+ } }, -+ { { /* 633 */ -+ 0x8467ff9a, 0xdf8b1534, 0x3373f9f3, 0x5e1af7bd, -+ 0xa03fbf40, 0x01ebffff, 0xcfdddfc0, 0xabd37500, -+ } }, -+ { { /* 634 */ -+ 0xeed6f8c3, 0xb7ff43fd, 0x42275eaf, 0xf6869bac, -+ 0xf6bc27d7, 0x35b7f787, 0xe176aacd, 0xe29f49e7, -+ } }, -+ { { /* 635 */ -+ 0xaff2545c, 0x61d82b3f, 0xbbb8fc3b, 0x7b7dffcf, -+ 0x1ce0bf95, 0x43ff7dfd, 0xfffe5ff6, 0xc4ced3ef, -+ } }, -+ { { /* 636 */ -+ 0xadbc8db6, 0x11eb63dc, 0x23d0df59, 0xf3dbbeb4, -+ 0xdbc71fe7, 0xfae4ff63, 0x63f7b22b, 0xadbaed3b, -+ } }, -+ { { /* 637 */ -+ 0x7efffe01, 0x02bcfff7, 0xef3932ff, 0x8005fffc, -+ 0xbcf577fb, 0xfff7010d, 0xbf3afffb, 0xdfff0057, -+ } }, -+ { { /* 638 */ -+ 0xbd7def7b, 0xc8d4db88, 0xed7cfff3, 0x56ff5dee, -+ 0xac5f7e0d, 0xd57fff96, 0xc1403fee, 0xffe76ff9, -+ } }, -+ { { /* 639 */ -+ 0x8e77779b, 0xe45d6ebf, 0x5f1f6fcf, 0xfedfe07f, -+ 0x01fed7db, 0xfb7bff00, 0x1fdfffd4, 0xfffff800, -+ } }, -+ { { /* 640 */ -+ 0x007bfb8f, 0x7f5cbf00, 0x07f3ffff, 0x3de7eba0, -+ 0xfbd7f7bf, 0x6003ffbf, 0xbfedfffd, 0x027fefbb, -+ } }, -+ { { /* 641 */ -+ 0xddfdfe40, 0xe2f9fdff, 0xfb1f680b, 0xaffdfbe3, -+ 0xf7ed9fa4, 0xf80f7a7d, 0x0fd5eebe, 0xfd9fbb5d, -+ } }, -+ { { /* 642 */ -+ 0x3bf9f2db, 0xebccfe7f, 0x73fa876a, 0x9ffc95fc, -+ 0xfaf7109f, 0xbbcdddb7, 0xeccdf87e, 0x3c3ff366, -+ } }, -+ { { /* 643 */ -+ 0xb03ffffd, 0x067ee9f7, 0xfe0696ae, 0x5fd7d576, -+ 0xa3f33fd1, 0x6fb7cf07, 0x7f449fd1, 0xd3dd7b59, -+ } }, -+ { { /* 644 */ -+ 0xa9bdaf3b, 0xff3a7dcf, 0xf6ebfbe0, 0xffffb401, -+ 0xb7bf7afa, 0x0ffdc000, 0xff1fff7f, 0x95fffefc, -+ } }, -+ { { /* 645 */ -+ 0xb5dc0000, 0x3f3eef63, 0x001bfb7f, 0xfbf6e800, -+ 0xb8df9eef, 0x003fff9f, 0xf5ff7bd0, 0x3fffdfdb, -+ } }, -+ { { /* 646 */ -+ 0x00bffdf0, 0xbbbd8420, 0xffdedf37, 0x0ff3ff6d, -+ 0x5efb604c, 0xfafbfffb, 0x0219fe5e, 0xf9de79f4, -+ } }, -+ { { /* 647 */ -+ 0xebfaa7f7, 0xff3401eb, 0xef73ebd3, 0xc040afd7, -+ 0xdcff72bb, 0x2fd8f17f, 0xfe0bb8ec, 0x1f0bdda3, -+ } }, -+ { { /* 648 */ -+ 0x47cf8f1d, 0xffdeb12b, 0xda737fee, 0xcbc424ff, -+ 0xcbf2f75d, 0xb4edecfd, 0x4dddbff9, 0xfb8d99dd, -+ } }, -+ { { /* 649 */ -+ 0xaf7bbb7f, 0xc959ddfb, 0xfab5fc4f, 0x6d5fafe3, -+ 0x3f7dffff, 0xffdb7800, 0x7effb6ff, 0x022ffbaf, -+ } }, -+ { { /* 650 */ -+ 0xefc7ff9b, 0xffffffa5, 0xc7000007, 0xfff1f7ff, -+ 0x01bf7ffd, 0xfdbcdc00, 0xffffbff5, 0x3effff7f, -+ } }, -+ { { /* 651 */ -+ 0xbe000029, 0xff7ff9ff, 0xfd7e6efb, 0x039ecbff, -+ 0xfbdde300, 0xf6dfccff, 0x117fffff, 0xfbf6f800, -+ } }, -+ { { /* 652 */ -+ 0xd73ce7ef, 0xdfeffeef, 0xedbfc00b, 0xfdcdfedf, -+ 0x40fd7bf5, 0xb75fffff, 0xf930ffdf, 0xdc97fbdf, -+ } }, -+ { { /* 653 */ -+ 0xbff2fef3, 0xdfbf8fdf, 0xede6177f, 0x35530f7f, -+ 0x877e447c, 0x45bbfa12, 0x779eede0, 0xbfd98017, -+ } }, -+ { { /* 654 */ -+ 0xde897e55, 0x0447c16f, 0xf75d7ade, 0x290557ff, -+ 0xfe9586f7, 0xf32f97b3, 0x9f75cfff, 0xfb1771f7, -+ } }, -+ { { /* 655 */ -+ 0xee1934ee, 0xef6137cc, 0xef4c9fd6, 0xfbddd68f, -+ 0x6def7b73, 0xa431d7fe, 0x97d75e7f, 0xffd80f5b, -+ } }, -+ { { /* 656 */ -+ 0x7bce9d83, 0xdcff22ec, 0xef87763d, 0xfdeddfe7, -+ 0xa0fc4fff, 0xdbfc3b77, 0x7fdc3ded, 0xf5706fa9, -+ } }, -+ { { /* 657 */ -+ 0x2c403ffb, 0x847fff7f, 0xdeb7ec57, 0xf22fe69c, -+ 0xd5b50feb, 0xede7afeb, 0xfff08c2f, 0xe8f0537f, -+ } }, -+ { { /* 658 */ -+ 0xb5ffb99d, 0xe78fff66, 0xbe10d981, 0xe3c19c7c, -+ 0x27339cd1, 0xff6d0cbc, 0xefb7fcb7, 0xffffa0df, -+ } }, -+ { { /* 659 */ -+ 0xfe7bbf0b, 0x353fa3ff, 0x97cd13cc, 0xfb277637, -+ 0x7e6ccfd6, 0xed31ec50, 0xfc1c677c, 0x5fbff6fa, -+ } }, -+ { { /* 660 */ -+ 0xae2f0fba, 0x7ffea3ad, 0xde74fcf0, 0xf200ffef, -+ 0xfea2fbbf, 0xbcff3daf, 0x5fb9f694, 0x3f8ff3ad, -+ } }, -+ { { /* 661 */ -+ 0xa01ff26c, 0x01bfffef, 0x70057728, 0xda03ff35, -+ 0xc7fad2f9, 0x5c1d3fbf, 0xec33ff3a, 0xfe9cb7af, -+ } }, -+ { { /* 662 */ -+ 0x7a9f5236, 0xe722bffa, 0xfcff9ff7, 0xb61d2fbb, -+ 0x1dfded06, 0xefdf7dd7, 0xf166eb23, 0x0dc07ed9, -+ } }, -+ { { /* 663 */ -+ 0xdfbf3d3d, 0xba83c945, 0x9dd07dd1, 0xcf737b87, -+ 0xc3f59ff3, 0xc5fedf0d, 0x83020cb3, 0xaec0e879, -+ } }, -+ { { /* 664 */ -+ 0x6f0fc773, 0x093ffd7d, 0x0157fff1, 0x01ff62fb, -+ 0x3bf3fdb4, 0x43b2b013, 0xff305ed3, 0xeb9f0fff, -+ } }, -+ { { /* 665 */ -+ 0xf203feef, 0xfb893fef, 0x9e9937a9, 0xa72cdef9, -+ 0xc1f63733, 0xfe3e812e, 0xf2f75d20, 0x69d7d585, -+ } }, -+ { { /* 666 */ -+ 0xffffffff, 0xff6fdb07, 0xd97fc4ff, 0xbe0fefce, -+ 0xf05ef17b, 0xffb7f6cf, 0xef845ef7, 0x0edfd7cb, -+ } }, -+ { { /* 667 */ -+ 0xfcffff08, 0xffffee3f, 0xd7ff13ff, 0x7ffdaf0f, -+ 0x1ffabdc7, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 668 */ -+ 0x00000000, 0xe7400000, 0xf933bd38, 0xfeed7feb, -+ 0x7c767fe8, 0xffefb3f7, 0xd8b7feaf, 0xfbbfff6f, -+ } }, -+ { { /* 669 */ -+ 0xdbf7f8fb, 0xe2f91752, 0x754785c8, 0xe3ef9090, -+ 0x3f6d9ef4, 0x0536ee2e, 0x7ff3f7bc, 0x7f3fa07b, -+ } }, -+ { { /* 670 */ -+ 0xeb600567, 0x6601babe, 0x583ffcd8, 0x87dfcaf7, -+ 0xffa0bfcd, 0xfebf5bcd, 0xefa7b6fd, 0xdf9c77ef, -+ } }, -+ { { /* 671 */ -+ 0xf8773fb7, 0xb7fc9d27, 0xdfefcab5, 0xf1b6fb5a, -+ 0xef1fec39, 0x7ffbfbbf, 0xdafe000d, 0x4e7fbdfb, -+ } }, -+ { { /* 672 */ -+ 0x5ac033ff, 0x9ffebff5, 0x005fffbf, 0xfdf80000, -+ 0x6ffdffca, 0xa001cffd, 0xfbf2dfff, 0xff7fdfbf, -+ } }, -+ { { /* 673 */ -+ 0x080ffeda, 0xbfffba08, 0xeed77afd, 0x67f9fbeb, -+ 0xff93e044, 0x9f57df97, 0x08dffef7, 0xfedfdf80, -+ } }, -+ { { /* 674 */ -+ 0xf7feffc5, 0x6803fffb, 0x6bfa67fb, 0x5fe27fff, -+ 0xff73ffff, 0xe7fb87df, 0xf7a7ebfd, 0xefc7bf7e, -+ } }, -+ { { /* 675 */ -+ 0xdf821ef3, 0xdf7e76ff, 0xda7d79c9, 0x1e9befbe, -+ 0x77fb7ce0, 0xfffb87be, 0xffdb1bff, 0x4fe03f5c, -+ } }, -+ { { /* 676 */ -+ 0x5f0e7fff, 0xddbf77ff, 0xfffff04f, 0x0ff8ffff, -+ 0xfddfa3be, 0xfffdfc1c, 0xfb9e1f7d, 0xdedcbdff, -+ } }, -+ { { /* 677 */ -+ 0xbafb3f6f, 0xfbefdf7f, 0x2eec7d1b, 0xf2f7af8e, -+ 0xcfee7b0f, 0x77c61d96, 0xfff57e07, 0x7fdfd982, -+ } }, -+ { { /* 678 */ -+ 0xc7ff5ee6, 0x79effeee, 0xffcf9a56, 0xde5efe5f, -+ 0xf9e8896e, 0xe6c4f45e, 0xbe7c0001, 0xdddf3b7f, -+ } }, -+ { { /* 679 */ -+ 0xe9efd59d, 0xde5334ac, 0x4bf7f573, 0x9eff7b4f, -+ 0x476eb8fe, 0xff450dfb, 0xfbfeabfd, 0xddffe9d7, -+ } }, -+ { { /* 680 */ -+ 0x7fffedf7, 0x7eebddfd, 0xb7ffcfe7, 0xef91bde9, -+ 0xd77c5d75, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 681 */ -+ 0x00000000, 0xfa800000, 0xb4f1ffee, 0x2fefbf76, -+ 0x77bfb677, 0xfffd9fbf, 0xf6ae95bf, 0x7f3b75ff, -+ } }, -+ { { /* 682 */ -+ 0x0af9a7f5, 0x00000000, 0x00000000, 0x2bddfbd0, -+ 0x9a7ff633, 0xd6fcfdab, 0xbfebf9e6, 0xf41fdfdf, -+ } }, -+ { { /* 683 */ -+ 0xffffa6fd, 0xf37b4aff, 0xfef97fb7, 0x1d5cb6ff, -+ 0xe5ff7ff6, 0x24041f7b, 0xf99ebe05, 0xdff2dbe3, -+ } }, -+ { { /* 684 */ -+ 0xfdff6fef, 0xcbfcd679, 0xefffebfd, 0x0000001f, -+ 0x98000000, 0x8017e148, 0x00fe6a74, 0xfdf16d7f, -+ } }, -+ { { /* 685 */ -+ 0xfef3b87f, 0xf176e01f, 0x7b3fee96, 0xfffdeb8d, -+ 0xcbb3adff, 0xe17f84ef, 0xbff04daa, 0xfe3fbf3f, -+ } }, -+ { { /* 686 */ -+ 0xffd7ebff, 0xcf7fffdf, 0x85edfffb, 0x07bcd73f, -+ 0xfe0faeff, 0x76bffdaf, 0x37bbfaef, 0xa3ba7fdc, -+ } }, -+ { { /* 687 */ -+ 0x56f7b6ff, 0xe7df60f8, 0x4cdfff61, 0xff45b0fb, -+ 0x3ffa7ded, 0x18fc1fff, 0xe3afffff, 0xdf83c7d3, -+ } }, -+ { { /* 688 */ -+ 0xef7dfb57, 0x1378efff, 0x5ff7fec0, 0x5ee334bb, -+ 0xeff6f70d, 0x00bfd7fe, 0xf7f7f59d, 0xffe051de, -+ } }, -+ { { /* 689 */ -+ 0x037ffec9, 0xbfef5f01, 0x60a79ff1, 0xf1ffef1d, -+ 0x0000000f, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+ { { /* 690 */ -+ 0x00000000, 0x00000000, 0x00000000, 0x3c800000, -+ 0xd91ffb4d, 0xfee37b3a, 0xdc7f3fe9, 0x0000003f, -+ } }, -+ { { /* 691 */ -+ 0x50000000, 0xbe07f51f, 0xf91bfc1d, 0x71ffbc1e, -+ 0x5bbe6ff9, 0x9b1b5796, 0xfffc7fff, 0xafe7872e, -+ } }, -+ { { /* 692 */ -+ 0xf34febf5, 0xe725dffd, 0x5d440bdc, 0xfddd5747, -+ 0x7790ed3f, 0x8ac87d7f, 0xf3f9fafa, 0xef4b202a, -+ } }, -+ { { /* 693 */ -+ 0x79cff5ff, 0x0ba5abd3, 0xfb8ff77a, 0x001f8ebd, -+ 0x00000000, 0xfd4ef300, 0x88001a57, 0x7654aeac, -+ } }, -+ { { /* 694 */ -+ 0xcdff17ad, 0xf42fffb2, 0xdbff5baa, 0x00000002, -+ 0x73c00000, 0x2e3ff9ea, 0xbbfffa8e, 0xffd376bc, -+ } }, -+ { { /* 695 */ -+ 0x7e72eefe, 0xe7f77ebd, 0xcefdf77f, 0x00000ff5, -+ 0x00000000, 0xdb9ba900, 0x917fa4c7, 0x7ecef8ca, -+ } }, -+ { { /* 696 */ -+ 0xc7e77d7a, 0xdcaecbbd, 0x8f76fd7e, 0x7cf391d3, -+ 0x4c2f01e5, 0xa360ed77, 0x5ef807db, 0x21811df7, -+ } }, -+ { { /* 697 */ -+ 0x309c6be0, 0xfade3b3a, 0xc3f57f53, 0x07ba61cd, -+ 0x00000000, 0x00000000, 0x00000000, 0xbefe26e0, -+ } }, -+ { { /* 698 */ -+ 0xebb503f9, 0xe9cbe36d, 0xbfde9c2f, 0xabbf9f83, -+ 0xffd51ff7, 0xdffeb7df, 0xffeffdae, 0xeffdfb7e, -+ } }, -+ { { /* 699 */ -+ 0x6ebfaaff, 0x00000000, 0x00000000, 0xb6200000, -+ 0xbe9e7fcd, 0x58f162b3, 0xfd7bf10d, 0xbefde9f1, -+ } }, -+ { { /* 700 */ -+ 0x5f6dc6c3, 0x69ffff3d, 0xfbf4ffcf, 0x4ff7dcfb, -+ 0x11372000, 0x00000015, 0x00000000, 0x00000000, -+ } }, -+ { { /* 701 */ -+ 0x00003000, 0x00000000, 0x00000000, 0x00000000, -+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, -+ } }, -+}, -+{ -+ /* aa */ -+ LEAF( 0, 0), -+ /* ab */ -+ LEAF( 1, 1), -+ /* af */ -+ LEAF( 2, 2), LEAF( 2, 3), -+ /* ak */ -+ LEAF( 4, 4), LEAF( 4, 5), LEAF( 4, 6), LEAF( 4, 7), -+ LEAF( 4, 8), -+ /* am */ -+ LEAF( 9, 9), LEAF( 9, 10), -+ /* an */ -+ LEAF( 11, 11), -+ /* ar */ -+ LEAF( 12, 12), -+ /* as */ -+ LEAF( 13, 13), -+ /* ast */ -+ LEAF( 14, 11), LEAF( 14, 14), -+ /* av */ -+ LEAF( 16, 15), -+ /* ay */ -+ LEAF( 17, 16), -+ /* az_az */ -+ LEAF( 18, 17), LEAF( 18, 18), LEAF( 18, 19), -+ /* az_ir */ -+ LEAF( 21, 20), -+ /* ba */ -+ LEAF( 22, 21), -+ /* be */ -+ LEAF( 23, 22), -+ /* ber_dz */ -+ LEAF( 24, 23), LEAF( 24, 24), LEAF( 24, 25), LEAF( 24, 26), -+ /* ber_ma */ -+ LEAF( 28, 27), -+ /* bg */ -+ LEAF( 29, 28), -+ /* bh */ -+ LEAF( 30, 29), -+ /* bi */ -+ LEAF( 31, 30), -+ /* bin */ -+ LEAF( 32, 31), LEAF( 32, 32), LEAF( 32, 33), -+ /* bm */ -+ LEAF( 35, 23), LEAF( 35, 34), LEAF( 35, 35), -+ /* bn */ -+ LEAF( 38, 36), -+ /* bo */ -+ LEAF( 39, 37), -+ /* br */ -+ LEAF( 40, 38), -+ /* brx */ -+ LEAF( 41, 39), -+ /* bs */ -+ LEAF( 42, 23), LEAF( 42, 40), -+ /* bua */ -+ LEAF( 44, 41), -+ /* byn */ -+ LEAF( 45, 42), LEAF( 45, 43), -+ /* ca */ -+ LEAF( 47, 44), LEAF( 47, 45), -+ /* ch */ -+ LEAF( 49, 46), -+ /* chm */ -+ LEAF( 50, 47), -+ /* chr */ -+ LEAF( 51, 48), -+ /* co */ -+ LEAF( 52, 49), LEAF( 52, 50), -+ /* crh */ -+ LEAF( 54, 51), LEAF( 54, 52), -+ /* cs */ -+ LEAF( 56, 53), LEAF( 56, 54), -+ /* csb */ -+ LEAF( 58, 55), LEAF( 58, 56), -+ /* cu */ -+ LEAF( 60, 57), -+ /* cv */ -+ LEAF( 61, 58), LEAF( 61, 59), -+ /* cy */ -+ LEAF( 63, 60), LEAF( 63, 61), LEAF( 63, 62), -+ /* da */ -+ LEAF( 66, 63), -+ /* de */ -+ LEAF( 67, 64), -+ /* doi */ -+ LEAF( 68, 65), -+ /* dv */ -+ LEAF( 69, 66), -+ /* ee */ -+ LEAF( 70, 31), LEAF( 70, 67), LEAF( 70, 68), LEAF( 70, 69), -+ /* el */ -+ LEAF( 74, 70), -+ /* en */ -+ LEAF( 75, 71), -+ /* eo */ -+ LEAF( 76, 23), LEAF( 76, 72), -+ /* et */ -+ LEAF( 78, 73), LEAF( 78, 74), -+ /* eu */ -+ LEAF( 80, 75), -+ /* ff */ -+ LEAF( 81, 23), LEAF( 81, 76), LEAF( 81, 77), -+ /* fi */ -+ LEAF( 84, 78), LEAF( 84, 74), -+ /* fil */ -+ LEAF( 86, 79), -+ /* fj */ -+ LEAF( 87, 23), -+ /* fo */ -+ LEAF( 88, 80), -+ /* fur */ -+ LEAF( 89, 81), -+ /* fy */ -+ LEAF( 90, 82), -+ /* ga */ -+ LEAF( 91, 83), LEAF( 91, 84), LEAF( 91, 85), -+ /* gd */ -+ LEAF( 94, 86), -+ /* gez */ -+ LEAF( 95, 87), LEAF( 95, 88), -+ /* gn */ -+ LEAF( 97, 89), LEAF( 97, 90), LEAF( 97, 91), -+ /* gu */ -+ LEAF(100, 92), -+ /* gv */ -+ LEAF(101, 93), -+ /* ha */ -+ LEAF(102, 23), LEAF(102, 94), LEAF(102, 95), -+ /* haw */ -+ LEAF(105, 23), LEAF(105, 96), LEAF(105, 97), -+ /* he */ -+ LEAF(108, 98), -+ /* hsb */ -+ LEAF(109, 99), LEAF(109,100), -+ /* ht */ -+ LEAF(111,101), -+ /* hu */ -+ LEAF(112,102), LEAF(112,103), -+ /* hy */ -+ LEAF(114,104), -+ /* hz */ -+ LEAF(115, 23), LEAF(115,105), LEAF(115,106), -+ /* id */ -+ LEAF(118,107), -+ /* ig */ -+ LEAF(119, 23), LEAF(119,108), -+ /* ii */ -+ LEAF(121,109), LEAF(121,109), LEAF(121,109), LEAF(121,109), -+ LEAF(121,110), -+ /* ik */ -+ LEAF(126,111), -+ /* is */ -+ LEAF(127,112), -+ /* it */ -+ LEAF(128,113), -+ /* iu */ -+ LEAF(129,114), LEAF(129,115), LEAF(129,116), -+ /* ja */ -+ LEAF(132,117), LEAF(132,118), LEAF(132,119), LEAF(132,120), -+ LEAF(132,121), LEAF(132,122), LEAF(132,123), LEAF(132,124), -+ LEAF(132,125), LEAF(132,126), LEAF(132,127), LEAF(132,128), -+ LEAF(132,129), LEAF(132,130), LEAF(132,131), LEAF(132,132), -+ LEAF(132,133), LEAF(132,134), LEAF(132,135), LEAF(132,136), -+ LEAF(132,137), LEAF(132,138), LEAF(132,139), LEAF(132,140), -+ LEAF(132,141), LEAF(132,142), LEAF(132,143), LEAF(132,144), -+ LEAF(132,145), LEAF(132,146), LEAF(132,147), LEAF(132,148), -+ LEAF(132,149), LEAF(132,150), LEAF(132,151), LEAF(132,152), -+ LEAF(132,153), LEAF(132,154), LEAF(132,155), LEAF(132,156), -+ LEAF(132,157), LEAF(132,158), LEAF(132,159), LEAF(132,160), -+ LEAF(132,161), LEAF(132,162), LEAF(132,163), LEAF(132,164), -+ LEAF(132,165), LEAF(132,166), LEAF(132,167), LEAF(132,168), -+ LEAF(132,169), LEAF(132,170), LEAF(132,171), LEAF(132,172), -+ LEAF(132,173), LEAF(132,174), LEAF(132,175), LEAF(132,176), -+ LEAF(132,177), LEAF(132,178), LEAF(132,179), LEAF(132,180), -+ LEAF(132,181), LEAF(132,182), LEAF(132,183), LEAF(132,184), -+ LEAF(132,185), LEAF(132,186), LEAF(132,187), LEAF(132,188), -+ LEAF(132,189), LEAF(132,190), LEAF(132,191), LEAF(132,192), -+ LEAF(132,193), LEAF(132,194), LEAF(132,195), LEAF(132,196), -+ LEAF(132,197), LEAF(132,198), LEAF(132,199), -+ /* jv */ -+ LEAF(215,200), -+ /* ka */ -+ LEAF(216,201), -+ /* kaa */ -+ LEAF(217,202), -+ /* ki */ -+ LEAF(218, 23), LEAF(218,203), -+ /* kk */ -+ LEAF(220,204), -+ /* kl */ -+ LEAF(221,205), LEAF(221,206), -+ /* km */ -+ LEAF(223,207), -+ /* kn */ -+ LEAF(224,208), -+ /* ko */ -+ LEAF(225,209), LEAF(225,210), LEAF(225,211), LEAF(225,212), -+ LEAF(225,213), LEAF(225,214), LEAF(225,215), LEAF(225,216), -+ LEAF(225,217), LEAF(225,218), LEAF(225,219), LEAF(225,220), -+ LEAF(225,221), LEAF(225,222), LEAF(225,223), LEAF(225,224), -+ LEAF(225,225), LEAF(225,226), LEAF(225,227), LEAF(225,228), -+ LEAF(225,229), LEAF(225,230), LEAF(225,231), LEAF(225,232), -+ LEAF(225,233), LEAF(225,234), LEAF(225,235), LEAF(225,236), -+ LEAF(225,237), LEAF(225,238), LEAF(225,239), LEAF(225,240), -+ LEAF(225,241), LEAF(225,242), LEAF(225,243), LEAF(225,244), -+ LEAF(225,245), LEAF(225,246), LEAF(225,247), LEAF(225,248), -+ LEAF(225,249), LEAF(225,250), LEAF(225,251), LEAF(225,252), -+ LEAF(225,253), -+ /* kr */ -+ LEAF(270, 23), LEAF(270,254), LEAF(270,255), -+ /* ks */ -+ LEAF(273,256), -+ /* ku_am */ -+ LEAF(274,257), LEAF(274,258), -+ /* ku_iq */ -+ LEAF(276,259), -+ /* ku_tr */ -+ LEAF(277,260), LEAF(277,261), -+ /* kum */ -+ LEAF(279,262), -+ /* kv */ -+ LEAF(280,263), -+ /* kw */ -+ LEAF(281, 23), LEAF(281, 96), LEAF(281,264), -+ /* ky */ -+ LEAF(284,265), -+ /* la */ -+ LEAF(285, 23), LEAF(285,266), -+ /* lah */ -+ LEAF(287,267), -+ /* lb */ -+ LEAF(288,268), -+ /* lg */ -+ LEAF(289, 23), LEAF(289,269), -+ /* li */ -+ LEAF(291,270), -+ /* ln */ -+ LEAF(292,271), LEAF(292,272), LEAF(292, 6), LEAF(292,273), -+ /* lo */ -+ LEAF(296,274), -+ /* lt */ -+ LEAF(297, 23), LEAF(297,275), -+ /* lv */ -+ LEAF(299, 23), LEAF(299,276), -+ /* mg */ -+ LEAF(301,277), -+ /* mh */ -+ LEAF(302, 23), LEAF(302,278), -+ /* mi */ -+ LEAF(304, 23), LEAF(304, 96), LEAF(304,279), -+ /* mk */ -+ LEAF(307,280), -+ /* ml */ -+ LEAF(308,281), -+ /* mn_cn */ -+ LEAF(309,282), -+ /* mn_mn */ -+ LEAF(310,283), -+ /* mni */ -+ LEAF(311,284), -+ /* mo */ -+ LEAF(312,285), LEAF(312, 58), LEAF(312,286), LEAF(312,262), -+ /* mt */ -+ LEAF(316,287), LEAF(316,288), -+ /* my */ -+ LEAF(318,289), -+ /* na */ -+ LEAF(319, 4), LEAF(319,290), -+ /* nb */ -+ LEAF(321,291), -+ /* ne */ -+ LEAF(322,292), -+ /* nl */ -+ LEAF(323,293), -+ /* nn */ -+ LEAF(324,294), -+ /* nqo */ -+ LEAF(325,295), -+ /* nso */ -+ LEAF(326,296), LEAF(326,297), -+ /* nv */ -+ LEAF(328,298), LEAF(328,299), LEAF(328,300), LEAF(328,301), -+ /* ny */ -+ LEAF(332, 23), LEAF(332,302), -+ /* oc */ -+ LEAF(334,303), -+ /* or */ -+ LEAF(335,304), -+ /* ota */ -+ LEAF(336,305), -+ /* pa */ -+ LEAF(337,306), -+ /* pap_an */ -+ LEAF(338,307), -+ /* pap_aw */ -+ LEAF(339,308), -+ /* pl */ -+ LEAF(340, 99), LEAF(340,309), -+ /* ps_af */ -+ LEAF(342,310), -+ /* ps_pk */ -+ LEAF(343,311), -+ /* pt */ -+ LEAF(344,312), -+ /* qu */ -+ LEAF(345,308), LEAF(345,313), -+ /* rm */ -+ LEAF(347,314), -+ /* ro */ -+ LEAF(348,285), LEAF(348, 58), LEAF(348,286), -+ /* sah */ -+ LEAF(351,315), -+ /* sat */ -+ LEAF(352,316), -+ /* sc */ -+ LEAF(353,317), -+ /* sco */ -+ LEAF(354, 23), LEAF(354,318), LEAF(354,319), -+ /* sd */ -+ LEAF(357,320), -+ /* se */ -+ LEAF(358,321), LEAF(358,322), -+ /* sg */ -+ LEAF(360,323), -+ /* sh */ -+ LEAF(361, 23), LEAF(361, 40), LEAF(361,324), -+ /* shs */ -+ LEAF(364,325), LEAF(364,326), -+ /* si */ -+ LEAF(366,327), -+ /* sid */ -+ LEAF(367,328), LEAF(367, 10), -+ /* sk */ -+ LEAF(369,329), LEAF(369,330), -+ /* sm */ -+ LEAF(371, 23), LEAF(371, 97), -+ /* sma */ -+ LEAF(373,331), -+ /* smj */ -+ LEAF(374,332), -+ /* smn */ -+ LEAF(375,333), LEAF(375,334), -+ /* sms */ -+ LEAF(377,335), LEAF(377,336), LEAF(377,337), -+ /* sq */ -+ LEAF(380,338), -+ /* sr */ -+ LEAF(381,339), -+ /* sv */ -+ LEAF(382,340), -+ /* syr */ -+ LEAF(383,341), -+ /* ta */ -+ LEAF(384,342), -+ /* te */ -+ LEAF(385,343), -+ /* tg */ -+ LEAF(386,344), -+ /* th */ -+ LEAF(387,345), -+ /* tig */ -+ LEAF(388,346), LEAF(388, 43), -+ /* tk */ -+ LEAF(390,347), LEAF(390,348), -+ /* tr */ -+ LEAF(392,349), LEAF(392, 52), -+ /* tt */ -+ LEAF(394,350), -+ /* ty */ -+ LEAF(395,351), LEAF(395, 96), LEAF(395,300), -+ /* ug */ -+ LEAF(398,352), -+ /* uk */ -+ LEAF(399,353), -+ /* ve */ -+ LEAF(400, 23), LEAF(400,354), -+ /* vi */ -+ LEAF(402,355), LEAF(402,356), LEAF(402,357), LEAF(402,358), -+ /* vo */ -+ LEAF(406,359), -+ /* vot */ -+ LEAF(407,360), LEAF(407, 74), -+ /* wa */ -+ LEAF(409,361), -+ /* wen */ -+ LEAF(410, 99), LEAF(410,362), -+ /* wo */ -+ LEAF(412,363), LEAF(412,269), -+ /* yap */ -+ LEAF(414,364), -+ /* yo */ -+ LEAF(415,365), LEAF(415,366), LEAF(415,367), LEAF(415,368), -+ /* zh_cn */ -+ LEAF(419,369), LEAF(419,370), LEAF(419,371), LEAF(419,372), -+ LEAF(419,373), LEAF(419,374), LEAF(419,375), LEAF(419,376), -+ LEAF(419,377), LEAF(419,378), LEAF(419,379), LEAF(419,380), -+ LEAF(419,381), LEAF(419,382), LEAF(419,383), LEAF(419,384), -+ LEAF(419,385), LEAF(419,386), LEAF(419,387), LEAF(419,388), -+ LEAF(419,389), LEAF(419,390), LEAF(419,391), LEAF(419,392), -+ LEAF(419,393), LEAF(419,394), LEAF(419,395), LEAF(419,396), -+ LEAF(419,397), LEAF(419,398), LEAF(419,399), LEAF(419,400), -+ LEAF(419,401), LEAF(419,402), LEAF(419,403), LEAF(419,404), -+ LEAF(419,405), LEAF(419,406), LEAF(419,407), LEAF(419,408), -+ LEAF(419,409), LEAF(419,410), LEAF(419,411), LEAF(419,412), -+ LEAF(419,413), LEAF(419,414), LEAF(419,415), LEAF(419,416), -+ LEAF(419,417), LEAF(419,418), LEAF(419,419), LEAF(419,420), -+ LEAF(419,421), LEAF(419,422), LEAF(419,423), LEAF(419,424), -+ LEAF(419,425), LEAF(419,426), LEAF(419,427), LEAF(419,428), -+ LEAF(419,429), LEAF(419,430), LEAF(419,431), LEAF(419,432), -+ LEAF(419,433), LEAF(419,434), LEAF(419,435), LEAF(419,436), -+ LEAF(419,437), LEAF(419,438), LEAF(419,439), LEAF(419,440), -+ LEAF(419,441), LEAF(419,442), LEAF(419,443), LEAF(419,444), -+ LEAF(419,445), LEAF(419,446), LEAF(419,447), LEAF(419,448), -+ LEAF(419,449), LEAF(419,450), -+ /* zh_hk */ -+ LEAF(501,451), LEAF(501,452), LEAF(501,453), LEAF(501,454), -+ LEAF(501,455), LEAF(501,456), LEAF(501,457), LEAF(501,458), -+ LEAF(501,459), LEAF(501,460), LEAF(501,461), LEAF(501,462), -+ LEAF(501,463), LEAF(501,464), LEAF(501,465), LEAF(501,466), -+ LEAF(501,467), LEAF(501,468), LEAF(501,469), LEAF(501,470), -+ LEAF(501,471), LEAF(501,472), LEAF(501,473), LEAF(501,474), -+ LEAF(501,475), LEAF(501,476), LEAF(501,477), LEAF(501,478), -+ LEAF(501,479), LEAF(501,480), LEAF(501,481), LEAF(501,482), -+ LEAF(501,483), LEAF(501,484), LEAF(501,485), LEAF(501,486), -+ LEAF(501,487), LEAF(501,488), LEAF(501,489), LEAF(501,490), -+ LEAF(501,491), LEAF(501,492), LEAF(501,493), LEAF(501,494), -+ LEAF(501,495), LEAF(501,496), LEAF(501,497), LEAF(501,498), -+ LEAF(501,499), LEAF(501,500), LEAF(501,501), LEAF(501,502), -+ LEAF(501,503), LEAF(501,504), LEAF(501,505), LEAF(501,506), -+ LEAF(501,507), LEAF(501,508), LEAF(501,509), LEAF(501,510), -+ LEAF(501,511), LEAF(501,512), LEAF(501,513), LEAF(501,514), -+ LEAF(501,515), LEAF(501,516), LEAF(501,517), LEAF(501,518), -+ LEAF(501,519), LEAF(501,520), LEAF(501,521), LEAF(501,522), -+ LEAF(501,523), LEAF(501,524), LEAF(501,525), LEAF(501,526), -+ LEAF(501,527), LEAF(501,528), LEAF(501,529), LEAF(501,530), -+ LEAF(501,531), LEAF(501,532), LEAF(501,533), LEAF(501,534), -+ LEAF(501,535), LEAF(501,536), LEAF(501,537), LEAF(501,538), -+ LEAF(501,539), LEAF(501,540), LEAF(501,541), LEAF(501,542), -+ LEAF(501,543), LEAF(501,544), LEAF(501,545), LEAF(501,546), -+ LEAF(501,547), LEAF(501,548), LEAF(501,549), LEAF(501,550), -+ LEAF(501,551), LEAF(501,552), LEAF(501,553), LEAF(501,554), -+ LEAF(501,555), LEAF(501,556), LEAF(501,557), LEAF(501,558), -+ LEAF(501,559), LEAF(501,560), LEAF(501,561), LEAF(501,562), -+ LEAF(501,563), LEAF(501,564), LEAF(501,565), LEAF(501,566), -+ LEAF(501,567), LEAF(501,568), LEAF(501,569), LEAF(501,570), -+ LEAF(501,571), LEAF(501,572), LEAF(501,573), LEAF(501,574), -+ LEAF(501,575), LEAF(501,576), LEAF(501,577), LEAF(501,578), -+ LEAF(501,579), LEAF(501,580), LEAF(501,581), LEAF(501,582), -+ LEAF(501,583), LEAF(501,318), LEAF(501,584), LEAF(501,585), -+ LEAF(501,586), LEAF(501,587), LEAF(501,588), LEAF(501,589), -+ LEAF(501,590), LEAF(501, 3), LEAF(501,591), LEAF(501,592), -+ LEAF(501,593), LEAF(501,594), LEAF(501,595), LEAF(501,596), -+ LEAF(501,580), LEAF(501,597), LEAF(501,598), LEAF(501,599), -+ LEAF(501,600), LEAF(501,601), LEAF(501,602), LEAF(501,603), -+ LEAF(501,604), LEAF(501,605), LEAF(501,606), LEAF(501,607), -+ LEAF(501,608), LEAF(501,609), LEAF(501,610), LEAF(501,611), -+ LEAF(501,612), LEAF(501,613), LEAF(501,614), LEAF(501,615), -+ LEAF(501,616), LEAF(501,617), LEAF(501,618), -+ /* zh_tw */ -+ LEAF(672,619), LEAF(672,620), LEAF(672,621), LEAF(672,622), -+ LEAF(672,623), LEAF(672,624), LEAF(672,625), LEAF(672,626), -+ LEAF(672,627), LEAF(672,628), LEAF(672,629), LEAF(672,630), -+ LEAF(672,631), LEAF(672,632), LEAF(672,633), LEAF(672,634), -+ LEAF(672,635), LEAF(672,636), LEAF(672,637), LEAF(672,638), -+ LEAF(672,639), LEAF(672,640), LEAF(672,641), LEAF(672,642), -+ LEAF(672,643), LEAF(672,644), LEAF(672,645), LEAF(672,646), -+ LEAF(672,647), LEAF(672,648), LEAF(672,649), LEAF(672,650), -+ LEAF(672,651), LEAF(672,652), LEAF(672,653), LEAF(672,654), -+ LEAF(672,655), LEAF(672,656), LEAF(672,657), LEAF(672,658), -+ LEAF(672,659), LEAF(672,660), LEAF(672,661), LEAF(672,662), -+ LEAF(672,663), LEAF(672,664), LEAF(672,665), LEAF(672,666), -+ LEAF(672,667), LEAF(672,668), LEAF(672,669), LEAF(672,670), -+ LEAF(672,671), LEAF(672,672), LEAF(672,673), LEAF(672,674), -+ LEAF(672,675), LEAF(672,676), LEAF(672,677), LEAF(672,678), -+ LEAF(672,679), LEAF(672,680), LEAF(672,681), LEAF(672,682), -+ LEAF(672,683), LEAF(672,684), LEAF(672,685), LEAF(672,686), -+ LEAF(672,687), LEAF(672,688), LEAF(672,689), LEAF(672,690), -+ LEAF(672,691), LEAF(672,692), LEAF(672,693), LEAF(672,694), -+ LEAF(672,695), LEAF(672,696), LEAF(672,697), LEAF(672,698), -+ LEAF(672,699), LEAF(672,700), LEAF(672,701), -+}, -+{ -+ /* aa */ -+ 0x0000, -+ /* ab */ -+ 0x0004, -+ /* af */ -+ 0x0000, 0x0001, -+ /* ak */ -+ 0x0000, 0x0001, 0x0002, 0x0003, 0x001e, -+ /* am */ -+ 0x0012, 0x0013, -+ /* an */ -+ 0x0000, -+ /* ar */ -+ 0x0006, -+ /* as */ -+ 0x0009, -+ /* ast */ -+ 0x0000, 0x001e, -+ /* av */ -+ 0x0004, -+ /* ay */ -+ 0x0000, -+ /* az_az */ -+ 0x0000, 0x0001, 0x0002, -+ /* az_ir */ -+ 0x0006, -+ /* ba */ -+ 0x0004, -+ /* be */ -+ 0x0004, -+ /* ber_dz */ -+ 0x0000, 0x0001, 0x0002, 0x001e, -+ /* ber_ma */ -+ 0x002d, -+ /* bg */ -+ 0x0004, -+ /* bh */ -+ 0x0009, -+ /* bi */ -+ 0x0000, -+ /* bin */ -+ 0x0000, 0x0003, 0x001e, -+ /* bm */ -+ 0x0000, 0x0001, 0x0002, -+ /* bn */ -+ 0x0009, -+ /* bo */ -+ 0x000f, -+ /* br */ -+ 0x0000, -+ /* brx */ -+ 0x0009, -+ /* bs */ -+ 0x0000, 0x0001, -+ /* bua */ -+ 0x0004, -+ /* byn */ -+ 0x0012, 0x0013, -+ /* ca */ -+ 0x0000, 0x0001, -+ /* ch */ -+ 0x0000, -+ /* chm */ -+ 0x0004, -+ /* chr */ -+ 0x0013, -+ /* co */ -+ 0x0000, 0x0001, -+ /* crh */ -+ 0x0000, 0x0001, -+ /* cs */ -+ 0x0000, 0x0001, -+ /* csb */ -+ 0x0000, 0x0001, -+ /* cu */ -+ 0x0004, -+ /* cv */ -+ 0x0001, 0x0004, -+ /* cy */ -+ 0x0000, 0x0001, 0x001e, -+ /* da */ -+ 0x0000, -+ /* de */ -+ 0x0000, -+ /* doi */ -+ 0x0009, -+ /* dv */ -+ 0x0007, -+ /* ee */ -+ 0x0000, 0x0001, 0x0002, 0x0003, -+ /* el */ -+ 0x0003, -+ /* en */ -+ 0x0000, -+ /* eo */ -+ 0x0000, 0x0001, -+ /* et */ -+ 0x0000, 0x0001, -+ /* eu */ -+ 0x0000, -+ /* ff */ -+ 0x0000, 0x0001, 0x0002, -+ /* fi */ -+ 0x0000, 0x0001, -+ /* fil */ -+ 0x0000, -+ /* fj */ -+ 0x0000, -+ /* fo */ -+ 0x0000, -+ /* fur */ -+ 0x0000, -+ /* fy */ -+ 0x0000, -+ /* ga */ -+ 0x0000, 0x0001, 0x001e, -+ /* gd */ -+ 0x0000, -+ /* gez */ -+ 0x0012, 0x0013, -+ /* gn */ -+ 0x0000, 0x0001, 0x001e, -+ /* gu */ -+ 0x000a, -+ /* gv */ -+ 0x0000, -+ /* ha */ -+ 0x0000, 0x0001, 0x0002, -+ /* haw */ -+ 0x0000, 0x0001, 0x0002, -+ /* he */ -+ 0x0005, -+ /* hsb */ -+ 0x0000, 0x0001, -+ /* ht */ -+ 0x0000, -+ /* hu */ -+ 0x0000, 0x0001, -+ /* hy */ -+ 0x0005, -+ /* hz */ -+ 0x0000, 0x0003, 0x001e, -+ /* id */ -+ 0x0000, -+ /* ig */ -+ 0x0000, 0x001e, -+ /* ii */ -+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, -+ /* ik */ -+ 0x0004, -+ /* is */ -+ 0x0000, -+ /* it */ -+ 0x0000, -+ /* iu */ -+ 0x0014, 0x0015, 0x0016, -+ /* ja */ -+ 0x0030, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, -+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, -+ 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, -+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, -+ 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, -+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, -+ 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, -+ 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, -+ 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, -+ 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, -+ 0x009d, 0x009e, 0x009f, -+ /* jv */ -+ 0x0000, -+ /* ka */ -+ 0x0010, -+ /* kaa */ -+ 0x0004, -+ /* ki */ -+ 0x0000, 0x0001, -+ /* kk */ -+ 0x0004, -+ /* kl */ -+ 0x0000, 0x0001, -+ /* km */ -+ 0x0017, -+ /* kn */ -+ 0x000c, -+ /* ko */ -+ 0x0031, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, -+ 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, -+ 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, -+ 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, -+ 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, -+ 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, -+ /* kr */ -+ 0x0000, 0x0001, 0x0002, -+ /* ks */ -+ 0x0006, -+ /* ku_am */ -+ 0x0004, 0x0005, -+ /* ku_iq */ -+ 0x0006, -+ /* ku_tr */ -+ 0x0000, 0x0001, -+ /* kum */ -+ 0x0004, -+ /* kv */ -+ 0x0004, -+ /* kw */ -+ 0x0000, 0x0001, 0x0002, -+ /* ky */ -+ 0x0004, -+ /* la */ -+ 0x0000, 0x0001, -+ /* lah */ -+ 0x0006, -+ /* lb */ -+ 0x0000, -+ /* lg */ -+ 0x0000, 0x0001, -+ /* li */ -+ 0x0000, -+ /* ln */ -+ 0x0000, 0x0001, 0x0002, 0x0003, -+ /* lo */ -+ 0x000e, -+ /* lt */ -+ 0x0000, 0x0001, -+ /* lv */ -+ 0x0000, 0x0001, -+ /* mg */ -+ 0x0000, -+ /* mh */ -+ 0x0000, 0x0001, -+ /* mi */ -+ 0x0000, 0x0001, 0x001e, -+ /* mk */ -+ 0x0004, -+ /* ml */ -+ 0x000d, -+ /* mn_cn */ -+ 0x0018, -+ /* mn_mn */ -+ 0x0004, -+ /* mni */ -+ 0x0009, -+ /* mo */ -+ 0x0000, 0x0001, 0x0002, 0x0004, -+ /* mt */ -+ 0x0000, 0x0001, -+ /* my */ -+ 0x0010, -+ /* na */ -+ 0x0000, 0x0001, -+ /* nb */ -+ 0x0000, -+ /* ne */ -+ 0x0009, -+ /* nl */ -+ 0x0000, -+ /* nn */ -+ 0x0000, -+ /* nqo */ -+ 0x0007, -+ /* nso */ -+ 0x0000, 0x0001, -+ /* nv */ -+ 0x0000, 0x0001, 0x0002, 0x0003, -+ /* ny */ -+ 0x0000, 0x0001, -+ /* oc */ -+ 0x0000, -+ /* or */ -+ 0x000b, -+ /* ota */ -+ 0x0006, -+ /* pa */ -+ 0x000a, -+ /* pap_an */ -+ 0x0000, -+ /* pap_aw */ -+ 0x0000, -+ /* pl */ -+ 0x0000, 0x0001, -+ /* ps_af */ -+ 0x0006, -+ /* ps_pk */ -+ 0x0006, -+ /* pt */ -+ 0x0000, -+ /* qu */ -+ 0x0000, 0x0002, -+ /* rm */ -+ 0x0000, -+ /* ro */ -+ 0x0000, 0x0001, 0x0002, -+ /* sah */ -+ 0x0004, -+ /* sat */ -+ 0x0009, -+ /* sc */ -+ 0x0000, -+ /* sco */ -+ 0x0000, 0x0001, 0x0002, -+ /* sd */ -+ 0x0006, -+ /* se */ -+ 0x0000, 0x0001, -+ /* sg */ -+ 0x0000, -+ /* sh */ -+ 0x0000, 0x0001, 0x0004, -+ /* shs */ -+ 0x0000, 0x0003, -+ /* si */ -+ 0x000d, -+ /* sid */ -+ 0x0012, 0x0013, -+ /* sk */ -+ 0x0000, 0x0001, -+ /* sm */ -+ 0x0000, 0x0002, -+ /* sma */ -+ 0x0000, -+ /* smj */ -+ 0x0000, -+ /* smn */ -+ 0x0000, 0x0001, -+ /* sms */ -+ 0x0000, 0x0001, 0x0002, -+ /* sq */ -+ 0x0000, -+ /* sr */ -+ 0x0004, -+ /* sv */ -+ 0x0000, -+ /* syr */ -+ 0x0007, -+ /* ta */ -+ 0x000b, -+ /* te */ -+ 0x000c, -+ /* tg */ -+ 0x0004, -+ /* th */ -+ 0x000e, -+ /* tig */ -+ 0x0012, 0x0013, -+ /* tk */ -+ 0x0000, 0x0001, -+ /* tr */ -+ 0x0000, 0x0001, -+ /* tt */ -+ 0x0004, -+ /* ty */ -+ 0x0000, 0x0001, 0x0002, -+ /* ug */ -+ 0x0006, -+ /* uk */ -+ 0x0004, -+ /* ve */ -+ 0x0000, 0x001e, -+ /* vi */ -+ 0x0000, 0x0001, 0x0003, 0x001e, -+ /* vo */ -+ 0x0000, -+ /* vot */ -+ 0x0000, 0x0001, -+ /* wa */ -+ 0x0000, -+ /* wen */ -+ 0x0000, 0x0001, -+ /* wo */ -+ 0x0000, 0x0001, -+ /* yap */ -+ 0x0000, -+ /* yo */ -+ 0x0000, 0x0001, 0x0003, 0x001e, -+ /* zh_cn */ -+ 0x0002, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, -+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, -+ 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, -+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, -+ 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, -+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, -+ 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, -+ 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, -+ 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, -+ 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, -+ 0x009e, 0x009f, -+ /* zh_hk */ -+ 0x0030, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, -+ 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, -+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, -+ 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, -+ 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, -+ 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, -+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, -+ 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, -+ 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, -+ 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, -+ 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, -+ 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, -+ 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, -+ 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x0200, 0x0201, 0x0203, -+ 0x0207, 0x020c, 0x020d, 0x020e, 0x020f, 0x0210, 0x0211, 0x0219, -+ 0x021a, 0x021c, 0x021d, 0x0220, 0x0221, 0x022a, 0x022b, 0x022c, -+ 0x022d, 0x022f, 0x0232, 0x0235, 0x0236, 0x023c, 0x023e, 0x023f, -+ 0x0244, 0x024d, 0x024e, 0x0251, 0x0255, 0x025e, 0x0262, 0x0266, -+ 0x0267, 0x0268, 0x0269, 0x0272, 0x0275, 0x0276, 0x0277, 0x0278, -+ 0x0279, 0x027a, 0x027d, 0x0280, 0x0281, 0x0282, 0x0283, 0x0289, -+ 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x0294, 0x0297, 0x0298, -+ 0x029a, 0x029d, 0x02a6, -+ /* zh_tw */ -+ 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, -+ 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, -+ 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, -+ 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, -+ 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, -+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, -+ 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, -+ 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, -+ 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, -+ 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, -+ 0x009e, 0x009f, 0x00fa, -+}, -+{ -+ 0, /* aa */ -+ 1, /* ab */ -+ 2, /* af */ -+ 190, /* ak */ -+ 3, /* am */ -+ 191, /* an */ -+ 4, /* ar */ -+ 5, /* as */ -+ 6, /* ast */ -+ 7, /* av */ -+ 8, /* ay */ -+ 9, /* az_az */ -+ 10, /* az_ir */ -+ 11, /* ba */ -+ 13, /* be */ -+ 192, /* ber_dz */ -+ 193, /* ber_ma */ -+ 14, /* bg */ -+ 15, /* bh */ -+ 16, /* bho */ -+ 17, /* bi */ -+ 18, /* bin */ -+ 12, /* bm */ -+ 19, /* bn */ -+ 20, /* bo */ -+ 21, /* br */ -+ 240, /* brx */ -+ 22, /* bs */ -+ 23, /* bua */ -+ 194, /* byn */ -+ 24, /* ca */ -+ 25, /* ce */ -+ 26, /* ch */ -+ 27, /* chm */ -+ 28, /* chr */ -+ 29, /* co */ -+ 195, /* crh */ -+ 30, /* cs */ -+ 196, /* csb */ -+ 31, /* cu */ -+ 32, /* cv */ -+ 33, /* cy */ -+ 34, /* da */ -+ 35, /* de */ -+ 242, /* doi */ -+ 197, /* dv */ -+ 36, /* dz */ -+ 198, /* ee */ -+ 37, /* el */ -+ 38, /* en */ -+ 39, /* eo */ -+ 40, /* es */ -+ 41, /* et */ -+ 42, /* eu */ -+ 43, /* fa */ -+ 199, /* fat */ -+ 48, /* ff */ -+ 44, /* fi */ -+ 200, /* fil */ -+ 45, /* fj */ -+ 46, /* fo */ -+ 47, /* fr */ -+ 49, /* fur */ -+ 50, /* fy */ -+ 51, /* ga */ -+ 52, /* gd */ -+ 53, /* gez */ -+ 54, /* gl */ -+ 55, /* gn */ -+ 56, /* gu */ -+ 57, /* gv */ -+ 58, /* ha */ -+ 59, /* haw */ -+ 60, /* he */ -+ 61, /* hi */ -+ 201, /* hne */ -+ 62, /* ho */ -+ 63, /* hr */ -+ 202, /* hsb */ -+ 203, /* ht */ -+ 64, /* hu */ -+ 65, /* hy */ -+ 204, /* hz */ -+ 66, /* ia */ -+ 68, /* id */ -+ 69, /* ie */ -+ 67, /* ig */ -+ 205, /* ii */ -+ 70, /* ik */ -+ 71, /* io */ -+ 72, /* is */ -+ 73, /* it */ -+ 74, /* iu */ -+ 75, /* ja */ -+ 206, /* jv */ -+ 76, /* ka */ -+ 77, /* kaa */ -+ 207, /* kab */ -+ 78, /* ki */ -+ 208, /* kj */ -+ 79, /* kk */ -+ 80, /* kl */ -+ 81, /* km */ -+ 82, /* kn */ -+ 83, /* ko */ -+ 84, /* kok */ -+ 209, /* kr */ -+ 85, /* ks */ -+ 86, /* ku_am */ -+ 210, /* ku_iq */ -+ 87, /* ku_ir */ -+ 211, /* ku_tr */ -+ 88, /* kum */ -+ 89, /* kv */ -+ 90, /* kw */ -+ 212, /* kwm */ -+ 91, /* ky */ -+ 92, /* la */ -+ 238, /* lah */ -+ 93, /* lb */ -+ 94, /* lez */ -+ 213, /* lg */ -+ 214, /* li */ -+ 95, /* ln */ -+ 96, /* lo */ -+ 97, /* lt */ -+ 98, /* lv */ -+ 215, /* mai */ -+ 99, /* mg */ -+ 100, /* mh */ -+ 101, /* mi */ -+ 102, /* mk */ -+ 103, /* ml */ -+ 104, /* mn_cn */ -+ 216, /* mn_mn */ -+ 243, /* mni */ -+ 105, /* mo */ -+ 106, /* mr */ -+ 217, /* ms */ -+ 107, /* mt */ -+ 108, /* my */ -+ 218, /* na */ -+ 109, /* nb */ -+ 110, /* nds */ -+ 111, /* ne */ -+ 219, /* ng */ -+ 112, /* nl */ -+ 113, /* nn */ -+ 114, /* no */ -+ 239, /* nqo */ -+ 115, /* nr */ -+ 116, /* nso */ -+ 220, /* nv */ -+ 117, /* ny */ -+ 118, /* oc */ -+ 119, /* om */ -+ 120, /* or */ -+ 121, /* os */ -+ 221, /* ota */ -+ 122, /* pa */ -+ 222, /* pa_pk */ -+ 223, /* pap_an */ -+ 224, /* pap_aw */ -+ 123, /* pl */ -+ 124, /* ps_af */ -+ 125, /* ps_pk */ -+ 126, /* pt */ -+ 225, /* qu */ -+ 226, /* quz */ -+ 127, /* rm */ -+ 227, /* rn */ -+ 128, /* ro */ -+ 129, /* ru */ -+ 228, /* rw */ -+ 130, /* sa */ -+ 131, /* sah */ -+ 241, /* sat */ -+ 229, /* sc */ -+ 132, /* sco */ -+ 230, /* sd */ -+ 133, /* se */ -+ 134, /* sel */ -+ 231, /* sg */ -+ 135, /* sh */ -+ 136, /* shs */ -+ 137, /* si */ -+ 232, /* sid */ -+ 138, /* sk */ -+ 139, /* sl */ -+ 140, /* sm */ -+ 141, /* sma */ -+ 142, /* smj */ -+ 143, /* smn */ -+ 144, /* sms */ -+ 233, /* sn */ -+ 145, /* so */ -+ 146, /* sq */ -+ 147, /* sr */ -+ 148, /* ss */ -+ 149, /* st */ -+ 234, /* su */ -+ 150, /* sv */ -+ 151, /* sw */ -+ 152, /* syr */ -+ 153, /* ta */ -+ 154, /* te */ -+ 155, /* tg */ -+ 156, /* th */ -+ 157, /* ti_er */ -+ 158, /* ti_et */ -+ 159, /* tig */ -+ 160, /* tk */ -+ 161, /* tl */ -+ 162, /* tn */ -+ 163, /* to */ -+ 164, /* tr */ -+ 165, /* ts */ -+ 166, /* tt */ -+ 167, /* tw */ -+ 235, /* ty */ -+ 168, /* tyv */ -+ 169, /* ug */ -+ 170, /* uk */ -+ 171, /* ur */ -+ 172, /* uz */ -+ 173, /* ve */ -+ 174, /* vi */ -+ 175, /* vo */ -+ 176, /* vot */ -+ 177, /* wa */ -+ 236, /* wal */ -+ 178, /* wen */ -+ 179, /* wo */ -+ 180, /* xh */ -+ 181, /* yap */ -+ 182, /* yi */ -+ 183, /* yo */ -+ 237, /* za */ -+ 184, /* zh_cn */ -+ 185, /* zh_hk */ -+ 186, /* zh_mo */ -+ 187, /* zh_sg */ -+ 188, /* zh_tw */ -+ 189, /* zu */ -+}, -+{ -+ 0, /* aa */ -+ 1, /* ab */ -+ 2, /* af */ -+ 4, /* am */ -+ 6, /* ar */ -+ 7, /* as */ -+ 8, /* ast */ -+ 9, /* av */ -+ 10, /* ay */ -+ 11, /* az_az */ -+ 12, /* az_ir */ -+ 13, /* ba */ -+ 22, /* bm */ -+ 14, /* be */ -+ 17, /* bg */ -+ 18, /* bh */ -+ 19, /* bho */ -+ 20, /* bi */ -+ 21, /* bin */ -+ 23, /* bn */ -+ 24, /* bo */ -+ 25, /* br */ -+ 27, /* bs */ -+ 28, /* bua */ -+ 30, /* ca */ -+ 31, /* ce */ -+ 32, /* ch */ -+ 33, /* chm */ -+ 34, /* chr */ -+ 35, /* co */ -+ 37, /* cs */ -+ 39, /* cu */ -+ 40, /* cv */ -+ 41, /* cy */ -+ 42, /* da */ -+ 43, /* de */ -+ 46, /* dz */ -+ 48, /* el */ -+ 49, /* en */ -+ 50, /* eo */ -+ 51, /* es */ -+ 52, /* et */ -+ 53, /* eu */ -+ 54, /* fa */ -+ 57, /* fi */ -+ 59, /* fj */ -+ 60, /* fo */ -+ 61, /* fr */ -+ 56, /* ff */ -+ 62, /* fur */ -+ 63, /* fy */ -+ 64, /* ga */ -+ 65, /* gd */ -+ 66, /* gez */ -+ 67, /* gl */ -+ 68, /* gn */ -+ 69, /* gu */ -+ 70, /* gv */ -+ 71, /* ha */ -+ 72, /* haw */ -+ 73, /* he */ -+ 74, /* hi */ -+ 76, /* ho */ -+ 77, /* hr */ -+ 80, /* hu */ -+ 81, /* hy */ -+ 83, /* ia */ -+ 86, /* ig */ -+ 84, /* id */ -+ 85, /* ie */ -+ 88, /* ik */ -+ 89, /* io */ -+ 90, /* is */ -+ 91, /* it */ -+ 92, /* iu */ -+ 93, /* ja */ -+ 95, /* ka */ -+ 96, /* kaa */ -+ 98, /* ki */ -+ 100, /* kk */ -+ 101, /* kl */ -+ 102, /* km */ -+ 103, /* kn */ -+ 104, /* ko */ -+ 105, /* kok */ -+ 107, /* ks */ -+ 108, /* ku_am */ -+ 110, /* ku_ir */ -+ 112, /* kum */ -+ 113, /* kv */ -+ 114, /* kw */ -+ 116, /* ky */ -+ 117, /* la */ -+ 119, /* lb */ -+ 120, /* lez */ -+ 123, /* ln */ -+ 124, /* lo */ -+ 125, /* lt */ -+ 126, /* lv */ -+ 128, /* mg */ -+ 129, /* mh */ -+ 130, /* mi */ -+ 131, /* mk */ -+ 132, /* ml */ -+ 133, /* mn_cn */ -+ 136, /* mo */ -+ 137, /* mr */ -+ 139, /* mt */ -+ 140, /* my */ -+ 142, /* nb */ -+ 143, /* nds */ -+ 144, /* ne */ -+ 146, /* nl */ -+ 147, /* nn */ -+ 148, /* no */ -+ 150, /* nr */ -+ 151, /* nso */ -+ 153, /* ny */ -+ 154, /* oc */ -+ 155, /* om */ -+ 156, /* or */ -+ 157, /* os */ -+ 159, /* pa */ -+ 163, /* pl */ -+ 164, /* ps_af */ -+ 165, /* ps_pk */ -+ 166, /* pt */ -+ 169, /* rm */ -+ 171, /* ro */ -+ 172, /* ru */ -+ 174, /* sa */ -+ 175, /* sah */ -+ 178, /* sco */ -+ 180, /* se */ -+ 181, /* sel */ -+ 183, /* sh */ -+ 184, /* shs */ -+ 185, /* si */ -+ 187, /* sk */ -+ 188, /* sl */ -+ 189, /* sm */ -+ 190, /* sma */ -+ 191, /* smj */ -+ 192, /* smn */ -+ 193, /* sms */ -+ 195, /* so */ -+ 196, /* sq */ -+ 197, /* sr */ -+ 198, /* ss */ -+ 199, /* st */ -+ 201, /* sv */ -+ 202, /* sw */ -+ 203, /* syr */ -+ 204, /* ta */ -+ 205, /* te */ -+ 206, /* tg */ -+ 207, /* th */ -+ 208, /* ti_er */ -+ 209, /* ti_et */ -+ 210, /* tig */ -+ 211, /* tk */ -+ 212, /* tl */ -+ 213, /* tn */ -+ 214, /* to */ -+ 215, /* tr */ -+ 216, /* ts */ -+ 217, /* tt */ -+ 218, /* tw */ -+ 220, /* tyv */ -+ 221, /* ug */ -+ 222, /* uk */ -+ 223, /* ur */ -+ 224, /* uz */ -+ 225, /* ve */ -+ 226, /* vi */ -+ 227, /* vo */ -+ 228, /* vot */ -+ 229, /* wa */ -+ 231, /* wen */ -+ 232, /* wo */ -+ 233, /* xh */ -+ 234, /* yap */ -+ 235, /* yi */ -+ 236, /* yo */ -+ 238, /* zh_cn */ -+ 239, /* zh_hk */ -+ 240, /* zh_mo */ -+ 241, /* zh_sg */ -+ 242, /* zh_tw */ -+ 243, /* zu */ -+ 3, /* ak */ -+ 5, /* an */ -+ 15, /* ber_dz */ -+ 16, /* ber_ma */ -+ 29, /* byn */ -+ 36, /* crh */ -+ 38, /* csb */ -+ 45, /* dv */ -+ 47, /* ee */ -+ 55, /* fat */ -+ 58, /* fil */ -+ 75, /* hne */ -+ 78, /* hsb */ -+ 79, /* ht */ -+ 82, /* hz */ -+ 87, /* ii */ -+ 94, /* jv */ -+ 97, /* kab */ -+ 99, /* kj */ -+ 106, /* kr */ -+ 109, /* ku_iq */ -+ 111, /* ku_tr */ -+ 115, /* kwm */ -+ 121, /* lg */ -+ 122, /* li */ -+ 127, /* mai */ -+ 134, /* mn_mn */ -+ 138, /* ms */ -+ 141, /* na */ -+ 145, /* ng */ -+ 152, /* nv */ -+ 158, /* ota */ -+ 160, /* pa_pk */ -+ 161, /* pap_an */ -+ 162, /* pap_aw */ -+ 167, /* qu */ -+ 168, /* quz */ -+ 170, /* rn */ -+ 173, /* rw */ -+ 177, /* sc */ -+ 179, /* sd */ -+ 182, /* sg */ -+ 186, /* sid */ -+ 194, /* sn */ -+ 200, /* su */ -+ 219, /* ty */ -+ 230, /* wal */ -+ 237, /* za */ -+ 118, /* lah */ -+ 149, /* nqo */ -+ 26, /* brx */ -+ 176, /* sat */ -+ 44, /* doi */ -+ 135, /* mni */ -+} -+}; -+ -+#define NUM_LANG_CHAR_SET 244 -+#define NUM_LANG_SET_MAP 8 -+ -+static const FcChar32 fcLangCountrySets[][NUM_LANG_SET_MAP] = { -+ { 0x00000600, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, /* az */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00000000, }, /* ber */ -+ { 0x00000000, 0x00000000, 0x00c00000, 0x00000000, 0x00000000, 0x00000000, 0x000c0000, 0x00000000, }, /* ku */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x01000000, 0x00000000, }, /* mn */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40000000, 0x00000000, }, /* pa */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000001, }, /* pap */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x30000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, /* ps */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x60000000, 0x00000000, 0x00000000, 0x00000000, }, /* ti */ -+ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1f000000, 0x00000000, 0x00000000, }, /* zh */ -+}; -+ -+#define NUM_COUNTRY_SET 9 -+ -+static const FcLangCharSetRange fcLangCharSetRanges[] = { -+ -+ { 0, 12 }, /* a */ -+ { 13, 29 }, /* b */ -+ { 30, 41 }, /* c */ -+ { 42, 46 }, /* d */ -+ { 47, 53 }, /* e */ -+ { 54, 63 }, /* f */ -+ { 64, 70 }, /* g */ -+ { 71, 82 }, /* h */ -+ { 83, 92 }, /* i */ -+ { 93, 94 }, /* j */ -+ { 95, 116 }, /* k */ -+ { 117, 126 }, /* l */ -+ { 127, 140 }, /* m */ -+ { 141, 153 }, /* n */ -+ { 154, 158 }, /* o */ -+ { 159, 166 }, /* p */ -+ { 167, 168 }, /* q */ -+ { 169, 173 }, /* r */ -+ { 174, 203 }, /* s */ -+ { 204, 220 }, /* t */ -+ { 221, 224 }, /* u */ -+ { 225, 228 }, /* v */ -+ { 229, 232 }, /* w */ -+ { 233, 233 }, /* x */ -+ { 234, 236 }, /* y */ -+ { 237, 243 }, /* z */ -+}; -+ -diff --git a/src/fcobjshash.h b/src/fcobjshash.h -new file mode 100644 -index 0000000..5a4d1ea ---- /dev/null -+++ b/src/fcobjshash.h -@@ -0,0 +1,328 @@ -+/* ANSI-C code produced by gperf version 3.0.4 */ -+/* Command-line: gperf -m 100 fcobjshash.gperf */ -+/* Computed positions: -k'2-3' */ -+ -+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ -+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ -+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ -+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ -+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ -+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ -+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ -+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ -+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ -+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ -+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ -+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ -+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ -+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ -+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ -+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ -+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ -+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ -+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ -+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ -+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ -+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ -+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -+/* The character set is not based on ISO-646. */ -+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." -+#endif -+ -+#line 1 "fcobjshash.gperf" -+ -+#line 13 "fcobjshash.gperf" -+struct FcObjectTypeInfo { -+int name; -+int id; -+}; -+#include <string.h> -+/* maximum key range = 56, duplicates = 0 */ -+ -+#ifdef __GNUC__ -+__inline -+#else -+#ifdef __cplusplus -+inline -+#endif -+#endif -+static unsigned int -+FcObjectTypeHash (register const char *str, register unsigned int len) -+{ -+ static const unsigned char asso_values[] = -+ { -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 21, 30, 3, -+ 36, 45, 60, 3, 15, 0, 60, 60, 0, 9, -+ 9, 0, 21, 60, 0, 0, 15, 0, 60, 60, -+ 0, 15, 24, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, -+ 60, 60, 60, 60, 60, 60 -+ }; -+ return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[1]]; -+} -+ -+struct FcObjectTypeNamePool_t -+ { -+ char FcObjectTypeNamePool_str4[sizeof("file")]; -+ char FcObjectTypeNamePool_str5[sizeof("color")]; -+ char FcObjectTypeNamePool_str7[sizeof("foundry")]; -+ char FcObjectTypeNamePool_str8[sizeof("fullname")]; -+ char FcObjectTypeNamePool_str9[sizeof("pixelsize")]; -+ char FcObjectTypeNamePool_str10[sizeof("prgname")]; -+ char FcObjectTypeNamePool_str12[sizeof("fullnamelang")]; -+ char FcObjectTypeNamePool_str13[sizeof("globaladvance")]; -+ char FcObjectTypeNamePool_str14[sizeof("postscriptname")]; -+ char FcObjectTypeNamePool_str16[sizeof("hinting")]; -+ char FcObjectTypeNamePool_str17[sizeof("minspace")]; -+ char FcObjectTypeNamePool_str18[sizeof("hintstyle")]; -+ char FcObjectTypeNamePool_str19[sizeof("fontformat")]; -+ char FcObjectTypeNamePool_str20[sizeof("fontversion")]; -+ char FcObjectTypeNamePool_str21[sizeof("fontfeatures")]; -+ char FcObjectTypeNamePool_str22[sizeof("outline")]; -+ char FcObjectTypeNamePool_str23[sizeof("autohint")]; -+ char FcObjectTypeNamePool_str24[sizeof("dpi")]; -+ char FcObjectTypeNamePool_str25[sizeof("hash")]; -+ char FcObjectTypeNamePool_str26[sizeof("slant")]; -+ char FcObjectTypeNamePool_str27[sizeof("aspect")]; -+ char FcObjectTypeNamePool_str28[sizeof("size")]; -+ char FcObjectTypeNamePool_str29[sizeof("scale")]; -+ char FcObjectTypeNamePool_str30[sizeof("symbol")]; -+ char FcObjectTypeNamePool_str31[sizeof("rasterizer")]; -+ char FcObjectTypeNamePool_str32[sizeof("scalable")]; -+ char FcObjectTypeNamePool_str33[sizeof("antialias")]; -+ char FcObjectTypeNamePool_str34[sizeof("lang")]; -+ char FcObjectTypeNamePool_str35[sizeof("style")]; -+ char FcObjectTypeNamePool_str36[sizeof("family")]; -+ char FcObjectTypeNamePool_str37[sizeof("rgba")]; -+ char FcObjectTypeNamePool_str38[sizeof("namelang")]; -+ char FcObjectTypeNamePool_str39[sizeof("stylelang")]; -+ char FcObjectTypeNamePool_str40[sizeof("familylang")]; -+ char FcObjectTypeNamePool_str41[sizeof("width")]; -+ char FcObjectTypeNamePool_str42[sizeof("matrix")]; -+ char FcObjectTypeNamePool_str43[sizeof("charset")]; -+ char FcObjectTypeNamePool_str45[sizeof("charwidth")]; -+ char FcObjectTypeNamePool_str46[sizeof("charheight")]; -+ char FcObjectTypeNamePool_str47[sizeof("embolden")]; -+ char FcObjectTypeNamePool_str48[sizeof("lcdfilter")]; -+ char FcObjectTypeNamePool_str49[sizeof("spacing")]; -+ char FcObjectTypeNamePool_str50[sizeof("index")]; -+ char FcObjectTypeNamePool_str51[sizeof("weight")]; -+ char FcObjectTypeNamePool_str52[sizeof("capability")]; -+ char FcObjectTypeNamePool_str53[sizeof("embeddedbitmap")]; -+ char FcObjectTypeNamePool_str58[sizeof("decorative")]; -+ char FcObjectTypeNamePool_str59[sizeof("verticallayout")]; -+ }; -+static const struct FcObjectTypeNamePool_t FcObjectTypeNamePool_contents = -+ { -+ "file", -+ "color", -+ "foundry", -+ "fullname", -+ "pixelsize", -+ "prgname", -+ "fullnamelang", -+ "globaladvance", -+ "postscriptname", -+ "hinting", -+ "minspace", -+ "hintstyle", -+ "fontformat", -+ "fontversion", -+ "fontfeatures", -+ "outline", -+ "autohint", -+ "dpi", -+ "hash", -+ "slant", -+ "aspect", -+ "size", -+ "scale", -+ "symbol", -+ "rasterizer", -+ "scalable", -+ "antialias", -+ "lang", -+ "style", -+ "family", -+ "rgba", -+ "namelang", -+ "stylelang", -+ "familylang", -+ "width", -+ "matrix", -+ "charset", -+ "charwidth", -+ "charheight", -+ "embolden", -+ "lcdfilter", -+ "spacing", -+ "index", -+ "weight", -+ "capability", -+ "embeddedbitmap", -+ "decorative", -+ "verticallayout" -+ }; -+#define FcObjectTypeNamePool ((const char *) &FcObjectTypeNamePool_contents) -+#ifdef __GNUC__ -+__inline -+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -+__attribute__ ((__gnu_inline__)) -+#endif -+#endif -+const struct FcObjectTypeInfo * -+FcObjectTypeLookup (register const char *str, register unsigned int len) -+{ -+ enum -+ { -+ TOTAL_KEYWORDS = 48, -+ MIN_WORD_LENGTH = 3, -+ MAX_WORD_LENGTH = 14, -+ MIN_HASH_VALUE = 4, -+ MAX_HASH_VALUE = 59 -+ }; -+ -+ static const struct FcObjectTypeInfo wordlist[] = -+ { -+ {-1}, {-1}, {-1}, {-1}, -+#line 38 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str4,FC_FILE_OBJECT}, -+#line 64 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str5,FC_COLOR_OBJECT}, -+ {-1}, -+#line 31 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str7,FC_FOUNDRY_OBJECT}, -+#line 22 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str8,FC_FULLNAME_OBJECT}, -+#line 29 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str9,FC_PIXEL_SIZE_OBJECT}, -+#line 61 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str10,FC_PRGNAME_OBJECT}, -+ {-1}, -+#line 23 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str12,FC_FULLNAMELANG_OBJECT}, -+#line 37 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str13,FC_GLOBAL_ADVANCE_OBJECT}, -+#line 63 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str14,FC_POSTSCRIPT_NAME_OBJECT}, -+ {-1}, -+#line 34 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str16,FC_HINTING_OBJECT}, -+#line 46 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str17,FC_MINSPACE_OBJECT}, -+#line 33 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str18,FC_HINT_STYLE_OBJECT}, -+#line 54 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str19,FC_FONTFORMAT_OBJECT}, -+#line 52 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str20,FC_FONTVERSION_OBJECT}, -+#line 60 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str21,FC_FONT_FEATURES_OBJECT}, -+#line 41 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str22,FC_OUTLINE_OBJECT}, -+#line 36 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str23,FC_AUTOHINT_OBJECT}, -+#line 43 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str24,FC_DPI_OBJECT}, -+#line 62 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str25,FC_HASH_OBJECT}, -+#line 24 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str26,FC_SLANT_OBJECT}, -+#line 28 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str27,FC_ASPECT_OBJECT}, -+#line 27 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str28,FC_SIZE_OBJECT}, -+#line 45 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str29,FC_SCALE_OBJECT}, -+#line 65 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str30,FC_SYMBOL_OBJECT}, -+#line 40 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str31,FC_RASTERIZER_OBJECT}, -+#line 42 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str32,FC_SCALABLE_OBJECT}, -+#line 32 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str33,FC_ANTIALIAS_OBJECT}, -+#line 51 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str34,FC_LANG_OBJECT}, -+#line 20 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str35,FC_STYLE_OBJECT}, -+#line 18 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str36,FC_FAMILY_OBJECT}, -+#line 44 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str37,FC_RGBA_OBJECT}, -+#line 59 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str38,FC_NAMELANG_OBJECT}, -+#line 21 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str39,FC_STYLELANG_OBJECT}, -+#line 19 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str40,FC_FAMILYLANG_OBJECT}, -+#line 26 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str41,FC_WIDTH_OBJECT}, -+#line 49 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str42,FC_MATRIX_OBJECT}, -+#line 50 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT}, -+ {-1}, -+#line 47 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT}, -+#line 48 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT}, -+#line 55 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str47,FC_EMBOLDEN_OBJECT}, -+#line 58 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str48,FC_LCD_FILTER_OBJECT}, -+#line 30 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str49,FC_SPACING_OBJECT}, -+#line 39 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str50,FC_INDEX_OBJECT}, -+#line 25 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str51,FC_WEIGHT_OBJECT}, -+#line 53 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str52,FC_CAPABILITY_OBJECT}, -+#line 56 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str53,FC_EMBEDDED_BITMAP_OBJECT}, -+ {-1}, {-1}, {-1}, {-1}, -+#line 57 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str58,FC_DECORATIVE_OBJECT}, -+#line 35 "fcobjshash.gperf" -+ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str59,FC_VERTICAL_LAYOUT_OBJECT} -+ }; -+ -+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) -+ { -+ register int key = FcObjectTypeHash (str, len); -+ -+ if (key <= MAX_HASH_VALUE && key >= 0) -+ { -+ register int o = wordlist[key].name; -+ if (o >= 0) -+ { -+ register const char *s = o + FcObjectTypeNamePool; -+ -+ if (*str == *s && !strcmp (str + 1, s + 1)) -+ return &wordlist[key]; -+ } -+ } -+ } -+ return 0; -+} -diff --git a/src/fcstdint.h b/src/fcstdint.h -new file mode 100644 -index 0000000..ff8e647 ---- /dev/null -+++ b/src/fcstdint.h -@@ -0,0 +1,9 @@ -+#ifndef _FONTCONFIG_SRC_FCSTDINT_H -+#define _FONTCONFIG_SRC_FCSTDINT_H 1 -+#ifndef _GENERATED_STDINT_H -+#define _GENERATED_STDINT_H "fontconfig 2.12.1" -+/* generated using gnu compiler gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3) */ -+#define _STDINT_HAVE_STDINT_H 1 -+#include <stdint.h> -+#endif -+#endif --- -2.10.1 - diff --git a/desktop/fontconfig/rev b/desktop/fontconfig/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/fontconfig/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/fontconfig/src b/desktop/fontconfig/src deleted file mode 160000 -Subproject 6b222c52cdede497ffed629853f947948052dfc diff --git a/desktop/freetype/gen.rc b/desktop/freetype/gen.rc deleted file mode 100644 index e92bc4ad..00000000 --- a/desktop/freetype/gen.rc +++ /dev/null @@ -1,43 +0,0 @@ -cflags\ - -Wall\ - -D FT2_BUILD_LIBRARY\ - -D FT_CONFIG_OPTION_SYSTEM_ZLIB\ - -D HAVE_FCNTL_H\ - -D HAVE_STDINT_H\ - -D HAVE_UNISTD_H\ - -isystem '$builddir'/core/zlib/include\ - -I '$srcdir'/builds/unix\ - -I '$srcdir'/include/freetype/config\ - -I '$srcdir'/include - -cc src/gzip/ftgzip.c '||' core/zlib/headers -lib libfreetype.a builds/unix/ftsystem.c src/^(\ - base/^(\ - ftdebug.c ftbase.c ftbbox.c ftbdf.c ftbitmap.c ftcid.c\ - ftfntfmt.c ftfstype.c ftgasp.c ftglyph.c ftgxval.c ftlcdfil.c\ - ftmm.c ftotval.c ftpatent.c ftpfr.c ftstroke.c ftsynth.c\ - fttype1.c ftwinfnt.c ftinit.c\ - )\ - autofit/autofit.c\ - bdf/bdf.c\ - bzip2/ftbzip2.c\ - cache/ftcache.c\ - cff/cff.c\ - cid/type1cid.c\ - gzip/ftgzip.c.o\ - lzw/ftlzw.c\ - pcf/pcf.c\ - pfr/pfr.c\ - psaux/psaux.c\ - pshinter/pshinter.c\ - psnames/psnames.c\ - raster/raster.c\ - sfnt/sfnt.c\ - smooth/smooth.c\ - truetype/truetype.c\ - type1/type1.c\ - type42/type42.c\ - winfonts/winfnt.c\ -) '$builddir'/core/zlib/libz.a - -fetch git diff --git a/desktop/freetype/rev b/desktop/freetype/rev deleted file mode 100644 index 00750edc..00000000 --- a/desktop/freetype/rev +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/desktop/freetype/src b/desktop/freetype/src deleted file mode 160000 -Subproject f9b1871ded4df726ed962e5eae535c9918705a3 diff --git a/desktop/gen.rc b/desktop/gen.rc deleted file mode 100644 index e0ee85f0..00000000 --- a/desktop/gen.rc +++ /dev/null @@ -1,19 +0,0 @@ -subgen dmenu -subgen expat -subgen fontconfig -subgen freetype -subgen libdrm -subgen libevdev -subgen libffi -subgen libpciaccess -subgen libxkbcommon -subgen pixman -subgen plan9fonts -subgen st -subgen swc -subgen terminus-font -subgen velox -subgen wayland -subgen wayland-protocols -subgen wld -subgen xkeyboard-config diff --git a/desktop/libdrm/config.h b/desktop/libdrm/config.h deleted file mode 100644 index e6cf51e8..00000000 --- a/desktop/libdrm/config.h +++ /dev/null @@ -1,61 +0,0 @@ -#include <config-posix.h> - -/* #undef CRAY_STACKSEG_END */ -/* #undef C_ALLOCA */ -#define HAVE_ALLOCA 1 -#define HAVE_ALLOCA_H 1 -/* #undef HAVE_AMDGPU */ -/* #undef HAVE_CAIRO */ -/* #undef HAVE_CUNIT */ -/* #undef HAVE_EXYNOS */ -/* #undef HAVE_FREEDRENO */ -/* #undef HAVE_FREEDRENO_KGSL */ -/* #undef HAVE_INSTALL_TESTS */ -#define HAVE_LIBDRM_ATOMIC_PRIMITIVES 1 -/* #undef HAVE_LIBUDEV */ -/* #undef HAVE_LIB_ATOMIC_OPS */ -#define HAVE_MEMORY_H 1 -/* #undef HAVE_OMAP */ -/* #undef HAVE_SYS_SYSCTL_H */ -/* #undef HAVE_TEGRA */ -/* #undef HAVE_VALGRIND */ -/* #undef HAVE_VC4 */ -#define HAVE_VISIBILITY 1 -/* #undef HAVE_VMWGFX */ -#define LT_OBJDIR ".libs/" -/* #undef MAJOR_IN_MKDEV */ -/* #undef MAJOR_IN_SYSMACROS */ -#define PACKAGE "libdrm" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=DRI" -#define PACKAGE_NAME "libdrm" -#define PACKAGE_STRING "libdrm 2.4.74" -#define PACKAGE_TARNAME "libdrm" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "2.4.74" -/* #undef STACK_DIRECTION */ -/* #undef UDEV */ -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -#define VERSION "2.4.74" -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif -/* #undef _FILE_OFFSET_BITS */ -/* #undef _LARGE_FILES */ -/* #undef _MINIX */ -/* #undef _POSIX_1_SOURCE */ -/* #undef _POSIX_SOURCE */ -/* #undef size_t */ diff --git a/desktop/libdrm/gen.rc b/desktop/libdrm/gen.rc deleted file mode 100644 index 90f8af65..00000000 --- a/desktop/libdrm/gen.rc +++ /dev/null @@ -1,38 +0,0 @@ -cflags\ - -D HAVE_CONFIG_H\ - -I include\ - -I '$dir' \ - -I '$srcdir' \ - -I '$srcdir'/include/drm - -lib libdrm.a\ - xf86drm.c\ - xf86drmHash.c\ - xf86drmRandom.c\ - xf86drmSL.c\ - xf86drmMode.c - -if(~ intel $config_video_drivers) { - cflags -D 'HAVE_INTEL=1' -isystem desktop/libpciaccess/src/include - lib libdrm_intel.a -d '$builddir'/desktop/libpciaccess/fetch.stamp intel/^(\ - intel_bufmgr.c\ - intel_bufmgr_fake.c\ - intel_bufmgr_gem.c\ - intel_decode.c\ - mm.c\ - ) '$builddir'/desktop/libpciaccess/libpciaccess.a -} - -if(~ nouveau $config_video_drivers) { - cflags -D 'HAVE_NOUVEAU=1' - lib libdrm_nouveau.a nouveau/^(\ - nouveau.c\ - pushbuf.c\ - bufctx.c\ - abi16.c\ - ) -} - -status=() - -fetch git diff --git a/desktop/libdrm/rev b/desktop/libdrm/rev deleted file mode 100644 index 7ed6ff82..00000000 --- a/desktop/libdrm/rev +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/desktop/libdrm/src b/desktop/libdrm/src deleted file mode 160000 -Subproject dae413e43866d36500538c2801cc66a5a89e426 diff --git a/desktop/libevdev/config.h b/desktop/libevdev/config.h deleted file mode 100644 index 54528629..00000000 --- a/desktop/libevdev/config.h +++ /dev/null @@ -1,30 +0,0 @@ -#include <config-posix.h> - -#define HAVE_MEMORY_H 1 -#define LT_OBJDIR ".libs/" -#define PACKAGE "libevdev" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=libevdev" -#define PACKAGE_NAME "libevdev" -#define PACKAGE_STRING "libevdev 1.5.5" -#define PACKAGE_TARNAME "libevdev" -#define PACKAGE_URL "http://freedesktop.org/wiki/Software/libevdev/" -#define PACKAGE_VERSION "1.5.5" -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -#define VERSION "1.5.5" -/* #undef _MINIX */ -/* #undef _POSIX_1_SOURCE */ -/* #undef _POSIX_SOURCE */ diff --git a/desktop/libevdev/gen.rc b/desktop/libevdev/gen.rc deleted file mode 100644 index c65456b9..00000000 --- a/desktop/libevdev/gen.rc +++ /dev/null @@ -1,16 +0,0 @@ -cflags\ - -I include\ - -I '$dir' \ - -I '$srcdir' - -hdrs=libevdev/libevdev.h -for(hdr in $hdrs) { - build '$outdir'/include/$hdr copy '$srcdir'/$hdr - file include/$hdr '$srcdir'/$hdr 644 -} -phony headers '$outdir'/include/$hdrs - -lib libevdev.a libevdev/^(libevdev.c libevdev-names.c) -file lib/libevdev.a '$outdir'/libevdev.a 644 - -fetch git diff --git a/desktop/libevdev/patch/0001-Add-generated-event-names.h.patch b/desktop/libevdev/patch/0001-Add-generated-event-names.h.patch deleted file mode 100644 index 109ea0bb..00000000 --- a/desktop/libevdev/patch/0001-Add-generated-event-names.h.patch +++ /dev/null @@ -1,1445 +0,0 @@ -From 9da8997d2076c0fc8b948125039bfb3ec281d90d Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sun, 26 Jun 2016 23:53:20 -0700 -Subject: [PATCH] Add generated event-names.h - -This file was generated by the make-event-names.py script. ---- - libevdev/event-names.h | 1425 ++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 1425 insertions(+) - create mode 100644 libevdev/event-names.h - -diff --git a/libevdev/event-names.h b/libevdev/event-names.h -new file mode 100644 -index 0000000..b9ede79 ---- /dev/null -+++ b/libevdev/event-names.h -@@ -0,0 +1,1425 @@ -+/* THIS FILE IS GENERATED, DO NOT EDIT */ -+ -+#ifndef EVENT_NAMES_H -+#define EVENT_NAMES_H -+ -+static const char * const ev_map[EV_MAX + 1] = { -+ [EV_SYN] = "EV_SYN", -+ [EV_KEY] = "EV_KEY", -+ [EV_REL] = "EV_REL", -+ [EV_ABS] = "EV_ABS", -+ [EV_MSC] = "EV_MSC", -+ [EV_SW] = "EV_SW", -+ [EV_LED] = "EV_LED", -+ [EV_SND] = "EV_SND", -+ [EV_REP] = "EV_REP", -+ [EV_FF] = "EV_FF", -+ [EV_PWR] = "EV_PWR", -+ [EV_FF_STATUS] = "EV_FF_STATUS", -+ [EV_MAX] = "EV_MAX", -+}; -+ -+static const char * const rel_map[REL_MAX + 1] = { -+ [REL_X] = "REL_X", -+ [REL_Y] = "REL_Y", -+ [REL_Z] = "REL_Z", -+ [REL_RX] = "REL_RX", -+ [REL_RY] = "REL_RY", -+ [REL_RZ] = "REL_RZ", -+ [REL_HWHEEL] = "REL_HWHEEL", -+ [REL_DIAL] = "REL_DIAL", -+ [REL_WHEEL] = "REL_WHEEL", -+ [REL_MISC] = "REL_MISC", -+ [REL_MAX] = "REL_MAX", -+}; -+ -+static const char * const abs_map[ABS_MAX + 1] = { -+ [ABS_X] = "ABS_X", -+ [ABS_Y] = "ABS_Y", -+ [ABS_Z] = "ABS_Z", -+ [ABS_RX] = "ABS_RX", -+ [ABS_RY] = "ABS_RY", -+ [ABS_RZ] = "ABS_RZ", -+ [ABS_THROTTLE] = "ABS_THROTTLE", -+ [ABS_RUDDER] = "ABS_RUDDER", -+ [ABS_WHEEL] = "ABS_WHEEL", -+ [ABS_GAS] = "ABS_GAS", -+ [ABS_BRAKE] = "ABS_BRAKE", -+ [ABS_HAT0X] = "ABS_HAT0X", -+ [ABS_HAT0Y] = "ABS_HAT0Y", -+ [ABS_HAT1X] = "ABS_HAT1X", -+ [ABS_HAT1Y] = "ABS_HAT1Y", -+ [ABS_HAT2X] = "ABS_HAT2X", -+ [ABS_HAT2Y] = "ABS_HAT2Y", -+ [ABS_HAT3X] = "ABS_HAT3X", -+ [ABS_HAT3Y] = "ABS_HAT3Y", -+ [ABS_PRESSURE] = "ABS_PRESSURE", -+ [ABS_DISTANCE] = "ABS_DISTANCE", -+ [ABS_TILT_X] = "ABS_TILT_X", -+ [ABS_TILT_Y] = "ABS_TILT_Y", -+ [ABS_TOOL_WIDTH] = "ABS_TOOL_WIDTH", -+ [ABS_VOLUME] = "ABS_VOLUME", -+ [ABS_MISC] = "ABS_MISC", -+ [ABS_MT_SLOT] = "ABS_MT_SLOT", -+ [ABS_MT_TOUCH_MAJOR] = "ABS_MT_TOUCH_MAJOR", -+ [ABS_MT_TOUCH_MINOR] = "ABS_MT_TOUCH_MINOR", -+ [ABS_MT_WIDTH_MAJOR] = "ABS_MT_WIDTH_MAJOR", -+ [ABS_MT_WIDTH_MINOR] = "ABS_MT_WIDTH_MINOR", -+ [ABS_MT_ORIENTATION] = "ABS_MT_ORIENTATION", -+ [ABS_MT_POSITION_X] = "ABS_MT_POSITION_X", -+ [ABS_MT_POSITION_Y] = "ABS_MT_POSITION_Y", -+ [ABS_MT_TOOL_TYPE] = "ABS_MT_TOOL_TYPE", -+ [ABS_MT_BLOB_ID] = "ABS_MT_BLOB_ID", -+ [ABS_MT_TRACKING_ID] = "ABS_MT_TRACKING_ID", -+ [ABS_MT_PRESSURE] = "ABS_MT_PRESSURE", -+ [ABS_MT_DISTANCE] = "ABS_MT_DISTANCE", -+ [ABS_MT_TOOL_X] = "ABS_MT_TOOL_X", -+ [ABS_MT_TOOL_Y] = "ABS_MT_TOOL_Y", -+ [ABS_MAX] = "ABS_MAX", -+}; -+ -+static const char * const key_map[KEY_MAX + 1] = { -+ [KEY_RESERVED] = "KEY_RESERVED", -+ [KEY_ESC] = "KEY_ESC", -+ [KEY_1] = "KEY_1", -+ [KEY_2] = "KEY_2", -+ [KEY_3] = "KEY_3", -+ [KEY_4] = "KEY_4", -+ [KEY_5] = "KEY_5", -+ [KEY_6] = "KEY_6", -+ [KEY_7] = "KEY_7", -+ [KEY_8] = "KEY_8", -+ [KEY_9] = "KEY_9", -+ [KEY_0] = "KEY_0", -+ [KEY_MINUS] = "KEY_MINUS", -+ [KEY_EQUAL] = "KEY_EQUAL", -+ [KEY_BACKSPACE] = "KEY_BACKSPACE", -+ [KEY_TAB] = "KEY_TAB", -+ [KEY_Q] = "KEY_Q", -+ [KEY_W] = "KEY_W", -+ [KEY_E] = "KEY_E", -+ [KEY_R] = "KEY_R", -+ [KEY_T] = "KEY_T", -+ [KEY_Y] = "KEY_Y", -+ [KEY_U] = "KEY_U", -+ [KEY_I] = "KEY_I", -+ [KEY_O] = "KEY_O", -+ [KEY_P] = "KEY_P", -+ [KEY_LEFTBRACE] = "KEY_LEFTBRACE", -+ [KEY_RIGHTBRACE] = "KEY_RIGHTBRACE", -+ [KEY_ENTER] = "KEY_ENTER", -+ [KEY_LEFTCTRL] = "KEY_LEFTCTRL", -+ [KEY_A] = "KEY_A", -+ [KEY_S] = "KEY_S", -+ [KEY_D] = "KEY_D", -+ [KEY_F] = "KEY_F", -+ [KEY_G] = "KEY_G", -+ [KEY_H] = "KEY_H", -+ [KEY_J] = "KEY_J", -+ [KEY_K] = "KEY_K", -+ [KEY_L] = "KEY_L", -+ [KEY_SEMICOLON] = "KEY_SEMICOLON", -+ [KEY_APOSTROPHE] = "KEY_APOSTROPHE", -+ [KEY_GRAVE] = "KEY_GRAVE", -+ [KEY_LEFTSHIFT] = "KEY_LEFTSHIFT", -+ [KEY_BACKSLASH] = "KEY_BACKSLASH", -+ [KEY_Z] = "KEY_Z", -+ [KEY_X] = "KEY_X", -+ [KEY_C] = "KEY_C", -+ [KEY_V] = "KEY_V", -+ [KEY_B] = "KEY_B", -+ [KEY_N] = "KEY_N", -+ [KEY_M] = "KEY_M", -+ [KEY_COMMA] = "KEY_COMMA", -+ [KEY_DOT] = "KEY_DOT", -+ [KEY_SLASH] = "KEY_SLASH", -+ [KEY_RIGHTSHIFT] = "KEY_RIGHTSHIFT", -+ [KEY_KPASTERISK] = "KEY_KPASTERISK", -+ [KEY_LEFTALT] = "KEY_LEFTALT", -+ [KEY_SPACE] = "KEY_SPACE", -+ [KEY_CAPSLOCK] = "KEY_CAPSLOCK", -+ [KEY_F1] = "KEY_F1", -+ [KEY_F2] = "KEY_F2", -+ [KEY_F3] = "KEY_F3", -+ [KEY_F4] = "KEY_F4", -+ [KEY_F5] = "KEY_F5", -+ [KEY_F6] = "KEY_F6", -+ [KEY_F7] = "KEY_F7", -+ [KEY_F8] = "KEY_F8", -+ [KEY_F9] = "KEY_F9", -+ [KEY_F10] = "KEY_F10", -+ [KEY_NUMLOCK] = "KEY_NUMLOCK", -+ [KEY_SCROLLLOCK] = "KEY_SCROLLLOCK", -+ [KEY_KP7] = "KEY_KP7", -+ [KEY_KP8] = "KEY_KP8", -+ [KEY_KP9] = "KEY_KP9", -+ [KEY_KPMINUS] = "KEY_KPMINUS", -+ [KEY_KP4] = "KEY_KP4", -+ [KEY_KP5] = "KEY_KP5", -+ [KEY_KP6] = "KEY_KP6", -+ [KEY_KPPLUS] = "KEY_KPPLUS", -+ [KEY_KP1] = "KEY_KP1", -+ [KEY_KP2] = "KEY_KP2", -+ [KEY_KP3] = "KEY_KP3", -+ [KEY_KP0] = "KEY_KP0", -+ [KEY_KPDOT] = "KEY_KPDOT", -+ [KEY_ZENKAKUHANKAKU] = "KEY_ZENKAKUHANKAKU", -+ [KEY_102ND] = "KEY_102ND", -+ [KEY_F11] = "KEY_F11", -+ [KEY_F12] = "KEY_F12", -+ [KEY_RO] = "KEY_RO", -+ [KEY_KATAKANA] = "KEY_KATAKANA", -+ [KEY_HIRAGANA] = "KEY_HIRAGANA", -+ [KEY_HENKAN] = "KEY_HENKAN", -+ [KEY_KATAKANAHIRAGANA] = "KEY_KATAKANAHIRAGANA", -+ [KEY_MUHENKAN] = "KEY_MUHENKAN", -+ [KEY_KPJPCOMMA] = "KEY_KPJPCOMMA", -+ [KEY_KPENTER] = "KEY_KPENTER", -+ [KEY_RIGHTCTRL] = "KEY_RIGHTCTRL", -+ [KEY_KPSLASH] = "KEY_KPSLASH", -+ [KEY_SYSRQ] = "KEY_SYSRQ", -+ [KEY_RIGHTALT] = "KEY_RIGHTALT", -+ [KEY_LINEFEED] = "KEY_LINEFEED", -+ [KEY_HOME] = "KEY_HOME", -+ [KEY_UP] = "KEY_UP", -+ [KEY_PAGEUP] = "KEY_PAGEUP", -+ [KEY_LEFT] = "KEY_LEFT", -+ [KEY_RIGHT] = "KEY_RIGHT", -+ [KEY_END] = "KEY_END", -+ [KEY_DOWN] = "KEY_DOWN", -+ [KEY_PAGEDOWN] = "KEY_PAGEDOWN", -+ [KEY_INSERT] = "KEY_INSERT", -+ [KEY_DELETE] = "KEY_DELETE", -+ [KEY_MACRO] = "KEY_MACRO", -+ [KEY_MUTE] = "KEY_MUTE", -+ [KEY_VOLUMEDOWN] = "KEY_VOLUMEDOWN", -+ [KEY_VOLUMEUP] = "KEY_VOLUMEUP", -+ [KEY_POWER] = "KEY_POWER", -+ [KEY_KPEQUAL] = "KEY_KPEQUAL", -+ [KEY_KPPLUSMINUS] = "KEY_KPPLUSMINUS", -+ [KEY_PAUSE] = "KEY_PAUSE", -+ [KEY_SCALE] = "KEY_SCALE", -+ [KEY_KPCOMMA] = "KEY_KPCOMMA", -+ [KEY_HANGEUL] = "KEY_HANGEUL", -+ [KEY_HANJA] = "KEY_HANJA", -+ [KEY_YEN] = "KEY_YEN", -+ [KEY_LEFTMETA] = "KEY_LEFTMETA", -+ [KEY_RIGHTMETA] = "KEY_RIGHTMETA", -+ [KEY_COMPOSE] = "KEY_COMPOSE", -+ [KEY_STOP] = "KEY_STOP", -+ [KEY_AGAIN] = "KEY_AGAIN", -+ [KEY_PROPS] = "KEY_PROPS", -+ [KEY_UNDO] = "KEY_UNDO", -+ [KEY_FRONT] = "KEY_FRONT", -+ [KEY_COPY] = "KEY_COPY", -+ [KEY_OPEN] = "KEY_OPEN", -+ [KEY_PASTE] = "KEY_PASTE", -+ [KEY_FIND] = "KEY_FIND", -+ [KEY_CUT] = "KEY_CUT", -+ [KEY_HELP] = "KEY_HELP", -+ [KEY_MENU] = "KEY_MENU", -+ [KEY_CALC] = "KEY_CALC", -+ [KEY_SETUP] = "KEY_SETUP", -+ [KEY_SLEEP] = "KEY_SLEEP", -+ [KEY_WAKEUP] = "KEY_WAKEUP", -+ [KEY_FILE] = "KEY_FILE", -+ [KEY_SENDFILE] = "KEY_SENDFILE", -+ [KEY_DELETEFILE] = "KEY_DELETEFILE", -+ [KEY_XFER] = "KEY_XFER", -+ [KEY_PROG1] = "KEY_PROG1", -+ [KEY_PROG2] = "KEY_PROG2", -+ [KEY_WWW] = "KEY_WWW", -+ [KEY_MSDOS] = "KEY_MSDOS", -+ [KEY_COFFEE] = "KEY_COFFEE", -+ [KEY_ROTATE_DISPLAY] = "KEY_ROTATE_DISPLAY", -+ [KEY_CYCLEWINDOWS] = "KEY_CYCLEWINDOWS", -+ [KEY_MAIL] = "KEY_MAIL", -+ [KEY_BOOKMARKS] = "KEY_BOOKMARKS", -+ [KEY_COMPUTER] = "KEY_COMPUTER", -+ [KEY_BACK] = "KEY_BACK", -+ [KEY_FORWARD] = "KEY_FORWARD", -+ [KEY_CLOSECD] = "KEY_CLOSECD", -+ [KEY_EJECTCD] = "KEY_EJECTCD", -+ [KEY_EJECTCLOSECD] = "KEY_EJECTCLOSECD", -+ [KEY_NEXTSONG] = "KEY_NEXTSONG", -+ [KEY_PLAYPAUSE] = "KEY_PLAYPAUSE", -+ [KEY_PREVIOUSSONG] = "KEY_PREVIOUSSONG", -+ [KEY_STOPCD] = "KEY_STOPCD", -+ [KEY_RECORD] = "KEY_RECORD", -+ [KEY_REWIND] = "KEY_REWIND", -+ [KEY_PHONE] = "KEY_PHONE", -+ [KEY_ISO] = "KEY_ISO", -+ [KEY_CONFIG] = "KEY_CONFIG", -+ [KEY_HOMEPAGE] = "KEY_HOMEPAGE", -+ [KEY_REFRESH] = "KEY_REFRESH", -+ [KEY_EXIT] = "KEY_EXIT", -+ [KEY_MOVE] = "KEY_MOVE", -+ [KEY_EDIT] = "KEY_EDIT", -+ [KEY_SCROLLUP] = "KEY_SCROLLUP", -+ [KEY_SCROLLDOWN] = "KEY_SCROLLDOWN", -+ [KEY_KPLEFTPAREN] = "KEY_KPLEFTPAREN", -+ [KEY_KPRIGHTPAREN] = "KEY_KPRIGHTPAREN", -+ [KEY_NEW] = "KEY_NEW", -+ [KEY_REDO] = "KEY_REDO", -+ [KEY_F13] = "KEY_F13", -+ [KEY_F14] = "KEY_F14", -+ [KEY_F15] = "KEY_F15", -+ [KEY_F16] = "KEY_F16", -+ [KEY_F17] = "KEY_F17", -+ [KEY_F18] = "KEY_F18", -+ [KEY_F19] = "KEY_F19", -+ [KEY_F20] = "KEY_F20", -+ [KEY_F21] = "KEY_F21", -+ [KEY_F22] = "KEY_F22", -+ [KEY_F23] = "KEY_F23", -+ [KEY_F24] = "KEY_F24", -+ [KEY_PLAYCD] = "KEY_PLAYCD", -+ [KEY_PAUSECD] = "KEY_PAUSECD", -+ [KEY_PROG3] = "KEY_PROG3", -+ [KEY_PROG4] = "KEY_PROG4", -+ [KEY_DASHBOARD] = "KEY_DASHBOARD", -+ [KEY_SUSPEND] = "KEY_SUSPEND", -+ [KEY_CLOSE] = "KEY_CLOSE", -+ [KEY_PLAY] = "KEY_PLAY", -+ [KEY_FASTFORWARD] = "KEY_FASTFORWARD", -+ [KEY_BASSBOOST] = "KEY_BASSBOOST", -+ [KEY_PRINT] = "KEY_PRINT", -+ [KEY_HP] = "KEY_HP", -+ [KEY_CAMERA] = "KEY_CAMERA", -+ [KEY_SOUND] = "KEY_SOUND", -+ [KEY_QUESTION] = "KEY_QUESTION", -+ [KEY_EMAIL] = "KEY_EMAIL", -+ [KEY_CHAT] = "KEY_CHAT", -+ [KEY_SEARCH] = "KEY_SEARCH", -+ [KEY_CONNECT] = "KEY_CONNECT", -+ [KEY_FINANCE] = "KEY_FINANCE", -+ [KEY_SPORT] = "KEY_SPORT", -+ [KEY_SHOP] = "KEY_SHOP", -+ [KEY_ALTERASE] = "KEY_ALTERASE", -+ [KEY_CANCEL] = "KEY_CANCEL", -+ [KEY_BRIGHTNESSDOWN] = "KEY_BRIGHTNESSDOWN", -+ [KEY_BRIGHTNESSUP] = "KEY_BRIGHTNESSUP", -+ [KEY_MEDIA] = "KEY_MEDIA", -+ [KEY_SWITCHVIDEOMODE] = "KEY_SWITCHVIDEOMODE", -+ [KEY_KBDILLUMTOGGLE] = "KEY_KBDILLUMTOGGLE", -+ [KEY_KBDILLUMDOWN] = "KEY_KBDILLUMDOWN", -+ [KEY_KBDILLUMUP] = "KEY_KBDILLUMUP", -+ [KEY_SEND] = "KEY_SEND", -+ [KEY_REPLY] = "KEY_REPLY", -+ [KEY_FORWARDMAIL] = "KEY_FORWARDMAIL", -+ [KEY_SAVE] = "KEY_SAVE", -+ [KEY_DOCUMENTS] = "KEY_DOCUMENTS", -+ [KEY_BATTERY] = "KEY_BATTERY", -+ [KEY_BLUETOOTH] = "KEY_BLUETOOTH", -+ [KEY_WLAN] = "KEY_WLAN", -+ [KEY_UWB] = "KEY_UWB", -+ [KEY_UNKNOWN] = "KEY_UNKNOWN", -+ [KEY_VIDEO_NEXT] = "KEY_VIDEO_NEXT", -+ [KEY_VIDEO_PREV] = "KEY_VIDEO_PREV", -+ [KEY_BRIGHTNESS_CYCLE] = "KEY_BRIGHTNESS_CYCLE", -+ [KEY_BRIGHTNESS_AUTO] = "KEY_BRIGHTNESS_AUTO", -+ [KEY_DISPLAY_OFF] = "KEY_DISPLAY_OFF", -+ [KEY_WWAN] = "KEY_WWAN", -+ [KEY_RFKILL] = "KEY_RFKILL", -+ [KEY_MICMUTE] = "KEY_MICMUTE", -+ [KEY_OK] = "KEY_OK", -+ [KEY_SELECT] = "KEY_SELECT", -+ [KEY_GOTO] = "KEY_GOTO", -+ [KEY_CLEAR] = "KEY_CLEAR", -+ [KEY_POWER2] = "KEY_POWER2", -+ [KEY_OPTION] = "KEY_OPTION", -+ [KEY_INFO] = "KEY_INFO", -+ [KEY_TIME] = "KEY_TIME", -+ [KEY_VENDOR] = "KEY_VENDOR", -+ [KEY_ARCHIVE] = "KEY_ARCHIVE", -+ [KEY_PROGRAM] = "KEY_PROGRAM", -+ [KEY_CHANNEL] = "KEY_CHANNEL", -+ [KEY_FAVORITES] = "KEY_FAVORITES", -+ [KEY_EPG] = "KEY_EPG", -+ [KEY_PVR] = "KEY_PVR", -+ [KEY_MHP] = "KEY_MHP", -+ [KEY_LANGUAGE] = "KEY_LANGUAGE", -+ [KEY_TITLE] = "KEY_TITLE", -+ [KEY_SUBTITLE] = "KEY_SUBTITLE", -+ [KEY_ANGLE] = "KEY_ANGLE", -+ [KEY_ZOOM] = "KEY_ZOOM", -+ [KEY_MODE] = "KEY_MODE", -+ [KEY_KEYBOARD] = "KEY_KEYBOARD", -+ [KEY_SCREEN] = "KEY_SCREEN", -+ [KEY_PC] = "KEY_PC", -+ [KEY_TV] = "KEY_TV", -+ [KEY_TV2] = "KEY_TV2", -+ [KEY_VCR] = "KEY_VCR", -+ [KEY_VCR2] = "KEY_VCR2", -+ [KEY_SAT] = "KEY_SAT", -+ [KEY_SAT2] = "KEY_SAT2", -+ [KEY_CD] = "KEY_CD", -+ [KEY_TAPE] = "KEY_TAPE", -+ [KEY_RADIO] = "KEY_RADIO", -+ [KEY_TUNER] = "KEY_TUNER", -+ [KEY_PLAYER] = "KEY_PLAYER", -+ [KEY_TEXT] = "KEY_TEXT", -+ [KEY_DVD] = "KEY_DVD", -+ [KEY_AUX] = "KEY_AUX", -+ [KEY_MP3] = "KEY_MP3", -+ [KEY_AUDIO] = "KEY_AUDIO", -+ [KEY_VIDEO] = "KEY_VIDEO", -+ [KEY_DIRECTORY] = "KEY_DIRECTORY", -+ [KEY_LIST] = "KEY_LIST", -+ [KEY_MEMO] = "KEY_MEMO", -+ [KEY_CALENDAR] = "KEY_CALENDAR", -+ [KEY_RED] = "KEY_RED", -+ [KEY_GREEN] = "KEY_GREEN", -+ [KEY_YELLOW] = "KEY_YELLOW", -+ [KEY_BLUE] = "KEY_BLUE", -+ [KEY_CHANNELUP] = "KEY_CHANNELUP", -+ [KEY_CHANNELDOWN] = "KEY_CHANNELDOWN", -+ [KEY_FIRST] = "KEY_FIRST", -+ [KEY_LAST] = "KEY_LAST", -+ [KEY_AB] = "KEY_AB", -+ [KEY_NEXT] = "KEY_NEXT", -+ [KEY_RESTART] = "KEY_RESTART", -+ [KEY_SLOW] = "KEY_SLOW", -+ [KEY_SHUFFLE] = "KEY_SHUFFLE", -+ [KEY_BREAK] = "KEY_BREAK", -+ [KEY_PREVIOUS] = "KEY_PREVIOUS", -+ [KEY_DIGITS] = "KEY_DIGITS", -+ [KEY_TEEN] = "KEY_TEEN", -+ [KEY_TWEN] = "KEY_TWEN", -+ [KEY_VIDEOPHONE] = "KEY_VIDEOPHONE", -+ [KEY_GAMES] = "KEY_GAMES", -+ [KEY_ZOOMIN] = "KEY_ZOOMIN", -+ [KEY_ZOOMOUT] = "KEY_ZOOMOUT", -+ [KEY_ZOOMRESET] = "KEY_ZOOMRESET", -+ [KEY_WORDPROCESSOR] = "KEY_WORDPROCESSOR", -+ [KEY_EDITOR] = "KEY_EDITOR", -+ [KEY_SPREADSHEET] = "KEY_SPREADSHEET", -+ [KEY_GRAPHICSEDITOR] = "KEY_GRAPHICSEDITOR", -+ [KEY_PRESENTATION] = "KEY_PRESENTATION", -+ [KEY_DATABASE] = "KEY_DATABASE", -+ [KEY_NEWS] = "KEY_NEWS", -+ [KEY_VOICEMAIL] = "KEY_VOICEMAIL", -+ [KEY_ADDRESSBOOK] = "KEY_ADDRESSBOOK", -+ [KEY_MESSENGER] = "KEY_MESSENGER", -+ [KEY_DISPLAYTOGGLE] = "KEY_DISPLAYTOGGLE", -+ [KEY_SPELLCHECK] = "KEY_SPELLCHECK", -+ [KEY_LOGOFF] = "KEY_LOGOFF", -+ [KEY_DOLLAR] = "KEY_DOLLAR", -+ [KEY_EURO] = "KEY_EURO", -+ [KEY_FRAMEBACK] = "KEY_FRAMEBACK", -+ [KEY_FRAMEFORWARD] = "KEY_FRAMEFORWARD", -+ [KEY_CONTEXT_MENU] = "KEY_CONTEXT_MENU", -+ [KEY_MEDIA_REPEAT] = "KEY_MEDIA_REPEAT", -+ [KEY_10CHANNELSUP] = "KEY_10CHANNELSUP", -+ [KEY_10CHANNELSDOWN] = "KEY_10CHANNELSDOWN", -+ [KEY_IMAGES] = "KEY_IMAGES", -+ [KEY_DEL_EOL] = "KEY_DEL_EOL", -+ [KEY_DEL_EOS] = "KEY_DEL_EOS", -+ [KEY_INS_LINE] = "KEY_INS_LINE", -+ [KEY_DEL_LINE] = "KEY_DEL_LINE", -+ [KEY_FN] = "KEY_FN", -+ [KEY_FN_ESC] = "KEY_FN_ESC", -+ [KEY_FN_F1] = "KEY_FN_F1", -+ [KEY_FN_F2] = "KEY_FN_F2", -+ [KEY_FN_F3] = "KEY_FN_F3", -+ [KEY_FN_F4] = "KEY_FN_F4", -+ [KEY_FN_F5] = "KEY_FN_F5", -+ [KEY_FN_F6] = "KEY_FN_F6", -+ [KEY_FN_F7] = "KEY_FN_F7", -+ [KEY_FN_F8] = "KEY_FN_F8", -+ [KEY_FN_F9] = "KEY_FN_F9", -+ [KEY_FN_F10] = "KEY_FN_F10", -+ [KEY_FN_F11] = "KEY_FN_F11", -+ [KEY_FN_F12] = "KEY_FN_F12", -+ [KEY_FN_1] = "KEY_FN_1", -+ [KEY_FN_2] = "KEY_FN_2", -+ [KEY_FN_D] = "KEY_FN_D", -+ [KEY_FN_E] = "KEY_FN_E", -+ [KEY_FN_F] = "KEY_FN_F", -+ [KEY_FN_S] = "KEY_FN_S", -+ [KEY_FN_B] = "KEY_FN_B", -+ [KEY_BRL_DOT1] = "KEY_BRL_DOT1", -+ [KEY_BRL_DOT2] = "KEY_BRL_DOT2", -+ [KEY_BRL_DOT3] = "KEY_BRL_DOT3", -+ [KEY_BRL_DOT4] = "KEY_BRL_DOT4", -+ [KEY_BRL_DOT5] = "KEY_BRL_DOT5", -+ [KEY_BRL_DOT6] = "KEY_BRL_DOT6", -+ [KEY_BRL_DOT7] = "KEY_BRL_DOT7", -+ [KEY_BRL_DOT8] = "KEY_BRL_DOT8", -+ [KEY_BRL_DOT9] = "KEY_BRL_DOT9", -+ [KEY_BRL_DOT10] = "KEY_BRL_DOT10", -+ [KEY_NUMERIC_0] = "KEY_NUMERIC_0", -+ [KEY_NUMERIC_1] = "KEY_NUMERIC_1", -+ [KEY_NUMERIC_2] = "KEY_NUMERIC_2", -+ [KEY_NUMERIC_3] = "KEY_NUMERIC_3", -+ [KEY_NUMERIC_4] = "KEY_NUMERIC_4", -+ [KEY_NUMERIC_5] = "KEY_NUMERIC_5", -+ [KEY_NUMERIC_6] = "KEY_NUMERIC_6", -+ [KEY_NUMERIC_7] = "KEY_NUMERIC_7", -+ [KEY_NUMERIC_8] = "KEY_NUMERIC_8", -+ [KEY_NUMERIC_9] = "KEY_NUMERIC_9", -+ [KEY_NUMERIC_STAR] = "KEY_NUMERIC_STAR", -+ [KEY_NUMERIC_POUND] = "KEY_NUMERIC_POUND", -+ [KEY_NUMERIC_A] = "KEY_NUMERIC_A", -+ [KEY_NUMERIC_B] = "KEY_NUMERIC_B", -+ [KEY_NUMERIC_C] = "KEY_NUMERIC_C", -+ [KEY_NUMERIC_D] = "KEY_NUMERIC_D", -+ [KEY_CAMERA_FOCUS] = "KEY_CAMERA_FOCUS", -+ [KEY_WPS_BUTTON] = "KEY_WPS_BUTTON", -+ [KEY_TOUCHPAD_TOGGLE] = "KEY_TOUCHPAD_TOGGLE", -+ [KEY_TOUCHPAD_ON] = "KEY_TOUCHPAD_ON", -+ [KEY_TOUCHPAD_OFF] = "KEY_TOUCHPAD_OFF", -+ [KEY_CAMERA_ZOOMIN] = "KEY_CAMERA_ZOOMIN", -+ [KEY_CAMERA_ZOOMOUT] = "KEY_CAMERA_ZOOMOUT", -+ [KEY_CAMERA_UP] = "KEY_CAMERA_UP", -+ [KEY_CAMERA_DOWN] = "KEY_CAMERA_DOWN", -+ [KEY_CAMERA_LEFT] = "KEY_CAMERA_LEFT", -+ [KEY_CAMERA_RIGHT] = "KEY_CAMERA_RIGHT", -+ [KEY_ATTENDANT_ON] = "KEY_ATTENDANT_ON", -+ [KEY_ATTENDANT_OFF] = "KEY_ATTENDANT_OFF", -+ [KEY_ATTENDANT_TOGGLE] = "KEY_ATTENDANT_TOGGLE", -+ [KEY_LIGHTS_TOGGLE] = "KEY_LIGHTS_TOGGLE", -+ [KEY_ALS_TOGGLE] = "KEY_ALS_TOGGLE", -+ [KEY_BUTTONCONFIG] = "KEY_BUTTONCONFIG", -+ [KEY_TASKMANAGER] = "KEY_TASKMANAGER", -+ [KEY_JOURNAL] = "KEY_JOURNAL", -+ [KEY_CONTROLPANEL] = "KEY_CONTROLPANEL", -+ [KEY_APPSELECT] = "KEY_APPSELECT", -+ [KEY_SCREENSAVER] = "KEY_SCREENSAVER", -+ [KEY_VOICECOMMAND] = "KEY_VOICECOMMAND", -+ [KEY_BRIGHTNESS_MIN] = "KEY_BRIGHTNESS_MIN", -+ [KEY_BRIGHTNESS_MAX] = "KEY_BRIGHTNESS_MAX", -+ [KEY_KBDINPUTASSIST_PREV] = "KEY_KBDINPUTASSIST_PREV", -+ [KEY_KBDINPUTASSIST_NEXT] = "KEY_KBDINPUTASSIST_NEXT", -+ [KEY_KBDINPUTASSIST_PREVGROUP] = "KEY_KBDINPUTASSIST_PREVGROUP", -+ [KEY_KBDINPUTASSIST_NEXTGROUP] = "KEY_KBDINPUTASSIST_NEXTGROUP", -+ [KEY_KBDINPUTASSIST_ACCEPT] = "KEY_KBDINPUTASSIST_ACCEPT", -+ [KEY_KBDINPUTASSIST_CANCEL] = "KEY_KBDINPUTASSIST_CANCEL", -+ [KEY_MAX] = "KEY_MAX", -+ [BTN_0] = "BTN_0", -+ [BTN_1] = "BTN_1", -+ [BTN_2] = "BTN_2", -+ [BTN_3] = "BTN_3", -+ [BTN_4] = "BTN_4", -+ [BTN_5] = "BTN_5", -+ [BTN_6] = "BTN_6", -+ [BTN_7] = "BTN_7", -+ [BTN_8] = "BTN_8", -+ [BTN_9] = "BTN_9", -+ [BTN_LEFT] = "BTN_LEFT", -+ [BTN_RIGHT] = "BTN_RIGHT", -+ [BTN_MIDDLE] = "BTN_MIDDLE", -+ [BTN_SIDE] = "BTN_SIDE", -+ [BTN_EXTRA] = "BTN_EXTRA", -+ [BTN_FORWARD] = "BTN_FORWARD", -+ [BTN_BACK] = "BTN_BACK", -+ [BTN_TASK] = "BTN_TASK", -+ [BTN_TRIGGER] = "BTN_TRIGGER", -+ [BTN_THUMB] = "BTN_THUMB", -+ [BTN_THUMB2] = "BTN_THUMB2", -+ [BTN_TOP] = "BTN_TOP", -+ [BTN_TOP2] = "BTN_TOP2", -+ [BTN_PINKIE] = "BTN_PINKIE", -+ [BTN_BASE] = "BTN_BASE", -+ [BTN_BASE2] = "BTN_BASE2", -+ [BTN_BASE3] = "BTN_BASE3", -+ [BTN_BASE4] = "BTN_BASE4", -+ [BTN_BASE5] = "BTN_BASE5", -+ [BTN_BASE6] = "BTN_BASE6", -+ [BTN_DEAD] = "BTN_DEAD", -+ [BTN_SOUTH] = "BTN_SOUTH", -+ [BTN_EAST] = "BTN_EAST", -+ [BTN_C] = "BTN_C", -+ [BTN_NORTH] = "BTN_NORTH", -+ [BTN_WEST] = "BTN_WEST", -+ [BTN_Z] = "BTN_Z", -+ [BTN_TL] = "BTN_TL", -+ [BTN_TR] = "BTN_TR", -+ [BTN_TL2] = "BTN_TL2", -+ [BTN_TR2] = "BTN_TR2", -+ [BTN_SELECT] = "BTN_SELECT", -+ [BTN_START] = "BTN_START", -+ [BTN_MODE] = "BTN_MODE", -+ [BTN_THUMBL] = "BTN_THUMBL", -+ [BTN_THUMBR] = "BTN_THUMBR", -+ [BTN_TOOL_PEN] = "BTN_TOOL_PEN", -+ [BTN_TOOL_RUBBER] = "BTN_TOOL_RUBBER", -+ [BTN_TOOL_BRUSH] = "BTN_TOOL_BRUSH", -+ [BTN_TOOL_PENCIL] = "BTN_TOOL_PENCIL", -+ [BTN_TOOL_AIRBRUSH] = "BTN_TOOL_AIRBRUSH", -+ [BTN_TOOL_FINGER] = "BTN_TOOL_FINGER", -+ [BTN_TOOL_MOUSE] = "BTN_TOOL_MOUSE", -+ [BTN_TOOL_LENS] = "BTN_TOOL_LENS", -+ [BTN_TOOL_QUINTTAP] = "BTN_TOOL_QUINTTAP", -+ [BTN_TOUCH] = "BTN_TOUCH", -+ [BTN_STYLUS] = "BTN_STYLUS", -+ [BTN_STYLUS2] = "BTN_STYLUS2", -+ [BTN_TOOL_DOUBLETAP] = "BTN_TOOL_DOUBLETAP", -+ [BTN_TOOL_TRIPLETAP] = "BTN_TOOL_TRIPLETAP", -+ [BTN_TOOL_QUADTAP] = "BTN_TOOL_QUADTAP", -+ [BTN_GEAR_DOWN] = "BTN_GEAR_DOWN", -+ [BTN_GEAR_UP] = "BTN_GEAR_UP", -+ [BTN_DPAD_LEFT] = "BTN_DPAD_LEFT", -+ [BTN_TRIGGER_HAPPY2] = "BTN_TRIGGER_HAPPY2", -+ [BTN_TRIGGER_HAPPY1] = "BTN_TRIGGER_HAPPY1", -+ [BTN_DPAD_UP] = "BTN_DPAD_UP", -+ [BTN_TRIGGER_HAPPY3] = "BTN_TRIGGER_HAPPY3", -+ [BTN_TRIGGER_HAPPY4] = "BTN_TRIGGER_HAPPY4", -+ [BTN_TRIGGER_HAPPY5] = "BTN_TRIGGER_HAPPY5", -+ [BTN_TRIGGER_HAPPY6] = "BTN_TRIGGER_HAPPY6", -+ [BTN_TRIGGER_HAPPY7] = "BTN_TRIGGER_HAPPY7", -+ [BTN_TRIGGER_HAPPY8] = "BTN_TRIGGER_HAPPY8", -+ [BTN_TRIGGER_HAPPY9] = "BTN_TRIGGER_HAPPY9", -+ [BTN_TRIGGER_HAPPY10] = "BTN_TRIGGER_HAPPY10", -+ [BTN_TRIGGER_HAPPY11] = "BTN_TRIGGER_HAPPY11", -+ [BTN_TRIGGER_HAPPY12] = "BTN_TRIGGER_HAPPY12", -+ [BTN_TRIGGER_HAPPY13] = "BTN_TRIGGER_HAPPY13", -+ [BTN_TRIGGER_HAPPY14] = "BTN_TRIGGER_HAPPY14", -+ [BTN_TRIGGER_HAPPY15] = "BTN_TRIGGER_HAPPY15", -+ [BTN_TRIGGER_HAPPY16] = "BTN_TRIGGER_HAPPY16", -+ [BTN_TRIGGER_HAPPY17] = "BTN_TRIGGER_HAPPY17", -+ [BTN_TRIGGER_HAPPY18] = "BTN_TRIGGER_HAPPY18", -+ [BTN_TRIGGER_HAPPY19] = "BTN_TRIGGER_HAPPY19", -+ [BTN_DPAD_RIGHT] = "BTN_DPAD_RIGHT", -+ [BTN_TRIGGER_HAPPY21] = "BTN_TRIGGER_HAPPY21", -+ [BTN_TRIGGER_HAPPY22] = "BTN_TRIGGER_HAPPY22", -+ [BTN_TRIGGER_HAPPY23] = "BTN_TRIGGER_HAPPY23", -+ [BTN_TRIGGER_HAPPY24] = "BTN_TRIGGER_HAPPY24", -+ [BTN_TRIGGER_HAPPY25] = "BTN_TRIGGER_HAPPY25", -+ [BTN_TRIGGER_HAPPY26] = "BTN_TRIGGER_HAPPY26", -+ [BTN_TRIGGER_HAPPY27] = "BTN_TRIGGER_HAPPY27", -+ [BTN_TRIGGER_HAPPY28] = "BTN_TRIGGER_HAPPY28", -+ [BTN_TRIGGER_HAPPY29] = "BTN_TRIGGER_HAPPY29", -+ [BTN_TRIGGER_HAPPY30] = "BTN_TRIGGER_HAPPY30", -+ [BTN_TRIGGER_HAPPY31] = "BTN_TRIGGER_HAPPY31", -+ [BTN_TRIGGER_HAPPY32] = "BTN_TRIGGER_HAPPY32", -+ [BTN_TRIGGER_HAPPY33] = "BTN_TRIGGER_HAPPY33", -+ [BTN_TRIGGER_HAPPY34] = "BTN_TRIGGER_HAPPY34", -+ [BTN_TRIGGER_HAPPY35] = "BTN_TRIGGER_HAPPY35", -+ [BTN_TRIGGER_HAPPY36] = "BTN_TRIGGER_HAPPY36", -+ [BTN_TRIGGER_HAPPY37] = "BTN_TRIGGER_HAPPY37", -+ [BTN_TRIGGER_HAPPY38] = "BTN_TRIGGER_HAPPY38", -+ [BTN_TRIGGER_HAPPY39] = "BTN_TRIGGER_HAPPY39", -+ [BTN_TRIGGER_HAPPY40] = "BTN_TRIGGER_HAPPY40", -+ [BTN_TRIGGER_HAPPY20] = "BTN_TRIGGER_HAPPY20", -+ [BTN_DPAD_DOWN] = "BTN_DPAD_DOWN", -+}; -+ -+static const char * const led_map[LED_MAX + 1] = { -+ [LED_NUML] = "LED_NUML", -+ [LED_CAPSL] = "LED_CAPSL", -+ [LED_SCROLLL] = "LED_SCROLLL", -+ [LED_COMPOSE] = "LED_COMPOSE", -+ [LED_KANA] = "LED_KANA", -+ [LED_SLEEP] = "LED_SLEEP", -+ [LED_SUSPEND] = "LED_SUSPEND", -+ [LED_MUTE] = "LED_MUTE", -+ [LED_MISC] = "LED_MISC", -+ [LED_MAIL] = "LED_MAIL", -+ [LED_CHARGING] = "LED_CHARGING", -+ [LED_MAX] = "LED_MAX", -+}; -+ -+static const char * const snd_map[SND_MAX + 1] = { -+ [SND_CLICK] = "SND_CLICK", -+ [SND_BELL] = "SND_BELL", -+ [SND_TONE] = "SND_TONE", -+ [SND_MAX] = "SND_MAX", -+}; -+ -+static const char * const msc_map[MSC_MAX + 1] = { -+ [MSC_SERIAL] = "MSC_SERIAL", -+ [MSC_PULSELED] = "MSC_PULSELED", -+ [MSC_GESTURE] = "MSC_GESTURE", -+ [MSC_RAW] = "MSC_RAW", -+ [MSC_SCAN] = "MSC_SCAN", -+ [MSC_TIMESTAMP] = "MSC_TIMESTAMP", -+ [MSC_MAX] = "MSC_MAX", -+}; -+ -+static const char * const sw_map[SW_MAX + 1] = { -+ [SW_LID] = "SW_LID", -+ [SW_TABLET_MODE] = "SW_TABLET_MODE", -+ [SW_HEADPHONE_INSERT] = "SW_HEADPHONE_INSERT", -+ [SW_RFKILL_ALL] = "SW_RFKILL_ALL", -+ [SW_MICROPHONE_INSERT] = "SW_MICROPHONE_INSERT", -+ [SW_DOCK] = "SW_DOCK", -+ [SW_LINEOUT_INSERT] = "SW_LINEOUT_INSERT", -+ [SW_JACK_PHYSICAL_INSERT] = "SW_JACK_PHYSICAL_INSERT", -+ [SW_VIDEOOUT_INSERT] = "SW_VIDEOOUT_INSERT", -+ [SW_CAMERA_LENS_COVER] = "SW_CAMERA_LENS_COVER", -+ [SW_KEYPAD_SLIDE] = "SW_KEYPAD_SLIDE", -+ [SW_FRONT_PROXIMITY] = "SW_FRONT_PROXIMITY", -+ [SW_ROTATE_LOCK] = "SW_ROTATE_LOCK", -+ [SW_LINEIN_INSERT] = "SW_LINEIN_INSERT", -+ [SW_MUTE_DEVICE] = "SW_MUTE_DEVICE", -+ [SW_MAX] = "SW_MAX", -+}; -+ -+static const char * const ff_map[FF_MAX + 1] = { -+ [FF_STATUS_STOPPED] = "FF_STATUS_STOPPED", -+ [FF_STATUS_MAX] = "FF_STATUS_MAX", -+ [FF_AUTOCENTER] = "FF_AUTOCENTER", -+ [FF_GAIN] = "FF_GAIN", -+ [FF_RUMBLE] = "FF_RUMBLE", -+ [FF_PERIODIC] = "FF_PERIODIC", -+ [FF_CONSTANT] = "FF_CONSTANT", -+ [FF_SPRING] = "FF_SPRING", -+ [FF_FRICTION] = "FF_FRICTION", -+ [FF_DAMPER] = "FF_DAMPER", -+ [FF_INERTIA] = "FF_INERTIA", -+ [FF_RAMP] = "FF_RAMP", -+ [FF_SQUARE] = "FF_SQUARE", -+ [FF_TRIANGLE] = "FF_TRIANGLE", -+ [FF_SINE] = "FF_SINE", -+ [FF_SAW_UP] = "FF_SAW_UP", -+ [FF_SAW_DOWN] = "FF_SAW_DOWN", -+ [FF_CUSTOM] = "FF_CUSTOM", -+ [FF_MAX] = "FF_MAX", -+}; -+ -+static const char * const syn_map[SYN_MAX + 1] = { -+ [SYN_REPORT] = "SYN_REPORT", -+ [SYN_CONFIG] = "SYN_CONFIG", -+ [SYN_MT_REPORT] = "SYN_MT_REPORT", -+ [SYN_DROPPED] = "SYN_DROPPED", -+ [SYN_MAX] = "SYN_MAX", -+}; -+ -+static const char * const rep_map[REP_MAX + 1] = { -+ [REP_DELAY] = "REP_DELAY", -+ [REP_MAX] = "REP_MAX", -+}; -+ -+static const char * const input_prop_map[INPUT_PROP_MAX + 1] = { -+ [INPUT_PROP_POINTER] = "INPUT_PROP_POINTER", -+ [INPUT_PROP_DIRECT] = "INPUT_PROP_DIRECT", -+ [INPUT_PROP_BUTTONPAD] = "INPUT_PROP_BUTTONPAD", -+ [INPUT_PROP_SEMI_MT] = "INPUT_PROP_SEMI_MT", -+ [INPUT_PROP_TOPBUTTONPAD] = "INPUT_PROP_TOPBUTTONPAD", -+ [INPUT_PROP_POINTING_STICK] = "INPUT_PROP_POINTING_STICK", -+ [INPUT_PROP_ACCELEROMETER] = "INPUT_PROP_ACCELEROMETER", -+ [INPUT_PROP_MAX] = "INPUT_PROP_MAX", -+}; -+ -+static const char * const * const event_type_map[EV_MAX + 1] = { -+ [EV_REL] = rel_map, -+ [EV_ABS] = abs_map, -+ [EV_KEY] = key_map, -+ [EV_LED] = led_map, -+ [EV_SND] = snd_map, -+ [EV_MSC] = msc_map, -+ [EV_SW] = sw_map, -+ [EV_FF] = ff_map, -+ [EV_SYN] = syn_map, -+ [EV_REP] = rep_map, -+}; -+ -+#if __clang__ -+#pragma clang diagnostic push -+#pragma clang diagnostic ignored "-Winitializer-overrides" -+#else -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Woverride-init" -+#endif -+static const int ev_max[EV_MAX + 1] = { -+ [0 ... EV_MAX] = -1, -+ [EV_REL] = REL_MAX, -+ [EV_ABS] = ABS_MAX, -+ [EV_KEY] = KEY_MAX, -+ [EV_LED] = LED_MAX, -+ [EV_SND] = SND_MAX, -+ [EV_MSC] = MSC_MAX, -+ [EV_SW] = SW_MAX, -+ [EV_FF] = FF_MAX, -+ [EV_SYN] = SYN_MAX, -+ [EV_REP] = REP_MAX, -+}; -+#if __clang__ -+#pragma clang diagnostic pop /* "-Winitializer-overrides" */ -+#else -+#pragma GCC diagnostic pop /* "-Woverride-init" */ -+#endif -+ -+struct name_entry { -+ const char *name; -+ unsigned int value; -+}; -+ -+static const struct name_entry ev_names[] = { -+ { .name = "EV_ABS", .value = EV_ABS }, -+ { .name = "EV_FF", .value = EV_FF }, -+ { .name = "EV_FF_STATUS", .value = EV_FF_STATUS }, -+ { .name = "EV_KEY", .value = EV_KEY }, -+ { .name = "EV_LED", .value = EV_LED }, -+ { .name = "EV_MAX", .value = EV_MAX }, -+ { .name = "EV_MSC", .value = EV_MSC }, -+ { .name = "EV_PWR", .value = EV_PWR }, -+ { .name = "EV_REL", .value = EV_REL }, -+ { .name = "EV_REP", .value = EV_REP }, -+ { .name = "EV_SND", .value = EV_SND }, -+ { .name = "EV_SW", .value = EV_SW }, -+ { .name = "EV_SYN", .value = EV_SYN }, -+}; -+ -+static const struct name_entry code_names[] = { -+ { .name = "ABS_BRAKE", .value = ABS_BRAKE }, -+ { .name = "ABS_DISTANCE", .value = ABS_DISTANCE }, -+ { .name = "ABS_GAS", .value = ABS_GAS }, -+ { .name = "ABS_HAT0X", .value = ABS_HAT0X }, -+ { .name = "ABS_HAT0Y", .value = ABS_HAT0Y }, -+ { .name = "ABS_HAT1X", .value = ABS_HAT1X }, -+ { .name = "ABS_HAT1Y", .value = ABS_HAT1Y }, -+ { .name = "ABS_HAT2X", .value = ABS_HAT2X }, -+ { .name = "ABS_HAT2Y", .value = ABS_HAT2Y }, -+ { .name = "ABS_HAT3X", .value = ABS_HAT3X }, -+ { .name = "ABS_HAT3Y", .value = ABS_HAT3Y }, -+ { .name = "ABS_MAX", .value = ABS_MAX }, -+ { .name = "ABS_MISC", .value = ABS_MISC }, -+ { .name = "ABS_MT_BLOB_ID", .value = ABS_MT_BLOB_ID }, -+ { .name = "ABS_MT_DISTANCE", .value = ABS_MT_DISTANCE }, -+ { .name = "ABS_MT_ORIENTATION", .value = ABS_MT_ORIENTATION }, -+ { .name = "ABS_MT_POSITION_X", .value = ABS_MT_POSITION_X }, -+ { .name = "ABS_MT_POSITION_Y", .value = ABS_MT_POSITION_Y }, -+ { .name = "ABS_MT_PRESSURE", .value = ABS_MT_PRESSURE }, -+ { .name = "ABS_MT_SLOT", .value = ABS_MT_SLOT }, -+ { .name = "ABS_MT_TOOL_TYPE", .value = ABS_MT_TOOL_TYPE }, -+ { .name = "ABS_MT_TOOL_X", .value = ABS_MT_TOOL_X }, -+ { .name = "ABS_MT_TOOL_Y", .value = ABS_MT_TOOL_Y }, -+ { .name = "ABS_MT_TOUCH_MAJOR", .value = ABS_MT_TOUCH_MAJOR }, -+ { .name = "ABS_MT_TOUCH_MINOR", .value = ABS_MT_TOUCH_MINOR }, -+ { .name = "ABS_MT_TRACKING_ID", .value = ABS_MT_TRACKING_ID }, -+ { .name = "ABS_MT_WIDTH_MAJOR", .value = ABS_MT_WIDTH_MAJOR }, -+ { .name = "ABS_MT_WIDTH_MINOR", .value = ABS_MT_WIDTH_MINOR }, -+ { .name = "ABS_PRESSURE", .value = ABS_PRESSURE }, -+ { .name = "ABS_RUDDER", .value = ABS_RUDDER }, -+ { .name = "ABS_RX", .value = ABS_RX }, -+ { .name = "ABS_RY", .value = ABS_RY }, -+ { .name = "ABS_RZ", .value = ABS_RZ }, -+ { .name = "ABS_THROTTLE", .value = ABS_THROTTLE }, -+ { .name = "ABS_TILT_X", .value = ABS_TILT_X }, -+ { .name = "ABS_TILT_Y", .value = ABS_TILT_Y }, -+ { .name = "ABS_TOOL_WIDTH", .value = ABS_TOOL_WIDTH }, -+ { .name = "ABS_VOLUME", .value = ABS_VOLUME }, -+ { .name = "ABS_WHEEL", .value = ABS_WHEEL }, -+ { .name = "ABS_X", .value = ABS_X }, -+ { .name = "ABS_Y", .value = ABS_Y }, -+ { .name = "ABS_Z", .value = ABS_Z }, -+ { .name = "BTN_0", .value = BTN_0 }, -+ { .name = "BTN_1", .value = BTN_1 }, -+ { .name = "BTN_2", .value = BTN_2 }, -+ { .name = "BTN_3", .value = BTN_3 }, -+ { .name = "BTN_4", .value = BTN_4 }, -+ { .name = "BTN_5", .value = BTN_5 }, -+ { .name = "BTN_6", .value = BTN_6 }, -+ { .name = "BTN_7", .value = BTN_7 }, -+ { .name = "BTN_8", .value = BTN_8 }, -+ { .name = "BTN_9", .value = BTN_9 }, -+ { .name = "BTN_A", .value = BTN_A }, -+ { .name = "BTN_B", .value = BTN_B }, -+ { .name = "BTN_BACK", .value = BTN_BACK }, -+ { .name = "BTN_BASE", .value = BTN_BASE }, -+ { .name = "BTN_BASE2", .value = BTN_BASE2 }, -+ { .name = "BTN_BASE3", .value = BTN_BASE3 }, -+ { .name = "BTN_BASE4", .value = BTN_BASE4 }, -+ { .name = "BTN_BASE5", .value = BTN_BASE5 }, -+ { .name = "BTN_BASE6", .value = BTN_BASE6 }, -+ { .name = "BTN_C", .value = BTN_C }, -+ { .name = "BTN_DEAD", .value = BTN_DEAD }, -+ { .name = "BTN_DPAD_DOWN", .value = BTN_DPAD_DOWN }, -+ { .name = "BTN_DPAD_LEFT", .value = BTN_DPAD_LEFT }, -+ { .name = "BTN_DPAD_RIGHT", .value = BTN_DPAD_RIGHT }, -+ { .name = "BTN_DPAD_UP", .value = BTN_DPAD_UP }, -+ { .name = "BTN_EAST", .value = BTN_EAST }, -+ { .name = "BTN_EXTRA", .value = BTN_EXTRA }, -+ { .name = "BTN_FORWARD", .value = BTN_FORWARD }, -+ { .name = "BTN_GEAR_DOWN", .value = BTN_GEAR_DOWN }, -+ { .name = "BTN_GEAR_UP", .value = BTN_GEAR_UP }, -+ { .name = "BTN_LEFT", .value = BTN_LEFT }, -+ { .name = "BTN_MIDDLE", .value = BTN_MIDDLE }, -+ { .name = "BTN_MODE", .value = BTN_MODE }, -+ { .name = "BTN_NORTH", .value = BTN_NORTH }, -+ { .name = "BTN_PINKIE", .value = BTN_PINKIE }, -+ { .name = "BTN_RIGHT", .value = BTN_RIGHT }, -+ { .name = "BTN_SELECT", .value = BTN_SELECT }, -+ { .name = "BTN_SIDE", .value = BTN_SIDE }, -+ { .name = "BTN_SOUTH", .value = BTN_SOUTH }, -+ { .name = "BTN_START", .value = BTN_START }, -+ { .name = "BTN_STYLUS", .value = BTN_STYLUS }, -+ { .name = "BTN_STYLUS2", .value = BTN_STYLUS2 }, -+ { .name = "BTN_TASK", .value = BTN_TASK }, -+ { .name = "BTN_THUMB", .value = BTN_THUMB }, -+ { .name = "BTN_THUMB2", .value = BTN_THUMB2 }, -+ { .name = "BTN_THUMBL", .value = BTN_THUMBL }, -+ { .name = "BTN_THUMBR", .value = BTN_THUMBR }, -+ { .name = "BTN_TL", .value = BTN_TL }, -+ { .name = "BTN_TL2", .value = BTN_TL2 }, -+ { .name = "BTN_TOOL_AIRBRUSH", .value = BTN_TOOL_AIRBRUSH }, -+ { .name = "BTN_TOOL_BRUSH", .value = BTN_TOOL_BRUSH }, -+ { .name = "BTN_TOOL_DOUBLETAP", .value = BTN_TOOL_DOUBLETAP }, -+ { .name = "BTN_TOOL_FINGER", .value = BTN_TOOL_FINGER }, -+ { .name = "BTN_TOOL_LENS", .value = BTN_TOOL_LENS }, -+ { .name = "BTN_TOOL_MOUSE", .value = BTN_TOOL_MOUSE }, -+ { .name = "BTN_TOOL_PEN", .value = BTN_TOOL_PEN }, -+ { .name = "BTN_TOOL_PENCIL", .value = BTN_TOOL_PENCIL }, -+ { .name = "BTN_TOOL_QUADTAP", .value = BTN_TOOL_QUADTAP }, -+ { .name = "BTN_TOOL_QUINTTAP", .value = BTN_TOOL_QUINTTAP }, -+ { .name = "BTN_TOOL_RUBBER", .value = BTN_TOOL_RUBBER }, -+ { .name = "BTN_TOOL_TRIPLETAP", .value = BTN_TOOL_TRIPLETAP }, -+ { .name = "BTN_TOP", .value = BTN_TOP }, -+ { .name = "BTN_TOP2", .value = BTN_TOP2 }, -+ { .name = "BTN_TOUCH", .value = BTN_TOUCH }, -+ { .name = "BTN_TR", .value = BTN_TR }, -+ { .name = "BTN_TR2", .value = BTN_TR2 }, -+ { .name = "BTN_TRIGGER", .value = BTN_TRIGGER }, -+ { .name = "BTN_TRIGGER_HAPPY1", .value = BTN_TRIGGER_HAPPY1 }, -+ { .name = "BTN_TRIGGER_HAPPY10", .value = BTN_TRIGGER_HAPPY10 }, -+ { .name = "BTN_TRIGGER_HAPPY11", .value = BTN_TRIGGER_HAPPY11 }, -+ { .name = "BTN_TRIGGER_HAPPY12", .value = BTN_TRIGGER_HAPPY12 }, -+ { .name = "BTN_TRIGGER_HAPPY13", .value = BTN_TRIGGER_HAPPY13 }, -+ { .name = "BTN_TRIGGER_HAPPY14", .value = BTN_TRIGGER_HAPPY14 }, -+ { .name = "BTN_TRIGGER_HAPPY15", .value = BTN_TRIGGER_HAPPY15 }, -+ { .name = "BTN_TRIGGER_HAPPY16", .value = BTN_TRIGGER_HAPPY16 }, -+ { .name = "BTN_TRIGGER_HAPPY17", .value = BTN_TRIGGER_HAPPY17 }, -+ { .name = "BTN_TRIGGER_HAPPY18", .value = BTN_TRIGGER_HAPPY18 }, -+ { .name = "BTN_TRIGGER_HAPPY19", .value = BTN_TRIGGER_HAPPY19 }, -+ { .name = "BTN_TRIGGER_HAPPY2", .value = BTN_TRIGGER_HAPPY2 }, -+ { .name = "BTN_TRIGGER_HAPPY20", .value = BTN_TRIGGER_HAPPY20 }, -+ { .name = "BTN_TRIGGER_HAPPY21", .value = BTN_TRIGGER_HAPPY21 }, -+ { .name = "BTN_TRIGGER_HAPPY22", .value = BTN_TRIGGER_HAPPY22 }, -+ { .name = "BTN_TRIGGER_HAPPY23", .value = BTN_TRIGGER_HAPPY23 }, -+ { .name = "BTN_TRIGGER_HAPPY24", .value = BTN_TRIGGER_HAPPY24 }, -+ { .name = "BTN_TRIGGER_HAPPY25", .value = BTN_TRIGGER_HAPPY25 }, -+ { .name = "BTN_TRIGGER_HAPPY26", .value = BTN_TRIGGER_HAPPY26 }, -+ { .name = "BTN_TRIGGER_HAPPY27", .value = BTN_TRIGGER_HAPPY27 }, -+ { .name = "BTN_TRIGGER_HAPPY28", .value = BTN_TRIGGER_HAPPY28 }, -+ { .name = "BTN_TRIGGER_HAPPY29", .value = BTN_TRIGGER_HAPPY29 }, -+ { .name = "BTN_TRIGGER_HAPPY3", .value = BTN_TRIGGER_HAPPY3 }, -+ { .name = "BTN_TRIGGER_HAPPY30", .value = BTN_TRIGGER_HAPPY30 }, -+ { .name = "BTN_TRIGGER_HAPPY31", .value = BTN_TRIGGER_HAPPY31 }, -+ { .name = "BTN_TRIGGER_HAPPY32", .value = BTN_TRIGGER_HAPPY32 }, -+ { .name = "BTN_TRIGGER_HAPPY33", .value = BTN_TRIGGER_HAPPY33 }, -+ { .name = "BTN_TRIGGER_HAPPY34", .value = BTN_TRIGGER_HAPPY34 }, -+ { .name = "BTN_TRIGGER_HAPPY35", .value = BTN_TRIGGER_HAPPY35 }, -+ { .name = "BTN_TRIGGER_HAPPY36", .value = BTN_TRIGGER_HAPPY36 }, -+ { .name = "BTN_TRIGGER_HAPPY37", .value = BTN_TRIGGER_HAPPY37 }, -+ { .name = "BTN_TRIGGER_HAPPY38", .value = BTN_TRIGGER_HAPPY38 }, -+ { .name = "BTN_TRIGGER_HAPPY39", .value = BTN_TRIGGER_HAPPY39 }, -+ { .name = "BTN_TRIGGER_HAPPY4", .value = BTN_TRIGGER_HAPPY4 }, -+ { .name = "BTN_TRIGGER_HAPPY40", .value = BTN_TRIGGER_HAPPY40 }, -+ { .name = "BTN_TRIGGER_HAPPY5", .value = BTN_TRIGGER_HAPPY5 }, -+ { .name = "BTN_TRIGGER_HAPPY6", .value = BTN_TRIGGER_HAPPY6 }, -+ { .name = "BTN_TRIGGER_HAPPY7", .value = BTN_TRIGGER_HAPPY7 }, -+ { .name = "BTN_TRIGGER_HAPPY8", .value = BTN_TRIGGER_HAPPY8 }, -+ { .name = "BTN_TRIGGER_HAPPY9", .value = BTN_TRIGGER_HAPPY9 }, -+ { .name = "BTN_WEST", .value = BTN_WEST }, -+ { .name = "BTN_X", .value = BTN_X }, -+ { .name = "BTN_Y", .value = BTN_Y }, -+ { .name = "BTN_Z", .value = BTN_Z }, -+ { .name = "FF_AUTOCENTER", .value = FF_AUTOCENTER }, -+ { .name = "FF_CONSTANT", .value = FF_CONSTANT }, -+ { .name = "FF_CUSTOM", .value = FF_CUSTOM }, -+ { .name = "FF_DAMPER", .value = FF_DAMPER }, -+ { .name = "FF_FRICTION", .value = FF_FRICTION }, -+ { .name = "FF_GAIN", .value = FF_GAIN }, -+ { .name = "FF_INERTIA", .value = FF_INERTIA }, -+ { .name = "FF_MAX", .value = FF_MAX }, -+ { .name = "FF_PERIODIC", .value = FF_PERIODIC }, -+ { .name = "FF_RAMP", .value = FF_RAMP }, -+ { .name = "FF_RUMBLE", .value = FF_RUMBLE }, -+ { .name = "FF_SAW_DOWN", .value = FF_SAW_DOWN }, -+ { .name = "FF_SAW_UP", .value = FF_SAW_UP }, -+ { .name = "FF_SINE", .value = FF_SINE }, -+ { .name = "FF_SPRING", .value = FF_SPRING }, -+ { .name = "FF_SQUARE", .value = FF_SQUARE }, -+ { .name = "FF_STATUS_MAX", .value = FF_STATUS_MAX }, -+ { .name = "FF_STATUS_STOPPED", .value = FF_STATUS_STOPPED }, -+ { .name = "FF_TRIANGLE", .value = FF_TRIANGLE }, -+ { .name = "KEY_0", .value = KEY_0 }, -+ { .name = "KEY_1", .value = KEY_1 }, -+ { .name = "KEY_102ND", .value = KEY_102ND }, -+ { .name = "KEY_10CHANNELSDOWN", .value = KEY_10CHANNELSDOWN }, -+ { .name = "KEY_10CHANNELSUP", .value = KEY_10CHANNELSUP }, -+ { .name = "KEY_2", .value = KEY_2 }, -+ { .name = "KEY_3", .value = KEY_3 }, -+ { .name = "KEY_4", .value = KEY_4 }, -+ { .name = "KEY_5", .value = KEY_5 }, -+ { .name = "KEY_6", .value = KEY_6 }, -+ { .name = "KEY_7", .value = KEY_7 }, -+ { .name = "KEY_8", .value = KEY_8 }, -+ { .name = "KEY_9", .value = KEY_9 }, -+ { .name = "KEY_A", .value = KEY_A }, -+ { .name = "KEY_AB", .value = KEY_AB }, -+ { .name = "KEY_ADDRESSBOOK", .value = KEY_ADDRESSBOOK }, -+ { .name = "KEY_AGAIN", .value = KEY_AGAIN }, -+ { .name = "KEY_ALS_TOGGLE", .value = KEY_ALS_TOGGLE }, -+ { .name = "KEY_ALTERASE", .value = KEY_ALTERASE }, -+ { .name = "KEY_ANGLE", .value = KEY_ANGLE }, -+ { .name = "KEY_APOSTROPHE", .value = KEY_APOSTROPHE }, -+ { .name = "KEY_APPSELECT", .value = KEY_APPSELECT }, -+ { .name = "KEY_ARCHIVE", .value = KEY_ARCHIVE }, -+ { .name = "KEY_ATTENDANT_OFF", .value = KEY_ATTENDANT_OFF }, -+ { .name = "KEY_ATTENDANT_ON", .value = KEY_ATTENDANT_ON }, -+ { .name = "KEY_ATTENDANT_TOGGLE", .value = KEY_ATTENDANT_TOGGLE }, -+ { .name = "KEY_AUDIO", .value = KEY_AUDIO }, -+ { .name = "KEY_AUX", .value = KEY_AUX }, -+ { .name = "KEY_B", .value = KEY_B }, -+ { .name = "KEY_BACK", .value = KEY_BACK }, -+ { .name = "KEY_BACKSLASH", .value = KEY_BACKSLASH }, -+ { .name = "KEY_BACKSPACE", .value = KEY_BACKSPACE }, -+ { .name = "KEY_BASSBOOST", .value = KEY_BASSBOOST }, -+ { .name = "KEY_BATTERY", .value = KEY_BATTERY }, -+ { .name = "KEY_BLUE", .value = KEY_BLUE }, -+ { .name = "KEY_BLUETOOTH", .value = KEY_BLUETOOTH }, -+ { .name = "KEY_BOOKMARKS", .value = KEY_BOOKMARKS }, -+ { .name = "KEY_BREAK", .value = KEY_BREAK }, -+ { .name = "KEY_BRIGHTNESSDOWN", .value = KEY_BRIGHTNESSDOWN }, -+ { .name = "KEY_BRIGHTNESSUP", .value = KEY_BRIGHTNESSUP }, -+ { .name = "KEY_BRIGHTNESS_AUTO", .value = KEY_BRIGHTNESS_AUTO }, -+ { .name = "KEY_BRIGHTNESS_CYCLE", .value = KEY_BRIGHTNESS_CYCLE }, -+ { .name = "KEY_BRIGHTNESS_MAX", .value = KEY_BRIGHTNESS_MAX }, -+ { .name = "KEY_BRIGHTNESS_MIN", .value = KEY_BRIGHTNESS_MIN }, -+ { .name = "KEY_BRL_DOT1", .value = KEY_BRL_DOT1 }, -+ { .name = "KEY_BRL_DOT10", .value = KEY_BRL_DOT10 }, -+ { .name = "KEY_BRL_DOT2", .value = KEY_BRL_DOT2 }, -+ { .name = "KEY_BRL_DOT3", .value = KEY_BRL_DOT3 }, -+ { .name = "KEY_BRL_DOT4", .value = KEY_BRL_DOT4 }, -+ { .name = "KEY_BRL_DOT5", .value = KEY_BRL_DOT5 }, -+ { .name = "KEY_BRL_DOT6", .value = KEY_BRL_DOT6 }, -+ { .name = "KEY_BRL_DOT7", .value = KEY_BRL_DOT7 }, -+ { .name = "KEY_BRL_DOT8", .value = KEY_BRL_DOT8 }, -+ { .name = "KEY_BRL_DOT9", .value = KEY_BRL_DOT9 }, -+ { .name = "KEY_BUTTONCONFIG", .value = KEY_BUTTONCONFIG }, -+ { .name = "KEY_C", .value = KEY_C }, -+ { .name = "KEY_CALC", .value = KEY_CALC }, -+ { .name = "KEY_CALENDAR", .value = KEY_CALENDAR }, -+ { .name = "KEY_CAMERA", .value = KEY_CAMERA }, -+ { .name = "KEY_CAMERA_DOWN", .value = KEY_CAMERA_DOWN }, -+ { .name = "KEY_CAMERA_FOCUS", .value = KEY_CAMERA_FOCUS }, -+ { .name = "KEY_CAMERA_LEFT", .value = KEY_CAMERA_LEFT }, -+ { .name = "KEY_CAMERA_RIGHT", .value = KEY_CAMERA_RIGHT }, -+ { .name = "KEY_CAMERA_UP", .value = KEY_CAMERA_UP }, -+ { .name = "KEY_CAMERA_ZOOMIN", .value = KEY_CAMERA_ZOOMIN }, -+ { .name = "KEY_CAMERA_ZOOMOUT", .value = KEY_CAMERA_ZOOMOUT }, -+ { .name = "KEY_CANCEL", .value = KEY_CANCEL }, -+ { .name = "KEY_CAPSLOCK", .value = KEY_CAPSLOCK }, -+ { .name = "KEY_CD", .value = KEY_CD }, -+ { .name = "KEY_CHANNEL", .value = KEY_CHANNEL }, -+ { .name = "KEY_CHANNELDOWN", .value = KEY_CHANNELDOWN }, -+ { .name = "KEY_CHANNELUP", .value = KEY_CHANNELUP }, -+ { .name = "KEY_CHAT", .value = KEY_CHAT }, -+ { .name = "KEY_CLEAR", .value = KEY_CLEAR }, -+ { .name = "KEY_CLOSE", .value = KEY_CLOSE }, -+ { .name = "KEY_CLOSECD", .value = KEY_CLOSECD }, -+ { .name = "KEY_COFFEE", .value = KEY_COFFEE }, -+ { .name = "KEY_COMMA", .value = KEY_COMMA }, -+ { .name = "KEY_COMPOSE", .value = KEY_COMPOSE }, -+ { .name = "KEY_COMPUTER", .value = KEY_COMPUTER }, -+ { .name = "KEY_CONFIG", .value = KEY_CONFIG }, -+ { .name = "KEY_CONNECT", .value = KEY_CONNECT }, -+ { .name = "KEY_CONTEXT_MENU", .value = KEY_CONTEXT_MENU }, -+ { .name = "KEY_CONTROLPANEL", .value = KEY_CONTROLPANEL }, -+ { .name = "KEY_COPY", .value = KEY_COPY }, -+ { .name = "KEY_CUT", .value = KEY_CUT }, -+ { .name = "KEY_CYCLEWINDOWS", .value = KEY_CYCLEWINDOWS }, -+ { .name = "KEY_D", .value = KEY_D }, -+ { .name = "KEY_DASHBOARD", .value = KEY_DASHBOARD }, -+ { .name = "KEY_DATABASE", .value = KEY_DATABASE }, -+ { .name = "KEY_DELETE", .value = KEY_DELETE }, -+ { .name = "KEY_DELETEFILE", .value = KEY_DELETEFILE }, -+ { .name = "KEY_DEL_EOL", .value = KEY_DEL_EOL }, -+ { .name = "KEY_DEL_EOS", .value = KEY_DEL_EOS }, -+ { .name = "KEY_DEL_LINE", .value = KEY_DEL_LINE }, -+ { .name = "KEY_DIGITS", .value = KEY_DIGITS }, -+ { .name = "KEY_DIRECTORY", .value = KEY_DIRECTORY }, -+ { .name = "KEY_DISPLAYTOGGLE", .value = KEY_DISPLAYTOGGLE }, -+ { .name = "KEY_DISPLAY_OFF", .value = KEY_DISPLAY_OFF }, -+ { .name = "KEY_DOCUMENTS", .value = KEY_DOCUMENTS }, -+ { .name = "KEY_DOLLAR", .value = KEY_DOLLAR }, -+ { .name = "KEY_DOT", .value = KEY_DOT }, -+ { .name = "KEY_DOWN", .value = KEY_DOWN }, -+ { .name = "KEY_DVD", .value = KEY_DVD }, -+ { .name = "KEY_E", .value = KEY_E }, -+ { .name = "KEY_EDIT", .value = KEY_EDIT }, -+ { .name = "KEY_EDITOR", .value = KEY_EDITOR }, -+ { .name = "KEY_EJECTCD", .value = KEY_EJECTCD }, -+ { .name = "KEY_EJECTCLOSECD", .value = KEY_EJECTCLOSECD }, -+ { .name = "KEY_EMAIL", .value = KEY_EMAIL }, -+ { .name = "KEY_END", .value = KEY_END }, -+ { .name = "KEY_ENTER", .value = KEY_ENTER }, -+ { .name = "KEY_EPG", .value = KEY_EPG }, -+ { .name = "KEY_EQUAL", .value = KEY_EQUAL }, -+ { .name = "KEY_ESC", .value = KEY_ESC }, -+ { .name = "KEY_EURO", .value = KEY_EURO }, -+ { .name = "KEY_EXIT", .value = KEY_EXIT }, -+ { .name = "KEY_F", .value = KEY_F }, -+ { .name = "KEY_F1", .value = KEY_F1 }, -+ { .name = "KEY_F10", .value = KEY_F10 }, -+ { .name = "KEY_F11", .value = KEY_F11 }, -+ { .name = "KEY_F12", .value = KEY_F12 }, -+ { .name = "KEY_F13", .value = KEY_F13 }, -+ { .name = "KEY_F14", .value = KEY_F14 }, -+ { .name = "KEY_F15", .value = KEY_F15 }, -+ { .name = "KEY_F16", .value = KEY_F16 }, -+ { .name = "KEY_F17", .value = KEY_F17 }, -+ { .name = "KEY_F18", .value = KEY_F18 }, -+ { .name = "KEY_F19", .value = KEY_F19 }, -+ { .name = "KEY_F2", .value = KEY_F2 }, -+ { .name = "KEY_F20", .value = KEY_F20 }, -+ { .name = "KEY_F21", .value = KEY_F21 }, -+ { .name = "KEY_F22", .value = KEY_F22 }, -+ { .name = "KEY_F23", .value = KEY_F23 }, -+ { .name = "KEY_F24", .value = KEY_F24 }, -+ { .name = "KEY_F3", .value = KEY_F3 }, -+ { .name = "KEY_F4", .value = KEY_F4 }, -+ { .name = "KEY_F5", .value = KEY_F5 }, -+ { .name = "KEY_F6", .value = KEY_F6 }, -+ { .name = "KEY_F7", .value = KEY_F7 }, -+ { .name = "KEY_F8", .value = KEY_F8 }, -+ { .name = "KEY_F9", .value = KEY_F9 }, -+ { .name = "KEY_FASTFORWARD", .value = KEY_FASTFORWARD }, -+ { .name = "KEY_FAVORITES", .value = KEY_FAVORITES }, -+ { .name = "KEY_FILE", .value = KEY_FILE }, -+ { .name = "KEY_FINANCE", .value = KEY_FINANCE }, -+ { .name = "KEY_FIND", .value = KEY_FIND }, -+ { .name = "KEY_FIRST", .value = KEY_FIRST }, -+ { .name = "KEY_FN", .value = KEY_FN }, -+ { .name = "KEY_FN_1", .value = KEY_FN_1 }, -+ { .name = "KEY_FN_2", .value = KEY_FN_2 }, -+ { .name = "KEY_FN_B", .value = KEY_FN_B }, -+ { .name = "KEY_FN_D", .value = KEY_FN_D }, -+ { .name = "KEY_FN_E", .value = KEY_FN_E }, -+ { .name = "KEY_FN_ESC", .value = KEY_FN_ESC }, -+ { .name = "KEY_FN_F", .value = KEY_FN_F }, -+ { .name = "KEY_FN_F1", .value = KEY_FN_F1 }, -+ { .name = "KEY_FN_F10", .value = KEY_FN_F10 }, -+ { .name = "KEY_FN_F11", .value = KEY_FN_F11 }, -+ { .name = "KEY_FN_F12", .value = KEY_FN_F12 }, -+ { .name = "KEY_FN_F2", .value = KEY_FN_F2 }, -+ { .name = "KEY_FN_F3", .value = KEY_FN_F3 }, -+ { .name = "KEY_FN_F4", .value = KEY_FN_F4 }, -+ { .name = "KEY_FN_F5", .value = KEY_FN_F5 }, -+ { .name = "KEY_FN_F6", .value = KEY_FN_F6 }, -+ { .name = "KEY_FN_F7", .value = KEY_FN_F7 }, -+ { .name = "KEY_FN_F8", .value = KEY_FN_F8 }, -+ { .name = "KEY_FN_F9", .value = KEY_FN_F9 }, -+ { .name = "KEY_FN_S", .value = KEY_FN_S }, -+ { .name = "KEY_FORWARD", .value = KEY_FORWARD }, -+ { .name = "KEY_FORWARDMAIL", .value = KEY_FORWARDMAIL }, -+ { .name = "KEY_FRAMEBACK", .value = KEY_FRAMEBACK }, -+ { .name = "KEY_FRAMEFORWARD", .value = KEY_FRAMEFORWARD }, -+ { .name = "KEY_FRONT", .value = KEY_FRONT }, -+ { .name = "KEY_G", .value = KEY_G }, -+ { .name = "KEY_GAMES", .value = KEY_GAMES }, -+ { .name = "KEY_GOTO", .value = KEY_GOTO }, -+ { .name = "KEY_GRAPHICSEDITOR", .value = KEY_GRAPHICSEDITOR }, -+ { .name = "KEY_GRAVE", .value = KEY_GRAVE }, -+ { .name = "KEY_GREEN", .value = KEY_GREEN }, -+ { .name = "KEY_H", .value = KEY_H }, -+ { .name = "KEY_HANGEUL", .value = KEY_HANGEUL }, -+ { .name = "KEY_HANJA", .value = KEY_HANJA }, -+ { .name = "KEY_HELP", .value = KEY_HELP }, -+ { .name = "KEY_HENKAN", .value = KEY_HENKAN }, -+ { .name = "KEY_HIRAGANA", .value = KEY_HIRAGANA }, -+ { .name = "KEY_HOME", .value = KEY_HOME }, -+ { .name = "KEY_HOMEPAGE", .value = KEY_HOMEPAGE }, -+ { .name = "KEY_HP", .value = KEY_HP }, -+ { .name = "KEY_I", .value = KEY_I }, -+ { .name = "KEY_IMAGES", .value = KEY_IMAGES }, -+ { .name = "KEY_INFO", .value = KEY_INFO }, -+ { .name = "KEY_INSERT", .value = KEY_INSERT }, -+ { .name = "KEY_INS_LINE", .value = KEY_INS_LINE }, -+ { .name = "KEY_ISO", .value = KEY_ISO }, -+ { .name = "KEY_J", .value = KEY_J }, -+ { .name = "KEY_JOURNAL", .value = KEY_JOURNAL }, -+ { .name = "KEY_K", .value = KEY_K }, -+ { .name = "KEY_KATAKANA", .value = KEY_KATAKANA }, -+ { .name = "KEY_KATAKANAHIRAGANA", .value = KEY_KATAKANAHIRAGANA }, -+ { .name = "KEY_KBDILLUMDOWN", .value = KEY_KBDILLUMDOWN }, -+ { .name = "KEY_KBDILLUMTOGGLE", .value = KEY_KBDILLUMTOGGLE }, -+ { .name = "KEY_KBDILLUMUP", .value = KEY_KBDILLUMUP }, -+ { .name = "KEY_KBDINPUTASSIST_ACCEPT", .value = KEY_KBDINPUTASSIST_ACCEPT }, -+ { .name = "KEY_KBDINPUTASSIST_CANCEL", .value = KEY_KBDINPUTASSIST_CANCEL }, -+ { .name = "KEY_KBDINPUTASSIST_NEXT", .value = KEY_KBDINPUTASSIST_NEXT }, -+ { .name = "KEY_KBDINPUTASSIST_NEXTGROUP", .value = KEY_KBDINPUTASSIST_NEXTGROUP }, -+ { .name = "KEY_KBDINPUTASSIST_PREV", .value = KEY_KBDINPUTASSIST_PREV }, -+ { .name = "KEY_KBDINPUTASSIST_PREVGROUP", .value = KEY_KBDINPUTASSIST_PREVGROUP }, -+ { .name = "KEY_KEYBOARD", .value = KEY_KEYBOARD }, -+ { .name = "KEY_KP0", .value = KEY_KP0 }, -+ { .name = "KEY_KP1", .value = KEY_KP1 }, -+ { .name = "KEY_KP2", .value = KEY_KP2 }, -+ { .name = "KEY_KP3", .value = KEY_KP3 }, -+ { .name = "KEY_KP4", .value = KEY_KP4 }, -+ { .name = "KEY_KP5", .value = KEY_KP5 }, -+ { .name = "KEY_KP6", .value = KEY_KP6 }, -+ { .name = "KEY_KP7", .value = KEY_KP7 }, -+ { .name = "KEY_KP8", .value = KEY_KP8 }, -+ { .name = "KEY_KP9", .value = KEY_KP9 }, -+ { .name = "KEY_KPASTERISK", .value = KEY_KPASTERISK }, -+ { .name = "KEY_KPCOMMA", .value = KEY_KPCOMMA }, -+ { .name = "KEY_KPDOT", .value = KEY_KPDOT }, -+ { .name = "KEY_KPENTER", .value = KEY_KPENTER }, -+ { .name = "KEY_KPEQUAL", .value = KEY_KPEQUAL }, -+ { .name = "KEY_KPJPCOMMA", .value = KEY_KPJPCOMMA }, -+ { .name = "KEY_KPLEFTPAREN", .value = KEY_KPLEFTPAREN }, -+ { .name = "KEY_KPMINUS", .value = KEY_KPMINUS }, -+ { .name = "KEY_KPPLUS", .value = KEY_KPPLUS }, -+ { .name = "KEY_KPPLUSMINUS", .value = KEY_KPPLUSMINUS }, -+ { .name = "KEY_KPRIGHTPAREN", .value = KEY_KPRIGHTPAREN }, -+ { .name = "KEY_KPSLASH", .value = KEY_KPSLASH }, -+ { .name = "KEY_L", .value = KEY_L }, -+ { .name = "KEY_LANGUAGE", .value = KEY_LANGUAGE }, -+ { .name = "KEY_LAST", .value = KEY_LAST }, -+ { .name = "KEY_LEFT", .value = KEY_LEFT }, -+ { .name = "KEY_LEFTALT", .value = KEY_LEFTALT }, -+ { .name = "KEY_LEFTBRACE", .value = KEY_LEFTBRACE }, -+ { .name = "KEY_LEFTCTRL", .value = KEY_LEFTCTRL }, -+ { .name = "KEY_LEFTMETA", .value = KEY_LEFTMETA }, -+ { .name = "KEY_LEFTSHIFT", .value = KEY_LEFTSHIFT }, -+ { .name = "KEY_LIGHTS_TOGGLE", .value = KEY_LIGHTS_TOGGLE }, -+ { .name = "KEY_LINEFEED", .value = KEY_LINEFEED }, -+ { .name = "KEY_LIST", .value = KEY_LIST }, -+ { .name = "KEY_LOGOFF", .value = KEY_LOGOFF }, -+ { .name = "KEY_M", .value = KEY_M }, -+ { .name = "KEY_MACRO", .value = KEY_MACRO }, -+ { .name = "KEY_MAIL", .value = KEY_MAIL }, -+ { .name = "KEY_MAX", .value = KEY_MAX }, -+ { .name = "KEY_MEDIA", .value = KEY_MEDIA }, -+ { .name = "KEY_MEDIA_REPEAT", .value = KEY_MEDIA_REPEAT }, -+ { .name = "KEY_MEMO", .value = KEY_MEMO }, -+ { .name = "KEY_MENU", .value = KEY_MENU }, -+ { .name = "KEY_MESSENGER", .value = KEY_MESSENGER }, -+ { .name = "KEY_MHP", .value = KEY_MHP }, -+ { .name = "KEY_MICMUTE", .value = KEY_MICMUTE }, -+ { .name = "KEY_MINUS", .value = KEY_MINUS }, -+ { .name = "KEY_MODE", .value = KEY_MODE }, -+ { .name = "KEY_MOVE", .value = KEY_MOVE }, -+ { .name = "KEY_MP3", .value = KEY_MP3 }, -+ { .name = "KEY_MSDOS", .value = KEY_MSDOS }, -+ { .name = "KEY_MUHENKAN", .value = KEY_MUHENKAN }, -+ { .name = "KEY_MUTE", .value = KEY_MUTE }, -+ { .name = "KEY_N", .value = KEY_N }, -+ { .name = "KEY_NEW", .value = KEY_NEW }, -+ { .name = "KEY_NEWS", .value = KEY_NEWS }, -+ { .name = "KEY_NEXT", .value = KEY_NEXT }, -+ { .name = "KEY_NEXTSONG", .value = KEY_NEXTSONG }, -+ { .name = "KEY_NUMERIC_0", .value = KEY_NUMERIC_0 }, -+ { .name = "KEY_NUMERIC_1", .value = KEY_NUMERIC_1 }, -+ { .name = "KEY_NUMERIC_2", .value = KEY_NUMERIC_2 }, -+ { .name = "KEY_NUMERIC_3", .value = KEY_NUMERIC_3 }, -+ { .name = "KEY_NUMERIC_4", .value = KEY_NUMERIC_4 }, -+ { .name = "KEY_NUMERIC_5", .value = KEY_NUMERIC_5 }, -+ { .name = "KEY_NUMERIC_6", .value = KEY_NUMERIC_6 }, -+ { .name = "KEY_NUMERIC_7", .value = KEY_NUMERIC_7 }, -+ { .name = "KEY_NUMERIC_8", .value = KEY_NUMERIC_8 }, -+ { .name = "KEY_NUMERIC_9", .value = KEY_NUMERIC_9 }, -+ { .name = "KEY_NUMERIC_A", .value = KEY_NUMERIC_A }, -+ { .name = "KEY_NUMERIC_B", .value = KEY_NUMERIC_B }, -+ { .name = "KEY_NUMERIC_C", .value = KEY_NUMERIC_C }, -+ { .name = "KEY_NUMERIC_D", .value = KEY_NUMERIC_D }, -+ { .name = "KEY_NUMERIC_POUND", .value = KEY_NUMERIC_POUND }, -+ { .name = "KEY_NUMERIC_STAR", .value = KEY_NUMERIC_STAR }, -+ { .name = "KEY_NUMLOCK", .value = KEY_NUMLOCK }, -+ { .name = "KEY_O", .value = KEY_O }, -+ { .name = "KEY_OK", .value = KEY_OK }, -+ { .name = "KEY_OPEN", .value = KEY_OPEN }, -+ { .name = "KEY_OPTION", .value = KEY_OPTION }, -+ { .name = "KEY_P", .value = KEY_P }, -+ { .name = "KEY_PAGEDOWN", .value = KEY_PAGEDOWN }, -+ { .name = "KEY_PAGEUP", .value = KEY_PAGEUP }, -+ { .name = "KEY_PASTE", .value = KEY_PASTE }, -+ { .name = "KEY_PAUSE", .value = KEY_PAUSE }, -+ { .name = "KEY_PAUSECD", .value = KEY_PAUSECD }, -+ { .name = "KEY_PC", .value = KEY_PC }, -+ { .name = "KEY_PHONE", .value = KEY_PHONE }, -+ { .name = "KEY_PLAY", .value = KEY_PLAY }, -+ { .name = "KEY_PLAYCD", .value = KEY_PLAYCD }, -+ { .name = "KEY_PLAYER", .value = KEY_PLAYER }, -+ { .name = "KEY_PLAYPAUSE", .value = KEY_PLAYPAUSE }, -+ { .name = "KEY_POWER", .value = KEY_POWER }, -+ { .name = "KEY_POWER2", .value = KEY_POWER2 }, -+ { .name = "KEY_PRESENTATION", .value = KEY_PRESENTATION }, -+ { .name = "KEY_PREVIOUS", .value = KEY_PREVIOUS }, -+ { .name = "KEY_PREVIOUSSONG", .value = KEY_PREVIOUSSONG }, -+ { .name = "KEY_PRINT", .value = KEY_PRINT }, -+ { .name = "KEY_PROG1", .value = KEY_PROG1 }, -+ { .name = "KEY_PROG2", .value = KEY_PROG2 }, -+ { .name = "KEY_PROG3", .value = KEY_PROG3 }, -+ { .name = "KEY_PROG4", .value = KEY_PROG4 }, -+ { .name = "KEY_PROGRAM", .value = KEY_PROGRAM }, -+ { .name = "KEY_PROPS", .value = KEY_PROPS }, -+ { .name = "KEY_PVR", .value = KEY_PVR }, -+ { .name = "KEY_Q", .value = KEY_Q }, -+ { .name = "KEY_QUESTION", .value = KEY_QUESTION }, -+ { .name = "KEY_R", .value = KEY_R }, -+ { .name = "KEY_RADIO", .value = KEY_RADIO }, -+ { .name = "KEY_RECORD", .value = KEY_RECORD }, -+ { .name = "KEY_RED", .value = KEY_RED }, -+ { .name = "KEY_REDO", .value = KEY_REDO }, -+ { .name = "KEY_REFRESH", .value = KEY_REFRESH }, -+ { .name = "KEY_REPLY", .value = KEY_REPLY }, -+ { .name = "KEY_RESERVED", .value = KEY_RESERVED }, -+ { .name = "KEY_RESTART", .value = KEY_RESTART }, -+ { .name = "KEY_REWIND", .value = KEY_REWIND }, -+ { .name = "KEY_RFKILL", .value = KEY_RFKILL }, -+ { .name = "KEY_RIGHT", .value = KEY_RIGHT }, -+ { .name = "KEY_RIGHTALT", .value = KEY_RIGHTALT }, -+ { .name = "KEY_RIGHTBRACE", .value = KEY_RIGHTBRACE }, -+ { .name = "KEY_RIGHTCTRL", .value = KEY_RIGHTCTRL }, -+ { .name = "KEY_RIGHTMETA", .value = KEY_RIGHTMETA }, -+ { .name = "KEY_RIGHTSHIFT", .value = KEY_RIGHTSHIFT }, -+ { .name = "KEY_RO", .value = KEY_RO }, -+ { .name = "KEY_ROTATE_DISPLAY", .value = KEY_ROTATE_DISPLAY }, -+ { .name = "KEY_S", .value = KEY_S }, -+ { .name = "KEY_SAT", .value = KEY_SAT }, -+ { .name = "KEY_SAT2", .value = KEY_SAT2 }, -+ { .name = "KEY_SAVE", .value = KEY_SAVE }, -+ { .name = "KEY_SCALE", .value = KEY_SCALE }, -+ { .name = "KEY_SCREEN", .value = KEY_SCREEN }, -+ { .name = "KEY_SCREENSAVER", .value = KEY_SCREENSAVER }, -+ { .name = "KEY_SCROLLDOWN", .value = KEY_SCROLLDOWN }, -+ { .name = "KEY_SCROLLLOCK", .value = KEY_SCROLLLOCK }, -+ { .name = "KEY_SCROLLUP", .value = KEY_SCROLLUP }, -+ { .name = "KEY_SEARCH", .value = KEY_SEARCH }, -+ { .name = "KEY_SELECT", .value = KEY_SELECT }, -+ { .name = "KEY_SEMICOLON", .value = KEY_SEMICOLON }, -+ { .name = "KEY_SEND", .value = KEY_SEND }, -+ { .name = "KEY_SENDFILE", .value = KEY_SENDFILE }, -+ { .name = "KEY_SETUP", .value = KEY_SETUP }, -+ { .name = "KEY_SHOP", .value = KEY_SHOP }, -+ { .name = "KEY_SHUFFLE", .value = KEY_SHUFFLE }, -+ { .name = "KEY_SLASH", .value = KEY_SLASH }, -+ { .name = "KEY_SLEEP", .value = KEY_SLEEP }, -+ { .name = "KEY_SLOW", .value = KEY_SLOW }, -+ { .name = "KEY_SOUND", .value = KEY_SOUND }, -+ { .name = "KEY_SPACE", .value = KEY_SPACE }, -+ { .name = "KEY_SPELLCHECK", .value = KEY_SPELLCHECK }, -+ { .name = "KEY_SPORT", .value = KEY_SPORT }, -+ { .name = "KEY_SPREADSHEET", .value = KEY_SPREADSHEET }, -+ { .name = "KEY_STOP", .value = KEY_STOP }, -+ { .name = "KEY_STOPCD", .value = KEY_STOPCD }, -+ { .name = "KEY_SUBTITLE", .value = KEY_SUBTITLE }, -+ { .name = "KEY_SUSPEND", .value = KEY_SUSPEND }, -+ { .name = "KEY_SWITCHVIDEOMODE", .value = KEY_SWITCHVIDEOMODE }, -+ { .name = "KEY_SYSRQ", .value = KEY_SYSRQ }, -+ { .name = "KEY_T", .value = KEY_T }, -+ { .name = "KEY_TAB", .value = KEY_TAB }, -+ { .name = "KEY_TAPE", .value = KEY_TAPE }, -+ { .name = "KEY_TASKMANAGER", .value = KEY_TASKMANAGER }, -+ { .name = "KEY_TEEN", .value = KEY_TEEN }, -+ { .name = "KEY_TEXT", .value = KEY_TEXT }, -+ { .name = "KEY_TIME", .value = KEY_TIME }, -+ { .name = "KEY_TITLE", .value = KEY_TITLE }, -+ { .name = "KEY_TOUCHPAD_OFF", .value = KEY_TOUCHPAD_OFF }, -+ { .name = "KEY_TOUCHPAD_ON", .value = KEY_TOUCHPAD_ON }, -+ { .name = "KEY_TOUCHPAD_TOGGLE", .value = KEY_TOUCHPAD_TOGGLE }, -+ { .name = "KEY_TUNER", .value = KEY_TUNER }, -+ { .name = "KEY_TV", .value = KEY_TV }, -+ { .name = "KEY_TV2", .value = KEY_TV2 }, -+ { .name = "KEY_TWEN", .value = KEY_TWEN }, -+ { .name = "KEY_U", .value = KEY_U }, -+ { .name = "KEY_UNDO", .value = KEY_UNDO }, -+ { .name = "KEY_UNKNOWN", .value = KEY_UNKNOWN }, -+ { .name = "KEY_UP", .value = KEY_UP }, -+ { .name = "KEY_UWB", .value = KEY_UWB }, -+ { .name = "KEY_V", .value = KEY_V }, -+ { .name = "KEY_VCR", .value = KEY_VCR }, -+ { .name = "KEY_VCR2", .value = KEY_VCR2 }, -+ { .name = "KEY_VENDOR", .value = KEY_VENDOR }, -+ { .name = "KEY_VIDEO", .value = KEY_VIDEO }, -+ { .name = "KEY_VIDEOPHONE", .value = KEY_VIDEOPHONE }, -+ { .name = "KEY_VIDEO_NEXT", .value = KEY_VIDEO_NEXT }, -+ { .name = "KEY_VIDEO_PREV", .value = KEY_VIDEO_PREV }, -+ { .name = "KEY_VOICECOMMAND", .value = KEY_VOICECOMMAND }, -+ { .name = "KEY_VOICEMAIL", .value = KEY_VOICEMAIL }, -+ { .name = "KEY_VOLUMEDOWN", .value = KEY_VOLUMEDOWN }, -+ { .name = "KEY_VOLUMEUP", .value = KEY_VOLUMEUP }, -+ { .name = "KEY_W", .value = KEY_W }, -+ { .name = "KEY_WAKEUP", .value = KEY_WAKEUP }, -+ { .name = "KEY_WLAN", .value = KEY_WLAN }, -+ { .name = "KEY_WORDPROCESSOR", .value = KEY_WORDPROCESSOR }, -+ { .name = "KEY_WPS_BUTTON", .value = KEY_WPS_BUTTON }, -+ { .name = "KEY_WWAN", .value = KEY_WWAN }, -+ { .name = "KEY_WWW", .value = KEY_WWW }, -+ { .name = "KEY_X", .value = KEY_X }, -+ { .name = "KEY_XFER", .value = KEY_XFER }, -+ { .name = "KEY_Y", .value = KEY_Y }, -+ { .name = "KEY_YELLOW", .value = KEY_YELLOW }, -+ { .name = "KEY_YEN", .value = KEY_YEN }, -+ { .name = "KEY_Z", .value = KEY_Z }, -+ { .name = "KEY_ZENKAKUHANKAKU", .value = KEY_ZENKAKUHANKAKU }, -+ { .name = "KEY_ZOOM", .value = KEY_ZOOM }, -+ { .name = "KEY_ZOOMIN", .value = KEY_ZOOMIN }, -+ { .name = "KEY_ZOOMOUT", .value = KEY_ZOOMOUT }, -+ { .name = "KEY_ZOOMRESET", .value = KEY_ZOOMRESET }, -+ { .name = "LED_CAPSL", .value = LED_CAPSL }, -+ { .name = "LED_CHARGING", .value = LED_CHARGING }, -+ { .name = "LED_COMPOSE", .value = LED_COMPOSE }, -+ { .name = "LED_KANA", .value = LED_KANA }, -+ { .name = "LED_MAIL", .value = LED_MAIL }, -+ { .name = "LED_MAX", .value = LED_MAX }, -+ { .name = "LED_MISC", .value = LED_MISC }, -+ { .name = "LED_MUTE", .value = LED_MUTE }, -+ { .name = "LED_NUML", .value = LED_NUML }, -+ { .name = "LED_SCROLLL", .value = LED_SCROLLL }, -+ { .name = "LED_SLEEP", .value = LED_SLEEP }, -+ { .name = "LED_SUSPEND", .value = LED_SUSPEND }, -+ { .name = "MSC_GESTURE", .value = MSC_GESTURE }, -+ { .name = "MSC_MAX", .value = MSC_MAX }, -+ { .name = "MSC_PULSELED", .value = MSC_PULSELED }, -+ { .name = "MSC_RAW", .value = MSC_RAW }, -+ { .name = "MSC_SCAN", .value = MSC_SCAN }, -+ { .name = "MSC_SERIAL", .value = MSC_SERIAL }, -+ { .name = "MSC_TIMESTAMP", .value = MSC_TIMESTAMP }, -+ { .name = "REL_DIAL", .value = REL_DIAL }, -+ { .name = "REL_HWHEEL", .value = REL_HWHEEL }, -+ { .name = "REL_MAX", .value = REL_MAX }, -+ { .name = "REL_MISC", .value = REL_MISC }, -+ { .name = "REL_RX", .value = REL_RX }, -+ { .name = "REL_RY", .value = REL_RY }, -+ { .name = "REL_RZ", .value = REL_RZ }, -+ { .name = "REL_WHEEL", .value = REL_WHEEL }, -+ { .name = "REL_X", .value = REL_X }, -+ { .name = "REL_Y", .value = REL_Y }, -+ { .name = "REL_Z", .value = REL_Z }, -+ { .name = "REP_DELAY", .value = REP_DELAY }, -+ { .name = "REP_MAX", .value = REP_MAX }, -+ { .name = "SND_BELL", .value = SND_BELL }, -+ { .name = "SND_CLICK", .value = SND_CLICK }, -+ { .name = "SND_MAX", .value = SND_MAX }, -+ { .name = "SND_TONE", .value = SND_TONE }, -+ { .name = "SW_CAMERA_LENS_COVER", .value = SW_CAMERA_LENS_COVER }, -+ { .name = "SW_DOCK", .value = SW_DOCK }, -+ { .name = "SW_FRONT_PROXIMITY", .value = SW_FRONT_PROXIMITY }, -+ { .name = "SW_HEADPHONE_INSERT", .value = SW_HEADPHONE_INSERT }, -+ { .name = "SW_JACK_PHYSICAL_INSERT", .value = SW_JACK_PHYSICAL_INSERT }, -+ { .name = "SW_KEYPAD_SLIDE", .value = SW_KEYPAD_SLIDE }, -+ { .name = "SW_LID", .value = SW_LID }, -+ { .name = "SW_LINEIN_INSERT", .value = SW_LINEIN_INSERT }, -+ { .name = "SW_LINEOUT_INSERT", .value = SW_LINEOUT_INSERT }, -+ { .name = "SW_MAX", .value = SW_MAX }, -+ { .name = "SW_MICROPHONE_INSERT", .value = SW_MICROPHONE_INSERT }, -+ { .name = "SW_MUTE_DEVICE", .value = SW_MUTE_DEVICE }, -+ { .name = "SW_RFKILL_ALL", .value = SW_RFKILL_ALL }, -+ { .name = "SW_ROTATE_LOCK", .value = SW_ROTATE_LOCK }, -+ { .name = "SW_TABLET_MODE", .value = SW_TABLET_MODE }, -+ { .name = "SW_VIDEOOUT_INSERT", .value = SW_VIDEOOUT_INSERT }, -+ { .name = "SYN_CONFIG", .value = SYN_CONFIG }, -+ { .name = "SYN_DROPPED", .value = SYN_DROPPED }, -+ { .name = "SYN_MAX", .value = SYN_MAX }, -+ { .name = "SYN_MT_REPORT", .value = SYN_MT_REPORT }, -+ { .name = "SYN_REPORT", .value = SYN_REPORT }, -+}; -+ -+static const struct name_entry prop_names[] = { -+ { .name = "INPUT_PROP_ACCELEROMETER", .value = INPUT_PROP_ACCELEROMETER }, -+ { .name = "INPUT_PROP_BUTTONPAD", .value = INPUT_PROP_BUTTONPAD }, -+ { .name = "INPUT_PROP_DIRECT", .value = INPUT_PROP_DIRECT }, -+ { .name = "INPUT_PROP_MAX", .value = INPUT_PROP_MAX }, -+ { .name = "INPUT_PROP_POINTER", .value = INPUT_PROP_POINTER }, -+ { .name = "INPUT_PROP_POINTING_STICK", .value = INPUT_PROP_POINTING_STICK }, -+ { .name = "INPUT_PROP_SEMI_MT", .value = INPUT_PROP_SEMI_MT }, -+ { .name = "INPUT_PROP_TOPBUTTONPAD", .value = INPUT_PROP_TOPBUTTONPAD }, -+}; -+ -+#endif /* EVENT_NAMES_H */ --- -2.11.0 - diff --git a/desktop/libevdev/rev b/desktop/libevdev/rev deleted file mode 100644 index 00750edc..00000000 --- a/desktop/libevdev/rev +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/desktop/libevdev/src b/desktop/libevdev/src deleted file mode 160000 -Subproject 452847a31471e5b4e13aa544cd74d3933b63793 diff --git a/desktop/libffi/fficonfig.h b/desktop/libffi/fficonfig.h deleted file mode 100644 index e49b5af1..00000000 --- a/desktop/libffi/fficonfig.h +++ /dev/null @@ -1,68 +0,0 @@ -#include <config-posix.h> - -/* #undef AC_APPLE_UNIVERSAL_BUILD */ -/* #undef CRAY_STACKSEG_END */ -/* #undef C_ALLOCA */ -#define EH_FRAME_FLAGS "aw" -/* #undef FFI_DEBUG */ -/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ -/* #undef FFI_MMAP_EXEC_EMUTRAMP_PAX */ -/* #undef FFI_MMAP_EXEC_WRIT */ -/* #undef FFI_NO_RAW_API */ -/* #undef FFI_NO_STRUCTS */ -#define HAVE_ALLOCA 1 -#define HAVE_ALLOCA_H 1 -#define HAVE_AS_ASCII_PSEUDO_OP 1 -#define HAVE_AS_CFI_PSEUDO_OP 1 -/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ -/* #undef HAVE_AS_SPARC_UA_PCREL */ -#define HAVE_AS_STRING_PSEUDO_OP 1 -#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1 -#define HAVE_AS_X86_PCREL 1 -#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1 -#define HAVE_LONG_DOUBLE 1 -/* #undef HAVE_LONG_DOUBLE_VARIANT */ -#define HAVE_MEMORY_H 1 -#define HAVE_MKOSTEMP 1 -#define HAVE_MMAP_ANON 1 -#define HAVE_MMAP_DEV_ZERO 1 -#define HAVE_MMAP_FILE 1 -/* #undef HAVE_RO_EH_FRAME */ -#define LT_OBJDIR ".libs/" -#define PACKAGE "libffi" -#define PACKAGE_BUGREPORT "http://github.com/atgreen/libffi/issues" -#define PACKAGE_NAME "libffi" -#define PACKAGE_STRING "libffi 3.2.1" -#define PACKAGE_TARNAME "libffi" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "3.2.1" -#define SIZEOF_DOUBLE 8 -#define SIZEOF_LONG_DOUBLE 16 -#define SIZEOF_SIZE_T 8 -/* #undef STACK_DIRECTION */ -/* #undef SYMBOL_UNDERSCORE */ -/* #undef USING_PURIFY */ -#define VERSION "3.2.1" -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif -/* #undef size_t */ -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) .hidden name -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif diff --git a/desktop/libffi/gen.rc b/desktop/libffi/gen.rc deleted file mode 100644 index 3c182720..00000000 --- a/desktop/libffi/gen.rc +++ /dev/null @@ -1,26 +0,0 @@ -cflags\ - -I include\ - -I '$dir' \ - -I '$outdir'/include\ - -I '$srcdir'/include - -build '$outdir'/include/ffi.h sed '$srcdir'/include/ffi.h.in ; exprs=(\ - -e s,@VERSION@,3.2.1,\ - -e s,@TARGET@,X86_64,\ - -e s,@HAVE_LONG_DOUBLE@,1,\ - -e s,@HAVE_LONG_DOUBLE_VARIANT@,0,\ - -e s,@FFI_EXEC_TRAMPOLINE_TABLE@,0,\ -) with expr $"exprs -build '$outdir'/include/ffitarget.h copy '$srcdir'/src/x86/ffitarget.h - -hdrs=include/^(ffi.h ffitarget.h) -phony headers '$outdir'/$hdrs -for(hdr in $hdrs) file $hdr '$outdir'/$hdr 644 - -lib libffi.a -d '$dir'/headers src/^(\ - prep_cif.c types.c raw_api.c java_raw_api.c closures.c\ - x86/^(ffi64.c unix64.S ffi.c sysv.S)\ -) -file lib/libffi.a '$outdir'/libffi.a 644 - -fetch git diff --git a/desktop/libffi/rev b/desktop/libffi/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/libffi/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/libffi/src b/desktop/libffi/src deleted file mode 160000 -Subproject 20562ac0427c3578250d04c6e34fb0127d4551c diff --git a/desktop/libpciaccess/config.h b/desktop/libpciaccess/config.h deleted file mode 100644 index d325750e..00000000 --- a/desktop/libpciaccess/config.h +++ /dev/null @@ -1,46 +0,0 @@ -#include <config-posix.h> - -#define HAVE_ERR_H 1 -/* #undef HAVE_MACHINE_MTRR_H */ -/* #undef HAVE_MACHINE_SYSARCH_H */ -#define HAVE_MEMORY_H 1 -/* #undef HAVE_MTRR */ -/* #undef HAVE_PCI_IO_PC_DOMAIN */ -/* #undef HAVE_ZLIB */ -/* #undef LINUX_ROM */ -#define LT_OBJDIR ".libs/" -#define PACKAGE "libpciaccess" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=libpciaccess" -#define PACKAGE_NAME "libpciaccess" -#define PACKAGE_STRING "libpciaccess 0.13.4" -#define PACKAGE_TARNAME "libpciaccess" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "0.13.4" -#define PACKAGE_VERSION_MAJOR 0 -#define PACKAGE_VERSION_MINOR 13 -#define PACKAGE_VERSION_PATCHLEVEL 4 -#define PCIIDS_PATH "/share/hwdata" -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -#define VERSION "0.13.4" -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif -/* #undef _FILE_OFFSET_BITS */ -/* #undef _LARGE_FILES */ -/* #undef _MINIX */ -/* #undef _POSIX_1_SOURCE */ -/* #undef _POSIX_SOURCE */ diff --git a/desktop/libpciaccess/gen.rc b/desktop/libpciaccess/gen.rc deleted file mode 100644 index ab0fb6ff..00000000 --- a/desktop/libpciaccess/gen.rc +++ /dev/null @@ -1,20 +0,0 @@ -cflags\ - -D HAVE_CONFIG_H\ - -I include\ - -I '$dir' \ - -I '$srcdir'/include - -lib libpciaccess.a src/^(\ - common_bridge.c\ - common_iterator.c\ - common_init.c\ - common_interface.c\ - common_io.c\ - common_capability.c\ - common_device_name.c\ - common_map.c\ - common_vgaarb.c\ - linux_sysfs.c linux_devmem.c\ -) - -fetch git diff --git a/desktop/libpciaccess/patch/0001-linux_sysfs.c-Include-limits.h-for-PATH_MAX.patch b/desktop/libpciaccess/patch/0001-linux_sysfs.c-Include-limits.h-for-PATH_MAX.patch deleted file mode 100644 index c9a955b2..00000000 --- a/desktop/libpciaccess/patch/0001-linux_sysfs.c-Include-limits.h-for-PATH_MAX.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a371658cdd5df0ca35cce64de9694edd27106a06 Mon Sep 17 00:00:00 2001 -From: Felix Janda <felix.janda@posteo.de> -Date: Fri, 1 May 2015 16:36:50 +0200 -Subject: [PATCH] linux_sysfs.c: Include <limits.h> for PATH_MAX - -Fixes compilation with musl libc. - -Tested-by: Bernd Kuhls <bernd.kuhls@t-online.de> -Signed-off-by: Felix Janda <felix.janda@posteo.de> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> ---- - src/linux_sysfs.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c -index 50d94cf..3f95e53 100644 ---- a/src/linux_sysfs.c -+++ b/src/linux_sysfs.c -@@ -45,6 +45,7 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <fcntl.h> -+#include <limits.h> - #include <sys/mman.h> - #include <dirent.h> - #include <errno.h> --- -2.9.0 - diff --git a/desktop/libpciaccess/rev b/desktop/libpciaccess/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/libpciaccess/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/libpciaccess/src b/desktop/libpciaccess/src deleted file mode 160000 -Subproject bbd1acdd1d25b9a68f4b7913a4094af20d7cf78 diff --git a/desktop/libxkbcommon/config.h b/desktop/libxkbcommon/config.h deleted file mode 100644 index 807fb6b9..00000000 --- a/desktop/libxkbcommon/config.h +++ /dev/null @@ -1,49 +0,0 @@ -#include <config-posix.h> - -#define DFLT_XKB_CONFIG_ROOT "/share/xkb" -#define XLOCALEDIR "/share/xlocale" - -#define DEFAULT_XKB_LAYOUT "us" -#define DEFAULT_XKB_MODEL "pc105" -/* #undef DEFAULT_XKB_OPTIONS */ -#define DEFAULT_XKB_RULES "evdev" -/* #undef DEFAULT_XKB_VARIANT */ -#define HAVE_EACCESS 1 -#define HAVE_EUIDACCESS 1 -#define HAVE_MEMORY_H 1 -/* #undef HAVE_SECURE_GETENV */ -#define HAVE___BUILTIN_EXPECT 1 -/* #undef HAVE___SECURE_GETENV */ -#define LT_OBJDIR ".libs/" -#define PACKAGE "libxkbcommon" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon" -#define PACKAGE_NAME "libxkbcommon" -#define PACKAGE_STRING "libxkbcommon 0.7.0" -#define PACKAGE_TARNAME "libxkbcommon" -#define PACKAGE_URL "http://xkbcommon.org" -#define PACKAGE_VERSION "0.7.0" -#define PACKAGE_VERSION_MAJOR 0 -#define PACKAGE_VERSION_MINOR 7 -#define PACKAGE_VERSION_PATCHLEVEL 0 -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -#define VERSION "0.7.0" -/* #undef _MINIX */ -/* #undef _POSIX_1_SOURCE */ -/* #undef _POSIX_SOURCE */ -#ifndef __cplusplus -/* #undef inline */ -#endif diff --git a/desktop/libxkbcommon/gen.rc b/desktop/libxkbcommon/gen.rc deleted file mode 100644 index f97d57e5..00000000 --- a/desktop/libxkbcommon/gen.rc +++ /dev/null @@ -1,41 +0,0 @@ -cflags\ - -include '$dir'/config.h\ - -I include\ - -I '$srcdir' \ - -I '$srcdir'/src - -lib libxkbcommon.a src/^(\ - compose/parser.c\ - compose/paths.c\ - compose/state.c\ - compose/table.c\ - xkbcomp/action.c\ - xkbcomp/ast-build.c\ - xkbcomp/compat.c\ - xkbcomp/expr.c\ - xkbcomp/include.c\ - xkbcomp/keycodes.c\ - xkbcomp/keymap.c\ - xkbcomp/keymap-dump.c\ - xkbcomp/keywords.c\ - xkbcomp/parser.c\ - xkbcomp/rules.c\ - xkbcomp/scanner.c\ - xkbcomp/symbols.c\ - xkbcomp/types.c\ - xkbcomp/vmod.c\ - xkbcomp/xkbcomp.c\ - atom.c\ - context.c\ - context-priv.c\ - keysym.c\ - keysym-utf.c\ - keymap.c\ - keymap-priv.c\ - state.c\ - text.c\ - utf8.c\ - utils.c\ -) - -fetch git diff --git a/desktop/libxkbcommon/patch/0001-Import-parser.-c-h-from-libxkbcommon-0.7.0-distribut.patch b/desktop/libxkbcommon/patch/0001-Import-parser.-c-h-from-libxkbcommon-0.7.0-distribut.patch deleted file mode 100644 index 6c15f0f2..00000000 --- a/desktop/libxkbcommon/patch/0001-Import-parser.-c-h-from-libxkbcommon-0.7.0-distribut.patch +++ /dev/null @@ -1,3710 +0,0 @@ -From 34b23df0ece4bac6475690f1ff27cfe2e6b55ccb Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Wed, 12 Oct 2016 21:21:58 -0700 -Subject: [PATCH] Import parser.{c,h} from libxkbcommon-0.7.0 distribution - ---- - src/xkbcomp/parser.c | 3462 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xkbcomp/parser.h | 221 ++++ - 2 files changed, 3683 insertions(+) - create mode 100644 src/xkbcomp/parser.c - create mode 100644 src/xkbcomp/parser.h - -diff --git a/src/xkbcomp/parser.c b/src/xkbcomp/parser.c -new file mode 100644 -index 0000000..5b46b90 ---- /dev/null -+++ b/src/xkbcomp/parser.c -@@ -0,0 +1,3462 @@ -+/* A Bison parser, made by GNU Bison 3.0.4. */ -+ -+/* Bison implementation for Yacc-like parsers in C -+ -+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. -+ -+ This program is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+/* C LALR(1) parser skeleton written by Richard Stallman, by -+ simplifying the original so-called "semantic" parser. */ -+ -+/* All symbols defined below should begin with yy or YY, to avoid -+ infringing on user name space. This should be done even for local -+ variables, as they might otherwise be expanded by user macros. -+ There are some unavoidable exceptions within include files to -+ define necessary library symbols; they are noted "INFRINGES ON -+ USER NAME SPACE" below. */ -+ -+/* Identify Bison output. */ -+#define YYBISON 1 -+ -+/* Bison version. */ -+#define YYBISON_VERSION "3.0.4" -+ -+/* Skeleton name. */ -+#define YYSKELETON_NAME "yacc.c" -+ -+/* Pure parsers. */ -+#define YYPURE 1 -+ -+/* Push parsers. */ -+#define YYPUSH 0 -+ -+/* Pull parsers. */ -+#define YYPULL 1 -+ -+ -+/* Substitute the variable and function names. */ -+#define yyparse _xkbcommon_parse -+#define yylex _xkbcommon_lex -+#define yyerror _xkbcommon_error -+#define yydebug _xkbcommon_debug -+#define yynerrs _xkbcommon_nerrs -+ -+ -+/* Copy the first part of user declarations. */ -+#line 33 "src/xkbcomp/parser.y" /* yacc.c:339 */ -+ -+#include "xkbcomp-priv.h" -+#include "ast-build.h" -+#include "parser-priv.h" -+#include "scanner-utils.h" -+ -+struct parser_param { -+ struct xkb_context *ctx; -+ struct scanner *scanner; -+ XkbFile *rtrn; -+ bool more_maps; -+}; -+ -+#define parser_err(param, fmt, ...) \ -+ scanner_err((param)->scanner, fmt, ##__VA_ARGS__) -+ -+#define parser_warn(param, fmt, ...) \ -+ scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) -+ -+static void -+_xkbcommon_error(struct parser_param *param, const char *msg) -+{ -+ parser_err(param, "%s", msg); -+} -+ -+static bool -+resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) -+{ -+ xkb_keysym_t sym; -+ -+ if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { -+ *sym_rtrn = XKB_KEY_NoSymbol; -+ return true; -+ } -+ -+ if (istreq(name, "none") || istreq(name, "voidsymbol")) { -+ *sym_rtrn = XKB_KEY_VoidSymbol; -+ return true; -+ } -+ -+ sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); -+ if (sym != XKB_KEY_NoSymbol) { -+ *sym_rtrn = sym; -+ return true; -+ } -+ -+ return false; -+} -+ -+#define param_scanner param->scanner -+ -+#line 124 "src/xkbcomp/parser.c" /* yacc.c:339 */ -+ -+# ifndef YY_NULLPTR -+# if defined __cplusplus && 201103L <= __cplusplus -+# define YY_NULLPTR nullptr -+# else -+# define YY_NULLPTR 0 -+# endif -+# endif -+ -+/* Enabling verbose error messages. */ -+#ifdef YYERROR_VERBOSE -+# undef YYERROR_VERBOSE -+# define YYERROR_VERBOSE 1 -+#else -+# define YYERROR_VERBOSE 0 -+#endif -+ -+/* In a future release of Bison, this section will be replaced -+ by #include "y.tab.h". */ -+#ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED -+# define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED -+/* Debug traces. */ -+#ifndef YYDEBUG -+# define YYDEBUG 0 -+#endif -+#if YYDEBUG -+extern int _xkbcommon_debug; -+#endif -+ -+/* Token type. */ -+#ifndef YYTOKENTYPE -+# define YYTOKENTYPE -+ enum yytokentype -+ { -+ END_OF_FILE = 0, -+ ERROR_TOK = 255, -+ XKB_KEYMAP = 1, -+ XKB_KEYCODES = 2, -+ XKB_TYPES = 3, -+ XKB_SYMBOLS = 4, -+ XKB_COMPATMAP = 5, -+ XKB_GEOMETRY = 6, -+ XKB_SEMANTICS = 7, -+ XKB_LAYOUT = 8, -+ INCLUDE = 10, -+ OVERRIDE = 11, -+ AUGMENT = 12, -+ REPLACE = 13, -+ ALTERNATE = 14, -+ VIRTUAL_MODS = 20, -+ TYPE = 21, -+ INTERPRET = 22, -+ ACTION_TOK = 23, -+ KEY = 24, -+ ALIAS = 25, -+ GROUP = 26, -+ MODIFIER_MAP = 27, -+ INDICATOR = 28, -+ SHAPE = 29, -+ KEYS = 30, -+ ROW = 31, -+ SECTION = 32, -+ OVERLAY = 33, -+ TEXT = 34, -+ OUTLINE = 35, -+ SOLID = 36, -+ LOGO = 37, -+ VIRTUAL = 38, -+ EQUALS = 40, -+ PLUS = 41, -+ MINUS = 42, -+ DIVIDE = 43, -+ TIMES = 44, -+ OBRACE = 45, -+ CBRACE = 46, -+ OPAREN = 47, -+ CPAREN = 48, -+ OBRACKET = 49, -+ CBRACKET = 50, -+ DOT = 51, -+ COMMA = 52, -+ SEMI = 53, -+ EXCLAM = 54, -+ INVERT = 55, -+ STRING = 60, -+ INTEGER = 61, -+ FLOAT = 62, -+ IDENT = 63, -+ KEYNAME = 64, -+ PARTIAL = 70, -+ DEFAULT = 71, -+ HIDDEN = 72, -+ ALPHANUMERIC_KEYS = 73, -+ MODIFIER_KEYS = 74, -+ KEYPAD_KEYS = 75, -+ FUNCTION_KEYS = 76, -+ ALTERNATE_GROUP = 77 -+ }; -+#endif -+/* Tokens. */ -+#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 -+ -+/* Value type. */ -+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -+ -+union YYSTYPE -+{ -+#line 162 "src/xkbcomp/parser.y" /* yacc.c:355 */ -+ -+ int ival; -+ int64_t num; -+ enum xkb_file_type file_type; -+ char *str; -+ xkb_atom_t atom; -+ enum merge_mode merge; -+ enum xkb_map_flags mapFlags; -+ xkb_keysym_t keysym; -+ ParseCommon *any; -+ ExprDef *expr; -+ VarDef *var; -+ VModDef *vmod; -+ InterpDef *interp; -+ KeyTypeDef *keyType; -+ SymbolsDef *syms; -+ ModMapDef *modMask; -+ GroupCompatDef *groupCompat; -+ LedMapDef *ledMap; -+ LedNameDef *ledName; -+ KeycodeDef *keyCode; -+ KeyAliasDef *keyAlias; -+ void *geom; -+ XkbFile *file; -+ -+#line 320 "src/xkbcomp/parser.c" /* yacc.c:355 */ -+}; -+ -+typedef union YYSTYPE YYSTYPE; -+# define YYSTYPE_IS_TRIVIAL 1 -+# define YYSTYPE_IS_DECLARED 1 -+#endif -+ -+ -+ -+int _xkbcommon_parse (struct parser_param *param); -+ -+#endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED */ -+ -+/* Copy the second part of user declarations. */ -+ -+#line 336 "src/xkbcomp/parser.c" /* yacc.c:358 */ -+ -+#ifdef short -+# undef short -+#endif -+ -+#ifdef YYTYPE_UINT8 -+typedef YYTYPE_UINT8 yytype_uint8; -+#else -+typedef unsigned char yytype_uint8; -+#endif -+ -+#ifdef YYTYPE_INT8 -+typedef YYTYPE_INT8 yytype_int8; -+#else -+typedef signed char yytype_int8; -+#endif -+ -+#ifdef YYTYPE_UINT16 -+typedef YYTYPE_UINT16 yytype_uint16; -+#else -+typedef unsigned short int yytype_uint16; -+#endif -+ -+#ifdef YYTYPE_INT16 -+typedef YYTYPE_INT16 yytype_int16; -+#else -+typedef short int yytype_int16; -+#endif -+ -+#ifndef YYSIZE_T -+# ifdef __SIZE_TYPE__ -+# define YYSIZE_T __SIZE_TYPE__ -+# elif defined size_t -+# define YYSIZE_T size_t -+# elif ! defined YYSIZE_T -+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -+# define YYSIZE_T size_t -+# else -+# define YYSIZE_T unsigned int -+# endif -+#endif -+ -+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) -+ -+#ifndef YY_ -+# if defined YYENABLE_NLS && YYENABLE_NLS -+# if ENABLE_NLS -+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -+# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -+# endif -+# endif -+# ifndef YY_ -+# define YY_(Msgid) Msgid -+# endif -+#endif -+ -+#ifndef YY_ATTRIBUTE -+# if (defined __GNUC__ \ -+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ -+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -+# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -+# else -+# define YY_ATTRIBUTE(Spec) /* empty */ -+# endif -+#endif -+ -+#ifndef YY_ATTRIBUTE_PURE -+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -+#endif -+ -+#ifndef YY_ATTRIBUTE_UNUSED -+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -+#endif -+ -+#if !defined _Noreturn \ -+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -+# if defined _MSC_VER && 1200 <= _MSC_VER -+# define _Noreturn __declspec (noreturn) -+# else -+# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -+# endif -+#endif -+ -+/* Suppress unused-variable warnings by "using" E. */ -+#if ! defined lint || defined __GNUC__ -+# define YYUSE(E) ((void) (E)) -+#else -+# define YYUSE(E) /* empty */ -+#endif -+ -+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -+/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ -+ _Pragma ("GCC diagnostic push") \ -+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ -+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ -+ _Pragma ("GCC diagnostic pop") -+#else -+# define YY_INITIAL_VALUE(Value) Value -+#endif -+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -+# define YY_IGNORE_MAYBE_UNINITIALIZED_END -+#endif -+#ifndef YY_INITIAL_VALUE -+# define YY_INITIAL_VALUE(Value) /* Nothing. */ -+#endif -+ -+ -+#if ! defined yyoverflow || YYERROR_VERBOSE -+ -+/* The parser invokes alloca or malloc; define the necessary symbols. */ -+ -+# ifdef YYSTACK_USE_ALLOCA -+# if YYSTACK_USE_ALLOCA -+# ifdef __GNUC__ -+# define YYSTACK_ALLOC __builtin_alloca -+# elif defined __BUILTIN_VA_ARG_INCR -+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ -+# elif defined _AIX -+# define YYSTACK_ALLOC __alloca -+# elif defined _MSC_VER -+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ -+# define alloca _alloca -+# else -+# define YYSTACK_ALLOC alloca -+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -+# ifndef EXIT_SUCCESS -+# define EXIT_SUCCESS 0 -+# endif -+# endif -+# endif -+# endif -+# endif -+ -+# ifdef YYSTACK_ALLOC -+ /* Pacify GCC's 'empty if-body' warning. */ -+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -+# ifndef YYSTACK_ALLOC_MAXIMUM -+ /* The OS might guarantee only one guard page at the bottom of the stack, -+ and a page size can be as small as 4096 bytes. So we cannot safely -+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number -+ to allow for a few compiler-allocated temporary stack slots. */ -+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -+# endif -+# else -+# define YYSTACK_ALLOC YYMALLOC -+# define YYSTACK_FREE YYFREE -+# ifndef YYSTACK_ALLOC_MAXIMUM -+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -+# endif -+# if (defined __cplusplus && ! defined EXIT_SUCCESS \ -+ && ! ((defined YYMALLOC || defined malloc) \ -+ && (defined YYFREE || defined free))) -+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -+# ifndef EXIT_SUCCESS -+# define EXIT_SUCCESS 0 -+# endif -+# endif -+# ifndef YYMALLOC -+# define YYMALLOC malloc -+# if ! defined malloc && ! defined EXIT_SUCCESS -+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -+# endif -+# endif -+# ifndef YYFREE -+# define YYFREE free -+# if ! defined free && ! defined EXIT_SUCCESS -+void free (void *); /* INFRINGES ON USER NAME SPACE */ -+# endif -+# endif -+# endif -+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ -+ -+ -+#if (! defined yyoverflow \ -+ && (! defined __cplusplus \ -+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) -+ -+/* A type that is properly aligned for any stack member. */ -+union yyalloc -+{ -+ yytype_int16 yyss_alloc; -+ YYSTYPE yyvs_alloc; -+}; -+ -+/* The size of the maximum gap between one aligned stack and the next. */ -+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) -+ -+/* The size of an array large to enough to hold all stacks, each with -+ N elements. */ -+# define YYSTACK_BYTES(N) \ -+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ -+ + YYSTACK_GAP_MAXIMUM) -+ -+# define YYCOPY_NEEDED 1 -+ -+/* Relocate STACK from its old location to the new one. The -+ local variables YYSIZE and YYSTACKSIZE give the old and new number of -+ elements in the stack, and YYPTR gives the new location of the -+ stack. Advance YYPTR to a properly aligned location for the next -+ stack. */ -+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ -+ do \ -+ { \ -+ YYSIZE_T yynewbytes; \ -+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ -+ Stack = &yyptr->Stack_alloc; \ -+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ -+ yyptr += yynewbytes / sizeof (*yyptr); \ -+ } \ -+ while (0) -+ -+#endif -+ -+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -+/* Copy COUNT objects from SRC to DST. The source and destination do -+ not overlap. */ -+# ifndef YYCOPY -+# if defined __GNUC__ && 1 < __GNUC__ -+# define YYCOPY(Dst, Src, Count) \ -+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -+# else -+# define YYCOPY(Dst, Src, Count) \ -+ do \ -+ { \ -+ YYSIZE_T yyi; \ -+ for (yyi = 0; yyi < (Count); yyi++) \ -+ (Dst)[yyi] = (Src)[yyi]; \ -+ } \ -+ while (0) -+# endif -+# endif -+#endif /* !YYCOPY_NEEDED */ -+ -+/* YYFINAL -- State number of the termination state. */ -+#define YYFINAL 16 -+/* YYLAST -- Last index in YYTABLE. */ -+#define YYLAST 735 -+ -+/* YYNTOKENS -- Number of terminals. */ -+#define YYNTOKENS 65 -+/* YYNNTS -- Number of nonterminals. */ -+#define YYNNTS 72 -+/* YYNRULES -- Number of rules. */ -+#define YYNRULES 184 -+/* YYNSTATES -- Number of states. */ -+#define YYNSTATES 334 -+ -+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned -+ by yylex, with out-of-bounds checking. */ -+#define YYUNDEFTOK 2 -+#define YYMAXUTOK 257 -+ -+#define YYTRANSLATE(YYX) \ -+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -+ -+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM -+ as returned by yylex, without out-of-bounds checking. */ -+static const yytype_uint8 yytranslate[] = -+{ -+ 0, 4, 5, 6, 7, 8, 9, 10, 11, 2, -+ 12, 13, 14, 15, 16, 2, 2, 2, 2, 2, -+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 2, -+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -+ 46, 47, 48, 49, 50, 51, 2, 2, 2, 2, -+ 52, 53, 54, 55, 56, 2, 2, 2, 2, 2, -+ 57, 58, 59, 60, 61, 62, 63, 64, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 3, 1, 2 -+}; -+ -+#if YYDEBUG -+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -+static const yytype_uint16 yyrline[] = -+{ -+ 0, 241, 241, 243, 245, 249, 255, 256, 257, 260, -+ 268, 272, 287, 288, 289, 290, 291, 294, 295, 298, -+ 299, 302, 303, 304, 305, 306, 307, 308, 309, 312, -+ 314, 317, 322, 327, 332, 337, 342, 347, 352, 357, -+ 362, 367, 372, 373, 374, 375, 382, 384, 386, 390, -+ 394, 398, 402, 405, 409, 411, 415, 421, 423, 427, -+ 430, 434, 440, 446, 449, 451, 454, 455, 456, 457, -+ 458, 461, 463, 467, 471, 475, 479, 481, 485, 487, -+ 491, 495, 496, 499, 501, 503, 505, 507, 511, 512, -+ 515, 516, 520, 521, 524, 526, 530, 534, 535, 538, -+ 541, 543, 547, 549, 551, 555, 557, 561, 565, 569, -+ 570, 571, 572, 575, 576, 579, 581, 583, 585, 587, -+ 589, 591, 593, 595, 597, 599, 603, 604, 607, 608, -+ 609, 610, 611, 621, 622, 625, 628, 632, 634, 636, -+ 638, 640, 642, 646, 648, 650, 652, 654, 656, 658, -+ 660, 664, 667, 671, 675, 677, 679, 681, 685, 687, -+ 689, 691, 695, 696, 699, 701, 703, 705, 709, 713, -+ 719, 720, 740, 741, 744, 745, 748, 751, 754, 757, -+ 758, 761, 764, 765, 768 -+}; -+#endif -+ -+#if YYDEBUG || YYERROR_VERBOSE || 0 -+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. -+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -+static const char *const yytname[] = -+{ -+ "END_OF_FILE", "error", "$undefined", "ERROR_TOK", "XKB_KEYMAP", -+ "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP", -+ "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE", -+ "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET", -+ "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR", -+ "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID", -+ "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES", -+ "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT", -+ "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT", -+ "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS", -+ "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP", -+ "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType", -+ "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags", -+ "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl", -+ "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch", -+ "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody", -+ "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl", -+ "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody", -+ "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key", -+ "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList", -+ "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType", -+ "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList", -+ "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal", -+ "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber", -+ "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName", -+ "MapName", YY_NULLPTR -+}; -+#endif -+ -+# ifdef YYPRINT -+/* YYTOKNUM[NUM] -- (External) token number corresponding to the -+ (internal) symbol number NUM (which must be that of a token). */ -+static const yytype_uint16 yytoknum[] = -+{ -+ 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, -+ 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, -+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -+ 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, -+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -+ 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, -+ 73, 74, 75, 76, 77 -+}; -+# endif -+ -+#define YYPACT_NINF -182 -+ -+#define yypact_value_is_default(Yystate) \ -+ (!!((Yystate) == (-182))) -+ -+#define YYTABLE_NINF -180 -+ -+#define yytable_value_is_error(Yytable_value) \ -+ 0 -+ -+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing -+ STATE-NUM. */ -+static const yytype_int16 yypact[] = -+{ -+ 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, -+ 6, -182, -182, 271, 227, -182, -182, -182, -182, -182, -+ -182, -182, -182, -182, -182, -38, -38, -182, -182, -24, -+ -182, 33, 227, -182, 210, -182, 353, 44, 5, -182, -+ -182, -182, -182, -182, -182, 32, -182, 13, 41, -182, -+ -182, -48, 55, 11, -182, 79, 87, 58, -48, -2, -+ 55, -182, 55, 72, -182, -182, -182, 107, -48, -182, -+ 110, -182, -182, -182, -182, -182, -182, -182, -182, -182, -+ -182, -182, -182, -182, -182, -182, 55, -18, -182, 127, -+ 121, -182, 66, -182, 138, -182, 136, -182, -182, -182, -+ 144, 147, -182, 152, 180, 182, 178, 184, 187, 188, -+ 190, 58, 198, 201, 214, 367, 677, 367, -182, -48, -+ -182, 367, 663, 663, 367, 494, 200, 367, 367, 367, -+ 663, 68, 449, 223, -182, -182, 212, 663, -182, -182, -+ -182, -182, -182, -182, -182, -182, -182, 367, 367, 367, -+ 367, 367, -182, -182, 57, 157, -182, 224, -182, -182, -+ -182, -182, -182, 218, 91, -182, 333, -182, 509, 537, -+ 333, 552, -48, 1, -182, -182, 228, 40, 216, 143, -+ 70, 333, 150, 593, 247, -30, 97, -182, 105, -182, -+ 261, 55, 259, 55, -182, -182, 408, -182, -182, -182, -+ 367, -182, 608, -182, -182, -182, 287, -182, -182, 367, -+ 367, 367, 367, 367, -182, 367, 367, -182, 252, -182, -+ 253, 264, 24, 269, 272, 163, -182, 273, 270, -182, -+ -182, -182, 280, 494, 285, -182, -182, 283, 367, -182, -+ 284, 112, 8, -182, -182, 294, -182, 299, -36, 304, -+ 247, 326, 649, 279, 307, -182, 204, 316, -182, 322, -+ 320, 111, 111, -182, -182, 333, 211, -182, -182, 116, -+ 367, -182, 677, -182, 24, -182, -182, -182, 333, -182, -+ 333, -182, -182, -182, -30, -182, -182, -182, -182, 247, -+ 333, 334, -182, 466, -182, 318, -182, -182, -182, -182, -+ -182, -182, 339, -182, -182, -182, 343, 120, 14, 345, -+ -182, 361, 124, -182, -182, -182, -182, 367, -182, 131, -+ -182, -182, 344, 350, 318, 166, 352, 14, -182, -182, -+ -182, -182, -182, -182 -+}; -+ -+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. -+ Performed when YYTABLE does not specify something else to do. Zero -+ means the default is an error. */ -+static const yytype_uint8 yydefact[] = -+{ -+ 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, -+ 0, 2, 3, 0, 17, 20, 1, 6, 12, 13, -+ 15, 14, 16, 7, 8, 183, 183, 19, 184, 0, -+ 182, 0, 18, 30, 18, 10, 0, 127, 0, 9, -+ 128, 130, 129, 131, 132, 0, 29, 0, 126, 5, -+ 11, 0, 117, 116, 115, 118, 0, 119, 120, 121, -+ 122, 123, 124, 125, 110, 111, 112, 0, 0, 179, -+ 0, 180, 31, 34, 35, 32, 33, 36, 37, 39, -+ 38, 40, 41, 42, 43, 44, 0, 154, 114, 0, -+ 113, 45, 0, 53, 54, 181, 0, 170, 177, 169, -+ 0, 58, 171, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, -+ 51, 0, 0, 0, 0, 65, 0, 0, 0, 0, -+ 0, 0, 0, 0, 48, 178, 0, 0, 117, 116, -+ 118, 119, 120, 121, 122, 124, 125, 0, 0, 0, -+ 0, 0, 176, 161, 154, 0, 142, 147, 149, 160, -+ 159, 113, 158, 155, 0, 52, 55, 60, 0, 0, -+ 57, 163, 0, 0, 64, 70, 0, 113, 0, 0, -+ 0, 136, 0, 0, 0, 0, 0, 101, 0, 106, -+ 0, 121, 123, 0, 84, 86, 0, 82, 87, 85, -+ 0, 49, 0, 144, 147, 143, 0, 145, 146, 134, -+ 0, 0, 0, 0, 156, 0, 0, 46, 0, 59, -+ 0, 170, 0, 169, 0, 0, 152, 0, 162, 167, -+ 166, 69, 0, 0, 0, 50, 73, 0, 0, 76, -+ 0, 0, 0, 175, 174, 0, 173, 0, 0, 0, -+ 0, 0, 0, 0, 0, 81, 0, 0, 150, 0, -+ 133, 138, 139, 137, 140, 141, 0, 61, 56, 0, -+ 134, 72, 0, 71, 0, 62, 63, 67, 66, 74, -+ 135, 75, 102, 172, 0, 78, 100, 79, 105, 0, -+ 104, 0, 91, 0, 89, 0, 80, 77, 108, 148, -+ 157, 168, 0, 151, 165, 164, 0, 0, 0, 0, -+ 88, 0, 0, 98, 153, 107, 103, 0, 94, 0, -+ 93, 83, 0, 0, 0, 0, 0, 0, 99, 96, -+ 97, 95, 90, 92 -+}; -+ -+ /* YYPGOTO[NTERM-NUM]. */ -+static const yytype_int16 yypgoto[] = -+{ -+ -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, -+ -182, -182, -35, -182, -182, -182, -182, 288, -182, -182, -+ -50, -182, -182, -182, 173, 174, -182, -182, 362, -182, -+ -182, -182, -182, 215, -182, 119, -182, 86, -182, -182, -+ 90, -182, 167, -181, 185, 369, -182, -27, -182, -182, -+ -182, 154, -126, 83, 76, -182, 158, -31, -182, -182, -+ 221, 170, -52, 161, 205, -182, -44, -182, -47, -34, -+ 420, -182 -+}; -+ -+ /* YYDEFGOTO[NTERM-NUM]. */ -+static const yytype_int16 yydefgoto[] = -+{ -+ -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, -+ 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, -+ 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, -+ 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, -+ 313, 186, 187, 188, 189, 199, 86, 154, 88, 47, -+ 48, 259, 260, 181, 156, 225, 226, 157, 158, 227, -+ 228, 229, 230, 245, 246, 159, 160, 136, 161, 162, -+ 29, 30 -+}; -+ -+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If -+ positive, shift that token. If negative, reduce the rule whose -+ number is the opposite. If YYTABLE_NINF, syntax error. */ -+static const yytype_int16 yytable[] = -+{ -+ 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, -+ 71, 106, 72, 105, 28, 107, 89, 32, 96, 69, -+ 87, 112, 71, 243, 244, 108, 109, 115, 110, 116, -+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -+ 97, 61, 62, 232, 63, 64, 65, 66, 67, 233, -+ 95, 98, 114, 97, 49, 317, 40, 41, 42, 43, -+ 44, 243, 244, 68, 98, 222, 99, 133, 69, 70, -+ 318, 71, 94, 169, 33, 90, 90, 98, 177, 99, -+ 183, 50, -68, 90, 190, 90, 45, 202, -68, 163, -+ 90, 89, 89, 91, 176, 87, 87, 194, 87, 89, -+ 209, 89, 115, 87, 116, 87, 89, 95, 307, 184, -+ 87, 98, 237, 185, 119, 120, 204, 204, 238, 204, -+ 204, 90, 90, 69, -109, 231, 71, 102, 210, 211, -+ 212, 213, 111, 219, 219, 103, 90, 89, 89, 247, -+ 217, 87, 87, 104, 224, 248, 113, 249, 219, 90, -+ 212, 213, 89, 250, 282, 90, 87, 108, 301, 253, -+ 250, 194, 316, 117, 274, 89, 323, 219, 250, 87, -+ 118, 89, 324, 326, 121, 87, 1, 122, 102, 327, -+ 210, 211, 212, 213, 124, 123, 177, 210, 211, 212, -+ 213, 325, 236, 125, 210, 211, 212, 213, 155, 239, -+ 164, 190, 176, 214, 166, 90, 87, 170, 331, 271, -+ 179, 272, 182, 35, 238, 39, 126, 292, 127, 128, -+ 129, 89, 305, 203, 205, 87, 207, 208, 130, 131, -+ 102, 132, 206, 2, 3, 4, 5, 6, 7, 8, -+ 9, 210, 211, 212, 213, 224, 90, 134, 210, 211, -+ 212, 213, 38, 297, 135, 137, 178, 300, 292, 200, -+ 215, 201, 89, 216, 234, 235, 87, 2, 3, 4, -+ 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, -+ 22, 23, 24, 256, 2, 3, 4, 5, 6, 7, -+ 8, 9, 185, 261, 262, 263, 264, 251, 265, 266, -+ 252, 267, 268, 138, 139, 54, 140, -124, 141, 142, -+ 143, 144, -179, 61, 145, 270, 146, 278, 274, 273, -+ 295, 280, 147, 148, 210, 211, 212, 213, 149, 275, -+ 171, 258, 279, 281, 290, 150, 151, 95, 98, 152, -+ 69, 153, 284, 71, 138, 139, 54, 140, 285, 141, -+ 142, 143, 144, 287, 61, 145, 296, 146, 18, 19, -+ 20, 21, 22, 147, 148, 298, 299, 289, 238, 149, -+ 210, 211, 212, 213, 311, 308, 150, 151, 95, 98, -+ 152, 69, 153, 314, 71, 138, 139, 54, 140, 315, -+ 141, 142, 143, 144, 321, 61, 145, 322, 146, 329, -+ 328, 332, 13, 27, 147, 148, 276, 165, 277, 81, -+ 149, 255, 310, 333, 330, 286, 85, 150, 151, 95, -+ 98, 152, 69, 153, 302, 71, 138, 139, 54, 140, -+ 303, 141, 142, 191, 144, 288, 192, 145, 193, 63, -+ 64, 65, 66, 269, 304, 306, 31, 283, 0, 0, -+ 254, 0, 0, 0, 0, 0, 0, 0, 68, 0, -+ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, -+ 140, 0, 141, 142, 191, 144, 0, 192, 145, 193, -+ 63, 64, 65, 66, 138, 139, 54, 140, 0, 141, -+ 142, 143, 144, 291, 61, 145, 0, 146, 0, 68, -+ 0, 0, 0, 0, 69, 0, 0, 71, 309, 0, -+ 0, 0, 138, 139, 54, 140, 68, 141, 142, 143, -+ 144, 69, 61, 145, 71, 146, 0, 138, 139, 54, -+ 140, 0, 141, 142, 143, 144, 0, 61, 145, 171, -+ 146, 0, 0, 0, 172, 0, 0, 0, 0, 69, -+ 0, 218, 71, 0, 0, 138, 139, 54, 140, 68, -+ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, -+ 138, 139, 54, 140, 0, 141, 142, 143, 144, 220, -+ 61, 221, 0, 146, 0, 0, 0, 68, 0, 0, -+ 0, 0, 69, 222, 0, 71, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 98, 0, 223, 0, 0, -+ 71, 138, 139, 54, 140, 0, 141, 142, 143, 144, -+ 0, 61, 145, 0, 146, 0, 138, 139, 54, 140, -+ 0, 141, 142, 143, 144, 240, 61, 145, 0, 146, -+ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, -+ 257, 71, 0, 0, 0, 0, 0, 0, 68, 0, -+ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, -+ 140, 0, 141, 142, 143, 144, 291, 61, 145, 0, -+ 146, 138, 139, 54, 140, 0, 141, 142, 143, 144, -+ 0, 61, 145, 0, 146, 138, 139, 54, 140, 68, -+ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, -+ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, -+ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 69, 0, 0, 71 -+}; -+ -+static const yytype_int16 yycheck[] = -+{ -+ 47, 53, 128, 184, 51, 41, 0, 55, 38, 53, -+ 58, 58, 47, 57, 52, 59, 47, 41, 52, 55, -+ 47, 68, 58, 53, 54, 59, 60, 45, 62, 47, -+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -+ 29, 28, 29, 42, 31, 32, 33, 34, 35, 48, -+ 52, 53, 86, 29, 49, 41, 12, 13, 14, 15, -+ 16, 53, 54, 50, 53, 41, 55, 111, 55, 56, -+ 56, 58, 119, 123, 41, 122, 123, 53, 125, 55, -+ 130, 49, 42, 130, 131, 132, 42, 137, 48, 116, -+ 137, 122, 123, 52, 125, 122, 123, 132, 125, 130, -+ 43, 132, 45, 130, 47, 132, 137, 52, 289, 41, -+ 137, 53, 42, 45, 48, 49, 147, 148, 48, 150, -+ 151, 168, 169, 55, 52, 172, 58, 171, 37, 38, -+ 39, 40, 25, 168, 169, 56, 183, 168, 169, 42, -+ 49, 168, 169, 56, 171, 48, 36, 42, 183, 196, -+ 39, 40, 183, 48, 42, 202, 183, 191, 42, 193, -+ 48, 196, 42, 36, 48, 196, 42, 202, 48, 196, -+ 49, 202, 48, 42, 36, 202, 0, 41, 222, 48, -+ 37, 38, 39, 40, 37, 41, 233, 37, 38, 39, -+ 40, 317, 49, 41, 37, 38, 39, 40, 115, 49, -+ 117, 248, 233, 46, 121, 252, 233, 124, 42, 46, -+ 127, 48, 129, 32, 48, 34, 36, 252, 36, 41, -+ 36, 252, 274, 147, 148, 252, 150, 151, 41, 41, -+ 274, 41, 149, 57, 58, 59, 60, 61, 62, 63, -+ 64, 37, 38, 39, 40, 272, 293, 49, 37, 38, -+ 39, 40, 42, 49, 53, 41, 56, 46, 293, 36, -+ 36, 49, 293, 45, 36, 49, 293, 57, 58, 59, -+ 60, 61, 62, 63, 64, 4, 5, 6, 7, 8, -+ 9, 10, 11, 200, 57, 58, 59, 60, 61, 62, -+ 63, 64, 45, 210, 211, 212, 213, 36, 215, 216, -+ 41, 49, 49, 18, 19, 20, 21, 43, 23, 24, -+ 25, 26, 43, 28, 29, 43, 31, 234, 48, 46, -+ 41, 238, 37, 38, 37, 38, 39, 40, 43, 49, -+ 45, 44, 49, 49, 251, 50, 51, 52, 53, 54, -+ 55, 56, 48, 58, 18, 19, 20, 21, 49, 23, -+ 24, 25, 26, 49, 28, 29, 49, 31, 5, 6, -+ 7, 8, 9, 37, 38, 49, 44, 41, 48, 43, -+ 37, 38, 39, 40, 56, 41, 50, 51, 52, 53, -+ 54, 55, 56, 44, 58, 18, 19, 20, 21, 46, -+ 23, 24, 25, 26, 49, 28, 29, 36, 31, 49, -+ 56, 49, 0, 14, 37, 38, 233, 119, 234, 47, -+ 43, 196, 293, 327, 324, 248, 47, 50, 51, 52, -+ 53, 54, 55, 56, 270, 58, 18, 19, 20, 21, -+ 272, 23, 24, 25, 26, 250, 28, 29, 30, 31, -+ 32, 33, 34, 222, 274, 284, 26, 242, -1, -1, -+ 42, -1, -1, -1, -1, -1, -1, -1, 50, -1, -+ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, -+ 21, -1, 23, 24, 25, 26, -1, 28, 29, 30, -+ 31, 32, 33, 34, 18, 19, 20, 21, -1, 23, -+ 24, 25, 26, 27, 28, 29, -1, 31, -1, 50, -+ -1, -1, -1, -1, 55, -1, -1, 58, 42, -1, -+ -1, -1, 18, 19, 20, 21, 50, 23, 24, 25, -+ 26, 55, 28, 29, 58, 31, -1, 18, 19, 20, -+ 21, -1, 23, 24, 25, 26, -1, 28, 29, 45, -+ 31, -1, -1, -1, 50, -1, -1, -1, -1, 55, -+ -1, 42, 58, -1, -1, 18, 19, 20, 21, 50, -+ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, -+ 18, 19, 20, 21, -1, 23, 24, 25, 26, 42, -+ 28, 29, -1, 31, -1, -1, -1, 50, -1, -1, -+ -1, -1, 55, 41, -1, 58, -1, -1, -1, -1, -+ -1, -1, -1, -1, -1, 53, -1, 55, -1, -1, -+ 58, 18, 19, 20, 21, -1, 23, 24, 25, 26, -+ -1, 28, 29, -1, 31, -1, 18, 19, 20, 21, -+ -1, 23, 24, 25, 26, 42, 28, 29, -1, 31, -+ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, -+ 42, 58, -1, -1, -1, -1, -1, -1, 50, -1, -+ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, -+ 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, -+ 31, 18, 19, 20, 21, -1, 23, 24, 25, 26, -+ -1, 28, 29, -1, 31, 18, 19, 20, 21, 50, -+ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, -+ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, -+ -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -+ -1, -1, 55, -1, -1, 58 -+}; -+ -+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing -+ symbol of state STATE-NUM. */ -+static const yytype_uint8 yystos[] = -+{ -+ 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, -+ 66, 67, 70, 72, 73, 74, 0, 4, 5, 6, -+ 7, 8, 9, 10, 11, 68, 71, 74, 52, 135, -+ 136, 135, 41, 41, 69, 70, 72, 75, 42, 70, -+ 12, 13, 14, 15, 16, 42, 76, 114, 115, 49, -+ 49, 17, 18, 19, 20, 21, 22, 23, 24, 25, -+ 26, 28, 29, 31, 32, 33, 34, 35, 50, 55, -+ 56, 58, 77, 78, 79, 80, 83, 86, 87, 91, -+ 92, 93, 94, 95, 96, 110, 111, 112, 113, 122, -+ 133, 52, 81, 82, 133, 52, 134, 29, 53, 55, -+ 84, 127, 131, 56, 56, 131, 133, 131, 134, 134, -+ 134, 25, 133, 36, 134, 45, 47, 36, 49, 48, -+ 49, 36, 41, 41, 37, 41, 36, 36, 41, 36, -+ 41, 41, 41, 131, 49, 53, 132, 41, 18, 19, -+ 21, 23, 24, 25, 26, 29, 31, 37, 38, 43, -+ 50, 51, 54, 56, 112, 118, 119, 122, 123, 130, -+ 131, 133, 134, 112, 118, 82, 118, 77, 85, 85, -+ 118, 45, 50, 88, 89, 90, 122, 133, 56, 118, -+ 117, 118, 118, 85, 41, 45, 106, 107, 108, 109, -+ 133, 25, 28, 30, 77, 93, 97, 98, 103, 110, -+ 36, 49, 85, 119, 122, 119, 118, 119, 119, 43, -+ 37, 38, 39, 40, 46, 36, 45, 49, 42, 77, -+ 42, 29, 41, 55, 112, 120, 121, 124, 125, 126, -+ 127, 133, 42, 48, 36, 49, 49, 42, 48, 49, -+ 42, 108, 38, 53, 54, 128, 129, 42, 48, 42, -+ 48, 36, 41, 134, 42, 98, 118, 42, 44, 116, -+ 117, 118, 118, 118, 118, 118, 118, 49, 49, 125, -+ 43, 46, 48, 46, 48, 49, 89, 90, 118, 49, -+ 118, 49, 42, 129, 48, 49, 107, 49, 109, 41, -+ 118, 27, 77, 99, 100, 41, 49, 49, 49, 44, -+ 46, 42, 116, 121, 126, 127, 128, 108, 41, 42, -+ 100, 56, 104, 105, 44, 46, 42, 41, 56, 101, -+ 102, 49, 36, 42, 48, 117, 42, 48, 56, 49, -+ 105, 42, 49, 102 -+}; -+ -+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -+static const yytype_uint8 yyr1[] = -+{ -+ 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, -+ 69, 70, 71, 71, 71, 71, 71, 72, 72, 73, -+ 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, -+ 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, -+ 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, -+ 79, 80, 81, 81, 82, 82, 83, 84, 84, 85, -+ 85, 86, 87, 88, 88, 88, 89, 89, 89, 89, -+ 89, 90, 90, 91, 92, 93, 94, 94, 95, 95, -+ 96, 97, 97, 98, 98, 98, 98, 98, 99, 99, -+ 100, 100, 101, 101, 102, 102, 103, 104, 104, 105, -+ 106, 106, 107, 107, 107, 108, 108, 109, 110, 111, -+ 111, 111, 111, 112, 112, 113, 113, 113, 113, 113, -+ 113, 113, 113, 113, 113, 113, 114, 114, 115, 115, -+ 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, -+ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, -+ 119, 120, 120, 121, 122, 122, 122, 122, 123, 123, -+ 123, 123, 124, 124, 125, 125, 125, 125, 126, 127, -+ 127, 127, 128, 128, 129, 129, 130, 131, 132, 133, -+ 133, 134, 135, 135, 136 -+}; -+ -+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -+static const yytype_uint8 yyr2[] = -+{ -+ 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, -+ 1, 7, 1, 1, 1, 1, 1, 1, 0, 2, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, -+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 4, 2, 3, 4, -+ 5, 3, 3, 1, 1, 3, 6, 3, 1, 2, -+ 1, 6, 6, 3, 1, 0, 3, 3, 1, 2, -+ 1, 3, 3, 5, 6, 6, 5, 6, 6, 6, -+ 6, 2, 1, 5, 1, 1, 1, 1, 2, 1, -+ 5, 1, 3, 1, 1, 3, 6, 3, 1, 3, -+ 3, 1, 3, 5, 3, 3, 1, 5, 6, 1, -+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, -+ 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, -+ 3, 3, 1, 2, 2, 2, 2, 1, 4, 1, -+ 3, 3, 1, 4, 1, 3, 4, 6, 1, 1, -+ 1, 1, 1, 0, 3, 3, 1, 1, 3, 1, -+ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, -+ 1, 1, 1, 0, 1 -+}; -+ -+ -+#define yyerrok (yyerrstatus = 0) -+#define yyclearin (yychar = YYEMPTY) -+#define YYEMPTY (-2) -+#define YYEOF 0 -+ -+#define YYACCEPT goto yyacceptlab -+#define YYABORT goto yyabortlab -+#define YYERROR goto yyerrorlab -+ -+ -+#define YYRECOVERING() (!!yyerrstatus) -+ -+#define YYBACKUP(Token, Value) \ -+do \ -+ if (yychar == YYEMPTY) \ -+ { \ -+ yychar = (Token); \ -+ yylval = (Value); \ -+ YYPOPSTACK (yylen); \ -+ yystate = *yyssp; \ -+ goto yybackup; \ -+ } \ -+ else \ -+ { \ -+ yyerror (param, YY_("syntax error: cannot back up")); \ -+ YYERROR; \ -+ } \ -+while (0) -+ -+/* Error token number */ -+#define YYTERROR 1 -+#define YYERRCODE 256 -+ -+ -+ -+/* Enable debugging if requested. */ -+#if YYDEBUG -+ -+# ifndef YYFPRINTF -+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -+# define YYFPRINTF fprintf -+# endif -+ -+# define YYDPRINTF(Args) \ -+do { \ -+ if (yydebug) \ -+ YYFPRINTF Args; \ -+} while (0) -+ -+/* This macro is provided for backward compatibility. */ -+#ifndef YY_LOCATION_PRINT -+# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -+#endif -+ -+ -+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -+do { \ -+ if (yydebug) \ -+ { \ -+ YYFPRINTF (stderr, "%s ", Title); \ -+ yy_symbol_print (stderr, \ -+ Type, Value, param); \ -+ YYFPRINTF (stderr, "\n"); \ -+ } \ -+} while (0) -+ -+ -+/*----------------------------------------. -+| Print this symbol's value on YYOUTPUT. | -+`----------------------------------------*/ -+ -+static void -+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) -+{ -+ FILE *yyo = yyoutput; -+ YYUSE (yyo); -+ YYUSE (param); -+ if (!yyvaluep) -+ return; -+# ifdef YYPRINT -+ if (yytype < YYNTOKENS) -+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -+# endif -+ YYUSE (yytype); -+} -+ -+ -+/*--------------------------------. -+| Print this symbol on YYOUTPUT. | -+`--------------------------------*/ -+ -+static void -+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) -+{ -+ YYFPRINTF (yyoutput, "%s %s (", -+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); -+ -+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, param); -+ YYFPRINTF (yyoutput, ")"); -+} -+ -+/*------------------------------------------------------------------. -+| yy_stack_print -- Print the state stack from its BOTTOM up to its | -+| TOP (included). | -+`------------------------------------------------------------------*/ -+ -+static void -+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -+{ -+ YYFPRINTF (stderr, "Stack now"); -+ for (; yybottom <= yytop; yybottom++) -+ { -+ int yybot = *yybottom; -+ YYFPRINTF (stderr, " %d", yybot); -+ } -+ YYFPRINTF (stderr, "\n"); -+} -+ -+# define YY_STACK_PRINT(Bottom, Top) \ -+do { \ -+ if (yydebug) \ -+ yy_stack_print ((Bottom), (Top)); \ -+} while (0) -+ -+ -+/*------------------------------------------------. -+| Report that the YYRULE is going to be reduced. | -+`------------------------------------------------*/ -+ -+static void -+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct parser_param *param) -+{ -+ unsigned long int yylno = yyrline[yyrule]; -+ int yynrhs = yyr2[yyrule]; -+ int yyi; -+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", -+ yyrule - 1, yylno); -+ /* The symbols being reduced. */ -+ for (yyi = 0; yyi < yynrhs; yyi++) -+ { -+ YYFPRINTF (stderr, " $%d = ", yyi + 1); -+ yy_symbol_print (stderr, -+ yystos[yyssp[yyi + 1 - yynrhs]], -+ &(yyvsp[(yyi + 1) - (yynrhs)]) -+ , param); -+ YYFPRINTF (stderr, "\n"); -+ } -+} -+ -+# define YY_REDUCE_PRINT(Rule) \ -+do { \ -+ if (yydebug) \ -+ yy_reduce_print (yyssp, yyvsp, Rule, param); \ -+} while (0) -+ -+/* Nonzero means print parse trace. It is left uninitialized so that -+ multiple parsers can coexist. */ -+int yydebug; -+#else /* !YYDEBUG */ -+# define YYDPRINTF(Args) -+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -+# define YY_STACK_PRINT(Bottom, Top) -+# define YY_REDUCE_PRINT(Rule) -+#endif /* !YYDEBUG */ -+ -+ -+/* YYINITDEPTH -- initial size of the parser's stacks. */ -+#ifndef YYINITDEPTH -+# define YYINITDEPTH 200 -+#endif -+ -+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only -+ if the built-in stack extension method is used). -+ -+ Do not make this value too large; the results are undefined if -+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) -+ evaluated with infinite-precision integer arithmetic. */ -+ -+#ifndef YYMAXDEPTH -+# define YYMAXDEPTH 10000 -+#endif -+ -+ -+#if YYERROR_VERBOSE -+ -+# ifndef yystrlen -+# if defined __GLIBC__ && defined _STRING_H -+# define yystrlen strlen -+# else -+/* Return the length of YYSTR. */ -+static YYSIZE_T -+yystrlen (const char *yystr) -+{ -+ YYSIZE_T yylen; -+ for (yylen = 0; yystr[yylen]; yylen++) -+ continue; -+ return yylen; -+} -+# endif -+# endif -+ -+# ifndef yystpcpy -+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -+# define yystpcpy stpcpy -+# else -+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in -+ YYDEST. */ -+static char * -+yystpcpy (char *yydest, const char *yysrc) -+{ -+ char *yyd = yydest; -+ const char *yys = yysrc; -+ -+ while ((*yyd++ = *yys++) != '\0') -+ continue; -+ -+ return yyd - 1; -+} -+# endif -+# endif -+ -+# ifndef yytnamerr -+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary -+ quotes and backslashes, so that it's suitable for yyerror. The -+ heuristic is that double-quoting is unnecessary unless the string -+ contains an apostrophe, a comma, or backslash (other than -+ backslash-backslash). YYSTR is taken from yytname. If YYRES is -+ null, do not copy; instead, return the length of what the result -+ would have been. */ -+static YYSIZE_T -+yytnamerr (char *yyres, const char *yystr) -+{ -+ if (*yystr == '"') -+ { -+ YYSIZE_T yyn = 0; -+ char const *yyp = yystr; -+ -+ for (;;) -+ switch (*++yyp) -+ { -+ case '\'': -+ case ',': -+ goto do_not_strip_quotes; -+ -+ case '\\': -+ if (*++yyp != '\\') -+ goto do_not_strip_quotes; -+ /* Fall through. */ -+ default: -+ if (yyres) -+ yyres[yyn] = *yyp; -+ yyn++; -+ break; -+ -+ case '"': -+ if (yyres) -+ yyres[yyn] = '\0'; -+ return yyn; -+ } -+ do_not_strip_quotes: ; -+ } -+ -+ if (! yyres) -+ return yystrlen (yystr); -+ -+ return yystpcpy (yyres, yystr) - yyres; -+} -+# endif -+ -+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message -+ about the unexpected token YYTOKEN for the state stack whose top is -+ YYSSP. -+ -+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is -+ not large enough to hold the message. In that case, also set -+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the -+ required number of bytes is too large to store. */ -+static int -+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, -+ yytype_int16 *yyssp, int yytoken) -+{ -+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); -+ YYSIZE_T yysize = yysize0; -+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; -+ /* Internationalized format string. */ -+ const char *yyformat = YY_NULLPTR; -+ /* Arguments of yyformat. */ -+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; -+ /* Number of reported tokens (one for the "unexpected", one per -+ "expected"). */ -+ int yycount = 0; -+ -+ /* There are many possibilities here to consider: -+ - If this state is a consistent state with a default action, then -+ the only way this function was invoked is if the default action -+ is an error action. In that case, don't check for expected -+ tokens because there are none. -+ - The only way there can be no lookahead present (in yychar) is if -+ this state is a consistent state with a default action. Thus, -+ detecting the absence of a lookahead is sufficient to determine -+ that there is no unexpected or expected token to report. In that -+ case, just report a simple "syntax error". -+ - Don't assume there isn't a lookahead just because this state is a -+ consistent state with a default action. There might have been a -+ previous inconsistent state, consistent state with a non-default -+ action, or user semantic action that manipulated yychar. -+ - Of course, the expected token list depends on states to have -+ correct lookahead information, and it depends on the parser not -+ to perform extra reductions after fetching a lookahead from the -+ scanner and before detecting a syntax error. Thus, state merging -+ (from LALR or IELR) and default reductions corrupt the expected -+ token list. However, the list is correct for canonical LR with -+ one exception: it will still contain any token that will not be -+ accepted due to an error action in a later state. -+ */ -+ if (yytoken != YYEMPTY) -+ { -+ int yyn = yypact[*yyssp]; -+ yyarg[yycount++] = yytname[yytoken]; -+ if (!yypact_value_is_default (yyn)) -+ { -+ /* Start YYX at -YYN if negative to avoid negative indexes in -+ YYCHECK. In other words, skip the first -YYN actions for -+ this state because they are default actions. */ -+ int yyxbegin = yyn < 0 ? -yyn : 0; -+ /* Stay within bounds of both yycheck and yytname. */ -+ int yychecklim = YYLAST - yyn + 1; -+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; -+ int yyx; -+ -+ for (yyx = yyxbegin; yyx < yyxend; ++yyx) -+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR -+ && !yytable_value_is_error (yytable[yyx + yyn])) -+ { -+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) -+ { -+ yycount = 1; -+ yysize = yysize0; -+ break; -+ } -+ yyarg[yycount++] = yytname[yyx]; -+ { -+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); -+ if (! (yysize <= yysize1 -+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) -+ return 2; -+ yysize = yysize1; -+ } -+ } -+ } -+ } -+ -+ switch (yycount) -+ { -+# define YYCASE_(N, S) \ -+ case N: \ -+ yyformat = S; \ -+ break -+ YYCASE_(0, YY_("syntax error")); -+ YYCASE_(1, YY_("syntax error, unexpected %s")); -+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); -+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); -+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); -+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -+# undef YYCASE_ -+ } -+ -+ { -+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat); -+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) -+ return 2; -+ yysize = yysize1; -+ } -+ -+ if (*yymsg_alloc < yysize) -+ { -+ *yymsg_alloc = 2 * yysize; -+ if (! (yysize <= *yymsg_alloc -+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) -+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; -+ return 1; -+ } -+ -+ /* Avoid sprintf, as that infringes on the user's name space. -+ Don't have undefined behavior even if the translation -+ produced a string with the wrong number of "%s"s. */ -+ { -+ char *yyp = *yymsg; -+ int yyi = 0; -+ while ((*yyp = *yyformat) != '\0') -+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) -+ { -+ yyp += yytnamerr (yyp, yyarg[yyi++]); -+ yyformat += 2; -+ } -+ else -+ { -+ yyp++; -+ yyformat++; -+ } -+ } -+ return 0; -+} -+#endif /* YYERROR_VERBOSE */ -+ -+/*-----------------------------------------------. -+| Release the memory associated to this symbol. | -+`-----------------------------------------------*/ -+ -+static void -+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_param *param) -+{ -+ YYUSE (yyvaluep); -+ YYUSE (param); -+ if (!yymsg) -+ yymsg = "Deleting"; -+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); -+ -+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -+ switch (yytype) -+ { -+ case 52: /* STRING */ -+#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { free(((*yyvaluep).str)); } -+#line 1493 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 55: /* IDENT */ -+#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { free(((*yyvaluep).str)); } -+#line 1499 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 66: /* XkbFile */ -+#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -+#line 1505 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 67: /* XkbCompositeMap */ -+#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -+#line 1511 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 69: /* XkbMapConfigList */ -+#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -+#line 1517 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 70: /* XkbMapConfig */ -+#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -+#line 1523 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 75: /* DeclList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } -+#line 1529 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 76: /* Decl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } -+#line 1535 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 77: /* VarDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -+#line 1541 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 78: /* KeyNameDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } -+#line 1547 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 79: /* KeyAliasDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } -+#line 1553 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 80: /* VModDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } -+#line 1559 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 81: /* VModDefList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } -+#line 1565 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 82: /* VModDef */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } -+#line 1571 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 83: /* InterpretDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -+#line 1577 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 84: /* InterpretMatch */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -+#line 1583 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 85: /* VarDeclList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -+#line 1589 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 86: /* KeyTypeDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } -+#line 1595 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 87: /* SymbolsDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } -+#line 1601 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 88: /* SymbolsBody */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -+#line 1607 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 89: /* SymbolsVarDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -+#line 1613 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 90: /* ArrayInit */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1619 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 91: /* GroupCompatDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } -+#line 1625 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 92: /* ModMapDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } -+#line 1631 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 93: /* LedMapDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } -+#line 1637 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 94: /* LedNameDecl */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } -+#line 1643 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 108: /* CoordList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1649 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 109: /* Coord */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1655 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 116: /* OptExprList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1661 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 117: /* ExprList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1667 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 118: /* Expr */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1673 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 119: /* Term */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1679 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 120: /* ActionList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1685 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 121: /* Action */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1691 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 122: /* Lhs */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1697 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 123: /* Terminal */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1703 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 124: /* OptKeySymList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1709 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 125: /* KeySymList */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1715 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 126: /* KeySyms */ -+#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -+#line 1721 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 135: /* OptMapName */ -+#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { free(((*yyvaluep).str)); } -+#line 1727 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ case 136: /* MapName */ -+#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ -+ { free(((*yyvaluep).str)); } -+#line 1733 "src/xkbcomp/parser.c" /* yacc.c:1257 */ -+ break; -+ -+ -+ default: -+ break; -+ } -+ YY_IGNORE_MAYBE_UNINITIALIZED_END -+} -+ -+ -+ -+ -+/*----------. -+| yyparse. | -+`----------*/ -+ -+int -+yyparse (struct parser_param *param) -+{ -+/* The lookahead symbol. */ -+int yychar; -+ -+ -+/* The semantic value of the lookahead symbol. */ -+/* Default value used for initialization, for pacifying older GCCs -+ or non-GCC compilers. */ -+YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); -+ -+ /* Number of syntax errors so far. */ -+ int yynerrs; -+ -+ int yystate; -+ /* Number of tokens to shift before error messages enabled. */ -+ int yyerrstatus; -+ -+ /* The stacks and their tools: -+ 'yyss': related to states. -+ 'yyvs': related to semantic values. -+ -+ Refer to the stacks through separate pointers, to allow yyoverflow -+ to reallocate them elsewhere. */ -+ -+ /* The state stack. */ -+ yytype_int16 yyssa[YYINITDEPTH]; -+ yytype_int16 *yyss; -+ yytype_int16 *yyssp; -+ -+ /* The semantic value stack. */ -+ YYSTYPE yyvsa[YYINITDEPTH]; -+ YYSTYPE *yyvs; -+ YYSTYPE *yyvsp; -+ -+ YYSIZE_T yystacksize; -+ -+ int yyn; -+ int yyresult; -+ /* Lookahead token as an internal (translated) token number. */ -+ int yytoken = 0; -+ /* The variables used to return semantic value and location from the -+ action routines. */ -+ YYSTYPE yyval; -+ -+#if YYERROR_VERBOSE -+ /* Buffer for error messages, and its allocated size. */ -+ char yymsgbuf[128]; -+ char *yymsg = yymsgbuf; -+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -+#endif -+ -+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) -+ -+ /* The number of symbols on the RHS of the reduced rule. -+ Keep to zero when no symbol should be popped. */ -+ int yylen = 0; -+ -+ yyssp = yyss = yyssa; -+ yyvsp = yyvs = yyvsa; -+ yystacksize = YYINITDEPTH; -+ -+ YYDPRINTF ((stderr, "Starting parse\n")); -+ -+ yystate = 0; -+ yyerrstatus = 0; -+ yynerrs = 0; -+ yychar = YYEMPTY; /* Cause a token to be read. */ -+ goto yysetstate; -+ -+/*------------------------------------------------------------. -+| yynewstate -- Push a new state, which is found in yystate. | -+`------------------------------------------------------------*/ -+ yynewstate: -+ /* In all cases, when you get here, the value and location stacks -+ have just been pushed. So pushing a state here evens the stacks. */ -+ yyssp++; -+ -+ yysetstate: -+ *yyssp = yystate; -+ -+ if (yyss + yystacksize - 1 <= yyssp) -+ { -+ /* Get the current used size of the three stacks, in elements. */ -+ YYSIZE_T yysize = yyssp - yyss + 1; -+ -+#ifdef yyoverflow -+ { -+ /* Give user a chance to reallocate the stack. Use copies of -+ these so that the &'s don't force the real ones into -+ memory. */ -+ YYSTYPE *yyvs1 = yyvs; -+ yytype_int16 *yyss1 = yyss; -+ -+ /* Each stack pointer address is followed by the size of the -+ data in use in that stack, in bytes. This used to be a -+ conditional around just the two extra args, but that might -+ be undefined if yyoverflow is a macro. */ -+ yyoverflow (YY_("memory exhausted"), -+ &yyss1, yysize * sizeof (*yyssp), -+ &yyvs1, yysize * sizeof (*yyvsp), -+ &yystacksize); -+ -+ yyss = yyss1; -+ yyvs = yyvs1; -+ } -+#else /* no yyoverflow */ -+# ifndef YYSTACK_RELOCATE -+ goto yyexhaustedlab; -+# else -+ /* Extend the stack our own way. */ -+ if (YYMAXDEPTH <= yystacksize) -+ goto yyexhaustedlab; -+ yystacksize *= 2; -+ if (YYMAXDEPTH < yystacksize) -+ yystacksize = YYMAXDEPTH; -+ -+ { -+ yytype_int16 *yyss1 = yyss; -+ union yyalloc *yyptr = -+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); -+ if (! yyptr) -+ goto yyexhaustedlab; -+ YYSTACK_RELOCATE (yyss_alloc, yyss); -+ YYSTACK_RELOCATE (yyvs_alloc, yyvs); -+# undef YYSTACK_RELOCATE -+ if (yyss1 != yyssa) -+ YYSTACK_FREE (yyss1); -+ } -+# endif -+#endif /* no yyoverflow */ -+ -+ yyssp = yyss + yysize - 1; -+ yyvsp = yyvs + yysize - 1; -+ -+ YYDPRINTF ((stderr, "Stack size increased to %lu\n", -+ (unsigned long int) yystacksize)); -+ -+ if (yyss + yystacksize - 1 <= yyssp) -+ YYABORT; -+ } -+ -+ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); -+ -+ if (yystate == YYFINAL) -+ YYACCEPT; -+ -+ goto yybackup; -+ -+/*-----------. -+| yybackup. | -+`-----------*/ -+yybackup: -+ -+ /* Do appropriate processing given the current state. Read a -+ lookahead token if we need one and don't already have one. */ -+ -+ /* First try to decide what to do without reference to lookahead token. */ -+ yyn = yypact[yystate]; -+ if (yypact_value_is_default (yyn)) -+ goto yydefault; -+ -+ /* Not known => get a lookahead token if don't already have one. */ -+ -+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ -+ if (yychar == YYEMPTY) -+ { -+ YYDPRINTF ((stderr, "Reading a token: ")); -+ yychar = yylex (&yylval, param_scanner); -+ } -+ -+ if (yychar <= YYEOF) -+ { -+ yychar = yytoken = YYEOF; -+ YYDPRINTF ((stderr, "Now at end of input.\n")); -+ } -+ else -+ { -+ yytoken = YYTRANSLATE (yychar); -+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); -+ } -+ -+ /* If the proper action on seeing token YYTOKEN is to reduce or to -+ detect an error, take that action. */ -+ yyn += yytoken; -+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) -+ goto yydefault; -+ yyn = yytable[yyn]; -+ if (yyn <= 0) -+ { -+ if (yytable_value_is_error (yyn)) -+ goto yyerrlab; -+ yyn = -yyn; -+ goto yyreduce; -+ } -+ -+ /* Count tokens shifted since error; after three, turn off error -+ status. */ -+ if (yyerrstatus) -+ yyerrstatus--; -+ -+ /* Shift the lookahead token. */ -+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); -+ -+ /* Discard the shifted token. */ -+ yychar = YYEMPTY; -+ -+ yystate = yyn; -+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -+ *++yyvsp = yylval; -+ YY_IGNORE_MAYBE_UNINITIALIZED_END -+ -+ goto yynewstate; -+ -+ -+/*-----------------------------------------------------------. -+| yydefault -- do the default action for the current state. | -+`-----------------------------------------------------------*/ -+yydefault: -+ yyn = yydefact[yystate]; -+ if (yyn == 0) -+ goto yyerrlab; -+ goto yyreduce; -+ -+ -+/*-----------------------------. -+| yyreduce -- Do a reduction. | -+`-----------------------------*/ -+yyreduce: -+ /* yyn is the number of a rule to reduce with. */ -+ yylen = yyr2[yyn]; -+ -+ /* If YYLEN is nonzero, implement the default value of the action: -+ '$$ = $1'. -+ -+ Otherwise, the following line sets YYVAL to garbage. -+ This behavior is undocumented and Bison -+ users should not rely upon it. Assigning to YYVAL -+ unconditionally makes the parser a bit smaller, and it avoids a -+ GCC warning that YYVAL may be used uninitialized. */ -+ yyval = yyvsp[1-yylen]; -+ -+ -+ YY_REDUCE_PRINT (yyn); -+ switch (yyn) -+ { -+ case 2: -+#line 242 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; } -+#line 2001 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 3: -+#line 244 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; YYACCEPT; } -+#line 2007 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 4: -+#line 246 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } -+#line 2013 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 5: -+#line 252 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].file), (yyvsp[-6].mapFlags)); } -+#line 2019 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 6: -+#line 255 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_KEYMAP; } -+#line 2025 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 7: -+#line 256 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_KEYMAP; } -+#line 2031 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 8: -+#line 257 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_KEYMAP; } -+#line 2037 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 9: -+#line 261 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ if (!(yyvsp[0].file)) -+ (yyval.file) = (yyvsp[-1].file); -+ else -+ (yyval.file) = (XkbFile *) AppendStmt((ParseCommon *) (yyvsp[-1].file), -+ (ParseCommon *) (yyvsp[0].file)); -+ } -+#line 2049 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 10: -+#line 269 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file) = (yyvsp[0].file); } -+#line 2055 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 11: -+#line 275 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ if ((yyvsp[-5].file_type) == FILE_TYPE_GEOMETRY) { -+ free((yyvsp[-4].str)); -+ FreeStmt((yyvsp[-2].any)); -+ (yyval.file) = NULL; -+ } -+ else { -+ (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].any), (yyvsp[-6].mapFlags)); -+ } -+ } -+#line 2070 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 12: -+#line 287 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_KEYCODES; } -+#line 2076 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 13: -+#line 288 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_TYPES; } -+#line 2082 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 14: -+#line 289 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_COMPAT; } -+#line 2088 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 15: -+#line 290 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_SYMBOLS; } -+#line 2094 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 16: -+#line 291 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.file_type) = FILE_TYPE_GEOMETRY; } -+#line 2100 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 17: -+#line 294 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -+#line 2106 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 18: -+#line 295 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = 0; } -+#line 2112 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 19: -+#line 298 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } -+#line 2118 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 20: -+#line 299 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -+#line 2124 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 21: -+#line 302 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_IS_PARTIAL; } -+#line 2130 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 22: -+#line 303 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_IS_DEFAULT; } -+#line 2136 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 23: -+#line 304 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_IS_HIDDEN; } -+#line 2142 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 24: -+#line 305 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } -+#line 2148 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 25: -+#line 306 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_HAS_MODIFIER; } -+#line 2154 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 26: -+#line 307 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_HAS_KEYPAD; } -+#line 2160 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 27: -+#line 308 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_HAS_FN; } -+#line 2166 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 28: -+#line 309 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.mapFlags) = MAP_IS_ALTGR; } -+#line 2172 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 29: -+#line 313 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.any) = AppendStmt((yyvsp[-1].any), (yyvsp[0].any)); } -+#line 2178 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 30: -+#line 314 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.any) = NULL; } -+#line 2184 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 31: -+#line 318 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].var)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].var); -+ } -+#line 2193 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 32: -+#line 323 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].vmod)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].vmod); -+ } -+#line 2202 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 33: -+#line 328 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].interp)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].interp); -+ } -+#line 2211 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 34: -+#line 333 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); -+ } -+#line 2220 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 35: -+#line 338 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); -+ } -+#line 2229 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 36: -+#line 343 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); -+ } -+#line 2238 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 37: -+#line 348 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].syms)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].syms); -+ } -+#line 2247 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 38: -+#line 353 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); -+ } -+#line 2256 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 39: -+#line 358 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); -+ } -+#line 2265 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 40: -+#line 363 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); -+ } -+#line 2274 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 41: -+#line 368 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); -+ (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); -+ } -+#line 2283 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 42: -+#line 372 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.any) = NULL; } -+#line 2289 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 43: -+#line 373 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.any) = NULL; } -+#line 2295 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 44: -+#line 374 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.any) = NULL; } -+#line 2301 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 45: -+#line 376 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); -+ free((yyvsp[0].str)); -+ } -+#line 2310 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 46: -+#line 383 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } -+#line 2316 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 47: -+#line 385 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } -+#line 2322 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 48: -+#line 387 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } -+#line 2328 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 49: -+#line 391 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } -+#line 2334 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 50: -+#line 395 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } -+#line 2340 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 51: -+#line 399 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.vmod) = (yyvsp[-1].vmod); } -+#line 2346 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 52: -+#line 403 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.vmod) = (VModDef *) AppendStmt((ParseCommon *) (yyvsp[-2].vmod), -+ (ParseCommon *) (yyvsp[0].vmod)); } -+#line 2353 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 53: -+#line 406 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.vmod) = (yyvsp[0].vmod); } -+#line 2359 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 54: -+#line 410 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } -+#line 2365 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 55: -+#line 412 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } -+#line 2371 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 56: -+#line 418 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyvsp[-4].interp)->def = (yyvsp[-2].var); (yyval.interp) = (yyvsp[-4].interp); } -+#line 2377 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 57: -+#line 422 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } -+#line 2383 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 58: -+#line 424 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } -+#line 2389 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 59: -+#line 428 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-1].var), -+ (ParseCommon *) (yyvsp[0].var)); } -+#line 2396 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 60: -+#line 431 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = (yyvsp[0].var); } -+#line 2402 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 61: -+#line 437 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } -+#line 2408 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 62: -+#line 443 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } -+#line 2414 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 63: -+#line 447 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-2].var), -+ (ParseCommon *) (yyvsp[0].var)); } -+#line 2421 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 64: -+#line 450 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = (yyvsp[0].var); } -+#line 2427 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 65: -+#line 451 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = NULL; } -+#line 2433 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 66: -+#line 454 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2439 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 67: -+#line 455 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2445 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 68: -+#line 456 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } -+#line 2451 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 69: -+#line 457 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } -+#line 2457 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 70: -+#line 458 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } -+#line 2463 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 71: -+#line 462 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[-1].expr); } -+#line 2469 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 72: -+#line 464 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateUnary(EXPR_ACTION_LIST, EXPR_TYPE_ACTION, (yyvsp[-1].expr)); } -+#line 2475 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 73: -+#line 468 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].ival), (yyvsp[-1].expr)); } -+#line 2481 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 74: -+#line 472 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].expr)); } -+#line 2487 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 75: -+#line 476 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } -+#line 2493 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 76: -+#line 480 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), false); } -+#line 2499 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 77: -+#line 482 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), true); } -+#line 2505 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 78: -+#line 486 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2511 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 79: -+#line 488 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } -+#line 2517 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 80: -+#line 492 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2523 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 81: -+#line 495 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL;} -+#line 2529 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 82: -+#line 496 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2535 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 83: -+#line 500 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2541 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 84: -+#line 502 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -+#line 2547 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 85: -+#line 504 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2553 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 86: -+#line 506 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } -+#line 2559 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 87: -+#line 508 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2565 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 88: -+#line 511 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL;} -+#line 2571 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 89: -+#line 512 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2577 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 90: -+#line 515 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2583 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 91: -+#line 517 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -+#line 2589 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 92: -+#line 520 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2595 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 93: -+#line 521 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2601 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 94: -+#line 525 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2607 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 95: -+#line 527 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[-1].expr)); (yyval.geom) = NULL; } -+#line 2613 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 96: -+#line 531 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2619 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 97: -+#line 534 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2625 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 98: -+#line 535 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2631 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 99: -+#line 538 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2637 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 100: -+#line 542 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL;} -+#line 2643 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 101: -+#line 544 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.geom) = NULL; } -+#line 2649 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 102: -+#line 548 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -+#line 2655 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 103: -+#line 550 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -+#line 2661 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 104: -+#line 552 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } -+#line 2667 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 105: -+#line 556 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -+#line 2673 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 106: -+#line 558 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -+#line 2679 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 107: -+#line 562 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = NULL; } -+#line 2685 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 108: -+#line 566 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { FreeStmt((ParseCommon *) (yyvsp[-2].var)); (yyval.geom) = NULL; } -+#line 2691 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 109: -+#line 569 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = 0; } -+#line 2697 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 110: -+#line 570 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = 0; } -+#line 2703 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 111: -+#line 571 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = 0; } -+#line 2709 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 112: -+#line 572 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = 0; } -+#line 2715 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 113: -+#line 575 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = (yyvsp[0].atom); } -+#line 2721 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 114: -+#line 576 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = (yyvsp[0].atom); } -+#line 2727 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 115: -+#line 580 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } -+#line 2733 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 116: -+#line 582 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } -+#line 2739 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 117: -+#line 584 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } -+#line 2745 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 118: -+#line 586 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } -+#line 2751 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 119: -+#line 588 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } -+#line 2757 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 120: -+#line 590 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} -+#line 2763 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 121: -+#line 592 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } -+#line 2769 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 122: -+#line 594 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = XKB_ATOM_NONE; } -+#line 2775 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 123: -+#line 596 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = XKB_ATOM_NONE; } -+#line 2781 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 124: -+#line 598 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = XKB_ATOM_NONE; } -+#line 2787 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 125: -+#line 600 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = XKB_ATOM_NONE; } -+#line 2793 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 126: -+#line 603 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = (yyvsp[0].merge); } -+#line 2799 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 127: -+#line 604 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = MERGE_DEFAULT; } -+#line 2805 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 128: -+#line 607 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = MERGE_DEFAULT; } -+#line 2811 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 129: -+#line 608 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = MERGE_AUGMENT; } -+#line 2817 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 130: -+#line 609 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = MERGE_OVERRIDE; } -+#line 2823 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 131: -+#line 610 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.merge) = MERGE_REPLACE; } -+#line 2829 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 132: -+#line 612 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ /* -+ * This used to be MERGE_ALT_FORM. This functionality was -+ * unused and has been removed. -+ */ -+ (yyval.merge) = MERGE_DEFAULT; -+ } -+#line 2841 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 133: -+#line 621 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2847 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 134: -+#line 622 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = NULL; } -+#line 2853 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 135: -+#line 626 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), -+ (ParseCommon *) (yyvsp[0].expr)); } -+#line 2860 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 136: -+#line 629 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2866 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 137: -+#line 633 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2872 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 138: -+#line 635 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2878 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 139: -+#line 637 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2884 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 140: -+#line 639 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2890 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 141: -+#line 641 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 2896 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 142: -+#line 643 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2902 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 143: -+#line 647 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -+#line 2908 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 144: -+#line 649 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -+#line 2914 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 145: -+#line 651 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } -+#line 2920 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 146: -+#line 653 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -+#line 2926 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 147: -+#line 655 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2932 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 148: -+#line 657 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } -+#line 2938 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 149: -+#line 659 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2944 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 150: -+#line 661 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[-1].expr); } -+#line 2950 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 151: -+#line 665 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), -+ (ParseCommon *) (yyvsp[0].expr)); } -+#line 2957 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 152: -+#line 668 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 2963 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 153: -+#line 672 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } -+#line 2969 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 154: -+#line 676 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } -+#line 2975 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 155: -+#line 678 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } -+#line 2981 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 156: -+#line 680 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } -+#line 2987 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 157: -+#line 682 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } -+#line 2993 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 158: -+#line 686 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } -+#line 2999 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 159: -+#line 688 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateInteger((yyvsp[0].ival)); } -+#line 3005 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 160: -+#line 690 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = NULL; } -+#line 3011 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 161: -+#line 692 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } -+#line 3017 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 162: -+#line 695 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[0].expr); } -+#line 3023 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 163: -+#line 696 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = NULL; } -+#line 3029 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 164: -+#line 700 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } -+#line 3035 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 165: -+#line 702 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } -+#line 3041 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 166: -+#line 704 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } -+#line 3047 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 167: -+#line 706 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } -+#line 3053 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 168: -+#line 710 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.expr) = (yyvsp[-1].expr); } -+#line 3059 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 169: -+#line 714 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) -+ parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); -+ free((yyvsp[0].str)); -+ } -+#line 3069 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 170: -+#line 719 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.keysym) = XKB_KEY_section; } -+#line 3075 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 171: -+#line 721 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { -+ if ((yyvsp[0].ival) < 0) { -+ parser_warn(param, "unrecognized keysym \"%d\"", (yyvsp[0].ival)); -+ (yyval.keysym) = XKB_KEY_NoSymbol; -+ } -+ else if ((yyvsp[0].ival) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ -+ (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].ival); -+ } -+ else { -+ char buf[17]; -+ snprintf(buf, sizeof(buf), "0x%x", (yyvsp[0].ival)); -+ if (!resolve_keysym(buf, &(yyval.keysym))) { -+ parser_warn(param, "unrecognized keysym \"%s\"", buf); -+ (yyval.keysym) = XKB_KEY_NoSymbol; -+ } -+ } -+ } -+#line 3097 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 172: -+#line 740 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = -(yyvsp[0].ival); } -+#line 3103 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 173: -+#line 741 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = (yyvsp[0].ival); } -+#line 3109 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 174: -+#line 744 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = (yyvsp[0].num); } -+#line 3115 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 175: -+#line 745 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = (yyvsp[0].num); } -+#line 3121 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 176: -+#line 748 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = 0; } -+#line 3127 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 177: -+#line 751 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.ival) = (yyvsp[0].num); } -+#line 3133 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 178: -+#line 754 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.num) = (yyvsp[0].num); } -+#line 3139 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 179: -+#line 757 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } -+#line 3145 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 180: -+#line 758 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } -+#line 3151 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 181: -+#line 761 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } -+#line 3157 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 182: -+#line 764 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.str) = (yyvsp[0].str); } -+#line 3163 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 183: -+#line 765 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.str) = NULL; } -+#line 3169 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ case 184: -+#line 768 "src/xkbcomp/parser.y" /* yacc.c:1646 */ -+ { (yyval.str) = (yyvsp[0].str); } -+#line 3175 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ break; -+ -+ -+#line 3179 "src/xkbcomp/parser.c" /* yacc.c:1646 */ -+ default: break; -+ } -+ /* User semantic actions sometimes alter yychar, and that requires -+ that yytoken be updated with the new translation. We take the -+ approach of translating immediately before every use of yytoken. -+ One alternative is translating here after every semantic action, -+ but that translation would be missed if the semantic action invokes -+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or -+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an -+ incorrect destructor might then be invoked immediately. In the -+ case of YYERROR or YYBACKUP, subsequent parser actions might lead -+ to an incorrect destructor call or verbose syntax error message -+ before the lookahead is translated. */ -+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); -+ -+ YYPOPSTACK (yylen); -+ yylen = 0; -+ YY_STACK_PRINT (yyss, yyssp); -+ -+ *++yyvsp = yyval; -+ -+ /* Now 'shift' the result of the reduction. Determine what state -+ that goes to, based on the state we popped back to and the rule -+ number reduced by. */ -+ -+ yyn = yyr1[yyn]; -+ -+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; -+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) -+ yystate = yytable[yystate]; -+ else -+ yystate = yydefgoto[yyn - YYNTOKENS]; -+ -+ goto yynewstate; -+ -+ -+/*--------------------------------------. -+| yyerrlab -- here on detecting error. | -+`--------------------------------------*/ -+yyerrlab: -+ /* Make sure we have latest lookahead translation. See comments at -+ user semantic actions for why this is necessary. */ -+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); -+ -+ /* If not already recovering from an error, report this error. */ -+ if (!yyerrstatus) -+ { -+ ++yynerrs; -+#if ! YYERROR_VERBOSE -+ yyerror (param, YY_("syntax error")); -+#else -+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ -+ yyssp, yytoken) -+ { -+ char const *yymsgp = YY_("syntax error"); -+ int yysyntax_error_status; -+ yysyntax_error_status = YYSYNTAX_ERROR; -+ if (yysyntax_error_status == 0) -+ yymsgp = yymsg; -+ else if (yysyntax_error_status == 1) -+ { -+ if (yymsg != yymsgbuf) -+ YYSTACK_FREE (yymsg); -+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); -+ if (!yymsg) -+ { -+ yymsg = yymsgbuf; -+ yymsg_alloc = sizeof yymsgbuf; -+ yysyntax_error_status = 2; -+ } -+ else -+ { -+ yysyntax_error_status = YYSYNTAX_ERROR; -+ yymsgp = yymsg; -+ } -+ } -+ yyerror (param, yymsgp); -+ if (yysyntax_error_status == 2) -+ goto yyexhaustedlab; -+ } -+# undef YYSYNTAX_ERROR -+#endif -+ } -+ -+ -+ -+ if (yyerrstatus == 3) -+ { -+ /* If just tried and failed to reuse lookahead token after an -+ error, discard it. */ -+ -+ if (yychar <= YYEOF) -+ { -+ /* Return failure if at end of input. */ -+ if (yychar == YYEOF) -+ YYABORT; -+ } -+ else -+ { -+ yydestruct ("Error: discarding", -+ yytoken, &yylval, param); -+ yychar = YYEMPTY; -+ } -+ } -+ -+ /* Else will try to reuse lookahead token after shifting the error -+ token. */ -+ goto yyerrlab1; -+ -+ -+/*---------------------------------------------------. -+| yyerrorlab -- error raised explicitly by YYERROR. | -+`---------------------------------------------------*/ -+yyerrorlab: -+ -+ /* Pacify compilers like GCC when the user code never invokes -+ YYERROR and the label yyerrorlab therefore never appears in user -+ code. */ -+ if (/*CONSTCOND*/ 0) -+ goto yyerrorlab; -+ -+ /* Do not reclaim the symbols of the rule whose action triggered -+ this YYERROR. */ -+ YYPOPSTACK (yylen); -+ yylen = 0; -+ YY_STACK_PRINT (yyss, yyssp); -+ yystate = *yyssp; -+ goto yyerrlab1; -+ -+ -+/*-------------------------------------------------------------. -+| yyerrlab1 -- common code for both syntax error and YYERROR. | -+`-------------------------------------------------------------*/ -+yyerrlab1: -+ yyerrstatus = 3; /* Each real token shifted decrements this. */ -+ -+ for (;;) -+ { -+ yyn = yypact[yystate]; -+ if (!yypact_value_is_default (yyn)) -+ { -+ yyn += YYTERROR; -+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) -+ { -+ yyn = yytable[yyn]; -+ if (0 < yyn) -+ break; -+ } -+ } -+ -+ /* Pop the current state because it cannot handle the error token. */ -+ if (yyssp == yyss) -+ YYABORT; -+ -+ -+ yydestruct ("Error: popping", -+ yystos[yystate], yyvsp, param); -+ YYPOPSTACK (1); -+ yystate = *yyssp; -+ YY_STACK_PRINT (yyss, yyssp); -+ } -+ -+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -+ *++yyvsp = yylval; -+ YY_IGNORE_MAYBE_UNINITIALIZED_END -+ -+ -+ /* Shift the error token. */ -+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); -+ -+ yystate = yyn; -+ goto yynewstate; -+ -+ -+/*-------------------------------------. -+| yyacceptlab -- YYACCEPT comes here. | -+`-------------------------------------*/ -+yyacceptlab: -+ yyresult = 0; -+ goto yyreturn; -+ -+/*-----------------------------------. -+| yyabortlab -- YYABORT comes here. | -+`-----------------------------------*/ -+yyabortlab: -+ yyresult = 1; -+ goto yyreturn; -+ -+#if !defined yyoverflow || YYERROR_VERBOSE -+/*-------------------------------------------------. -+| yyexhaustedlab -- memory exhaustion comes here. | -+`-------------------------------------------------*/ -+yyexhaustedlab: -+ yyerror (param, YY_("memory exhausted")); -+ yyresult = 2; -+ /* Fall through. */ -+#endif -+ -+yyreturn: -+ if (yychar != YYEMPTY) -+ { -+ /* Make sure we have latest lookahead translation. See comments at -+ user semantic actions for why this is necessary. */ -+ yytoken = YYTRANSLATE (yychar); -+ yydestruct ("Cleanup: discarding lookahead", -+ yytoken, &yylval, param); -+ } -+ /* Do not reclaim the symbols of the rule whose action triggered -+ this YYABORT or YYACCEPT. */ -+ YYPOPSTACK (yylen); -+ YY_STACK_PRINT (yyss, yyssp); -+ while (yyssp != yyss) -+ { -+ yydestruct ("Cleanup: popping", -+ yystos[*yyssp], yyvsp, param); -+ YYPOPSTACK (1); -+ } -+#ifndef yyoverflow -+ if (yyss != yyssa) -+ YYSTACK_FREE (yyss); -+#endif -+#if YYERROR_VERBOSE -+ if (yymsg != yymsgbuf) -+ YYSTACK_FREE (yymsg); -+#endif -+ return yyresult; -+} -+#line 771 "src/xkbcomp/parser.y" /* yacc.c:1906 */ -+ -+ -+XkbFile * -+parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) -+{ -+ int ret; -+ XkbFile *first = NULL; -+ struct parser_param param = { -+ .scanner = scanner, -+ .ctx = ctx, -+ .rtrn = NULL, -+ }; -+ -+ /* -+ * If we got a specific map, we look for it exclusively and return -+ * immediately upon finding it. Otherwise, we need to get the -+ * default map. If we find a map marked as default, we return it -+ * immediately. If there are no maps marked as default, we return -+ * the first map in the file. -+ */ -+ -+ while ((ret = yyparse(¶m)) == 0 && param.more_maps) { -+ if (map) { -+ if (streq_not_null(map, param.rtrn->name)) -+ return param.rtrn; -+ else -+ FreeXkbFile(param.rtrn); -+ } -+ else { -+ if (param.rtrn->flags & MAP_IS_DEFAULT) { -+ FreeXkbFile(first); -+ return param.rtrn; -+ } -+ else if (!first) { -+ first = param.rtrn; -+ } -+ else { -+ FreeXkbFile(param.rtrn); -+ } -+ } -+ param.rtrn = NULL; -+ } -+ -+ if (ret != 0) { -+ FreeXkbFile(first); -+ return NULL; -+ } -+ -+ if (first) -+ log_vrb(ctx, 5, -+ "No map in include statement, but \"%s\" contains several; " -+ "Using first defined map, \"%s\"\n", -+ scanner->file_name, first->name); -+ -+ return first; -+} -diff --git a/src/xkbcomp/parser.h b/src/xkbcomp/parser.h -new file mode 100644 -index 0000000..af40d41 ---- /dev/null -+++ b/src/xkbcomp/parser.h -@@ -0,0 +1,221 @@ -+/* A Bison parser, made by GNU Bison 3.0.4. */ -+ -+/* Bison interface for Yacc-like parsers in C -+ -+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. -+ -+ This program is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+#ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED -+# define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED -+/* Debug traces. */ -+#ifndef YYDEBUG -+# define YYDEBUG 0 -+#endif -+#if YYDEBUG -+extern int _xkbcommon_debug; -+#endif -+ -+/* Token type. */ -+#ifndef YYTOKENTYPE -+# define YYTOKENTYPE -+ enum yytokentype -+ { -+ END_OF_FILE = 0, -+ ERROR_TOK = 255, -+ XKB_KEYMAP = 1, -+ XKB_KEYCODES = 2, -+ XKB_TYPES = 3, -+ XKB_SYMBOLS = 4, -+ XKB_COMPATMAP = 5, -+ XKB_GEOMETRY = 6, -+ XKB_SEMANTICS = 7, -+ XKB_LAYOUT = 8, -+ INCLUDE = 10, -+ OVERRIDE = 11, -+ AUGMENT = 12, -+ REPLACE = 13, -+ ALTERNATE = 14, -+ VIRTUAL_MODS = 20, -+ TYPE = 21, -+ INTERPRET = 22, -+ ACTION_TOK = 23, -+ KEY = 24, -+ ALIAS = 25, -+ GROUP = 26, -+ MODIFIER_MAP = 27, -+ INDICATOR = 28, -+ SHAPE = 29, -+ KEYS = 30, -+ ROW = 31, -+ SECTION = 32, -+ OVERLAY = 33, -+ TEXT = 34, -+ OUTLINE = 35, -+ SOLID = 36, -+ LOGO = 37, -+ VIRTUAL = 38, -+ EQUALS = 40, -+ PLUS = 41, -+ MINUS = 42, -+ DIVIDE = 43, -+ TIMES = 44, -+ OBRACE = 45, -+ CBRACE = 46, -+ OPAREN = 47, -+ CPAREN = 48, -+ OBRACKET = 49, -+ CBRACKET = 50, -+ DOT = 51, -+ COMMA = 52, -+ SEMI = 53, -+ EXCLAM = 54, -+ INVERT = 55, -+ STRING = 60, -+ INTEGER = 61, -+ FLOAT = 62, -+ IDENT = 63, -+ KEYNAME = 64, -+ PARTIAL = 70, -+ DEFAULT = 71, -+ HIDDEN = 72, -+ ALPHANUMERIC_KEYS = 73, -+ MODIFIER_KEYS = 74, -+ KEYPAD_KEYS = 75, -+ FUNCTION_KEYS = 76, -+ ALTERNATE_GROUP = 77 -+ }; -+#endif -+/* Tokens. */ -+#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 -+ -+/* Value type. */ -+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -+ -+union YYSTYPE -+{ -+#line 162 "src/xkbcomp/parser.y" /* yacc.c:1909 */ -+ -+ int ival; -+ int64_t num; -+ enum xkb_file_type file_type; -+ char *str; -+ xkb_atom_t atom; -+ enum merge_mode merge; -+ enum xkb_map_flags mapFlags; -+ xkb_keysym_t keysym; -+ ParseCommon *any; -+ ExprDef *expr; -+ VarDef *var; -+ VModDef *vmod; -+ InterpDef *interp; -+ KeyTypeDef *keyType; -+ SymbolsDef *syms; -+ ModMapDef *modMask; -+ GroupCompatDef *groupCompat; -+ LedMapDef *ledMap; -+ LedNameDef *ledName; -+ KeycodeDef *keyCode; -+ KeyAliasDef *keyAlias; -+ void *geom; -+ XkbFile *file; -+ -+#line 210 "src/xkbcomp/parser.h" /* yacc.c:1909 */ -+}; -+ -+typedef union YYSTYPE YYSTYPE; -+# define YYSTYPE_IS_TRIVIAL 1 -+# define YYSTYPE_IS_DECLARED 1 -+#endif -+ -+ -+ -+int _xkbcommon_parse (struct parser_param *param); -+ -+#endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED */ --- -2.10.2 - diff --git a/desktop/libxkbcommon/rev b/desktop/libxkbcommon/rev deleted file mode 100644 index 0cfbf088..00000000 --- a/desktop/libxkbcommon/rev +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/desktop/libxkbcommon/src b/desktop/libxkbcommon/src deleted file mode 160000 -Subproject d596f6e3ff2d1fde0491907fa9354e5cdf154ed diff --git a/desktop/pixman/config.h b/desktop/pixman/config.h deleted file mode 100644 index 1ff23a85..00000000 --- a/desktop/pixman/config.h +++ /dev/null @@ -1,48 +0,0 @@ -#include <config-posix.h> - -/* #undef AC_APPLE_UNIVERSAL_BUILD */ -#define HAVE_BUILTIN_CLZ /**/ -#define HAVE_FEDIVBYZERO 1 -/* #undef HAVE_FEENABLEEXCEPT */ -#define HAVE_FLOAT128 /**/ -#define HAVE_GCC_VECTOR_EXTENSIONS /**/ -/* #undef HAVE_GETISAX */ -#define HAVE_GETPAGESIZE 1 -/* #undef HAVE_LIBPIXMAN_1 */ -/* #undef HAVE_LIBPNG */ -#define HAVE_MEMORY_H 1 -#define HAVE_PTHREADS /**/ -#define LT_OBJDIR ".libs/" -#define PACKAGE "pixman" -#define PACKAGE_BUGREPORT "pixman@lists.freedesktop.org" -#define PACKAGE_NAME "pixman" -#define PACKAGE_STRING "pixman 0.34.0" -#define PACKAGE_TARNAME "pixman" -#define PACKAGE_URL "" -#define PACKAGE_VERSION "0.34.0" -/* #undef PIXMAN_TIMERS */ -#define SIZEOF_LONG 8 -#define TLS __thread -#define TOOLCHAIN_SUPPORTS_ATTRIBUTE_CONSTRUCTOR /**/ -/* #undef USE_ARM_IWMMXT */ -/* #undef USE_ARM_NEON */ -/* #undef USE_ARM_SIMD */ -#define USE_GCC_INLINE_ASM 1 -/* #undef USE_LOONGSON_MMI */ -/* #undef USE_MIPS_DSPR2 */ -/* #undef USE_OPENMP */ -/* #undef USE_VMX */ -#define VERSION "0.34.0" -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif -#ifndef __cplusplus -/* #undef inline */ -#endif -/* #undef sqrtf */ diff --git a/desktop/pixman/gen.rc b/desktop/pixman/gen.rc deleted file mode 100644 index 408007a7..00000000 --- a/desktop/pixman/gen.rc +++ /dev/null @@ -1,57 +0,0 @@ -cflags\ - -D HAVE_CONFIG_H\ - -I include\ - -I '$dir' \ - -I '$outdir'/include - -build '$outdir'/include/pixman-version.h sed '$srcdir'/pixman/pixman-version.h.in ; exprs=(\ - -e s,@PIXMAN_VERSION_MAJOR@,0,\ - -e s,@PIXMAN_VERSION_MINOR@,34,\ - -e s,@PIXMAN_VERSION_MICRO@,0,\ -) with expr $"exprs -build '$outdir'/include/pixman.h copy '$srcdir'/pixman/pixman.h - -phony headers '$outdir'/include/^(pixman.h pixman-version.h) - -# processor-specific features -cflags -D 'USE_SSE2=1' -D 'USE_SSSE3=1' -D 'USE_X86_MMX=1' -cc pixman/pixman-mmx.c '||' $deps ; with cflags '$cflags -mmmx -Winline' -cc pixman/pixman-sse2.c '||' $deps ; with cflags '$cflags -msse2 -Winline' -cc pixman/pixman-ssse3.c '||' $deps ; with cflags '$cflags -mssse3 -Winline' -cpuobjs=(pixman-mmx.c pixman-sse2.c pixman-ssse3.c)^.o - -lib libpixman.a -d '$dir'/headers pixman/^(\ - pixman.c\ - pixman-access.c\ - pixman-access-accessors.c\ - pixman-bits-image.c\ - pixman-combine32.c\ - pixman-combine-float.c\ - pixman-conical-gradient.c\ - pixman-filter.c\ - pixman-x86.c\ - pixman-mips.c\ - pixman-arm.c\ - pixman-ppc.c\ - pixman-edge.c\ - pixman-edge-accessors.c\ - pixman-fast-path.c\ - pixman-glyph.c\ - pixman-general.c\ - pixman-gradient-walker.c\ - pixman-image.c\ - pixman-implementation.c\ - pixman-linear-gradient.c\ - pixman-matrix.c\ - pixman-noop.c\ - pixman-radial-gradient.c\ - pixman-region16.c\ - pixman-region32.c\ - pixman-solid-fill.c\ - pixman-timer.c\ - pixman-trap.c\ - pixman-utils.c\ - $cpuobjs\ -) - -fetch git diff --git a/desktop/pixman/rev b/desktop/pixman/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/pixman/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/pixman/src b/desktop/pixman/src deleted file mode 160000 -Subproject 1727aa4ab60a594cbb1cc1bdaa270b7dfad21f0 diff --git a/desktop/plan9fonts/fonts.txt b/desktop/plan9fonts/fonts.txt deleted file mode 100644 index 5d6f4eaa..00000000 --- a/desktop/plan9fonts/fonts.txt +++ /dev/null @@ -1,322 +0,0 @@ -# <cd src && printf '%s\n' terminus/{*.font,*.*-*} -terminus/ter-u12n.font -terminus/ter-u14n.font -terminus/ter-u14v.font -terminus/ter-u12n.0000-0000 -terminus/ter-u12n.0020-007E -terminus/ter-u12n.00A0-0175 -terminus/ter-u12n.0178-017F -terminus/ter-u12n.0186-0186 -terminus/ter-u12n.018E-0190 -terminus/ter-u12n.0192-0192 -terminus/ter-u12n.019D-019E -terminus/ter-u12n.01B7-01B7 -terminus/ter-u12n.0218-021B -terminus/ter-u12n.0232-0233 -terminus/ter-u12n.0237-0237 -terminus/ter-u12n.0254-0254 -terminus/ter-u12n.0258-0259 -terminus/ter-u12n.025B-025B -terminus/ter-u12n.0272-0272 -terminus/ter-u12n.0292-0292 -terminus/ter-u12n.02BB-02BD -terminus/ter-u12n.02C6-02C7 -terminus/ter-u12n.02D8-02D9 -terminus/ter-u12n.02DB-02DD -terminus/ter-u12n.0300-0303 -terminus/ter-u12n.0306-0306 -terminus/ter-u12n.030C-030C -terminus/ter-u12n.0329-0329 -terminus/ter-u12n.0384-038A -terminus/ter-u12n.038C-038C -terminus/ter-u12n.038E-03A1 -terminus/ter-u12n.03A3-03CE -terminus/ter-u12n.03F3-03F4 -terminus/ter-u12n.0400-045F -terminus/ter-u12n.0490-049D -terminus/ter-u12n.04A0-04A5 -terminus/ter-u12n.04AA-04AB -terminus/ter-u12n.04AE-04B3 -terminus/ter-u12n.04B6-04BB -terminus/ter-u12n.04D0-04DF -terminus/ter-u12n.04E2-04F5 -terminus/ter-u12n.04F8-04F9 -terminus/ter-u12n.1E34-1E35 -terminus/ter-u12n.1EB8-1EB9 -terminus/ter-u12n.1EBC-1EBD -terminus/ter-u12n.1ECA-1ECD -terminus/ter-u12n.1EE4-1EE5 -terminus/ter-u12n.1EF8-1EF9 -terminus/ter-u12n.2000-200A -terminus/ter-u12n.2010-2022 -terminus/ter-u12n.2026-2026 -terminus/ter-u12n.2030-2030 -terminus/ter-u12n.2032-2033 -terminus/ter-u12n.2039-203A -terminus/ter-u12n.203C-203C -terminus/ter-u12n.203E-203E -terminus/ter-u12n.207F-207F -terminus/ter-u12n.20A7-20A7 -terminus/ter-u12n.20AC-20AC -terminus/ter-u12n.20AE-20AE -terminus/ter-u12n.210E-210F -terminus/ter-u12n.2116-2116 -terminus/ter-u12n.2122-2122 -terminus/ter-u12n.2126-2126 -terminus/ter-u12n.2190-2195 -terminus/ter-u12n.21A8-21A8 -terminus/ter-u12n.21B5-21B5 -terminus/ter-u12n.21D0-21D5 -terminus/ter-u12n.2203-2203 -terminus/ter-u12n.2205-2206 -terminus/ter-u12n.2208-2208 -terminus/ter-u12n.220A-220A -terminus/ter-u12n.2212-2212 -terminus/ter-u12n.2219-221A -terminus/ter-u12n.221E-221F -terminus/ter-u12n.2227-222A -terminus/ter-u12n.2248-2248 -terminus/ter-u12n.2260-2261 -terminus/ter-u12n.2264-2265 -terminus/ter-u12n.2302-2302 -terminus/ter-u12n.2310-2310 -terminus/ter-u12n.2320-2321 -terminus/ter-u12n.23BA-23BD -terminus/ter-u12n.2409-240D -terminus/ter-u12n.2424-2424 -terminus/ter-u12n.2500-2503 -terminus/ter-u12n.2508-254B -terminus/ter-u12n.2550-2570 -terminus/ter-u12n.2574-2593 -terminus/ter-u12n.2596-25A0 -terminus/ter-u12n.25AC-25AC -terminus/ter-u12n.25AE-25AE -terminus/ter-u12n.25B2-25B2 -terminus/ter-u12n.25B6-25B6 -terminus/ter-u12n.25BC-25BC -terminus/ter-u12n.25C0-25C0 -terminus/ter-u12n.25C6-25C6 -terminus/ter-u12n.25CA-25CB -terminus/ter-u12n.25CF-25CF -terminus/ter-u12n.25D8-25D9 -terminus/ter-u12n.263A-263C -terminus/ter-u12n.2640-2640 -terminus/ter-u12n.2642-2642 -terminus/ter-u12n.2660-2660 -terminus/ter-u12n.2663-2663 -terminus/ter-u12n.2665-2666 -terminus/ter-u12n.266A-266B -terminus/ter-u12n.F6BE-F6BE -terminus/ter-u12n.FFFD-FFFD -terminus/ter-u14n.0000-0000 -terminus/ter-u14n.0020-007E -terminus/ter-u14n.00A0-0175 -terminus/ter-u14n.0178-017F -terminus/ter-u14n.0186-0186 -terminus/ter-u14n.018E-0190 -terminus/ter-u14n.0192-0192 -terminus/ter-u14n.019D-019E -terminus/ter-u14n.01B7-01B7 -terminus/ter-u14n.0218-021B -terminus/ter-u14n.0232-0233 -terminus/ter-u14n.0237-0237 -terminus/ter-u14n.0254-0254 -terminus/ter-u14n.0258-0259 -terminus/ter-u14n.025B-025B -terminus/ter-u14n.0272-0272 -terminus/ter-u14n.0292-0292 -terminus/ter-u14n.02BB-02BD -terminus/ter-u14n.02C6-02C7 -terminus/ter-u14n.02D8-02D9 -terminus/ter-u14n.02DB-02DD -terminus/ter-u14n.0300-0303 -terminus/ter-u14n.0306-0306 -terminus/ter-u14n.030C-030C -terminus/ter-u14n.0329-0329 -terminus/ter-u14n.0384-038A -terminus/ter-u14n.038C-038C -terminus/ter-u14n.038E-03A1 -terminus/ter-u14n.03A3-03CE -terminus/ter-u14n.03F3-03F4 -terminus/ter-u14n.0400-045F -terminus/ter-u14n.0490-049D -terminus/ter-u14n.04A0-04A5 -terminus/ter-u14n.04AA-04AB -terminus/ter-u14n.04AE-04B3 -terminus/ter-u14n.04B6-04BB -terminus/ter-u14n.04D0-04DF -terminus/ter-u14n.04E2-04F5 -terminus/ter-u14n.04F8-04F9 -terminus/ter-u14n.1E34-1E35 -terminus/ter-u14n.1EB8-1EB9 -terminus/ter-u14n.1EBC-1EBD -terminus/ter-u14n.1ECA-1ECD -terminus/ter-u14n.1EE4-1EE5 -terminus/ter-u14n.1EF8-1EF9 -terminus/ter-u14n.2000-200A -terminus/ter-u14n.2010-2022 -terminus/ter-u14n.2026-2026 -terminus/ter-u14n.2030-2030 -terminus/ter-u14n.2032-2033 -terminus/ter-u14n.2039-203A -terminus/ter-u14n.203C-203C -terminus/ter-u14n.203E-203E -terminus/ter-u14n.207F-207F -terminus/ter-u14n.20A7-20A7 -terminus/ter-u14n.20AC-20AC -terminus/ter-u14n.20AE-20AE -terminus/ter-u14n.210E-210F -terminus/ter-u14n.2116-2116 -terminus/ter-u14n.2122-2122 -terminus/ter-u14n.2126-2126 -terminus/ter-u14n.2190-2195 -terminus/ter-u14n.21A8-21A8 -terminus/ter-u14n.21B5-21B5 -terminus/ter-u14n.21D0-21D5 -terminus/ter-u14n.2203-2203 -terminus/ter-u14n.2205-2206 -terminus/ter-u14n.2208-2208 -terminus/ter-u14n.220A-220A -terminus/ter-u14n.2212-2212 -terminus/ter-u14n.2219-221A -terminus/ter-u14n.221E-221F -terminus/ter-u14n.2227-222A -terminus/ter-u14n.2248-2248 -terminus/ter-u14n.2260-2261 -terminus/ter-u14n.2264-2265 -terminus/ter-u14n.2302-2302 -terminus/ter-u14n.2310-2310 -terminus/ter-u14n.2320-2321 -terminus/ter-u14n.23BA-23BD -terminus/ter-u14n.2409-240D -terminus/ter-u14n.2424-2424 -terminus/ter-u14n.2500-2503 -terminus/ter-u14n.2508-254B -terminus/ter-u14n.2550-2570 -terminus/ter-u14n.2574-2593 -terminus/ter-u14n.2596-25A0 -terminus/ter-u14n.25AC-25AC -terminus/ter-u14n.25AE-25AE -terminus/ter-u14n.25B2-25B2 -terminus/ter-u14n.25B6-25B6 -terminus/ter-u14n.25BC-25BC -terminus/ter-u14n.25C0-25C0 -terminus/ter-u14n.25C6-25C6 -terminus/ter-u14n.25CA-25CB -terminus/ter-u14n.25CF-25CF -terminus/ter-u14n.25D8-25D9 -terminus/ter-u14n.263A-263C -terminus/ter-u14n.2640-2640 -terminus/ter-u14n.2642-2642 -terminus/ter-u14n.2660-2660 -terminus/ter-u14n.2663-2663 -terminus/ter-u14n.2665-2666 -terminus/ter-u14n.266A-266B -terminus/ter-u14n.F6BE-F6BE -terminus/ter-u14n.FFFD-FFFD -terminus/ter-u14v.0000-0000 -terminus/ter-u14v.0020-007E -terminus/ter-u14v.00A0-0175 -terminus/ter-u14v.0178-017F -terminus/ter-u14v.0186-0186 -terminus/ter-u14v.018E-0190 -terminus/ter-u14v.0192-0192 -terminus/ter-u14v.019D-019E -terminus/ter-u14v.01B7-01B7 -terminus/ter-u14v.0218-021B -terminus/ter-u14v.0232-0233 -terminus/ter-u14v.0237-0237 -terminus/ter-u14v.0254-0254 -terminus/ter-u14v.0258-0259 -terminus/ter-u14v.025B-025B -terminus/ter-u14v.0272-0272 -terminus/ter-u14v.0292-0292 -terminus/ter-u14v.02BB-02BD -terminus/ter-u14v.02C6-02C7 -terminus/ter-u14v.02D8-02D9 -terminus/ter-u14v.02DB-02DD -terminus/ter-u14v.0300-0303 -terminus/ter-u14v.0306-0306 -terminus/ter-u14v.030C-030C -terminus/ter-u14v.0329-0329 -terminus/ter-u14v.0384-038A -terminus/ter-u14v.038C-038C -terminus/ter-u14v.038E-03A1 -terminus/ter-u14v.03A3-03CE -terminus/ter-u14v.03F3-03F4 -terminus/ter-u14v.0400-045F -terminus/ter-u14v.0490-049D -terminus/ter-u14v.04A0-04A5 -terminus/ter-u14v.04AA-04AB -terminus/ter-u14v.04AE-04B3 -terminus/ter-u14v.04B6-04BB -terminus/ter-u14v.04D0-04DF -terminus/ter-u14v.04E2-04F5 -terminus/ter-u14v.04F8-04F9 -terminus/ter-u14v.1E34-1E35 -terminus/ter-u14v.1EB8-1EB9 -terminus/ter-u14v.1EBC-1EBD -terminus/ter-u14v.1ECA-1ECD -terminus/ter-u14v.1EE4-1EE5 -terminus/ter-u14v.1EF8-1EF9 -terminus/ter-u14v.2000-200A -terminus/ter-u14v.2010-2022 -terminus/ter-u14v.2026-2026 -terminus/ter-u14v.2030-2030 -terminus/ter-u14v.2032-2033 -terminus/ter-u14v.2039-203A -terminus/ter-u14v.203C-203C -terminus/ter-u14v.203E-203E -terminus/ter-u14v.207F-207F -terminus/ter-u14v.20A7-20A7 -terminus/ter-u14v.20AC-20AC -terminus/ter-u14v.20AE-20AE -terminus/ter-u14v.210E-210F -terminus/ter-u14v.2116-2116 -terminus/ter-u14v.2122-2122 -terminus/ter-u14v.2126-2126 -terminus/ter-u14v.2190-2195 -terminus/ter-u14v.21A8-21A8 -terminus/ter-u14v.21B5-21B5 -terminus/ter-u14v.21D0-21D5 -terminus/ter-u14v.2203-2203 -terminus/ter-u14v.2205-2206 -terminus/ter-u14v.2208-2208 -terminus/ter-u14v.220A-220A -terminus/ter-u14v.2212-2212 -terminus/ter-u14v.2219-221A -terminus/ter-u14v.221E-221F -terminus/ter-u14v.2227-222A -terminus/ter-u14v.2248-2248 -terminus/ter-u14v.2260-2261 -terminus/ter-u14v.2264-2265 -terminus/ter-u14v.2302-2302 -terminus/ter-u14v.2310-2310 -terminus/ter-u14v.2320-2321 -terminus/ter-u14v.23BA-23BD -terminus/ter-u14v.2409-240D -terminus/ter-u14v.2424-2424 -terminus/ter-u14v.2500-2503 -terminus/ter-u14v.2508-254B -terminus/ter-u14v.2550-2570 -terminus/ter-u14v.2574-2593 -terminus/ter-u14v.2596-25A0 -terminus/ter-u14v.25AC-25AC -terminus/ter-u14v.25AE-25AE -terminus/ter-u14v.25B2-25B2 -terminus/ter-u14v.25B6-25B6 -terminus/ter-u14v.25BC-25BC -terminus/ter-u14v.25C0-25C0 -terminus/ter-u14v.25C6-25C6 -terminus/ter-u14v.25CA-25CB -terminus/ter-u14v.25CF-25CF -terminus/ter-u14v.25D8-25D9 -terminus/ter-u14v.263A-263C -terminus/ter-u14v.2640-2640 -terminus/ter-u14v.2642-2642 -terminus/ter-u14v.2660-2660 -terminus/ter-u14v.2663-2663 -terminus/ter-u14v.2665-2666 -terminus/ter-u14v.266A-266B -terminus/ter-u14v.F6BE-F6BE -terminus/ter-u14v.FFFD-FFFD diff --git a/desktop/plan9fonts/gen.rc b/desktop/plan9fonts/gen.rc deleted file mode 100644 index 3ac74fed..00000000 --- a/desktop/plan9fonts/gen.rc +++ /dev/null @@ -1,4 +0,0 @@ -for(f in `{grep -v '^#' fonts.txt}) - file share/plan9/fonts/$f '$srcdir'/$f 644 - -fetch git diff --git a/desktop/plan9fonts/rev b/desktop/plan9fonts/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/plan9fonts/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/plan9fonts/src b/desktop/plan9fonts/src deleted file mode 160000 -Subproject dabdac9923f0bbf56a538a5cf2a65d566ec9bf3 diff --git a/desktop/st/config.h b/desktop/st/config.h deleted file mode 100644 index 741a0278..00000000 --- a/desktop/st/config.h +++ /dev/null @@ -1,461 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* - * appearance - * - * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html - */ -static char font[] = "Terminus:pixelsize=14"; -static int borderpx = 2; - -/* - * What program is execed by st depends of these precedence rules: - * 1: program passed with -e - * 2: utmp option - * 3: SHELL environment variable - * 4: value of shell in /etc/passwd - * 5: value of shell in config.h - */ -static char shell[] = "/bin/sh"; -static char *utmp = NULL; -static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - -/* identification sequence returned in DA and DECID */ -static char vtiden[] = "\033[?6c"; - -/* Kerning / character bounding-box multipliers */ -static float cwscale = 1.0; -static float chscale = 1.0; - -/* - * word delimiter string - * - * More advanced example: " `'\"()[]{}" - */ -static char worddelimiters[] = " "; - -/* selection timeouts (in milliseconds) */ -static unsigned int doubleclicktimeout = 300; -static unsigned int tripleclicktimeout = 600; - -/* key repeat timeouts (in milliseconds) */ -static unsigned int keyrepeatdelay = 500; -static unsigned int keyrepeatinterval = 25; - -/* alt screens */ -static int allowaltscreen = 1; - -/* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. - */ -static unsigned int blinktimeout = 800; - -/* - * thickness of underline and bar cursors - */ -static unsigned int cursorthickness = 2; - -/* - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ -/* XXX: Wayland does not have a bell. - * static int bellvolume = 0; - */ - -/* default TERM value */ -static char termname[] = "st-256color"; - -/* - * spaces per tab - * - * When you are changing this value, don't forget to adapt the »it« value in - * the st.info and appropriately install the st.info in the environment where - * you use this st version. - * - * it#$tabspaces, - * - * Secondly make sure your kernel is not expanding tabs. When running `stty - * -a` »tab0« should appear. You can tell the terminal to not expand tabs by - * running following command: - * - * stty tabs - */ -static unsigned int tabspaces = 8; - -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - /* 8 normal colors */ - "#000000", - "#a40000", - "#4e9a06", - "#c4a000", - "#204a87", - "#ce5c00", - "#038e82", - "#eaede6", - - /* 8 bright colors */ - "#555753", - "#cc0000", - "#73d216", - "#edd400", - "#3465a4", - "#f57900", - "#05d2c1", - "#ffffff", - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "#cccccc", - "#555555", - - /* background */ - "#000000", - - /* foreground */ - "#babdb6" -}; - - -/* - * Default colors (colorname index) - * foreground, background, cursor, reverse cursor - */ -static unsigned int defaultfg = 259; -static unsigned int defaultbg = 258; -static unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; - -/* - * Default shape of cursor - * 2: Block ("â–ˆ") - * 4: Underline ("_") - * 6: Bar ("|") - * 7: Snowman ("☃") - */ -static unsigned int cursorshape = 2; - -/* - * Default shape of the mouse cursor - */ -static char mouseshape[] = "xterm"; - -/* - * Color used to display font attributes when fontconfig selected a font which - * doesn't match the ones requested. - */ -static unsigned int defaultattr = 11; - -/* - * Internal mouse shortcuts. - * Beware that overloading Button1 will disable the selection. - */ -static MouseShortcut mshortcuts[] = { - /* button mask string */ - { -1, MOD_MASK_NONE, "" } -}; - -static Axiskey ashortcuts[] = { - /* axis direction mask string */ - { AXIS_VERTICAL, +1, MOD_MASK_ANY, "\031"}, - { AXIS_VERTICAL, -1, MOD_MASK_ANY, "\005"}, -}; - -/* Internal keyboard shortcuts. */ -#define MODKEY MOD_MASK_ALT - -static Shortcut shortcuts[] = { - /* modifier key function argument */ - { MOD_MASK_ANY, XKB_KEY_Break, sendbreak, {.i = 0} }, - { MOD_MASK_CTRL, XKB_KEY_Print, toggleprinter, {.i = 0} }, - { MOD_MASK_SHIFT, XKB_KEY_Print, printscreen, {.i = 0} }, - { MOD_MASK_ANY, XKB_KEY_Print, printsel, {.i = 0} }, - { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Prior, wlzoom, {.f = +1} }, - { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Next, wlzoom, {.f = -1} }, - { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Home, wlzoomreset, {.f = 0} }, - { MOD_MASK_SHIFT, XKB_KEY_Insert, selpaste, {.i = 0} }, - { MODKEY, XKB_KEY_Num_Lock, numlock, {.i = 0} }, - { MODKEY, XKB_KEY_Control_L, iso14755, {.i = 0} }, -}; - -/* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: - * * Use MOD_MASK_ANY to match the key no matter modifiers state - * * Use MOD_MASK_NONE to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * crlf value - * * 0: no value - * * > 0: crlf mode is enabled - * * < 0: crlf mode is disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any MOD_MASK_ANY must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static xkb_keysym_t mappedkeys[] = { -1 }; - -/* State bits to ignore when matching key or button events. */ -static uint ignoremod = 0; - -/* - * Override mouse-select while mask is active (when MODE_MOUSE is set). - * Note that if you want to use MOD_MASK_SHIFT with selmasks, set this to an - * other modifier, set to 0 to not use it. - */ -static uint forceselmod = MOD_MASK_SHIFT; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor crlf */ - { XKB_KEY_KP_Home, MOD_MASK_SHIFT, "\033[2J", 0, -1, 0}, - { XKB_KEY_KP_Home, MOD_MASK_SHIFT, "\033[1;2H", 0, +1, 0}, - { XKB_KEY_KP_Home, MOD_MASK_ANY, "\033[H", 0, -1, 0}, - { XKB_KEY_KP_Home, MOD_MASK_ANY, "\033[1~", 0, +1, 0}, - { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033Ox", +1, 0, 0}, - { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033[A", 0, -1, 0}, - { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033OA", 0, +1, 0}, - { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033Or", +1, 0, 0}, - { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033[B", 0, -1, 0}, - { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033OB", 0, +1, 0}, - { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033Ot", +1, 0, 0}, - { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033[D", 0, -1, 0}, - { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033OD", 0, +1, 0}, - { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033Ov", +1, 0, 0}, - { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033[C", 0, -1, 0}, - { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033OC", 0, +1, 0}, - { XKB_KEY_KP_Prior, MOD_MASK_SHIFT, "\033[5;2~", 0, 0, 0}, - { XKB_KEY_KP_Prior, MOD_MASK_ANY, "\033[5~", 0, 0, 0}, - { XKB_KEY_KP_Begin, MOD_MASK_ANY, "\033[E", 0, 0, 0}, - { XKB_KEY_KP_End, MOD_MASK_CTRL, "\033[J", -1, 0, 0}, - { XKB_KEY_KP_End, MOD_MASK_CTRL, "\033[1;5F", +1, 0, 0}, - { XKB_KEY_KP_End, MOD_MASK_SHIFT, "\033[K", -1, 0, 0}, - { XKB_KEY_KP_End, MOD_MASK_SHIFT, "\033[1;2F", +1, 0, 0}, - { XKB_KEY_KP_End, MOD_MASK_ANY, "\033[4~", 0, 0, 0}, - { XKB_KEY_KP_Next, MOD_MASK_SHIFT, "\033[6;2~", 0, 0, 0}, - { XKB_KEY_KP_Next, MOD_MASK_ANY, "\033[6~", 0, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_SHIFT, "\033[2;2~", +1, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_SHIFT, "\033[4l", -1, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_CTRL, "\033[L", -1, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_CTRL, "\033[2;5~", +1, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_ANY, "\033[4h", -1, 0, 0}, - { XKB_KEY_KP_Insert, MOD_MASK_ANY, "\033[2~", +1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_CTRL, "\033[M", -1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_CTRL, "\033[3;5~", +1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_SHIFT, "\033[2K", -1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_SHIFT, "\033[3;2~", +1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_ANY, "\033[P", -1, 0, 0}, - { XKB_KEY_KP_Delete, MOD_MASK_ANY, "\033[3~", +1, 0, 0}, - { XKB_KEY_KP_Multiply, MOD_MASK_ANY, "\033Oj", +2, 0, 0}, - { XKB_KEY_KP_Add, MOD_MASK_ANY, "\033Ok", +2, 0, 0}, - { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\033OM", +2, 0, 0}, - { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\r", -1, 0, -1}, - { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\r\n", -1, 0, +1}, - { XKB_KEY_KP_Subtract, MOD_MASK_ANY, "\033Om", +2, 0, 0}, - { XKB_KEY_KP_Decimal, MOD_MASK_ANY, "\033On", +2, 0, 0}, - { XKB_KEY_KP_Divide, MOD_MASK_ANY, "\033Oo", +2, 0, 0}, - { XKB_KEY_KP_0, MOD_MASK_ANY, "\033Op", +2, 0, 0}, - { XKB_KEY_KP_1, MOD_MASK_ANY, "\033Oq", +2, 0, 0}, - { XKB_KEY_KP_2, MOD_MASK_ANY, "\033Or", +2, 0, 0}, - { XKB_KEY_KP_3, MOD_MASK_ANY, "\033Os", +2, 0, 0}, - { XKB_KEY_KP_4, MOD_MASK_ANY, "\033Ot", +2, 0, 0}, - { XKB_KEY_KP_5, MOD_MASK_ANY, "\033Ou", +2, 0, 0}, - { XKB_KEY_KP_6, MOD_MASK_ANY, "\033Ov", +2, 0, 0}, - { XKB_KEY_KP_7, MOD_MASK_ANY, "\033Ow", +2, 0, 0}, - { XKB_KEY_KP_8, MOD_MASK_ANY, "\033Ox", +2, 0, 0}, - { XKB_KEY_KP_9, MOD_MASK_ANY, "\033Oy", +2, 0, 0}, - { XKB_KEY_Up, MOD_MASK_SHIFT, "\033[1;2A", 0, 0, 0}, - { XKB_KEY_Up, MOD_MASK_ALT, "\033[1;3A", 0, 0, 0}, - { XKB_KEY_Up, MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4A", 0, 0, 0}, - { XKB_KEY_Up, MOD_MASK_CTRL, "\033[1;5A", 0, 0, 0}, - { XKB_KEY_Up,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6A", 0, 0, 0}, - { XKB_KEY_Up, MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7A", 0, 0, 0}, - { XKB_KEY_Up,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8A",0,0,0}, - { XKB_KEY_Up, MOD_MASK_ANY, "\033[A", 0, -1, 0}, - { XKB_KEY_Up, MOD_MASK_ANY, "\033OA", 0, +1, 0}, - { XKB_KEY_Down, MOD_MASK_SHIFT, "\033[1;2B", 0, 0, 0}, - { XKB_KEY_Down, MOD_MASK_ALT, "\033[1;3B", 0, 0, 0}, - { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4B", 0, 0, 0}, - { XKB_KEY_Down, MOD_MASK_CTRL, "\033[1;5B", 0, 0, 0}, - { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6B", 0, 0, 0}, - { XKB_KEY_Down,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7B", 0, 0, 0}, - { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8B",0,0,0}, - { XKB_KEY_Down, MOD_MASK_ANY, "\033[B", 0, -1, 0}, - { XKB_KEY_Down, MOD_MASK_ANY, "\033OB", 0, +1, 0}, - { XKB_KEY_Left, MOD_MASK_SHIFT, "\033[1;2D", 0, 0, 0}, - { XKB_KEY_Left, MOD_MASK_ALT, "\033[1;3D", 0, 0, 0}, - { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4D", 0, 0, 0}, - { XKB_KEY_Left, MOD_MASK_CTRL, "\033[1;5D", 0, 0, 0}, - { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6D", 0, 0, 0}, - { XKB_KEY_Left,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7D", 0, 0, 0}, - { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8D",0,0,0}, - { XKB_KEY_Left, MOD_MASK_ANY, "\033[D", 0, -1, 0}, - { XKB_KEY_Left, MOD_MASK_ANY, "\033OD", 0, +1, 0}, - { XKB_KEY_Right, MOD_MASK_SHIFT, "\033[1;2C", 0, 0, 0}, - { XKB_KEY_Right, MOD_MASK_ALT, "\033[1;3C", 0, 0, 0}, - { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4C", 0, 0, 0}, - { XKB_KEY_Right, MOD_MASK_CTRL, "\033[1;5C", 0, 0, 0}, - { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6C", 0, 0, 0}, - { XKB_KEY_Right,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7C", 0, 0, 0}, - { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8C",0,0,0}, - { XKB_KEY_Right, MOD_MASK_ANY, "\033[C", 0, -1, 0}, - { XKB_KEY_Right, MOD_MASK_ANY, "\033OC", 0, +1, 0}, - { XKB_KEY_ISO_Left_Tab, MOD_MASK_SHIFT, "\033[Z", 0, 0, 0}, - { XKB_KEY_Return, MOD_MASK_ALT, "\033\r", 0, 0, -1}, - { XKB_KEY_Return, MOD_MASK_ALT, "\033\r\n", 0, 0, +1}, - { XKB_KEY_Return, MOD_MASK_ANY, "\r", 0, 0, -1}, - { XKB_KEY_Return, MOD_MASK_ANY, "\r\n", 0, 0, +1}, - { XKB_KEY_Insert, MOD_MASK_SHIFT, "\033[4l", -1, 0, 0}, - { XKB_KEY_Insert, MOD_MASK_SHIFT, "\033[2;2~", +1, 0, 0}, - { XKB_KEY_Insert, MOD_MASK_CTRL, "\033[L", -1, 0, 0}, - { XKB_KEY_Insert, MOD_MASK_CTRL, "\033[2;5~", +1, 0, 0}, - { XKB_KEY_Insert, MOD_MASK_ANY, "\033[4h", -1, 0, 0}, - { XKB_KEY_Insert, MOD_MASK_ANY, "\033[2~", +1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_CTRL, "\033[M", -1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_CTRL, "\033[3;5~", +1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_SHIFT, "\033[2K", -1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_SHIFT, "\033[3;2~", +1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_ANY, "\033[P", -1, 0, 0}, - { XKB_KEY_Delete, MOD_MASK_ANY, "\033[3~", +1, 0, 0}, - { XKB_KEY_BackSpace, MOD_MASK_NONE, "\177", 0, 0, 0}, - { XKB_KEY_BackSpace, MOD_MASK_CTRL, "\033\177", 0, 0, 0}, - { XKB_KEY_Home, MOD_MASK_SHIFT, "\033[2J", 0, -1, 0}, - { XKB_KEY_Home, MOD_MASK_SHIFT, "\033[1;2H", 0, +1, 0}, - { XKB_KEY_Home, MOD_MASK_ANY, "\033[H", 0, -1, 0}, - { XKB_KEY_Home, MOD_MASK_ANY, "\033[1~", 0, +1, 0}, - { XKB_KEY_End, MOD_MASK_CTRL, "\033[J", -1, 0, 0}, - { XKB_KEY_End, MOD_MASK_CTRL, "\033[1;5F", +1, 0, 0}, - { XKB_KEY_End, MOD_MASK_SHIFT, "\033[K", -1, 0, 0}, - { XKB_KEY_End, MOD_MASK_SHIFT, "\033[1;2F", +1, 0, 0}, - { XKB_KEY_End, MOD_MASK_ANY, "\033[4~", 0, 0, 0}, - { XKB_KEY_Prior, MOD_MASK_CTRL, "\033[5;5~", 0, 0, 0}, - { XKB_KEY_Prior, MOD_MASK_SHIFT, "\033[5;2~", 0, 0, 0}, - { XKB_KEY_Prior, MOD_MASK_ANY, "\033[5~", 0, 0, 0}, - { XKB_KEY_Next, MOD_MASK_CTRL, "\033[6;5~", 0, 0, 0}, - { XKB_KEY_Next, MOD_MASK_SHIFT, "\033[6;2~", 0, 0, 0}, - { XKB_KEY_Next, MOD_MASK_ANY, "\033[6~", 0, 0, 0}, - { XKB_KEY_F1, MOD_MASK_NONE, "\033OP" , 0, 0, 0}, - { XKB_KEY_F1, /* F13 */ MOD_MASK_SHIFT, "\033[1;2P", 0, 0, 0}, - { XKB_KEY_F1, /* F25 */ MOD_MASK_CTRL, "\033[1;5P", 0, 0, 0}, - { XKB_KEY_F1, /* F37 */ MOD_MASK_LOGO, "\033[1;6P", 0, 0, 0}, - { XKB_KEY_F1, /* F49 */ MOD_MASK_ALT, "\033[1;3P", 0, 0, 0}, - { XKB_KEY_F2, MOD_MASK_NONE, "\033OQ" , 0, 0, 0}, - { XKB_KEY_F2, /* F14 */ MOD_MASK_SHIFT, "\033[1;2Q", 0, 0, 0}, - { XKB_KEY_F2, /* F26 */ MOD_MASK_CTRL, "\033[1;5Q", 0, 0, 0}, - { XKB_KEY_F2, /* F38 */ MOD_MASK_LOGO, "\033[1;6Q", 0, 0, 0}, - { XKB_KEY_F2, /* F50 */ MOD_MASK_ALT, "\033[1;3Q", 0, 0, 0}, - { XKB_KEY_F3, MOD_MASK_NONE, "\033OR" , 0, 0, 0}, - { XKB_KEY_F3, /* F15 */ MOD_MASK_SHIFT, "\033[1;2R", 0, 0, 0}, - { XKB_KEY_F3, /* F27 */ MOD_MASK_CTRL, "\033[1;5R", 0, 0, 0}, - { XKB_KEY_F3, /* F39 */ MOD_MASK_LOGO, "\033[1;6R", 0, 0, 0}, - { XKB_KEY_F3, /* F51 */ MOD_MASK_ALT, "\033[1;3R", 0, 0, 0}, - { XKB_KEY_F4, MOD_MASK_NONE, "\033OS" , 0, 0, 0}, - { XKB_KEY_F4, /* F16 */ MOD_MASK_SHIFT, "\033[1;2S", 0, 0, 0}, - { XKB_KEY_F4, /* F28 */ MOD_MASK_CTRL, "\033[1;5S", 0, 0, 0}, - { XKB_KEY_F4, /* F40 */ MOD_MASK_LOGO, "\033[1;6S", 0, 0, 0}, - { XKB_KEY_F4, /* F52 */ MOD_MASK_ALT, "\033[1;3S", 0, 0, 0}, - { XKB_KEY_F5, MOD_MASK_NONE, "\033[15~", 0, 0, 0}, - { XKB_KEY_F5, /* F17 */ MOD_MASK_SHIFT, "\033[15;2~", 0, 0, 0}, - { XKB_KEY_F5, /* F29 */ MOD_MASK_CTRL, "\033[15;5~", 0, 0, 0}, - { XKB_KEY_F5, /* F41 */ MOD_MASK_LOGO, "\033[15;6~", 0, 0, 0}, - { XKB_KEY_F5, /* F53 */ MOD_MASK_ALT, "\033[15;3~", 0, 0, 0}, - { XKB_KEY_F6, MOD_MASK_NONE, "\033[17~", 0, 0, 0}, - { XKB_KEY_F6, /* F18 */ MOD_MASK_SHIFT, "\033[17;2~", 0, 0, 0}, - { XKB_KEY_F6, /* F30 */ MOD_MASK_CTRL, "\033[17;5~", 0, 0, 0}, - { XKB_KEY_F6, /* F42 */ MOD_MASK_LOGO, "\033[17;6~", 0, 0, 0}, - { XKB_KEY_F6, /* F54 */ MOD_MASK_ALT, "\033[17;3~", 0, 0, 0}, - { XKB_KEY_F7, MOD_MASK_NONE, "\033[18~", 0, 0, 0}, - { XKB_KEY_F7, /* F19 */ MOD_MASK_SHIFT, "\033[18;2~", 0, 0, 0}, - { XKB_KEY_F7, /* F31 */ MOD_MASK_CTRL, "\033[18;5~", 0, 0, 0}, - { XKB_KEY_F7, /* F43 */ MOD_MASK_LOGO, "\033[18;6~", 0, 0, 0}, - { XKB_KEY_F7, /* F55 */ MOD_MASK_ALT, "\033[18;3~", 0, 0, 0}, - { XKB_KEY_F8, MOD_MASK_NONE, "\033[19~", 0, 0, 0}, - { XKB_KEY_F8, /* F20 */ MOD_MASK_SHIFT, "\033[19;2~", 0, 0, 0}, - { XKB_KEY_F8, /* F32 */ MOD_MASK_CTRL, "\033[19;5~", 0, 0, 0}, - { XKB_KEY_F8, /* F44 */ MOD_MASK_LOGO, "\033[19;6~", 0, 0, 0}, - { XKB_KEY_F8, /* F56 */ MOD_MASK_ALT, "\033[19;3~", 0, 0, 0}, - { XKB_KEY_F9, MOD_MASK_NONE, "\033[20~", 0, 0, 0}, - { XKB_KEY_F9, /* F21 */ MOD_MASK_SHIFT, "\033[20;2~", 0, 0, 0}, - { XKB_KEY_F9, /* F33 */ MOD_MASK_CTRL, "\033[20;5~", 0, 0, 0}, - { XKB_KEY_F9, /* F45 */ MOD_MASK_LOGO, "\033[20;6~", 0, 0, 0}, - { XKB_KEY_F9, /* F57 */ MOD_MASK_ALT, "\033[20;3~", 0, 0, 0}, - { XKB_KEY_F10, MOD_MASK_NONE, "\033[21~", 0, 0, 0}, - { XKB_KEY_F10, /* F22 */ MOD_MASK_SHIFT, "\033[21;2~", 0, 0, 0}, - { XKB_KEY_F10, /* F34 */ MOD_MASK_CTRL, "\033[21;5~", 0, 0, 0}, - { XKB_KEY_F10, /* F46 */ MOD_MASK_LOGO, "\033[21;6~", 0, 0, 0}, - { XKB_KEY_F10, /* F58 */ MOD_MASK_ALT, "\033[21;3~", 0, 0, 0}, - { XKB_KEY_F11, MOD_MASK_NONE, "\033[23~", 0, 0, 0}, - { XKB_KEY_F11, /* F23 */ MOD_MASK_SHIFT, "\033[23;2~", 0, 0, 0}, - { XKB_KEY_F11, /* F35 */ MOD_MASK_CTRL, "\033[23;5~", 0, 0, 0}, - { XKB_KEY_F11, /* F47 */ MOD_MASK_LOGO, "\033[23;6~", 0, 0, 0}, - { XKB_KEY_F11, /* F59 */ MOD_MASK_ALT, "\033[23;3~", 0, 0, 0}, - { XKB_KEY_F12, MOD_MASK_NONE, "\033[24~", 0, 0, 0}, - { XKB_KEY_F12, /* F24 */ MOD_MASK_SHIFT, "\033[24;2~", 0, 0, 0}, - { XKB_KEY_F12, /* F36 */ MOD_MASK_CTRL, "\033[24;5~", 0, 0, 0}, - { XKB_KEY_F12, /* F48 */ MOD_MASK_LOGO, "\033[24;6~", 0, 0, 0}, - { XKB_KEY_F12, /* F60 */ MOD_MASK_ALT, "\033[24;3~", 0, 0, 0}, - { XKB_KEY_F13, MOD_MASK_NONE, "\033[1;2P", 0, 0, 0}, - { XKB_KEY_F14, MOD_MASK_NONE, "\033[1;2Q", 0, 0, 0}, - { XKB_KEY_F15, MOD_MASK_NONE, "\033[1;2R", 0, 0, 0}, - { XKB_KEY_F16, MOD_MASK_NONE, "\033[1;2S", 0, 0, 0}, - { XKB_KEY_F17, MOD_MASK_NONE, "\033[15;2~", 0, 0, 0}, - { XKB_KEY_F18, MOD_MASK_NONE, "\033[17;2~", 0, 0, 0}, - { XKB_KEY_F19, MOD_MASK_NONE, "\033[18;2~", 0, 0, 0}, - { XKB_KEY_F20, MOD_MASK_NONE, "\033[19;2~", 0, 0, 0}, - { XKB_KEY_F21, MOD_MASK_NONE, "\033[20;2~", 0, 0, 0}, - { XKB_KEY_F22, MOD_MASK_NONE, "\033[21;2~", 0, 0, 0}, - { XKB_KEY_F23, MOD_MASK_NONE, "\033[23;2~", 0, 0, 0}, - { XKB_KEY_F24, MOD_MASK_NONE, "\033[24;2~", 0, 0, 0}, - { XKB_KEY_F25, MOD_MASK_NONE, "\033[1;5P", 0, 0, 0}, - { XKB_KEY_F26, MOD_MASK_NONE, "\033[1;5Q", 0, 0, 0}, - { XKB_KEY_F27, MOD_MASK_NONE, "\033[1;5R", 0, 0, 0}, - { XKB_KEY_F28, MOD_MASK_NONE, "\033[1;5S", 0, 0, 0}, - { XKB_KEY_F29, MOD_MASK_NONE, "\033[15;5~", 0, 0, 0}, - { XKB_KEY_F30, MOD_MASK_NONE, "\033[17;5~", 0, 0, 0}, - { XKB_KEY_F31, MOD_MASK_NONE, "\033[18;5~", 0, 0, 0}, - { XKB_KEY_F32, MOD_MASK_NONE, "\033[19;5~", 0, 0, 0}, - { XKB_KEY_F33, MOD_MASK_NONE, "\033[20;5~", 0, 0, 0}, - { XKB_KEY_F34, MOD_MASK_NONE, "\033[21;5~", 0, 0, 0}, - { XKB_KEY_F35, MOD_MASK_NONE, "\033[23;5~", 0, 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = MOD_MASK_ALT, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; - diff --git a/desktop/st/gen.rc b/desktop/st/gen.rc deleted file mode 100644 index 843e5b72..00000000 --- a/desktop/st/gen.rc +++ /dev/null @@ -1,32 +0,0 @@ -cflags\ - -D 'VERSION=''"0.7"''' \ - -isystem desktop/fontconfig/src\ - -isystem desktop/libxkbcommon/src\ - -isystem '$builddir'/desktop/pixman/include\ - -isystem '$builddir'/desktop/wayland/include\ - -isystem '$builddir'/desktop/wayland-protocols/include\ - -isystem '$builddir'/desktop/wld/include\ - -I '$dir' - -phony deps\ - '$builddir'/desktop/^(fontconfig libxkbcommon)^/fetch.stamp\ - desktop/^(pixman wayland wayland-protocols wld)^/headers - -exe st -d '$dir'/deps st.c '$builddir'/^(\ - desktop/libxkbcommon/libxkbcommon.a\ - desktop/wayland/libwayland-client.a.d\ - desktop/wayland/libwayland-cursor.a.d\ - desktop/wayland-protocols/xdg-shell-unstable-v5-protocol.c.o\ - desktop/wld/libwld.a.d\ -) -file bin/st '$outdir'/st 755 -file share/man/man1/st.1 '$srcdir'/st.1 644 - -terminfo=s/^(st st-256color) -terminfo_outs='$outdir'/$terminfo -build $"terminfo_outs tic '$srcdir'/st.info ; with\ - ticflags '-x -o $outdir' -for(t in $terminfo) - file share/terminfo/$t '$outdir'/$t 644 - -fetch git diff --git a/desktop/st/patch/0001-Port-to-wayland-using-wld.patch b/desktop/st/patch/0001-Port-to-wayland-using-wld.patch deleted file mode 100644 index ca7cf414..00000000 --- a/desktop/st/patch/0001-Port-to-wayland-using-wld.patch +++ /dev/null @@ -1,3911 +0,0 @@ -From ff4af7dbb187550996f82baba73bf3707c7ec573 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sun, 30 Oct 2016 23:54:56 -0700 -Subject: [PATCH] Port to wayland using wld - ---- - Makefile | 12 +- - config.def.h | 500 +++++++------ - config.mk | 12 +- - st.c | 2352 +++++++++++++++++++++++++++++----------------------------- - 4 files changed, 1449 insertions(+), 1427 deletions(-) - -diff --git a/Makefile b/Makefile -index fb026c4..053d3e0 100644 ---- a/Makefile -+++ b/Makefile -@@ -3,7 +3,7 @@ - - include config.mk - --SRC = st.c -+SRC = st.c xdg-shell-unstable-v5-protocol.c - OBJ = ${SRC:.c=.o} - - all: options st -@@ -17,6 +17,16 @@ options: - config.h: - cp config.def.h config.h - -+xdg-shell-unstable-v5-protocol.c: -+ @echo GEN $@ -+ @wayland-scanner code ${XDG_SHELL_PROTO} $@ -+ -+xdg-shell-unstable-v5-client-protocol.h: -+ @echo GEN $@ -+ @wayland-scanner client-header ${XDG_SHELL_PROTO} $@ -+ -+st.o: xdg-shell-unstable-v5-client-protocol.h -+ - .c.o: - @echo CC $< - @${CC} -c ${CFLAGS} $< -diff --git a/config.def.h b/config.def.h -index 32d107d..41129e4 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -38,13 +38,13 @@ static char worddelimiters[] = " "; - static unsigned int doubleclicktimeout = 300; - static unsigned int tripleclicktimeout = 600; - -+/* key repeat timeouts (in milliseconds) */ -+static unsigned int keyrepeatdelay = 500; -+static unsigned int keyrepeatinterval = 25; -+ - /* alt screens */ - static int allowaltscreen = 1; - --/* frames per second st should at maximum draw to the screen */ --static unsigned int xfps = 120; --static unsigned int actionfps = 30; -- - /* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. -@@ -60,7 +60,9 @@ static unsigned int cursorthickness = 2; - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ --static int bellvolume = 0; -+/* XXX: Wayland does not have a bell. -+ * static int bellvolume = 0; -+ */ - - /* default TERM value */ - static char termname[] = "st-256color"; -@@ -131,11 +133,9 @@ static unsigned int defaultrcs = 257; - static unsigned int cursorshape = 2; - - /* -- * Default colour and shape of the mouse cursor -+ * Default shape of the mouse cursor - */ --static unsigned int mouseshape = XC_xterm; --static unsigned int mousefg = 7; --static unsigned int mousebg = 0; -+static char mouseshape[] = "xterm"; - - /* - * Color used to display font attributes when fontconfig selected a font which -@@ -149,36 +149,38 @@ static unsigned int defaultattr = 11; - */ - static MouseShortcut mshortcuts[] = { - /* button mask string */ -- { Button4, XK_ANY_MOD, "\031" }, -- { Button5, XK_ANY_MOD, "\005" }, -+ { -1, MOD_MASK_NONE, "" } -+}; -+ -+static Axiskey ashortcuts[] = { -+ /* axis direction mask string */ -+ { AXIS_VERTICAL, +1, MOD_MASK_ANY, "\031"}, -+ { AXIS_VERTICAL, -1, MOD_MASK_ANY, "\005"}, - }; - - /* Internal keyboard shortcuts. */ --#define MODKEY Mod1Mask -+#define MODKEY MOD_MASK_ALT - - static Shortcut shortcuts[] = { -- /* mask keysym function argument */ -- { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, -- { ControlMask, XK_Print, toggleprinter, {.i = 0} }, -- { ShiftMask, XK_Print, printscreen, {.i = 0} }, -- { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, -- { MODKEY|ShiftMask, XK_Prior, xzoom, {.f = +1} }, -- { MODKEY|ShiftMask, XK_Next, xzoom, {.f = -1} }, -- { MODKEY|ShiftMask, XK_Home, xzoomreset, {.f = 0} }, -- { ShiftMask, XK_Insert, selpaste, {.i = 0} }, -- { MODKEY|ShiftMask, XK_Insert, clippaste, {.i = 0} }, -- { MODKEY|ShiftMask, XK_C, clipcopy, {.i = 0} }, -- { MODKEY|ShiftMask, XK_V, clippaste, {.i = 0} }, -- { MODKEY, XK_Num_Lock, numlock, {.i = 0} }, -- { MODKEY, XK_Control_L, iso14755, {.i = 0} }, -+ /* modifier key function argument */ -+ { MOD_MASK_ANY, XKB_KEY_Break, sendbreak, {.i = 0} }, -+ { MOD_MASK_CTRL, XKB_KEY_Print, toggleprinter, {.i = 0} }, -+ { MOD_MASK_SHIFT, XKB_KEY_Print, printscreen, {.i = 0} }, -+ { MOD_MASK_ANY, XKB_KEY_Print, printsel, {.i = 0} }, -+ { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Prior, wlzoom, {.f = +1} }, -+ { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Next, wlzoom, {.f = -1} }, -+ { MODKEY|MOD_MASK_SHIFT, XKB_KEY_Home, wlzoomreset, {.f = 0} }, -+ { MOD_MASK_SHIFT, XKB_KEY_Insert, selpaste, {.i = 0} }, -+ { MODKEY, XKB_KEY_Num_Lock, numlock, {.i = 0} }, -+ { MODKEY, XKB_KEY_Control_L, iso14755, {.i = 0} }, - }; - - /* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: -- * * Use XK_ANY_MOD to match the key no matter modifiers state -- * * Use XK_NO_MOD to match the key alone (no modifiers) -+ * * Use MOD_MASK_ANY to match the key no matter modifiers state -+ * * Use MOD_MASK_NONE to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled -@@ -194,7 +196,7 @@ static Shortcut shortcuts[] = { - * * < 0: crlf mode is disabled - * - * Be careful with the order of the definitions because st searches in -- * this table sequentially, so any XK_ANY_MOD must be in the last -+ * this table sequentially, so any MOD_MASK_ANY must be in the last - * position for a key. - */ - -@@ -202,239 +204,233 @@ static Shortcut shortcuts[] = { - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ --static KeySym mappedkeys[] = { -1 }; -+static xkb_keysym_t mappedkeys[] = { -1 }; - --/* -- * State bits to ignore when matching key or button events. By default, -- * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. -- */ --static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; -+/* State bits to ignore when matching key or button events. */ -+static uint ignoremod = 0; - - /* - * Override mouse-select while mask is active (when MODE_MOUSE is set). -- * Note that if you want to use ShiftMask with selmasks, set this to an other -- * modifier, set to 0 to not use it. -+ * Note that if you want to use MOD_MASK_SHIFT with selmasks, set this to an -+ * other modifier, set to 0 to not use it. - */ --static uint forceselmod = ShiftMask; -+static uint forceselmod = MOD_MASK_SHIFT; - - /* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ - static Key key[] = { -- /* keysym mask string appkey appcursor crlf */ -- { XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0}, -- { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1, 0}, -- { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1, 0}, -- { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0}, -- { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0, 0}, -- { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1, 0}, -- { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1, 0}, -- { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0, 0}, -- { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1, 0}, -- { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1, 0}, -- { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0, 0}, -- { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1, 0}, -- { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1, 0}, -- { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0, 0}, -- { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1, 0}, -- { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1, 0}, -- { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0, 0}, -- { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0, 0}, -- { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0, 0}, -- { XK_KP_End, ControlMask, "\033[J", -1, 0, 0}, -- { XK_KP_End, ControlMask, "\033[1;5F", +1, 0, 0}, -- { XK_KP_End, ShiftMask, "\033[K", -1, 0, 0}, -- { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0, 0}, -- { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0, 0}, -- { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0, 0}, -- { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0, 0}, -- { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0, 0}, -- { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0, 0}, -- { XK_KP_Insert, ControlMask, "\033[L", -1, 0, 0}, -- { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0, 0}, -- { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0}, -- { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0}, -- { XK_KP_Delete, ControlMask, "\033[M", -1, 0, 0}, -- { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0, 0}, -- { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0, 0}, -- { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0, 0}, -- { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0}, -- { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0}, -- { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0, 0}, -- { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0, 0}, -- { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0, 0}, -- { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0, -1}, -- { XK_KP_Enter, XK_ANY_MOD, "\r\n", -1, 0, +1}, -- { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0, 0}, -- { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0, 0}, -- { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0, 0}, -- { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0, 0}, -- { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0, 0}, -- { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0, 0}, -- { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0, 0}, -- { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0, 0}, -- { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0, 0}, -- { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0, 0}, -- { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0, 0}, -- { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0, 0}, -- { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0, 0}, -- { XK_Up, ShiftMask, "\033[1;2A", 0, 0, 0}, -- { XK_Up, Mod1Mask, "\033[1;3A", 0, 0, 0}, -- { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0, 0}, -- { XK_Up, ControlMask, "\033[1;5A", 0, 0, 0}, -- { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0, 0}, -- { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0, 0}, -- { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0, 0}, -- { XK_Up, XK_ANY_MOD, "\033[A", 0, -1, 0}, -- { XK_Up, XK_ANY_MOD, "\033OA", 0, +1, 0}, -- { XK_Down, ShiftMask, "\033[1;2B", 0, 0, 0}, -- { XK_Down, Mod1Mask, "\033[1;3B", 0, 0, 0}, -- { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0, 0}, -- { XK_Down, ControlMask, "\033[1;5B", 0, 0, 0}, -- { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0, 0}, -- { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0, 0}, -- { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0, 0}, -- { XK_Down, XK_ANY_MOD, "\033[B", 0, -1, 0}, -- { XK_Down, XK_ANY_MOD, "\033OB", 0, +1, 0}, -- { XK_Left, ShiftMask, "\033[1;2D", 0, 0, 0}, -- { XK_Left, Mod1Mask, "\033[1;3D", 0, 0, 0}, -- { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0, 0}, -- { XK_Left, ControlMask, "\033[1;5D", 0, 0, 0}, -- { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0, 0}, -- { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0, 0}, -- { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0, 0}, -- { XK_Left, XK_ANY_MOD, "\033[D", 0, -1, 0}, -- { XK_Left, XK_ANY_MOD, "\033OD", 0, +1, 0}, -- { XK_Right, ShiftMask, "\033[1;2C", 0, 0, 0}, -- { XK_Right, Mod1Mask, "\033[1;3C", 0, 0, 0}, -- { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0, 0}, -- { XK_Right, ControlMask, "\033[1;5C", 0, 0, 0}, -- { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0, 0}, -- { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0, 0}, -- { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0, 0}, -- { XK_Right, XK_ANY_MOD, "\033[C", 0, -1, 0}, -- { XK_Right, XK_ANY_MOD, "\033OC", 0, +1, 0}, -- { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0, 0}, -- { XK_Return, Mod1Mask, "\033\r", 0, 0, -1}, -- { XK_Return, Mod1Mask, "\033\r\n", 0, 0, +1}, -- { XK_Return, XK_ANY_MOD, "\r", 0, 0, -1}, -- { XK_Return, XK_ANY_MOD, "\r\n", 0, 0, +1}, -- { XK_Insert, ShiftMask, "\033[4l", -1, 0, 0}, -- { XK_Insert, ShiftMask, "\033[2;2~", +1, 0, 0}, -- { XK_Insert, ControlMask, "\033[L", -1, 0, 0}, -- { XK_Insert, ControlMask, "\033[2;5~", +1, 0, 0}, -- { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0}, -- { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0}, -- { XK_Delete, ControlMask, "\033[M", -1, 0, 0}, -- { XK_Delete, ControlMask, "\033[3;5~", +1, 0, 0}, -- { XK_Delete, ShiftMask, "\033[2K", -1, 0, 0}, -- { XK_Delete, ShiftMask, "\033[3;2~", +1, 0, 0}, -- { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0}, -- { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0}, -- { XK_BackSpace, XK_NO_MOD, "\177", 0, 0, 0}, -- { XK_BackSpace, Mod1Mask, "\033\177", 0, 0, 0}, -- { XK_Home, ShiftMask, "\033[2J", 0, -1, 0}, -- { XK_Home, ShiftMask, "\033[1;2H", 0, +1, 0}, -- { XK_Home, XK_ANY_MOD, "\033[H", 0, -1, 0}, -- { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0}, -- { XK_End, ControlMask, "\033[J", -1, 0, 0}, -- { XK_End, ControlMask, "\033[1;5F", +1, 0, 0}, -- { XK_End, ShiftMask, "\033[K", -1, 0, 0}, -- { XK_End, ShiftMask, "\033[1;2F", +1, 0, 0}, -- { XK_End, XK_ANY_MOD, "\033[4~", 0, 0, 0}, -- { XK_Prior, ControlMask, "\033[5;5~", 0, 0, 0}, -- { XK_Prior, ShiftMask, "\033[5;2~", 0, 0, 0}, -- { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0, 0}, -- { XK_Next, ControlMask, "\033[6;5~", 0, 0, 0}, -- { XK_Next, ShiftMask, "\033[6;2~", 0, 0, 0}, -- { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0, 0}, -- { XK_F1, XK_NO_MOD, "\033OP" , 0, 0, 0}, -- { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0, 0}, -- { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0, 0}, -- { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0, 0}, -- { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0, 0}, -- { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0, 0}, -- { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0, 0}, -- { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0, 0}, -- { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0, 0}, -- { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0, 0}, -- { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0, 0}, -- { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0, 0}, -- { XK_F3, XK_NO_MOD, "\033OR" , 0, 0, 0}, -- { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0, 0}, -- { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0, 0}, -- { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0, 0}, -- { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0, 0}, -- { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0, 0}, -- { XK_F4, XK_NO_MOD, "\033OS" , 0, 0, 0}, -- { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0, 0}, -- { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0, 0}, -- { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0, 0}, -- { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0, 0}, -- { XK_F5, XK_NO_MOD, "\033[15~", 0, 0, 0}, -- { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0, 0}, -- { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0, 0}, -- { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0, 0}, -- { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0, 0}, -- { XK_F6, XK_NO_MOD, "\033[17~", 0, 0, 0}, -- { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0, 0}, -- { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0, 0}, -- { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0, 0}, -- { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0, 0}, -- { XK_F7, XK_NO_MOD, "\033[18~", 0, 0, 0}, -- { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0, 0}, -- { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0, 0}, -- { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0, 0}, -- { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0, 0}, -- { XK_F8, XK_NO_MOD, "\033[19~", 0, 0, 0}, -- { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0, 0}, -- { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0, 0}, -- { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0, 0}, -- { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0, 0}, -- { XK_F9, XK_NO_MOD, "\033[20~", 0, 0, 0}, -- { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0, 0}, -- { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0, 0}, -- { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0, 0}, -- { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0, 0}, -- { XK_F10, XK_NO_MOD, "\033[21~", 0, 0, 0}, -- { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0, 0}, -- { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0, 0}, -- { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0, 0}, -- { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0, 0}, -- { XK_F11, XK_NO_MOD, "\033[23~", 0, 0, 0}, -- { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0, 0}, -- { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0, 0}, -- { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0, 0}, -- { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0, 0}, -- { XK_F12, XK_NO_MOD, "\033[24~", 0, 0, 0}, -- { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0, 0}, -- { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0, 0}, -- { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0, 0}, -- { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0, 0}, -- { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0, 0}, -- { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0, 0}, -- { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0, 0}, -- { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0, 0}, -- { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0, 0}, -- { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0, 0}, -- { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0, 0}, -- { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0, 0}, -- { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0, 0}, -- { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0, 0}, -- { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0, 0}, -- { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0, 0}, -- { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0, 0}, -- { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0, 0}, -- { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0, 0}, -- { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0, 0}, -- { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0, 0}, -- { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0, 0}, -- { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0, 0}, -- { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0, 0}, -- { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0, 0}, -- { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0, 0}, -- { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0, 0}, -+ /* keysym mask string appkey appcursor crlf */ -+ { XKB_KEY_KP_Home, MOD_MASK_SHIFT, "\033[2J", 0, -1, 0}, -+ { XKB_KEY_KP_Home, MOD_MASK_SHIFT, "\033[1;2H", 0, +1, 0}, -+ { XKB_KEY_KP_Home, MOD_MASK_ANY, "\033[H", 0, -1, 0}, -+ { XKB_KEY_KP_Home, MOD_MASK_ANY, "\033[1~", 0, +1, 0}, -+ { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033Ox", +1, 0, 0}, -+ { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033[A", 0, -1, 0}, -+ { XKB_KEY_KP_Up, MOD_MASK_ANY, "\033OA", 0, +1, 0}, -+ { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033Or", +1, 0, 0}, -+ { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033[B", 0, -1, 0}, -+ { XKB_KEY_KP_Down, MOD_MASK_ANY, "\033OB", 0, +1, 0}, -+ { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033Ot", +1, 0, 0}, -+ { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033[D", 0, -1, 0}, -+ { XKB_KEY_KP_Left, MOD_MASK_ANY, "\033OD", 0, +1, 0}, -+ { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033Ov", +1, 0, 0}, -+ { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033[C", 0, -1, 0}, -+ { XKB_KEY_KP_Right, MOD_MASK_ANY, "\033OC", 0, +1, 0}, -+ { XKB_KEY_KP_Prior, MOD_MASK_SHIFT, "\033[5;2~", 0, 0, 0}, -+ { XKB_KEY_KP_Prior, MOD_MASK_ANY, "\033[5~", 0, 0, 0}, -+ { XKB_KEY_KP_Begin, MOD_MASK_ANY, "\033[E", 0, 0, 0}, -+ { XKB_KEY_KP_End, MOD_MASK_CTRL, "\033[J", -1, 0, 0}, -+ { XKB_KEY_KP_End, MOD_MASK_CTRL, "\033[1;5F", +1, 0, 0}, -+ { XKB_KEY_KP_End, MOD_MASK_SHIFT, "\033[K", -1, 0, 0}, -+ { XKB_KEY_KP_End, MOD_MASK_SHIFT, "\033[1;2F", +1, 0, 0}, -+ { XKB_KEY_KP_End, MOD_MASK_ANY, "\033[4~", 0, 0, 0}, -+ { XKB_KEY_KP_Next, MOD_MASK_SHIFT, "\033[6;2~", 0, 0, 0}, -+ { XKB_KEY_KP_Next, MOD_MASK_ANY, "\033[6~", 0, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_SHIFT, "\033[2;2~", +1, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_SHIFT, "\033[4l", -1, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_CTRL, "\033[L", -1, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_CTRL, "\033[2;5~", +1, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_ANY, "\033[4h", -1, 0, 0}, -+ { XKB_KEY_KP_Insert, MOD_MASK_ANY, "\033[2~", +1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_CTRL, "\033[M", -1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_CTRL, "\033[3;5~", +1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_SHIFT, "\033[2K", -1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_SHIFT, "\033[3;2~", +1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_ANY, "\033[P", -1, 0, 0}, -+ { XKB_KEY_KP_Delete, MOD_MASK_ANY, "\033[3~", +1, 0, 0}, -+ { XKB_KEY_KP_Multiply, MOD_MASK_ANY, "\033Oj", +2, 0, 0}, -+ { XKB_KEY_KP_Add, MOD_MASK_ANY, "\033Ok", +2, 0, 0}, -+ { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\033OM", +2, 0, 0}, -+ { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\r", -1, 0, -1}, -+ { XKB_KEY_KP_Enter, MOD_MASK_ANY, "\r\n", -1, 0, +1}, -+ { XKB_KEY_KP_Subtract, MOD_MASK_ANY, "\033Om", +2, 0, 0}, -+ { XKB_KEY_KP_Decimal, MOD_MASK_ANY, "\033On", +2, 0, 0}, -+ { XKB_KEY_KP_Divide, MOD_MASK_ANY, "\033Oo", +2, 0, 0}, -+ { XKB_KEY_KP_0, MOD_MASK_ANY, "\033Op", +2, 0, 0}, -+ { XKB_KEY_KP_1, MOD_MASK_ANY, "\033Oq", +2, 0, 0}, -+ { XKB_KEY_KP_2, MOD_MASK_ANY, "\033Or", +2, 0, 0}, -+ { XKB_KEY_KP_3, MOD_MASK_ANY, "\033Os", +2, 0, 0}, -+ { XKB_KEY_KP_4, MOD_MASK_ANY, "\033Ot", +2, 0, 0}, -+ { XKB_KEY_KP_5, MOD_MASK_ANY, "\033Ou", +2, 0, 0}, -+ { XKB_KEY_KP_6, MOD_MASK_ANY, "\033Ov", +2, 0, 0}, -+ { XKB_KEY_KP_7, MOD_MASK_ANY, "\033Ow", +2, 0, 0}, -+ { XKB_KEY_KP_8, MOD_MASK_ANY, "\033Ox", +2, 0, 0}, -+ { XKB_KEY_KP_9, MOD_MASK_ANY, "\033Oy", +2, 0, 0}, -+ { XKB_KEY_Up, MOD_MASK_SHIFT, "\033[1;2A", 0, 0, 0}, -+ { XKB_KEY_Up, MOD_MASK_ALT, "\033[1;3A", 0, 0, 0}, -+ { XKB_KEY_Up, MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4A", 0, 0, 0}, -+ { XKB_KEY_Up, MOD_MASK_CTRL, "\033[1;5A", 0, 0, 0}, -+ { XKB_KEY_Up,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6A", 0, 0, 0}, -+ { XKB_KEY_Up, MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7A", 0, 0, 0}, -+ { XKB_KEY_Up,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8A",0,0,0}, -+ { XKB_KEY_Up, MOD_MASK_ANY, "\033[A", 0, -1, 0}, -+ { XKB_KEY_Up, MOD_MASK_ANY, "\033OA", 0, +1, 0}, -+ { XKB_KEY_Down, MOD_MASK_SHIFT, "\033[1;2B", 0, 0, 0}, -+ { XKB_KEY_Down, MOD_MASK_ALT, "\033[1;3B", 0, 0, 0}, -+ { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4B", 0, 0, 0}, -+ { XKB_KEY_Down, MOD_MASK_CTRL, "\033[1;5B", 0, 0, 0}, -+ { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6B", 0, 0, 0}, -+ { XKB_KEY_Down,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7B", 0, 0, 0}, -+ { XKB_KEY_Down,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8B",0,0,0}, -+ { XKB_KEY_Down, MOD_MASK_ANY, "\033[B", 0, -1, 0}, -+ { XKB_KEY_Down, MOD_MASK_ANY, "\033OB", 0, +1, 0}, -+ { XKB_KEY_Left, MOD_MASK_SHIFT, "\033[1;2D", 0, 0, 0}, -+ { XKB_KEY_Left, MOD_MASK_ALT, "\033[1;3D", 0, 0, 0}, -+ { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4D", 0, 0, 0}, -+ { XKB_KEY_Left, MOD_MASK_CTRL, "\033[1;5D", 0, 0, 0}, -+ { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6D", 0, 0, 0}, -+ { XKB_KEY_Left,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7D", 0, 0, 0}, -+ { XKB_KEY_Left,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8D",0,0,0}, -+ { XKB_KEY_Left, MOD_MASK_ANY, "\033[D", 0, -1, 0}, -+ { XKB_KEY_Left, MOD_MASK_ANY, "\033OD", 0, +1, 0}, -+ { XKB_KEY_Right, MOD_MASK_SHIFT, "\033[1;2C", 0, 0, 0}, -+ { XKB_KEY_Right, MOD_MASK_ALT, "\033[1;3C", 0, 0, 0}, -+ { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_ALT,"\033[1;4C", 0, 0, 0}, -+ { XKB_KEY_Right, MOD_MASK_CTRL, "\033[1;5C", 0, 0, 0}, -+ { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_CTRL,"\033[1;6C", 0, 0, 0}, -+ { XKB_KEY_Right,MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;7C", 0, 0, 0}, -+ { XKB_KEY_Right,MOD_MASK_SHIFT|MOD_MASK_CTRL|MOD_MASK_ALT,"\033[1;8C",0,0,0}, -+ { XKB_KEY_Right, MOD_MASK_ANY, "\033[C", 0, -1, 0}, -+ { XKB_KEY_Right, MOD_MASK_ANY, "\033OC", 0, +1, 0}, -+ { XKB_KEY_ISO_Left_Tab, MOD_MASK_SHIFT, "\033[Z", 0, 0, 0}, -+ { XKB_KEY_Return, MOD_MASK_ALT, "\033\r", 0, 0, -1}, -+ { XKB_KEY_Return, MOD_MASK_ALT, "\033\r\n", 0, 0, +1}, -+ { XKB_KEY_Return, MOD_MASK_ANY, "\r", 0, 0, -1}, -+ { XKB_KEY_Return, MOD_MASK_ANY, "\r\n", 0, 0, +1}, -+ { XKB_KEY_Insert, MOD_MASK_SHIFT, "\033[4l", -1, 0, 0}, -+ { XKB_KEY_Insert, MOD_MASK_SHIFT, "\033[2;2~", +1, 0, 0}, -+ { XKB_KEY_Insert, MOD_MASK_CTRL, "\033[L", -1, 0, 0}, -+ { XKB_KEY_Insert, MOD_MASK_CTRL, "\033[2;5~", +1, 0, 0}, -+ { XKB_KEY_Insert, MOD_MASK_ANY, "\033[4h", -1, 0, 0}, -+ { XKB_KEY_Insert, MOD_MASK_ANY, "\033[2~", +1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_CTRL, "\033[M", -1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_CTRL, "\033[3;5~", +1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_SHIFT, "\033[2K", -1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_SHIFT, "\033[3;2~", +1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_ANY, "\033[P", -1, 0, 0}, -+ { XKB_KEY_Delete, MOD_MASK_ANY, "\033[3~", +1, 0, 0}, -+ { XKB_KEY_BackSpace, MOD_MASK_NONE, "\177", 0, 0, 0}, -+ { XKB_KEY_BackSpace, MOD_MASK_CTRL, "\033\177", 0, 0, 0}, -+ { XKB_KEY_Home, MOD_MASK_SHIFT, "\033[2J", 0, -1, 0}, -+ { XKB_KEY_Home, MOD_MASK_SHIFT, "\033[1;2H", 0, +1, 0}, -+ { XKB_KEY_Home, MOD_MASK_ANY, "\033[H", 0, -1, 0}, -+ { XKB_KEY_Home, MOD_MASK_ANY, "\033[1~", 0, +1, 0}, -+ { XKB_KEY_End, MOD_MASK_CTRL, "\033[J", -1, 0, 0}, -+ { XKB_KEY_End, MOD_MASK_CTRL, "\033[1;5F", +1, 0, 0}, -+ { XKB_KEY_End, MOD_MASK_SHIFT, "\033[K", -1, 0, 0}, -+ { XKB_KEY_End, MOD_MASK_SHIFT, "\033[1;2F", +1, 0, 0}, -+ { XKB_KEY_End, MOD_MASK_ANY, "\033[4~", 0, 0, 0}, -+ { XKB_KEY_Prior, MOD_MASK_CTRL, "\033[5;5~", 0, 0, 0}, -+ { XKB_KEY_Prior, MOD_MASK_SHIFT, "\033[5;2~", 0, 0, 0}, -+ { XKB_KEY_Prior, MOD_MASK_ANY, "\033[5~", 0, 0, 0}, -+ { XKB_KEY_Next, MOD_MASK_CTRL, "\033[6;5~", 0, 0, 0}, -+ { XKB_KEY_Next, MOD_MASK_SHIFT, "\033[6;2~", 0, 0, 0}, -+ { XKB_KEY_Next, MOD_MASK_ANY, "\033[6~", 0, 0, 0}, -+ { XKB_KEY_F1, MOD_MASK_NONE, "\033OP" , 0, 0, 0}, -+ { XKB_KEY_F1, /* F13 */ MOD_MASK_SHIFT, "\033[1;2P", 0, 0, 0}, -+ { XKB_KEY_F1, /* F25 */ MOD_MASK_CTRL, "\033[1;5P", 0, 0, 0}, -+ { XKB_KEY_F1, /* F37 */ MOD_MASK_LOGO, "\033[1;6P", 0, 0, 0}, -+ { XKB_KEY_F1, /* F49 */ MOD_MASK_ALT, "\033[1;3P", 0, 0, 0}, -+ { XKB_KEY_F2, MOD_MASK_NONE, "\033OQ" , 0, 0, 0}, -+ { XKB_KEY_F2, /* F14 */ MOD_MASK_SHIFT, "\033[1;2Q", 0, 0, 0}, -+ { XKB_KEY_F2, /* F26 */ MOD_MASK_CTRL, "\033[1;5Q", 0, 0, 0}, -+ { XKB_KEY_F2, /* F38 */ MOD_MASK_LOGO, "\033[1;6Q", 0, 0, 0}, -+ { XKB_KEY_F2, /* F50 */ MOD_MASK_ALT, "\033[1;3Q", 0, 0, 0}, -+ { XKB_KEY_F3, MOD_MASK_NONE, "\033OR" , 0, 0, 0}, -+ { XKB_KEY_F3, /* F15 */ MOD_MASK_SHIFT, "\033[1;2R", 0, 0, 0}, -+ { XKB_KEY_F3, /* F27 */ MOD_MASK_CTRL, "\033[1;5R", 0, 0, 0}, -+ { XKB_KEY_F3, /* F39 */ MOD_MASK_LOGO, "\033[1;6R", 0, 0, 0}, -+ { XKB_KEY_F3, /* F51 */ MOD_MASK_ALT, "\033[1;3R", 0, 0, 0}, -+ { XKB_KEY_F4, MOD_MASK_NONE, "\033OS" , 0, 0, 0}, -+ { XKB_KEY_F4, /* F16 */ MOD_MASK_SHIFT, "\033[1;2S", 0, 0, 0}, -+ { XKB_KEY_F4, /* F28 */ MOD_MASK_CTRL, "\033[1;5S", 0, 0, 0}, -+ { XKB_KEY_F4, /* F40 */ MOD_MASK_LOGO, "\033[1;6S", 0, 0, 0}, -+ { XKB_KEY_F4, /* F52 */ MOD_MASK_ALT, "\033[1;3S", 0, 0, 0}, -+ { XKB_KEY_F5, MOD_MASK_NONE, "\033[15~", 0, 0, 0}, -+ { XKB_KEY_F5, /* F17 */ MOD_MASK_SHIFT, "\033[15;2~", 0, 0, 0}, -+ { XKB_KEY_F5, /* F29 */ MOD_MASK_CTRL, "\033[15;5~", 0, 0, 0}, -+ { XKB_KEY_F5, /* F41 */ MOD_MASK_LOGO, "\033[15;6~", 0, 0, 0}, -+ { XKB_KEY_F5, /* F53 */ MOD_MASK_ALT, "\033[15;3~", 0, 0, 0}, -+ { XKB_KEY_F6, MOD_MASK_NONE, "\033[17~", 0, 0, 0}, -+ { XKB_KEY_F6, /* F18 */ MOD_MASK_SHIFT, "\033[17;2~", 0, 0, 0}, -+ { XKB_KEY_F6, /* F30 */ MOD_MASK_CTRL, "\033[17;5~", 0, 0, 0}, -+ { XKB_KEY_F6, /* F42 */ MOD_MASK_LOGO, "\033[17;6~", 0, 0, 0}, -+ { XKB_KEY_F6, /* F54 */ MOD_MASK_ALT, "\033[17;3~", 0, 0, 0}, -+ { XKB_KEY_F7, MOD_MASK_NONE, "\033[18~", 0, 0, 0}, -+ { XKB_KEY_F7, /* F19 */ MOD_MASK_SHIFT, "\033[18;2~", 0, 0, 0}, -+ { XKB_KEY_F7, /* F31 */ MOD_MASK_CTRL, "\033[18;5~", 0, 0, 0}, -+ { XKB_KEY_F7, /* F43 */ MOD_MASK_LOGO, "\033[18;6~", 0, 0, 0}, -+ { XKB_KEY_F7, /* F55 */ MOD_MASK_ALT, "\033[18;3~", 0, 0, 0}, -+ { XKB_KEY_F8, MOD_MASK_NONE, "\033[19~", 0, 0, 0}, -+ { XKB_KEY_F8, /* F20 */ MOD_MASK_SHIFT, "\033[19;2~", 0, 0, 0}, -+ { XKB_KEY_F8, /* F32 */ MOD_MASK_CTRL, "\033[19;5~", 0, 0, 0}, -+ { XKB_KEY_F8, /* F44 */ MOD_MASK_LOGO, "\033[19;6~", 0, 0, 0}, -+ { XKB_KEY_F8, /* F56 */ MOD_MASK_ALT, "\033[19;3~", 0, 0, 0}, -+ { XKB_KEY_F9, MOD_MASK_NONE, "\033[20~", 0, 0, 0}, -+ { XKB_KEY_F9, /* F21 */ MOD_MASK_SHIFT, "\033[20;2~", 0, 0, 0}, -+ { XKB_KEY_F9, /* F33 */ MOD_MASK_CTRL, "\033[20;5~", 0, 0, 0}, -+ { XKB_KEY_F9, /* F45 */ MOD_MASK_LOGO, "\033[20;6~", 0, 0, 0}, -+ { XKB_KEY_F9, /* F57 */ MOD_MASK_ALT, "\033[20;3~", 0, 0, 0}, -+ { XKB_KEY_F10, MOD_MASK_NONE, "\033[21~", 0, 0, 0}, -+ { XKB_KEY_F10, /* F22 */ MOD_MASK_SHIFT, "\033[21;2~", 0, 0, 0}, -+ { XKB_KEY_F10, /* F34 */ MOD_MASK_CTRL, "\033[21;5~", 0, 0, 0}, -+ { XKB_KEY_F10, /* F46 */ MOD_MASK_LOGO, "\033[21;6~", 0, 0, 0}, -+ { XKB_KEY_F10, /* F58 */ MOD_MASK_ALT, "\033[21;3~", 0, 0, 0}, -+ { XKB_KEY_F11, MOD_MASK_NONE, "\033[23~", 0, 0, 0}, -+ { XKB_KEY_F11, /* F23 */ MOD_MASK_SHIFT, "\033[23;2~", 0, 0, 0}, -+ { XKB_KEY_F11, /* F35 */ MOD_MASK_CTRL, "\033[23;5~", 0, 0, 0}, -+ { XKB_KEY_F11, /* F47 */ MOD_MASK_LOGO, "\033[23;6~", 0, 0, 0}, -+ { XKB_KEY_F11, /* F59 */ MOD_MASK_ALT, "\033[23;3~", 0, 0, 0}, -+ { XKB_KEY_F12, MOD_MASK_NONE, "\033[24~", 0, 0, 0}, -+ { XKB_KEY_F12, /* F24 */ MOD_MASK_SHIFT, "\033[24;2~", 0, 0, 0}, -+ { XKB_KEY_F12, /* F36 */ MOD_MASK_CTRL, "\033[24;5~", 0, 0, 0}, -+ { XKB_KEY_F12, /* F48 */ MOD_MASK_LOGO, "\033[24;6~", 0, 0, 0}, -+ { XKB_KEY_F12, /* F60 */ MOD_MASK_ALT, "\033[24;3~", 0, 0, 0}, -+ { XKB_KEY_F13, MOD_MASK_NONE, "\033[1;2P", 0, 0, 0}, -+ { XKB_KEY_F14, MOD_MASK_NONE, "\033[1;2Q", 0, 0, 0}, -+ { XKB_KEY_F15, MOD_MASK_NONE, "\033[1;2R", 0, 0, 0}, -+ { XKB_KEY_F16, MOD_MASK_NONE, "\033[1;2S", 0, 0, 0}, -+ { XKB_KEY_F17, MOD_MASK_NONE, "\033[15;2~", 0, 0, 0}, -+ { XKB_KEY_F18, MOD_MASK_NONE, "\033[17;2~", 0, 0, 0}, -+ { XKB_KEY_F19, MOD_MASK_NONE, "\033[18;2~", 0, 0, 0}, -+ { XKB_KEY_F20, MOD_MASK_NONE, "\033[19;2~", 0, 0, 0}, -+ { XKB_KEY_F21, MOD_MASK_NONE, "\033[20;2~", 0, 0, 0}, -+ { XKB_KEY_F22, MOD_MASK_NONE, "\033[21;2~", 0, 0, 0}, -+ { XKB_KEY_F23, MOD_MASK_NONE, "\033[23;2~", 0, 0, 0}, -+ { XKB_KEY_F24, MOD_MASK_NONE, "\033[24;2~", 0, 0, 0}, -+ { XKB_KEY_F25, MOD_MASK_NONE, "\033[1;5P", 0, 0, 0}, -+ { XKB_KEY_F26, MOD_MASK_NONE, "\033[1;5Q", 0, 0, 0}, -+ { XKB_KEY_F27, MOD_MASK_NONE, "\033[1;5R", 0, 0, 0}, -+ { XKB_KEY_F28, MOD_MASK_NONE, "\033[1;5S", 0, 0, 0}, -+ { XKB_KEY_F29, MOD_MASK_NONE, "\033[15;5~", 0, 0, 0}, -+ { XKB_KEY_F30, MOD_MASK_NONE, "\033[17;5~", 0, 0, 0}, -+ { XKB_KEY_F31, MOD_MASK_NONE, "\033[18;5~", 0, 0, 0}, -+ { XKB_KEY_F32, MOD_MASK_NONE, "\033[19;5~", 0, 0, 0}, -+ { XKB_KEY_F33, MOD_MASK_NONE, "\033[20;5~", 0, 0, 0}, -+ { XKB_KEY_F34, MOD_MASK_NONE, "\033[21;5~", 0, 0, 0}, -+ { XKB_KEY_F35, MOD_MASK_NONE, "\033[23;5~", 0, 0, 0}, - }; - - /* -@@ -445,7 +441,7 @@ static Key key[] = { - * If no match is found, regular selection is used. - */ - static uint selmasks[] = { -- [SEL_RECTANGULAR] = Mod1Mask, -+ [SEL_RECTANGULAR] = MOD_MASK_ALT, - }; - - /* -diff --git a/config.mk b/config.mk -index c84c5ee..7da06f1 100644 ---- a/config.mk -+++ b/config.mk -@@ -7,16 +7,12 @@ VERSION = 0.7 - PREFIX = /usr/local - MANPREFIX = ${PREFIX}/share/man - --X11INC = /usr/X11R6/include --X11LIB = /usr/X11R6/lib -+PKGCFG = fontconfig wayland-client wayland-cursor xkbcommon wld -+XDG_SHELL_PROTO = `pkg-config --variable=pkgdatadir wayland-protocols`/unstable/xdg-shell/xdg-shell-unstable-v5.xml - - # includes and libs --INCS = -I. -I/usr/include -I${X11INC} \ -- `pkg-config --cflags fontconfig` \ -- `pkg-config --cflags freetype2` --LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXft \ -- `pkg-config --libs fontconfig` \ -- `pkg-config --libs freetype2` -+INCS = -I. -I/usr/include `pkg-config --cflags ${PKGCFG}` -+LIBS = -L/usr/lib -lc -lm -lrt -lutil `pkg-config --libs ${PKGCFG}` - - # flags - CPPFLAGS = -DVERSION=\"${VERSION}\" -D_XOPEN_SOURCE=600 -diff --git a/st.c b/st.c -index e50e884..b891b07 100644 ---- a/st.c -+++ b/st.c -@@ -3,6 +3,8 @@ - #include <errno.h> - #include <fcntl.h> - #include <limits.h> -+/* for BTN_* definitions */ -+#include <linux/input.h> - #include <locale.h> - #include <pwd.h> - #include <stdarg.h> -@@ -12,6 +14,7 @@ - #include <signal.h> - #include <stdint.h> - #include <sys/ioctl.h> -+#include <sys/mman.h> - #include <sys/select.h> - #include <sys/stat.h> - #include <sys/time.h> -@@ -21,23 +24,19 @@ - #include <time.h> - #include <unistd.h> - #include <libgen.h> --#include <X11/Xatom.h> --#include <X11/Xlib.h> --#include <X11/Xutil.h> --#include <X11/cursorfont.h> --#include <X11/keysym.h> --#include <X11/Xft/Xft.h> --#include <X11/XKBlib.h> -+#include <wayland-client.h> -+#include <wayland-cursor.h> -+#include <xkbcommon/xkbcommon.h> -+#include <wld/wld.h> -+#include <wld/wayland.h> - #include <fontconfig/fontconfig.h> - #include <wchar.h> - - #include "arg.h" -+#include "xdg-shell-unstable-v5-client-protocol.h" - - char *argv0; - --#define Glyph Glyph_ --#define Font Font_ -- - #if defined(__linux) - #include <pty.h> - #elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__) -@@ -47,10 +46,6 @@ char *argv0; - #endif - - --/* XEMBED messages */ --#define XEMBED_FOCUS_IN 4 --#define XEMBED_FOCUS_OUT 5 -- - /* Arbitrary sizes */ - #define UTF_INVALID 0xFFFD - #define UTF_SIZ 4 -@@ -58,15 +53,25 @@ char *argv0; - #define ESC_ARG_SIZ 16 - #define STR_BUF_SIZ ESC_BUF_SIZ - #define STR_ARG_SIZ ESC_ARG_SIZ -+#define DRAW_BUF_SIZ 20*1024 - #define XK_ANY_MOD UINT_MAX - #define XK_NO_MOD 0 - #define XK_SWITCH_MOD (1<<13) - -+#define MOD_MASK_ANY UINT_MAX -+#define MOD_MASK_NONE 0 -+#define MOD_MASK_CTRL (1<<0) -+#define MOD_MASK_ALT (1<<1) -+#define MOD_MASK_SHIFT (1<<2) -+#define MOD_MASK_LOGO (1<<3) -+ -+#define AXIS_VERTICAL WL_POINTER_AXIS_VERTICAL_SCROLL -+#define AXIS_HORIZONTAL WL_POINTER_AXIS_HORIZONTAL_SCROLL -+ - /* macros */ - #define MIN(a, b) ((a) < (b) ? (a) : (b)) - #define MAX(a, b) ((a) < (b) ? (b) : (a)) - #define LEN(a) (sizeof(a) / sizeof(a)[0]) --#define NUMMAXLEN(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1) - #define DEFAULT(a, b) (a) = (a) ? (a) : (b) - #define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) - #define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d)) -@@ -89,7 +94,7 @@ char *argv0; - #define TRUEBLUE(x) (((x) & 0xff) << 8) - - /* constants */ --#define ISO14755CMD "dmenu -w %lu -p codepoint: </dev/null" -+#define ISO14755CMD "dmenu -p codepoint: </dev/null" - - enum glyph_attribute { - ATTR_NULL = 0, -@@ -195,9 +200,6 @@ typedef unsigned short ushort; - - typedef uint_least32_t Rune; - --typedef XftDraw *Draw; --typedef XftColor Color; -- - typedef struct { - Rune u; /* character code */ - ushort mode; /* attribute flags */ -@@ -242,7 +244,6 @@ typedef struct { - Line *line; /* screen */ - Line *alt; /* alternate screen */ - int *dirty; /* dirtyness of lines */ -- XftGlyphFontSpec *specbuf; /* font spec buffer used for rendering */ - TCursor c; /* cursor */ - int top; /* top scroll limit */ - int bot; /* bottom scroll limit */ -@@ -255,29 +256,53 @@ typedef struct { - int *tabs; - } Term; - --/* Purely graphic info */ - typedef struct { -- Display *dpy; -- Colormap cmap; -- Window win; -- Drawable buf; -- Atom xembed, wmdeletewin, netwmname, netwmpid; -- XIM xim; -- XIC xic; -- Draw draw; -- Visual *vis; -- XSetWindowAttributes attrs; -- int scr; -- int isfixed; /* is fixed geometry? */ -- int l, t; /* left and top offset */ -- int gm; /* geometry mask */ -+ struct xkb_context *ctx; -+ struct xkb_keymap *keymap; -+ struct xkb_state *state; -+ xkb_mod_index_t ctrl, alt, shift, logo; -+ unsigned int mods; -+} XKB; -+ -+typedef struct { -+ struct wl_display *dpy; -+ struct wl_compositor *cmp; -+ struct wl_shm *shm; -+ struct wl_seat *seat; -+ struct wl_keyboard *keyboard; -+ struct wl_pointer *pointer; -+ struct wl_data_device_manager *datadevmanager; -+ struct wl_data_device *datadev; -+ struct wl_data_offer *seloffer; -+ struct wl_surface *surface; -+ struct wl_buffer *buffer; -+ struct xdg_shell *shell; -+ struct xdg_surface *xdgsurface; -+ XKB xkb; -+ bool configured; -+ int px, py; /* pointer x and y */ - int tw, th; /* tty width and height */ - int w, h; /* window width and height */ - int ch; /* char height */ - int cw; /* char width */ -+ int vis; - char state; /* focus, redraw, visible */ - int cursor; /* cursor style */ --} XWindow; -+ struct wl_callback * framecb; -+} Wayland; -+ -+typedef struct { -+ struct wld_context *ctx; -+ struct wld_font_context *fontctx; -+ struct wld_renderer *renderer; -+ struct wld_buffer *buffer, *oldbuffer; -+} WLD; -+ -+typedef struct { -+ struct wl_cursor_theme *theme; -+ struct wl_cursor *cursor; -+ struct wl_surface *surface; -+} Cursor; - - typedef struct { - uint b; -@@ -286,7 +311,14 @@ typedef struct { - } MouseShortcut; - - typedef struct { -- KeySym k; -+ int axis; -+ int dir; -+ uint mask; -+ char s[ESC_BUF_SIZ]; -+} Axiskey; -+ -+typedef struct { -+ xkb_keysym_t k; - uint mask; - char *s; - /* three valued logic variables: 0 indifferent, 1 on, -1 off */ -@@ -310,11 +342,10 @@ typedef struct { - int x, y; - } nb, ne, ob, oe; - -- char *primary, *clipboard; -- Atom xtarget; -+ char *primary; -+ struct wl_data_source *source; - int alt; -- struct timespec tclick1; -- struct timespec tclick2; -+ uint32_t tclick1, tclick2; - } Selection; - - typedef union { -@@ -326,19 +357,25 @@ typedef union { - - typedef struct { - uint mod; -- KeySym keysym; -+ xkb_keysym_t keysym; - void (*func)(const Arg *); - const Arg arg; - } Shortcut; - -+typedef struct { -+ char str[32]; -+ uint32_t key; -+ int len; -+ bool started; -+ struct timespec last; -+} Repeat; -+ - /* function definitions used in config.h */ --static void clipcopy(const Arg *); --static void clippaste(const Arg *); - static void numlock(const Arg *); - static void selpaste(const Arg *); --static void xzoom(const Arg *); --static void xzoomabs(const Arg *); --static void xzoomreset(const Arg *); -+static void wlzoom(const Arg *); -+static void wlzoomabs(const Arg *); -+static void wlzoomreset(const Arg *); - static void printsel(const Arg *); - static void printscreen(const Arg *) ; - static void iso14755(const Arg *); -@@ -358,16 +395,15 @@ typedef struct { - int badweight; - short lbearing; - short rbearing; -- XftFont *match; -+ struct wld_font *match; - FcFontSet *set; - FcPattern *pattern; - } Font; - - /* Drawing Context */ - typedef struct { -- Color col[MAX(LEN(colorname), 256)]; -+ uint32_t col[MAX(LEN(colorname), 256)]; - Font font, bfont, ifont, ibfont; -- GC gc; - } DC; - - static void die(const char *, ...); -@@ -378,6 +414,7 @@ static void execsh(void); - static void stty(void); - static void sigchld(int); - static void run(void); -+static void cresize(int, int); - - static void csidump(void); - static void csihandle(void); -@@ -433,56 +470,79 @@ static void ttysend(char *, size_t); - static void ttywrite(const char *, size_t); - static void tstrsequence(uchar); - --static inline ushort sixd_to_16bit(int); --static int xmakeglyphfontspecs(XftGlyphFontSpec *, const Glyph *, int, int, int); --static void xdrawglyphfontspecs(const XftGlyphFontSpec *, Glyph, int, int, int); --static void xdrawglyph(Glyph, int, int); --static void xhints(void); --static void xclear(int, int, int, int); --static void xdrawcursor(void); --static void xinit(void); --static void xloadcols(void); --static int xsetcolorname(int, const char *); --static int xgeommasktogravity(int); --static int xloadfont(Font *, FcPattern *); --static void xloadfonts(char *, double); --static void xsettitle(char *); --static void xresettitle(void); --static void xsetpointermotion(int); --static void xseturgency(int); --static void xsetsel(char *, Time); --static void xunloadfont(Font *); --static void xunloadfonts(void); --static void xresize(int, int); -- --static void expose(XEvent *); --static void visibility(XEvent *); --static void unmap(XEvent *); --static char *kmap(KeySym, uint); --static void kpress(XEvent *); --static void cmessage(XEvent *); --static void cresize(int, int); --static void resize(XEvent *); --static void focus(XEvent *); --static void brelease(XEvent *); --static void bpress(XEvent *); --static void bmotion(XEvent *); --static void propnotify(XEvent *); --static void selnotify(XEvent *); --static void selclear(XEvent *); --static void selrequest(XEvent *); -+static inline uchar sixd_to_8bit(int); -+static void wldraws(char *, Glyph, int, int, int, int); -+static void wldrawglyph(Glyph, int, int); -+static void wlclear(int, int, int, int); -+static void wldrawcursor(void); -+static void wlinit(void); -+static void wlloadcols(void); -+static int wlsetcolorname(int, const char *); -+static void wlloadcursor(void); -+static int wlloadfont(Font *, FcPattern *); -+static void wlloadfonts(char *, double); -+static void wlsettitle(char *); -+static void wlresettitle(void); -+static void wlseturgency(int); -+static void wlsetsel(char*, uint32_t); -+static void wlunloadfont(Font *f); -+static void wlunloadfonts(void); -+static void wlresize(int, int); -+ -+static void regglobal(void *, struct wl_registry *, uint32_t, const char *, -+ uint32_t); -+static void regglobalremove(void *, struct wl_registry *, uint32_t); -+static void surfenter(void *, struct wl_surface *, struct wl_output *); -+static void surfleave(void *, struct wl_surface *, struct wl_output *); -+static void framedone(void *, struct wl_callback *, uint32_t); -+static void kbdkeymap(void *, struct wl_keyboard *, uint32_t, int32_t, uint32_t); -+static void kbdenter(void *, struct wl_keyboard *, uint32_t, -+ struct wl_surface *, struct wl_array *); -+static void kbdleave(void *, struct wl_keyboard *, uint32_t, -+ struct wl_surface *); -+static void kbdkey(void *, struct wl_keyboard *, uint32_t, uint32_t, uint32_t, -+ uint32_t); -+static void kbdmodifiers(void *, struct wl_keyboard *, uint32_t, uint32_t, -+ uint32_t, uint32_t, uint32_t); -+static void kbdrepeatinfo(void *, struct wl_keyboard *, int32_t, int32_t); -+static void ptrenter(void *, struct wl_pointer *, uint32_t, struct wl_surface *, -+ wl_fixed_t, wl_fixed_t); -+static void ptrleave(void *, struct wl_pointer *, uint32_t, -+ struct wl_surface *); -+static void ptrmotion(void *, struct wl_pointer *, uint32_t, -+ wl_fixed_t, wl_fixed_t); -+static void ptrbutton(void *, struct wl_pointer *, uint32_t, uint32_t, -+ uint32_t, uint32_t); -+static void ptraxis(void *, struct wl_pointer *, uint32_t, uint32_t, -+ wl_fixed_t); -+static void xdgshellping(void *, struct xdg_shell *, uint32_t); -+static void xdgsurfconfigure(void *, struct xdg_surface *, -+ int32_t, int32_t, struct wl_array *, uint32_t); -+static void xdgsurfclose(void *, struct xdg_surface *); -+static void datadevoffer(void *, struct wl_data_device *, -+ struct wl_data_offer *); -+static void datadeventer(void *, struct wl_data_device *, uint32_t, -+ struct wl_surface *, wl_fixed_t, wl_fixed_t, struct wl_data_offer *); -+static void datadevleave(void *, struct wl_data_device *); -+static void datadevmotion(void *, struct wl_data_device *, uint32_t, -+ wl_fixed_t x, wl_fixed_t y); -+static void datadevdrop(void *, struct wl_data_device *); -+static void datadevselection(void *, struct wl_data_device *, -+ struct wl_data_offer *); -+static void dataofferoffer(void *, struct wl_data_offer *, const char *); -+static void datasrctarget(void *, struct wl_data_source *, const char *); -+static void datasrcsend(void *, struct wl_data_source *, const char *, int32_t); -+static void datasrccancelled(void *, struct wl_data_source *); - - static void selinit(void); - static void selnormalize(void); - static inline int selected(int, int); - static char *getsel(void); --static void selcopy(Time); -+static void selcopy(uint32_t); - static void selscroll(int, int); - static void selsnap(int *, int *, int); - static int x2col(int); - static int y2row(int); --static void getbuttoninfo(XEvent *); --static void mousereport(XEvent *); - - static size_t utf8decode(char *, Rune *, size_t); - static Rune utf8decodebyte(char, size_t *); -@@ -498,41 +558,36 @@ static char *xstrdup(char *); - - static void usage(void); - --static void (*handler[LASTEvent])(XEvent *) = { -- [KeyPress] = kpress, -- [ClientMessage] = cmessage, -- [ConfigureNotify] = resize, -- [VisibilityNotify] = visibility, -- [UnmapNotify] = unmap, -- [Expose] = expose, -- [FocusIn] = focus, -- [FocusOut] = focus, -- [MotionNotify] = bmotion, -- [ButtonPress] = bpress, -- [ButtonRelease] = brelease, --/* -- * Uncomment if you want the selection to disappear when you select something -- * different in another window. -- */ --/* [SelectionClear] = selclear, */ -- [SelectionNotify] = selnotify, --/* -- * PropertyNotify is only turned on when there is some INCR transfer happening -- * for the selection retrieval. -- */ -- [PropertyNotify] = propnotify, -- [SelectionRequest] = selrequest, --}; -+static struct wl_registry_listener reglistener = { regglobal, regglobalremove }; -+static struct wl_surface_listener surflistener = { surfenter, surfleave }; -+static struct wl_callback_listener framelistener = { framedone }; -+static struct wl_keyboard_listener kbdlistener = -+ { kbdkeymap, kbdenter, kbdleave, kbdkey, kbdmodifiers, kbdrepeatinfo }; -+static struct wl_pointer_listener ptrlistener = -+ { ptrenter, ptrleave, ptrmotion, ptrbutton, ptraxis }; -+static struct xdg_shell_listener xdgshelllistener = { xdgshellping }; -+static struct xdg_surface_listener xdgsurflistener = -+ { xdgsurfconfigure, xdgsurfclose }; -+static struct wl_data_device_listener datadevlistener = -+ { datadevoffer, datadeventer, datadevleave, datadevmotion, datadevdrop, -+ datadevselection }; -+static struct wl_data_offer_listener dataofferlistener = { dataofferoffer }; -+static struct wl_data_source_listener datasrclistener = -+ { datasrctarget, datasrcsend, datasrccancelled }; - - /* Globals */ - static DC dc; --static XWindow xw; -+static Wayland wl; -+static WLD wld; -+static Cursor cursor; - static Term term; - static CSIEscape csiescseq; - static STREscape strescseq; - static int cmdfd; - static pid_t pid; - static Selection sel; -+static Repeat repeat; -+static bool needdraw = true; - static int iofd = 1; - static char **opt_cmd = NULL; - static char *opt_class = NULL; -@@ -543,6 +598,7 @@ static char *opt_line = NULL; - static char *opt_name = NULL; - static char *opt_title = NULL; - static int oldbutton = 3; /* button event on startup: 3 = release */ -+static int oldx, oldy; - - static char *usedfont = NULL; - static double usedfontsize = 0; -@@ -562,7 +618,7 @@ enum { - }; - - typedef struct { -- XftFont *font; -+ struct wld_font *font; - int flags; - Rune unicodep; - } Fontcache; -@@ -707,23 +763,20 @@ utf8validate(Rune *u, size_t i) - void - selinit(void) - { -- clock_gettime(CLOCK_MONOTONIC, &sel.tclick1); -- clock_gettime(CLOCK_MONOTONIC, &sel.tclick2); -+ sel.tclick1 = 0; -+ sel.tclick2 = 0; - sel.mode = SEL_IDLE; - sel.snap = 0; - sel.ob.x = -1; - sel.primary = NULL; -- sel.clipboard = NULL; -- sel.xtarget = XInternAtom(xw.dpy, "UTF8_STRING", 0); -- if (sel.xtarget == None) -- sel.xtarget = XA_STRING; -+ sel.source = NULL; - } - - int - x2col(int x) - { - x -= borderpx; -- x /= xw.cw; -+ x /= wl.cw; - - return LIMIT(x, 0, term.col-1); - } -@@ -732,7 +785,7 @@ int - y2row(int y) - { - y -= borderpx; -- y /= xw.ch; -+ y /= wl.ch; - - return LIMIT(y, 0, term.row-1); - } -@@ -868,15 +921,15 @@ selsnap(int *x, int *y, int direction) - } - - void --getbuttoninfo(XEvent *e) -+getbuttoninfo(void) - { - int type; -- uint state = e->xbutton.state & ~(Button1Mask | forceselmod); -+ uint state = wl.xkb.mods & ~forceselmod; - - sel.alt = IS_SET(MODE_ALTSCREEN); - -- sel.oe.x = x2col(e->xbutton.x); -- sel.oe.y = y2row(e->xbutton.y); -+ sel.oe.x = x2col(wl.px); -+ sel.oe.y = y2row(wl.py); - selnormalize(); - - sel.type = SEL_REGULAR; -@@ -889,59 +942,20 @@ getbuttoninfo(XEvent *e) - } - - void --mousereport(XEvent *e) -+wlmousereport(int button, bool release, int x, int y) - { -- int x = x2col(e->xbutton.x), y = y2row(e->xbutton.y), -- button = e->xbutton.button, state = e->xbutton.state, -- len; -+ int len; - char buf[40]; -- static int ox, oy; -- -- /* from urxvt */ -- if (e->xbutton.type == MotionNotify) { -- if (x == ox && y == oy) -- return; -- if (!IS_SET(MODE_MOUSEMOTION) && !IS_SET(MODE_MOUSEMANY)) -- return; -- /* MOUSE_MOTION: no reporting if no button is pressed */ -- if (IS_SET(MODE_MOUSEMOTION) && oldbutton == 3) -- return; -- -- button = oldbutton + 32; -- ox = x; -- oy = y; -- } else { -- if (!IS_SET(MODE_MOUSESGR) && e->xbutton.type == ButtonRelease) { -- button = 3; -- } else { -- button -= Button1; -- if (button >= 3) -- button += 64 - 3; -- } -- if (e->xbutton.type == ButtonPress) { -- oldbutton = button; -- ox = x; -- oy = y; -- } else if (e->xbutton.type == ButtonRelease) { -- oldbutton = 3; -- /* MODE_MOUSEX10: no button release reporting */ -- if (IS_SET(MODE_MOUSEX10)) -- return; -- if (button == 64 || button == 65) -- return; -- } -- } - - if (!IS_SET(MODE_MOUSEX10)) { -- button += ((state & ShiftMask ) ? 4 : 0) -- + ((state & Mod4Mask ) ? 8 : 0) -- + ((state & ControlMask) ? 16 : 0); -+ button += ((wl.xkb.mods & MOD_MASK_SHIFT) ? 4 : 0) -+ + ((wl.xkb.mods & MOD_MASK_LOGO ) ? 8 : 0) -+ + ((wl.xkb.mods & MOD_MASK_CTRL ) ? 16 : 0); - } - - if (IS_SET(MODE_MOUSESGR)) { - len = snprintf(buf, sizeof(buf), "\033[<%d;%d;%d%c", -- button, x+1, y+1, -- e->xbutton.type == ButtonRelease ? 'm' : 'M'); -+ button, x+1, y+1, release ? 'm' : 'M'); - } else if (x < 223 && y < 223) { - len = snprintf(buf, sizeof(buf), "\033[M%c%c%c", - 32+button, 32+x+1, 32+y+1); -@@ -953,53 +967,59 @@ mousereport(XEvent *e) - } - - void --bpress(XEvent *e) -+wlmousereportbutton(uint32_t button, uint32_t state) - { -- struct timespec now; -- MouseShortcut *ms; -+ bool release = state == WL_POINTER_BUTTON_STATE_RELEASED; - -- if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { -- mousereport(e); -- return; -+ if (!IS_SET(MODE_MOUSESGR) && release) { -+ button = 3; -+ } else { -+ switch (button) { -+ case BTN_LEFT: -+ button = 0; -+ break; -+ case BTN_MIDDLE: -+ button = 1; -+ break; -+ case BTN_RIGHT: -+ button = 2; -+ break; -+ } - } - -- for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { -- if (e->xbutton.button == ms->b -- && match(ms->mask, e->xbutton.state)) { -- ttysend(ms->s, strlen(ms->s)); -- return; -- } -+ oldbutton = release ? 3 : button; -+ -+ /* don't report release events when in X10 mode */ -+ if (IS_SET(MODE_MOUSEX10) && release) { -+ return; - } - -- if (e->xbutton.button == Button1) { -- clock_gettime(CLOCK_MONOTONIC, &now); -+ wlmousereport(button, release, oldx, oldy); -+} - -- /* Clear previous selection, logically and visually. */ -- selclear(NULL); -- sel.mode = SEL_EMPTY; -- sel.type = SEL_REGULAR; -- sel.oe.x = sel.ob.x = x2col(e->xbutton.x); -- sel.oe.y = sel.ob.y = y2row(e->xbutton.y); -+void -+wlmousereportmotion(wl_fixed_t fx, wl_fixed_t fy) -+{ -+ int x = x2col(wl_fixed_to_int(fx)), y = y2row(wl_fixed_to_int(fy)); - -- /* -- * If the user clicks below predefined timeouts specific -- * snapping behaviour is exposed. -- */ -- if (TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) { -- sel.snap = SNAP_LINE; -- } else if (TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) { -- sel.snap = SNAP_WORD; -- } else { -- sel.snap = 0; -- } -- selnormalize(); -+ if (x == oldx && y == oldy) -+ return; -+ if (!IS_SET(MODE_MOUSEMOTION) && !IS_SET(MODE_MOUSEMANY)) -+ return; -+ /* MOUSE_MOTION: no reporting if no button is pressed */ -+ if (IS_SET(MODE_MOUSEMOTION) && oldbutton == 3) -+ return; - -- if (sel.snap != 0) -- sel.mode = SEL_READY; -- tsetdirt(sel.nb.y, sel.ne.y); -- sel.tclick2 = sel.tclick1; -- sel.tclick1 = now; -- } -+ oldx = x; -+ oldy = y; -+ wlmousereport(oldbutton + 32, false, x, y); -+} -+ -+void -+wlmousereportaxis(uint32_t axis, wl_fixed_t amount) -+{ -+ wlmousereport(64 + (axis == AXIS_VERTICAL ? 4 : 6) -+ + (amount > 0 ? 1 : 0), false, oldx, oldy); - } - - char * -@@ -1057,148 +1077,67 @@ getsel(void) - } - - void --selcopy(Time t) --{ -- xsetsel(getsel(), t); --} -- --void --propnotify(XEvent *e) -+selcopy(uint32_t serial) - { -- XPropertyEvent *xpev; -- Atom clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0); -- -- xpev = &e->xproperty; -- if (xpev->state == PropertyNewValue && -- (xpev->atom == XA_PRIMARY || -- xpev->atom == clipboard)) { -- selnotify(e); -- } -+ wlsetsel(getsel(), serial); - } - --void --selnotify(XEvent *e) -+static inline void -+selwritebuf(char *buf, int len) - { -- ulong nitems, ofs, rem; -- int format; -- uchar *data, *last, *repl; -- Atom type, incratom, property; -- -- incratom = XInternAtom(xw.dpy, "INCR", 0); -- -- ofs = 0; -- if (e->type == SelectionNotify) { -- property = e->xselection.property; -- } else if(e->type == PropertyNotify) { -- property = e->xproperty.atom; -- } else { -- return; -- } -- if (property == None) -- return; -- -- do { -- if (XGetWindowProperty(xw.dpy, xw.win, property, ofs, -- BUFSIZ/4, False, AnyPropertyType, -- &type, &format, &nitems, &rem, -- &data)) { -- fprintf(stderr, "Clipboard allocation failed\n"); -- return; -- } -- -- if (e->type == PropertyNotify && nitems == 0 && rem == 0) { -- /* -- * If there is some PropertyNotify with no data, then -- * this is the signal of the selection owner that all -- * data has been transferred. We won't need to receive -- * PropertyNotify events anymore. -- */ -- MODBIT(xw.attrs.event_mask, 0, PropertyChangeMask); -- XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, -- &xw.attrs); -- } -- -- if (type == incratom) { -- /* -- * Activate the PropertyNotify events so we receive -- * when the selection owner does send us the next -- * chunk of data. -- */ -- MODBIT(xw.attrs.event_mask, 1, PropertyChangeMask); -- XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, -- &xw.attrs); -- -- /* -- * Deleting the property is the transfer start signal. -- */ -- XDeleteProperty(xw.dpy, xw.win, (int)property); -- continue; -- } -- -- /* -- * As seen in getsel: -- * Line endings are inconsistent in the terminal and GUI world -- * copy and pasting. When receiving some selection data, -- * replace all '\n' with '\r'. -- * FIXME: Fix the computer world. -- */ -- repl = data; -- last = data + nitems * format / 8; -- while ((repl = memchr(repl, '\n', last - repl))) { -- *repl++ = '\r'; -- } -- -- if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) -- ttywrite("\033[200~", 6); -- ttysend((char *)data, nitems * format / 8); -- if (IS_SET(MODE_BRCKTPASTE) && rem == 0) -- ttywrite("\033[201~", 6); -- XFree(data); -- /* number of 32-bit chunks returned */ -- ofs += nitems * format / 32; -- } while (rem > 0); -+ char *repl = buf; - - /* -- * Deleting the property again tells the selection owner to send the -- * next data chunk in the property. -+ * As seen in getsel: -+ * Line endings are inconsistent in the terminal and GUI world -+ * copy and pasting. When receiving some selection data, -+ * replace all '\n' with '\r'. -+ * FIXME: Fix the computer world. - */ -- XDeleteProperty(xw.dpy, xw.win, (int)property); --} -+ while ((repl = memchr(repl, '\n', len))) { -+ *repl++ = '\r'; -+ } - --void --selpaste(const Arg *dummy) --{ -- XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY, -- xw.win, CurrentTime); -+ ttysend(buf, len); - } - - void --clipcopy(const Arg *dummy) -+selpaste(const Arg *dummy) - { -- Atom clipboard; -+ int fds[2], len, left; -+ char buf[BUFSIZ], *str; - -- if (sel.clipboard != NULL) -- free(sel.clipboard); -- -- if (sel.primary != NULL) { -- sel.clipboard = xstrdup(sel.primary); -- clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0); -- XSetSelectionOwner(xw.dpy, clipboard, xw.win, CurrentTime); -+ if (wl.seloffer) { -+ if (IS_SET(MODE_BRCKTPASTE)) -+ ttywrite("\033[200~", 6); -+ /* check if we are pasting from ourselves */ -+ if (sel.source) { -+ str = sel.primary; -+ left = strlen(sel.primary); -+ while (left > 0) { -+ len = MIN(sizeof buf, left); -+ memcpy(buf, str, len); -+ selwritebuf(buf, len); -+ left -= len; -+ str += len; -+ } -+ } else { -+ pipe(fds); -+ wl_data_offer_receive(wl.seloffer, "text/plain", fds[1]); -+ wl_display_flush(wl.dpy); -+ close(fds[1]); -+ while ((len = read(fds[0], buf, sizeof buf)) > 0) { -+ selwritebuf(buf, len); -+ } -+ close(fds[0]); -+ } -+ if (IS_SET(MODE_BRCKTPASTE)) -+ ttywrite("\033[201~", 6); - } - } - - void --clippaste(const Arg *dummy) --{ -- Atom clipboard; -- -- clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0); -- XConvertSelection(xw.dpy, clipboard, sel.xtarget, clipboard, -- xw.win, CurrentTime); --} -- --void --selclear(XEvent *e) -+selclear(void) - { - if (sel.ob.x == -1) - return; -@@ -1208,117 +1147,19 @@ selclear(XEvent *e) - } - - void --selrequest(XEvent *e) --{ -- XSelectionRequestEvent *xsre; -- XSelectionEvent xev; -- Atom xa_targets, string, clipboard; -- char *seltext; -- -- xsre = (XSelectionRequestEvent *) e; -- xev.type = SelectionNotify; -- xev.requestor = xsre->requestor; -- xev.selection = xsre->selection; -- xev.target = xsre->target; -- xev.time = xsre->time; -- if (xsre->property == None) -- xsre->property = xsre->target; -- -- /* reject */ -- xev.property = None; -- -- xa_targets = XInternAtom(xw.dpy, "TARGETS", 0); -- if (xsre->target == xa_targets) { -- /* respond with the supported type */ -- string = sel.xtarget; -- XChangeProperty(xsre->display, xsre->requestor, xsre->property, -- XA_ATOM, 32, PropModeReplace, -- (uchar *) &string, 1); -- xev.property = xsre->property; -- } else if (xsre->target == sel.xtarget || xsre->target == XA_STRING) { -- /* -- * xith XA_STRING non ascii characters may be incorrect in the -- * requestor. It is not our problem, use utf8. -- */ -- clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0); -- if (xsre->selection == XA_PRIMARY) { -- seltext = sel.primary; -- } else if (xsre->selection == clipboard) { -- seltext = sel.clipboard; -- } else { -- fprintf(stderr, -- "Unhandled clipboard selection 0x%lx\n", -- xsre->selection); -- return; -- } -- if (seltext != NULL) { -- XChangeProperty(xsre->display, xsre->requestor, -- xsre->property, xsre->target, -- 8, PropModeReplace, -- (uchar *)seltext, strlen(seltext)); -- xev.property = xsre->property; -- } -- } -- -- /* all done, send a notification to the listener */ -- if (!XSendEvent(xsre->display, xsre->requestor, 1, 0, (XEvent *) &xev)) -- fprintf(stderr, "Error sending SelectionNotify event\n"); --} -- --void --xsetsel(char *str, Time t) -+wlsetsel(char *str, uint32_t serial) - { - free(sel.primary); - sel.primary = str; - -- XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t); -- if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win) -- selclear(0); --} -- --void --brelease(XEvent *e) --{ -- if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { -- mousereport(e); -- return; -- } -- -- if (e->xbutton.button == Button2) { -- selpaste(NULL); -- } else if (e->xbutton.button == Button1) { -- if (sel.mode == SEL_READY) { -- getbuttoninfo(e); -- selcopy(e->xbutton.time); -- } else -- selclear(NULL); -- sel.mode = SEL_IDLE; -- tsetdirt(sel.nb.y, sel.ne.y); -- } --} -- --void --bmotion(XEvent *e) --{ -- int oldey, oldex, oldsby, oldsey; -- -- if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { -- mousereport(e); -- return; -+ if (str) { -+ sel.source = wl_data_device_manager_create_data_source(wl.datadevmanager); -+ wl_data_source_add_listener(sel.source, &datasrclistener, NULL); -+ wl_data_source_offer(sel.source, "text/plain; charset=utf-8"); -+ } else { -+ sel.source = NULL; - } -- -- if (!sel.mode) -- return; -- -- sel.mode = SEL_READY; -- oldey = sel.oe.y; -- oldex = sel.oe.x; -- oldsby = sel.nb.y; -- oldsey = sel.ne.y; -- getbuttoninfo(e); -- -- if (oldey != sel.oe.y || oldex != sel.oe.x) -- tsetdirt(MIN(sel.nb.y, oldsby), MAX(sel.ne.y, oldsey)); -+ wl_data_device_set_selection(wl.datadev, sel.source, serial); - } - - void -@@ -1337,7 +1178,6 @@ execsh(void) - { - char **args, *sh, *prog; - const struct passwd *pw; -- char buf[sizeof(long) * 8 + 1]; - - errno = 0; - if ((pw = getpwuid(getuid())) == NULL) { -@@ -1358,8 +1198,6 @@ execsh(void) - prog = sh; - args = (opt_cmd) ? opt_cmd : (char *[]) {prog, NULL}; - -- snprintf(buf, sizeof(buf), "%lu", xw.win); -- - unsetenv("COLUMNS"); - unsetenv("LINES"); - unsetenv("TERMCAP"); -@@ -1368,7 +1206,6 @@ execsh(void) - setenv("SHELL", sh, 1); - setenv("HOME", pw->pw_dir, 1); - setenv("TERM", termname, 1); -- setenv("WINDOWID", buf, 1); - - signal(SIGCHLD, SIG_DFL); - signal(SIGHUP, SIG_DFL); -@@ -1513,6 +1350,7 @@ ttyread(void) - if (buflen > 0) - memmove(buf, ptr, buflen); - -+ needdraw = true; - return ret; - } - -@@ -1606,8 +1444,8 @@ ttyresize(void) - - w.ws_row = term.row; - w.ws_col = term.col; -- w.ws_xpixel = xw.tw; -- w.ws_ypixel = xw.th; -+ w.ws_xpixel = wl.tw; -+ w.ws_ypixel = wl.th; - if (ioctl(cmdfd, TIOCSWINSZ, &w) < 0) - fprintf(stderr, "Couldn't set window size: %s\n", strerror(errno)); - } -@@ -1637,6 +1475,8 @@ tsetdirt(int top, int bot) - - for (i = top; i <= bot; i++) - term.dirty[i] = 1; -+ -+ needdraw = true; - } - - void -@@ -1771,7 +1611,7 @@ selscroll(int orig, int n) - - if (BETWEEN(sel.ob.y, orig, term.bot) || BETWEEN(sel.oe.y, orig, term.bot)) { - if ((sel.ob.y += n) > term.bot || (sel.oe.y += n) < term.top) { -- selclear(NULL); -+ selclear(); - return; - } - if (sel.type == SEL_RECTANGULAR) { -@@ -1917,7 +1757,7 @@ tclearregion(int x1, int y1, int x2, int y2) - for (x = x1; x <= x2; x++) { - gp = &term.line[y][x]; - if (selected(x, y)) -- selclear(NULL); -+ selclear(); - gp->fg = term.c.attr.fg; - gp->bg = term.c.attr.bg; - gp->mode = 0; -@@ -2180,22 +2020,18 @@ tsetmode(int priv, int set, int *args, int narg) - MODBIT(term.mode, !set, MODE_HIDE); - break; - case 9: /* X10 mouse compatibility mode */ -- xsetpointermotion(0); - MODBIT(term.mode, 0, MODE_MOUSE); - MODBIT(term.mode, set, MODE_MOUSEX10); - break; - case 1000: /* 1000: report button press */ -- xsetpointermotion(0); - MODBIT(term.mode, 0, MODE_MOUSE); - MODBIT(term.mode, set, MODE_MOUSEBTN); - break; - case 1002: /* 1002: report motion on button press */ -- xsetpointermotion(0); - MODBIT(term.mode, 0, MODE_MOUSE); - MODBIT(term.mode, set, MODE_MOUSEMOTION); - break; - case 1003: /* 1003: enable all mouse motions */ -- xsetpointermotion(set); - MODBIT(term.mode, 0, MODE_MOUSE); - MODBIT(term.mode, set, MODE_MOUSEMANY); - break; -@@ -2368,7 +2204,7 @@ csihandle(void) - tputtab(csiescseq.arg[0]); - break; - case 'J': /* ED -- Clear screen */ -- selclear(NULL); -+ selclear(); - switch (csiescseq.arg[0]) { - case 0: /* below */ - tclearregion(term.c.x, term.c.y, term.col-1, term.c.y); -@@ -2475,7 +2311,7 @@ csihandle(void) - if (!BETWEEN(csiescseq.arg[0], 0, 6)) { - goto unknown; - } -- xw.cursor = csiescseq.arg[0]; -+ wl.cursor = csiescseq.arg[0]; - break; - default: - goto unknown; -@@ -2531,7 +2367,7 @@ strhandle(void) - case 1: - case 2: - if (narg > 1) -- xsettitle(strescseq.args[1]); -+ wlsettitle(strescseq.args[1]); - return; - case 4: /* color set */ - if (narg < 3) -@@ -2540,7 +2376,7 @@ strhandle(void) - /* FALLTHROUGH */ - case 104: /* color reset, here p = NULL */ - j = (narg > 1) ? atoi(strescseq.args[1]) : -1; -- if (xsetcolorname(j, p)) { -+ if (wlsetcolorname(j, p)) { - fprintf(stderr, "erresc: invalid color %s\n", p); - } else { - /* -@@ -2553,7 +2389,7 @@ strhandle(void) - } - break; - case 'k': /* old title set compatibility */ -- xsettitle(strescseq.args[0]); -+ wlsettitle(strescseq.args[0]); - return; - case 'P': /* DCS -- Device Control String */ - term.mode |= ESC_DCS; -@@ -2642,13 +2478,11 @@ tprinter(char *s, size_t len) - void - iso14755(const Arg *arg) - { -- char cmd[sizeof(ISO14755CMD) + NUMMAXLEN(xw.win)]; - FILE *p; - char *us, *e, codepoint[9], uc[UTF_SIZ]; - unsigned long utf32; - -- snprintf(cmd, sizeof(cmd), ISO14755CMD, xw.win); -- if (!(p = popen(cmd, "r"))) -+ if (!(p = popen(ISO14755CMD, "r"))) - return; - - us = fgets(codepoint, sizeof(codepoint), p); -@@ -2747,6 +2581,7 @@ techo(Rune u) - } - } - tputc(u); -+ needdraw = true; - } - - void -@@ -2833,10 +2668,12 @@ tcontrolcode(uchar ascii) - /* backwards compatibility to xterm */ - strhandle(); - } else { -- if (!(xw.state & WIN_FOCUSED)) -- xseturgency(1); -- if (bellvolume) -- XkbBell(xw.dpy, xw.win, bellvolume, (Atom)NULL); -+ if (!(wl.state & WIN_FOCUSED)) -+ wlseturgency(1); -+ /* XXX: No bell on wayland -+ * if (bellvolume) -+ * XkbBell(xw.dpy, xw.win, bellvolume, (Atom)NULL); -+ */ - } - break; - case '\033': /* ESC */ -@@ -2968,8 +2805,8 @@ eschandle(uchar ascii) - break; - case 'c': /* RIS -- Reset to inital state */ - treset(); -- xresettitle(); -- xloadcols(); -+ wlresettitle(); -+ wlloadcols(); - break; - case '=': /* DECPAM -- Application keypad */ - term.mode |= MODE_APPKEYPAD; -@@ -3026,7 +2863,7 @@ tputc(Rune u) - */ - if (term.esc & ESC_STR) { - if (u == '\a' || u == 030 || u == 032 || u == 033 || -- ISCONTROLC1(u)) { -+ ISCONTROLC1(u)) { - term.esc &= ~(ESC_START|ESC_STR|ESC_DCS); - if (IS_SET(MODE_SIXEL)) { - /* TODO: render sixel */; -@@ -3109,7 +2946,7 @@ check_control_code: - return; - } - if (sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y)) -- selclear(NULL); -+ selclear(); - - gp = &term.line[term.c.y][term.c.x]; - if (IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) { -@@ -3176,9 +3013,6 @@ tresize(int col, int row) - free(term.alt[i]); - } - -- /* resize to new width */ -- term.specbuf = xrealloc(term.specbuf, col * sizeof(XftGlyphFontSpec)); -- - /* resize to new height */ - term.line = xrealloc(term.line, row * sizeof(Line)); - term.alt = xrealloc(term.alt, row * sizeof(Line)); -@@ -3228,190 +3062,141 @@ tresize(int col, int row) - } - - void --xresize(int col, int row) -+wlresize(int col, int row) - { -- xw.tw = MAX(1, col * xw.cw); -- xw.th = MAX(1, row * xw.ch); -+ union wld_object object; -+ -+ wl.tw = MAX(1, col * wl.cw); -+ wl.th = MAX(1, row * wl.ch); - -- XFreePixmap(xw.dpy, xw.buf); -- xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, -- DefaultDepth(xw.dpy, xw.scr)); -- XftDrawChange(xw.draw, xw.buf); -- xclear(0, 0, xw.w, xw.h); -+ wld.oldbuffer = wld.buffer; -+ wld.buffer = wld_create_buffer(wld.ctx, wl.w, wl.h, -+ WLD_FORMAT_XRGB8888, 0); -+ wld_export(wld.buffer, WLD_WAYLAND_OBJECT_BUFFER, &object); -+ wl.buffer = object.ptr; - } - --ushort --sixd_to_16bit(int x) -+uchar -+sixd_to_8bit(int x) - { -- return x == 0 ? 0 : 0x3737 + 0x2828 * x; -+ return x == 0 ? 0 : 0x37 + 0x28 * x; - } - - int --xloadcolor(int i, const char *name, Color *ncolor) -+wlloadcolor(int i, const char *name, uint32_t *color) - { -- XRenderColor color = { .alpha = 0xffff }; -- - if (!name) { - if (BETWEEN(i, 16, 255)) { /* 256 color */ - if (i < 6*6*6+16) { /* same colors as xterm */ -- color.red = sixd_to_16bit( ((i-16)/36)%6 ); -- color.green = sixd_to_16bit( ((i-16)/6) %6 ); -- color.blue = sixd_to_16bit( ((i-16)/1) %6 ); -+ *color = 0xff << 24 | sixd_to_8bit(((i-16)/36)%6) << 16 -+ | sixd_to_8bit(((i-16)/6)%6) << 8 -+ | sixd_to_8bit(((i-16)/1)%6); - } else { /* greyscale */ -- color.red = 0x0808 + 0x0a0a * (i - (6*6*6+16)); -- color.green = color.blue = color.red; -+ *color = 0xff << 24 | (0x8 + 0xa * (i-(6*6*6+16))) * 0x10101; - } -- return XftColorAllocValue(xw.dpy, xw.vis, -- xw.cmap, &color, ncolor); -+ return true; - } else - name = colorname[i]; - } - -- return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor); -+ return wld_lookup_named_color(name, color); - } - - void --xloadcols(void) -+wlloadcols(void) - { - int i; -- static int loaded; -- Color *cp; -- -- if (loaded) { -- for (cp = dc.col; cp < &dc.col[LEN(dc.col)]; ++cp) -- XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); -- } - - for (i = 0; i < LEN(dc.col); i++) -- if (!xloadcolor(i, NULL, &dc.col[i])) { -+ if (!wlloadcolor(i, NULL, &dc.col[i])) { - if (colorname[i]) - die("Could not allocate color '%s'\n", colorname[i]); - else - die("Could not allocate color %d\n", i); - } -- loaded = 1; - } - - int --xsetcolorname(int x, const char *name) -+wlsetcolorname(int x, const char *name) - { -- Color ncolor; -+ uint32_t color; - - if (!BETWEEN(x, 0, LEN(dc.col))) - return 1; - -- -- if (!xloadcolor(x, name, &ncolor)) -+ if (!wlloadcolor(x, name, &color)) - return 1; - -- XftColorFree(xw.dpy, xw.vis, xw.cmap, &dc.col[x]); -- dc.col[x] = ncolor; -+ dc.col[x] = color; - - return 0; - } - --/* -- * Absolute coordinates. -- */ --void --xclear(int x1, int y1, int x2, int y2) -+static void wlloadcursor(void) - { -- XftDrawRect(xw.draw, -- &dc.col[IS_SET(MODE_REVERSE)? defaultfg : defaultbg], -- x1, y1, x2-x1, y2-y1); --} -+ char *names[] = { mouseshape, "xterm", "ibeam", "text" }; -+ int i; - --void --xhints(void) --{ -- XClassHint class = {opt_name ? opt_name : termname, -- opt_class ? opt_class : termname}; -- XWMHints wm = {.flags = InputHint, .input = 1}; -- XSizeHints *sizeh = NULL; -- -- sizeh = XAllocSizeHints(); -- -- sizeh->flags = PSize | PResizeInc | PBaseSize; -- sizeh->height = xw.h; -- sizeh->width = xw.w; -- sizeh->height_inc = xw.ch; -- sizeh->width_inc = xw.cw; -- sizeh->base_height = 2 * borderpx; -- sizeh->base_width = 2 * borderpx; -- if (xw.isfixed) { -- sizeh->flags |= PMaxSize | PMinSize; -- sizeh->min_width = sizeh->max_width = xw.w; -- sizeh->min_height = sizeh->max_height = xw.h; -- } -- if (xw.gm & (XValue|YValue)) { -- sizeh->flags |= USPosition | PWinGravity; -- sizeh->x = xw.l; -- sizeh->y = xw.t; -- sizeh->win_gravity = xgeommasktogravity(xw.gm); -- } -+ cursor.theme = wl_cursor_theme_load(NULL, 32, wl.shm); -+ -+ for (i = 0; !cursor.cursor && i < LEN(names); i++) -+ cursor.cursor = wl_cursor_theme_get_cursor(cursor.theme, names[i]); - -- XSetWMProperties(xw.dpy, xw.win, NULL, NULL, NULL, 0, sizeh, &wm, -- &class); -- XFree(sizeh); -+ cursor.surface = wl_compositor_create_surface(wl.cmp); - } - --int --xgeommasktogravity(int mask) -+/* -+ * Absolute coordinates. -+ */ -+void -+wlclear(int x1, int y1, int x2, int y2) - { -- switch (mask & (XNegative|YNegative)) { -- case 0: -- return NorthWestGravity; -- case XNegative: -- return NorthEastGravity; -- case YNegative: -- return SouthWestGravity; -- } -+ uint32_t color = dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg]; - -- return SouthEastGravity; -+ wld_fill_rectangle(wld.renderer, color, x1, y1, x2 - x1, y2 - y1); - } - - int --xloadfont(Font *f, FcPattern *pattern) -+wlloadfont(Font *f, FcPattern *pattern) - { - FcPattern *match; - FcResult result; -- XGlyphInfo extents; -+ struct wld_extents extents; - int wantattr, haveattr; - -- match = XftFontMatch(xw.dpy, xw.scr, pattern, &result); -+ match = FcFontMatch(NULL, pattern, &result); - if (!match) - return 1; - -- if (!(f->match = XftFontOpenPattern(xw.dpy, match))) { -+ if (!(f->match = wld_font_open_pattern(wld.fontctx, match))) { - FcPatternDestroy(match); - return 1; - } - -- if ((XftPatternGetInteger(pattern, "slant", 0, &wantattr) == -- XftResultMatch)) { -+ if ((FcPatternGetInteger(pattern, "slant", 0, &wantattr) == -+ FcResultMatch)) { - /* - * Check if xft was unable to find a font with the appropriate - * slant but gave us one anyway. Try to mitigate. - */ -- if ((XftPatternGetInteger(f->match->pattern, "slant", 0, -- &haveattr) != XftResultMatch) || haveattr < wantattr) { -+ if ((FcPatternGetInteger(match, "slant", 0, -+ &haveattr) != FcResultMatch) || haveattr < wantattr) { - f->badslant = 1; - fputs("st: font slant does not match\n", stderr); - } - } - -- if ((XftPatternGetInteger(pattern, "weight", 0, &wantattr) == -- XftResultMatch)) { -- if ((XftPatternGetInteger(f->match->pattern, "weight", 0, -- &haveattr) != XftResultMatch) || haveattr != wantattr) { -+ if ((FcPatternGetInteger(pattern, "weight", 0, &wantattr) == -+ FcResultMatch)) { -+ if ((FcPatternGetInteger(match, "weight", 0, -+ &haveattr) != FcResultMatch) || haveattr != wantattr) { - f->badweight = 1; - fputs("st: font weight does not match\n", stderr); - } - } - -- XftTextExtentsUtf8(xw.dpy, f->match, -- (const FcChar8 *) ascii_printable, -- strlen(ascii_printable), &extents); -+ -+ wld_font_text_extents(f->match, ascii_printable, &extents); - - f->set = NULL; - f->pattern = FcPatternDuplicate(pattern); -@@ -3419,23 +3204,24 @@ xloadfont(Font *f, FcPattern *pattern) - f->ascent = f->match->ascent; - f->descent = f->match->descent; - f->lbearing = 0; -- f->rbearing = f->match->max_advance_width; -+ f->rbearing = f->match->max_advance; - - f->height = f->ascent + f->descent; -- f->width = DIVCEIL(extents.xOff, strlen(ascii_printable)); -+ f->width = DIVCEIL(extents.advance, strlen(ascii_printable)); - - return 0; - } - - void --xloadfonts(char *fontstr, double fontsize) -+wlloadfonts(char *fontstr, double fontsize) - { - FcPattern *pattern; - double fontval; - float ceilf(float); - - if (fontstr[0] == '-') { -- pattern = XftXlfdParse(fontstr, False, False); -+ /* XXX: need XftXlfdParse equivalent */ -+ pattern = NULL; - } else { - pattern = FcNameParse((FcChar8 *)fontstr); - } -@@ -3466,14 +3252,17 @@ xloadfonts(char *fontstr, double fontsize) - defaultfontsize = usedfontsize; - } - -- if (xloadfont(&dc.font, pattern)) -+ FcConfigSubstitute(0, pattern, FcMatchPattern); -+ FcDefaultSubstitute(pattern); -+ -+ if (wlloadfont(&dc.font, pattern)) - die("st: can't open font %s\n", fontstr); - - if (usedfontsize < 0) { -- FcPatternGetDouble(dc.font.match->pattern, -+ FcPatternGetDouble(dc.font.pattern, - FC_PIXEL_SIZE, 0, &fontval); - FcPatternAddDouble(pattern, FC_PIXEL_SIZE, fontval); -- if (xloadfont(&dc.font, pattern)) -+ if (wlloadfont(&dc.font, pattern)) - die("st: can't open font %s\n", fontstr); - usedfontsize = fontval; - if (fontsize == 0) -@@ -3481,279 +3270,331 @@ xloadfonts(char *fontstr, double fontsize) - } - - /* Setting character width and height. */ -- xw.cw = ceilf(dc.font.width * cwscale); -- xw.ch = ceilf(dc.font.height * chscale); -+ wl.cw = ceilf(dc.font.width * cwscale); -+ wl.ch = ceilf(dc.font.height * chscale); - - FcPatternDel(pattern, FC_SLANT); - FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC); -- if (xloadfont(&dc.ifont, pattern)) -+ if (wlloadfont(&dc.ifont, pattern)) - die("st: can't open font %s\n", fontstr); - - FcPatternDel(pattern, FC_WEIGHT); - FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD); -- if (xloadfont(&dc.ibfont, pattern)) -+ if (wlloadfont(&dc.ibfont, pattern)) - die("st: can't open font %s\n", fontstr); - - FcPatternDel(pattern, FC_SLANT); - FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN); -- if (xloadfont(&dc.bfont, pattern)) -+ if (wlloadfont(&dc.bfont, pattern)) - die("st: can't open font %s\n", fontstr); - - FcPatternDestroy(pattern); - } - - void --xunloadfont(Font *f) -+wlunloadfont(Font *f) - { -- XftFontClose(xw.dpy, f->match); -+ wld_font_close(f->match); - FcPatternDestroy(f->pattern); - if (f->set) - FcFontSetDestroy(f->set); - } - - void --xunloadfonts(void) -+wlunloadfonts(void) - { - /* Free the loaded fonts in the font cache. */ - while (frclen > 0) -- XftFontClose(xw.dpy, frc[--frclen].font); -+ wld_font_close(frc[--frclen].font); - -- xunloadfont(&dc.font); -- xunloadfont(&dc.bfont); -- xunloadfont(&dc.ifont); -- xunloadfont(&dc.ibfont); -+ wlunloadfont(&dc.font); -+ wlunloadfont(&dc.bfont); -+ wlunloadfont(&dc.ifont); -+ wlunloadfont(&dc.ibfont); - } - - void --xzoom(const Arg *arg) -+wlzoom(const Arg *arg) - { - Arg larg; - - larg.f = usedfontsize + arg->f; -- xzoomabs(&larg); -+ wlzoomabs(&larg); - } - - void --xzoomabs(const Arg *arg) -+wlzoomabs(const Arg *arg) - { -- xunloadfonts(); -- xloadfonts(usedfont, arg->f); -+ wlunloadfonts(); -+ wlloadfonts(usedfont, arg->f); - cresize(0, 0); - ttyresize(); - redraw(); -- xhints(); -+ /* XXX: Should the window size be updated here because wayland doesn't -+ * have a notion of hints? -+ * xhints(); -+ */ - } - - void --xzoomreset(const Arg *arg) -+wlzoomreset(const Arg *arg) - { - Arg larg; - - if (defaultfontsize > 0) { - larg.f = defaultfontsize; -- xzoomabs(&larg); -+ wlzoomabs(&larg); - } - } - - void --xinit(void) -+wlinit(void) - { -- XGCValues gcvalues; -- Cursor cursor; -- Window parent; -- pid_t thispid = getpid(); -- XColor xmousefg, xmousebg; -+ struct wl_registry *registry; - -- if (!(xw.dpy = XOpenDisplay(NULL))) -+ if (!(wl.dpy = wl_display_connect(NULL))) - die("Can't open display\n"); -- xw.scr = XDefaultScreen(xw.dpy); -- xw.vis = XDefaultVisual(xw.dpy, xw.scr); -+ -+ registry = wl_display_get_registry(wl.dpy); -+ wl_registry_add_listener(registry, ®listener, NULL); -+ wld.ctx = wld_wayland_create_context(wl.dpy, WLD_ANY); -+ wld.renderer = wld_create_renderer(wld.ctx); -+ -+ wl_display_roundtrip(wl.dpy); -+ -+ if (!wl.shm) -+ die("Display has no SHM\n"); -+ if (!wl.seat) -+ die("Display has no seat\n"); -+ if (!wl.datadevmanager) -+ die("Display has no data device manager\n"); -+ -+ wl.keyboard = wl_seat_get_keyboard(wl.seat); -+ wl_keyboard_add_listener(wl.keyboard, &kbdlistener, NULL); -+ wl.pointer = wl_seat_get_pointer(wl.seat); -+ wl_pointer_add_listener(wl.pointer, &ptrlistener, NULL); -+ wl.datadev = wl_data_device_manager_get_data_device(wl.datadevmanager, -+ wl.seat); -+ wl_data_device_add_listener(wl.datadev, &datadevlistener, NULL); - - /* font */ - if (!FcInit()) - die("Could not init fontconfig.\n"); - - usedfont = (opt_font == NULL)? font : opt_font; -- xloadfonts(usedfont, 0); -- -- /* colors */ -- xw.cmap = XDefaultColormap(xw.dpy, xw.scr); -- xloadcols(); -- -- /* adjust fixed window geometry */ -- xw.w = 2 * borderpx + term.col * xw.cw; -- xw.h = 2 * borderpx + term.row * xw.ch; -- if (xw.gm & XNegative) -- xw.l += DisplayWidth(xw.dpy, xw.scr) - xw.w - 2; -- if (xw.gm & YNegative) -- xw.t += DisplayHeight(xw.dpy, xw.scr) - xw.h - 2; -- -- /* Events */ -- xw.attrs.background_pixel = dc.col[defaultbg].pixel; -- xw.attrs.border_pixel = dc.col[defaultbg].pixel; -- xw.attrs.bit_gravity = NorthWestGravity; -- xw.attrs.event_mask = FocusChangeMask | KeyPressMask -- | ExposureMask | VisibilityChangeMask | StructureNotifyMask -- | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; -- xw.attrs.colormap = xw.cmap; -- -- if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) -- parent = XRootWindow(xw.dpy, xw.scr); -- xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, -- xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, -- xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity -- | CWEventMask | CWColormap, &xw.attrs); -- -- memset(&gcvalues, 0, sizeof(gcvalues)); -- gcvalues.graphics_exposures = False; -- dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, -- &gcvalues); -- xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, -- DefaultDepth(xw.dpy, xw.scr)); -- XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); -- XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); -- -- /* Xft rendering context */ -- xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); -- -- /* input methods */ -- if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { -- XSetLocaleModifiers("@im=local"); -- if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { -- XSetLocaleModifiers("@im="); -- if ((xw.xim = XOpenIM(xw.dpy, -- NULL, NULL, NULL)) == NULL) { -- die("XOpenIM failed. Could not open input" -- " device.\n"); -- } -- } -- } -- xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing -- | XIMStatusNothing, XNClientWindow, xw.win, -- XNFocusWindow, xw.win, NULL); -- if (xw.xic == NULL) -- die("XCreateIC failed. Could not obtain input method.\n"); -- -- /* white cursor, black outline */ -- cursor = XCreateFontCursor(xw.dpy, mouseshape); -- XDefineCursor(xw.dpy, xw.win, cursor); -- -- if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) { -- xmousefg.red = 0xffff; -- xmousefg.green = 0xffff; -- xmousefg.blue = 0xffff; -- } -+ wld.fontctx = wld_font_create_context(); -+ wlloadfonts(usedfont, 0); - -- if (XParseColor(xw.dpy, xw.cmap, colorname[mousebg], &xmousebg) == 0) { -- xmousebg.red = 0x0000; -- xmousebg.green = 0x0000; -- xmousebg.blue = 0x0000; -- } -+ wlloadcols(); -+ wlloadcursor(); - -- XRecolorCursor(xw.dpy, cursor, &xmousefg, &xmousebg); -+ wl.vis = 0; -+ wl.h = 2 * borderpx + term.row * wl.ch; -+ wl.w = 2 * borderpx + term.col * wl.cw; - -- xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False); -- xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False); -- xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", False); -- XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1); -+ wl.surface = wl_compositor_create_surface(wl.cmp); -+ wl_surface_add_listener(wl.surface, &surflistener, NULL); - -- xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False); -- XChangeProperty(xw.dpy, xw.win, xw.netwmpid, XA_CARDINAL, 32, -- PropModeReplace, (uchar *)&thispid, 1); -+ wl.xdgsurface = xdg_shell_get_xdg_surface(wl.shell, wl.surface); -+ xdg_surface_add_listener(wl.xdgsurface, &xdgsurflistener, NULL); -+ xdg_surface_set_app_id(wl.xdgsurface, opt_class ? opt_class : termname); - -- xresettitle(); -- XMapWindow(xw.dpy, xw.win); -- xhints(); -- XSync(xw.dpy, False); -+ wl.xkb.ctx = xkb_context_new(0); -+ wlresettitle(); - } - --int --xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y) -+/* -+ * TODO: Implement something like XftDrawGlyphFontSpec in wld, and then apply a -+ * similar patch to ae1923d27533ff46400d93765e971558201ca1ee -+ */ -+ -+void -+wldraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) - { -- float winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch, xp, yp; -- ushort mode, prevmode = USHRT_MAX; -+ int winx = borderpx + x * wl.cw, winy = borderpx + y * wl.ch, -+ width = charlen * wl.cw, xp, i; -+ int frcflags, charexists; -+ int u8fl, u8fblen, u8cblen, doesexist; -+ char *u8c, *u8fs; -+ Rune unicodep; - Font *font = &dc.font; -- int frcflags = FRC_NORMAL; -- float runewidth = xw.cw; -- Rune rune; -- FT_UInt glyphidx; - FcResult fcres; - FcPattern *fcpattern, *fontpattern; - FcFontSet *fcsets[] = { NULL }; - FcCharSet *fccharset; -- int i, f, numspecs = 0; -+ uint32_t fg, bg, temp; -+ int oneatatime; - -- for (i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) { -- /* Fetch rune and mode for current glyph. */ -- rune = glyphs[i].u; -- mode = glyphs[i].mode; -+ frcflags = FRC_NORMAL; - -- /* Skip dummy wide-character spacing. */ -- if (mode == ATTR_WDUMMY) -- continue; -+ /* Fallback on color display for attributes not supported by the font */ -+ if (base.mode & ATTR_ITALIC && base.mode & ATTR_BOLD) { -+ if (dc.ibfont.badslant || dc.ibfont.badweight) -+ base.fg = defaultattr; -+ font = &dc.ibfont; -+ frcflags = FRC_ITALICBOLD; -+ } else if (base.mode & ATTR_ITALIC) { -+ if (dc.ifont.badslant) -+ base.fg = defaultattr; -+ font = &dc.ifont; -+ frcflags = FRC_ITALIC; -+ } else if (base.mode & ATTR_BOLD) { -+ if (dc.bfont.badweight) -+ base.fg = defaultattr; -+ font = &dc.ifont; -+ frcflags = FRC_BOLD; -+ } - -- /* Determine font for glyph if different from previous glyph. */ -- if (prevmode != mode) { -- prevmode = mode; -- font = &dc.font; -- frcflags = FRC_NORMAL; -- runewidth = xw.cw * ((mode & ATTR_WIDE) ? 2.0f : 1.0f); -- if ((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) { -- font = &dc.ibfont; -- frcflags = FRC_ITALICBOLD; -- } else if (mode & ATTR_ITALIC) { -- font = &dc.ifont; -- frcflags = FRC_ITALIC; -- } else if (mode & ATTR_BOLD) { -- font = &dc.bfont; -- frcflags = FRC_BOLD; -- } -- yp = winy + font->ascent; -+ if (IS_TRUECOL(base.fg)) { -+ fg = base.fg | 0xff000000; -+ } else { -+ fg = dc.col[base.fg]; -+ } -+ -+ if (IS_TRUECOL(base.bg)) { -+ bg = base.bg | 0xff000000; -+ } else { -+ bg = dc.col[base.bg]; -+ } -+ -+ if (base.mode & ATTR_BOLD) { -+ /* -+ * change basic system colors [0-7] -+ * to bright system colors [8-15] -+ */ -+ if (BETWEEN(base.fg, 0, 7) && !(base.mode & ATTR_FAINT)) -+ fg = dc.col[base.fg + 8]; -+ -+ if (base.mode & ATTR_ITALIC) { -+ font = &dc.ibfont; -+ frcflags = FRC_ITALICBOLD; -+ } else { -+ font = &dc.bfont; -+ frcflags = FRC_BOLD; - } -+ } - -- /* Lookup character index with default font. */ -- glyphidx = XftCharIndex(xw.dpy, font->match, rune); -- if (glyphidx) { -- specs[numspecs].font = font->match; -- specs[numspecs].glyph = glyphidx; -- specs[numspecs].x = (short)xp; -- specs[numspecs].y = (short)yp; -- xp += runewidth; -- numspecs++; -- continue; -+ if (IS_SET(MODE_REVERSE)) { -+ if (fg == dc.col[defaultfg]) { -+ fg = dc.col[defaultbg]; -+ } else { -+ fg = ~(fg & 0xffffff); - } - -- /* Fallback on font cache, search the font cache for match. */ -- for (f = 0; f < frclen; f++) { -- glyphidx = XftCharIndex(xw.dpy, frc[f].font, rune); -- /* Everything correct. */ -- if (glyphidx && frc[f].flags == frcflags) -- break; -- /* We got a default font for a not found glyph. */ -- if (!glyphidx && frc[f].flags == frcflags -- && frc[f].unicodep == rune) { -- break; -- } -+ if (bg == dc.col[defaultbg]) { -+ bg = dc.col[defaultfg]; -+ } else { -+ bg = ~(bg & 0xffffff); - } -+ } - -- /* Nothing was found. Use fontconfig to find matching font. */ -- if (f >= frclen) { -- if (!font->set) -- font->set = FcFontSort(0, font->pattern, -- 1, 0, &fcres); -- fcsets[0] = font->set; -+ if (base.mode & ATTR_REVERSE) { -+ temp = fg; -+ fg = bg; -+ bg = temp; -+ } - -- /* -- * Nothing was found in the cache. Now use -- * some dozen of Fontconfig calls to get the -- * font for one single character. -- * -- * Xft and fontconfig are design failures. -- */ -- fcpattern = FcPatternDuplicate(font->pattern); -- fccharset = FcCharSetCreate(); -+ if (base.mode & ATTR_FAINT && !(base.mode & ATTR_BOLD)) { -+ fg = (fg & (0xff << 24)) -+ | ((((fg >> 16) & 0xff) / 2) << 16) -+ | ((((fg >> 8) & 0xff) / 2) << 8) -+ | ((fg & 0xff) / 2); -+ } - -- FcCharSetAddChar(fccharset, rune); -+ if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK) -+ fg = bg; -+ -+ if (base.mode & ATTR_INVISIBLE) -+ fg = bg; -+ -+ /* Intelligent cleaning up of the borders. */ -+ if (x == 0) { -+ wlclear(0, (y == 0)? 0 : winy, borderpx, -+ ((y >= term.row-1)? wl.h : (winy + wl.ch))); -+ } -+ if (x + charlen >= term.col) { -+ wlclear(winx + width, (y == 0)? 0 : winy, wl.w, -+ ((y >= term.row-1)? wl.h : (winy + wl.ch))); -+ } -+ if (y == 0) -+ wlclear(winx, 0, winx + width, borderpx); -+ if (y == term.row-1) -+ wlclear(winx, winy + wl.ch, winx + width, wl.h); -+ -+ /* Clean up the region we want to draw to. */ -+ wld_fill_rectangle(wld.renderer, bg, winx, winy, width, wl.ch); -+ -+ for (xp = winx; bytelen > 0;) { -+ /* -+ * Search for the range in the to be printed string of glyphs -+ * that are in the main font. Then print that range. If -+ * some glyph is found that is not in the font, do the -+ * fallback dance. -+ */ -+ u8fs = s; -+ u8fblen = 0; -+ u8fl = 0; -+ oneatatime = font->width != wl.cw; -+ for (;;) { -+ u8c = s; -+ u8cblen = utf8decode(s, &unicodep, UTF_SIZ); -+ s += u8cblen; -+ bytelen -= u8cblen; -+ -+ doesexist = wld_font_ensure_char(font->match, unicodep); -+ if (doesexist) { -+ u8fl++; -+ u8fblen += u8cblen; -+ if (!oneatatime && bytelen > 0) -+ continue; -+ } -+ -+ if (u8fl > 0) { -+ wld_draw_text(wld.renderer, -+ font->match, fg, xp, -+ winy + font->ascent, -+ u8fs, u8fblen, NULL); -+ xp += wl.cw * u8fl; -+ } -+ break; -+ } -+ if (doesexist) { -+ if (oneatatime) -+ continue; -+ break; -+ } -+ -+ /* Search the font cache. */ -+ for (i = 0; i < frclen; i++) { -+ charexists = wld_font_ensure_char(frc[i].font, unicodep); -+ /* Everything correct. */ -+ if (charexists && frc[i].flags == frcflags) -+ break; -+ /* We got a default font for a not found glyph. */ -+ if (!charexists && frc[i].flags == frcflags \ -+ && frc[i].unicodep == unicodep) { -+ break; -+ } -+ } -+ -+ /* Nothing was found. */ -+ if (i >= frclen) { -+ if (!font->set) -+ font->set = FcFontSort(0, font->pattern, -+ 1, 0, &fcres); -+ fcsets[0] = font->set; -+ -+ /* -+ * Nothing was found in the cache. Now use -+ * some dozen of Fontconfig calls to get the -+ * font for one single character. -+ * -+ * Xft and fontconfig are design failures. -+ */ -+ fcpattern = FcPatternDuplicate(font->pattern); -+ fccharset = FcCharSetCreate(); -+ -+ FcCharSetAddChar(fccharset, unicodep); - FcPatternAddCharSet(fcpattern, FC_CHARSET, - fccharset); - FcPatternAddBool(fcpattern, FC_SCALABLE, 1); -@@ -3770,186 +3611,58 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x - */ - if (frclen >= LEN(frc)) { - frclen = LEN(frc) - 1; -- XftFontClose(xw.dpy, frc[frclen].font); -+ wld_font_close(frc[frclen].font); - frc[frclen].unicodep = 0; - } - -- frc[frclen].font = XftFontOpenPattern(xw.dpy, -+ frc[frclen].font = wld_font_open_pattern(wld.fontctx, - fontpattern); - frc[frclen].flags = frcflags; -- frc[frclen].unicodep = rune; -- -- glyphidx = XftCharIndex(xw.dpy, frc[frclen].font, rune); -+ frc[frclen].unicodep = unicodep; - -- f = frclen; -+ i = frclen; - frclen++; - - FcPatternDestroy(fcpattern); - FcCharSetDestroy(fccharset); - } - -- specs[numspecs].font = frc[f].font; -- specs[numspecs].glyph = glyphidx; -- specs[numspecs].x = (short)xp; -- specs[numspecs].y = (short)yp; -- xp += runewidth; -- numspecs++; -- } -- -- return numspecs; --} -- --void --xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) --{ -- int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1); -- int winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch, -- width = charlen * xw.cw; -- Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; -- XRenderColor colfg, colbg; -- XRectangle r; -+ wld_draw_text(wld.renderer, frc[i].font, fg, -+ xp, winy + frc[i].font->ascent, -+ u8c, u8cblen, NULL); - -- /* Fallback on color display for attributes not supported by the font */ -- if (base.mode & ATTR_ITALIC && base.mode & ATTR_BOLD) { -- if (dc.ibfont.badslant || dc.ibfont.badweight) -- base.fg = defaultattr; -- } else if ((base.mode & ATTR_ITALIC && dc.ifont.badslant) || -- (base.mode & ATTR_BOLD && dc.bfont.badweight)) { -- base.fg = defaultattr; -+ xp += wl.cw * wcwidth(unicodep); - } - -- if (IS_TRUECOL(base.fg)) { -- colfg.alpha = 0xffff; -- colfg.red = TRUERED(base.fg); -- colfg.green = TRUEGREEN(base.fg); -- colfg.blue = TRUEBLUE(base.fg); -- XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &truefg); -- fg = &truefg; -- } else { -- fg = &dc.col[base.fg]; -- } -- -- if (IS_TRUECOL(base.bg)) { -- colbg.alpha = 0xffff; -- colbg.green = TRUEGREEN(base.bg); -- colbg.red = TRUERED(base.bg); -- colbg.blue = TRUEBLUE(base.bg); -- XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, &truebg); -- bg = &truebg; -- } else { -- bg = &dc.col[base.bg]; -- } -- -- /* Change basic system colors [0-7] to bright system colors [8-15] */ -- if ((base.mode & ATTR_BOLD_FAINT) == ATTR_BOLD && BETWEEN(base.fg, 0, 7)) -- fg = &dc.col[base.fg + 8]; -- -- if (IS_SET(MODE_REVERSE)) { -- if (fg == &dc.col[defaultfg]) { -- fg = &dc.col[defaultbg]; -- } else { -- colfg.red = ~fg->color.red; -- colfg.green = ~fg->color.green; -- colfg.blue = ~fg->color.blue; -- colfg.alpha = fg->color.alpha; -- XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, -- &revfg); -- fg = &revfg; -- } -- -- if (bg == &dc.col[defaultbg]) { -- bg = &dc.col[defaultfg]; -- } else { -- colbg.red = ~bg->color.red; -- colbg.green = ~bg->color.green; -- colbg.blue = ~bg->color.blue; -- colbg.alpha = bg->color.alpha; -- XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, -- &revbg); -- bg = &revbg; -- } -- } -- -- if (base.mode & ATTR_REVERSE) { -- temp = fg; -- fg = bg; -- bg = temp; -- } -- -- if ((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) { -- colfg.red = fg->color.red / 2; -- colfg.green = fg->color.green / 2; -- colfg.blue = fg->color.blue / 2; -- XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &revfg); -- fg = &revfg; -- } -- -- if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK) -- fg = bg; -- -- if (base.mode & ATTR_INVISIBLE) -- fg = bg; -- -- /* Intelligent cleaning up of the borders. */ -- if (x == 0) { -- xclear(0, (y == 0)? 0 : winy, borderpx, -- winy + xw.ch + ((y >= term.row-1)? xw.h : 0)); -- } -- if (x + charlen >= term.col) { -- xclear(winx + width, (y == 0)? 0 : winy, xw.w, -- ((y >= term.row-1)? xw.h : (winy + xw.ch))); -- } -- if (y == 0) -- xclear(winx, 0, winx + width, borderpx); -- if (y == term.row-1) -- xclear(winx, winy + xw.ch, winx + width, xw.h); -- -- /* Clean up the region we want to draw to. */ -- XftDrawRect(xw.draw, bg, winx, winy, width, xw.ch); -- -- /* Set the clip region because Xft is sometimes dirty. */ -- r.x = 0; -- r.y = 0; -- r.height = xw.ch; -- r.width = width; -- XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1); -- -- /* Render the glyphs. */ -- XftDrawGlyphFontSpec(xw.draw, fg, specs, len); -- -- /* Render underline and strikethrough. */ - if (base.mode & ATTR_UNDERLINE) { -- XftDrawRect(xw.draw, fg, winx, winy + dc.font.ascent + 1, -+ wld_fill_rectangle(wld.renderer, fg, winx, winy + font->ascent + 1, - width, 1); - } - - if (base.mode & ATTR_STRUCK) { -- XftDrawRect(xw.draw, fg, winx, winy + 2 * dc.font.ascent / 3, -+ wld_fill_rectangle(wld.renderer, fg, winx, winy + 2 * font->ascent / 3, - width, 1); - } -- -- /* Reset clip to none. */ -- XftDrawSetClip(xw.draw, 0); - } - - void --xdrawglyph(Glyph g, int x, int y) -+wldrawglyph(Glyph g, int x, int y) - { -- int numspecs; -- XftGlyphFontSpec spec; -+ static char buf[UTF_SIZ]; -+ size_t len = utf8encode(g.u, buf); -+ int width = g.mode & ATTR_WIDE ? 2 : 1; - -- numspecs = xmakeglyphfontspecs(&spec, &g, 1, x, y); -- xdrawglyphfontspecs(&spec, g, numspecs, x, y); -+ wldraws(buf, g, x, y, width, len); - } - - void --xdrawcursor(void) -+wldrawcursor(void) - { - static int oldx = 0, oldy = 0; - int curx; - Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og; - int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN); -- Color drawcol; -+ uint32_t drawcol; - - LIMIT(oldx, 0, term.col-1); - LIMIT(oldy, 0, term.row-1); -@@ -3966,7 +3679,11 @@ xdrawcursor(void) - og = term.line[oldy][oldx]; - if (ena_sel && selected(oldx, oldy)) - og.mode ^= ATTR_REVERSE; -- xdrawglyph(og, oldx, oldy); -+ wldrawglyph(og, oldx, oldy); -+ if (oldx != curx || oldy != term.c.y) { -+ wl_surface_damage(wl.surface, borderpx + oldx * wl.cw, -+ borderpx + oldy * wl.ch, wl.cw, wl.ch); -+ } - - g.u = term.line[term.c.y][term.c.x].u; - -@@ -3997,198 +3714,152 @@ xdrawcursor(void) - return; - - /* draw the new one */ -- if (xw.state & WIN_FOCUSED) { -- switch (xw.cursor) { -+ if (wl.state & WIN_FOCUSED) { -+ switch (wl.cursor) { - case 7: /* st extension: snowman */ - utf8decode("☃", &g.u, UTF_SIZ); - case 0: /* Blinking Block */ - case 1: /* Blinking Block (Default) */ - case 2: /* Steady Block */ - g.mode |= term.line[term.c.y][curx].mode & ATTR_WIDE; -- xdrawglyph(g, term.c.x, term.c.y); -+ wldrawglyph(g, term.c.x, term.c.y); - break; - case 3: /* Blinking Underline */ - case 4: /* Steady Underline */ -- XftDrawRect(xw.draw, &drawcol, -- borderpx + curx * xw.cw, -- borderpx + (term.c.y + 1) * xw.ch - \ -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + curx * wl.cw, -+ borderpx + (term.c.y + 1) * wl.ch - \ - cursorthickness, -- xw.cw, cursorthickness); -+ wl.cw, cursorthickness); - break; - case 5: /* Blinking bar */ - case 6: /* Steady bar */ -- XftDrawRect(xw.draw, &drawcol, -- borderpx + curx * xw.cw, -- borderpx + term.c.y * xw.ch, -- cursorthickness, xw.ch); -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + curx * wl.cw, -+ borderpx + term.c.y * wl.ch, -+ cursorthickness, wl.ch); - break; - } - } else { -- XftDrawRect(xw.draw, &drawcol, -- borderpx + curx * xw.cw, -- borderpx + term.c.y * xw.ch, -- xw.cw - 1, 1); -- XftDrawRect(xw.draw, &drawcol, -- borderpx + curx * xw.cw, -- borderpx + term.c.y * xw.ch, -- 1, xw.ch - 1); -- XftDrawRect(xw.draw, &drawcol, -- borderpx + (curx + 1) * xw.cw - 1, -- borderpx + term.c.y * xw.ch, -- 1, xw.ch - 1); -- XftDrawRect(xw.draw, &drawcol, -- borderpx + curx * xw.cw, -- borderpx + (term.c.y + 1) * xw.ch - 1, -- xw.cw, 1); -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + curx * wl.cw, -+ borderpx + term.c.y * wl.ch, -+ wl.cw - 1, 1); -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + curx * wl.cw, -+ borderpx + term.c.y * wl.ch, -+ 1, wl.ch - 1); -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + (curx + 1) * wl.cw - 1, -+ borderpx + term.c.y * wl.ch, -+ 1, wl.ch - 1); -+ wld_fill_rectangle(wld.renderer, drawcol, -+ borderpx + curx * wl.cw, -+ borderpx + (term.c.y + 1) * wl.ch - 1, -+ wl.cw, 1); - } -+ wl_surface_damage(wl.surface, borderpx + curx * wl.cw, -+ borderpx + term.c.y * wl.ch, wl.cw, wl.ch); - oldx = curx, oldy = term.c.y; - } - -- - void --xsettitle(char *p) -+wlsettitle(char *title) - { -- XTextProperty prop; -- -- Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, -- &prop); -- XSetWMName(xw.dpy, xw.win, &prop); -- XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmname); -- XFree(prop.value); -+ xdg_surface_set_title(wl.xdgsurface, title); - } - - void --xresettitle(void) -+wlresettitle(void) - { -- xsettitle(opt_title ? opt_title : "st"); -+ wlsettitle(opt_title ? opt_title : "st"); - } - - void - redraw(void) - { - tfulldirt(); -- draw(); - } - - void - draw(void) - { -+ int y, y0; -+ -+ for (y = 0; y <= term.bot; ++y) { -+ if (!term.dirty[y]) -+ continue; -+ for (y0 = y; y <= term.bot && term.dirty[y]; ++y); -+ wl_surface_damage(wl.surface, 0, borderpx + y0 * wl.ch, -+ wl.w, (y - y0) * wl.ch); -+ } -+ -+ wld_set_target_buffer(wld.renderer, wld.buffer); - drawregion(0, 0, term.col, term.row); -- XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, -- xw.h, 0, 0); -- XSetForeground(xw.dpy, dc.gc, -- dc.col[IS_SET(MODE_REVERSE)? -- defaultfg : defaultbg].pixel); -+ wl.framecb = wl_surface_frame(wl.surface); -+ wl_callback_add_listener(wl.framecb, &framelistener, NULL); -+ wld_flush(wld.renderer); -+ wl_surface_attach(wl.surface, wl.buffer, 0, 0); -+ wl_surface_commit(wl.surface); -+ /* need to wait to destroy the old buffer until we commit the new -+ * buffer */ -+ if (wld.oldbuffer) { -+ wld_buffer_unreference(wld.oldbuffer); -+ wld.oldbuffer = 0; -+ } -+ needdraw = false; - } - - void - drawregion(int x1, int y1, int x2, int y2) - { -- int i, x, y, ox, numspecs; -+ int ic, ib, x, y, ox; - Glyph base, new; -- XftGlyphFontSpec *specs; -+ char buf[DRAW_BUF_SIZ]; - int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN); - -- if (!(xw.state & WIN_VISIBLE)) -- return; -- - for (y = y1; y < y2; y++) { - if (!term.dirty[y]) - continue; - - term.dirty[y] = 0; -- -- specs = term.specbuf; -- numspecs = xmakeglyphfontspecs(specs, &term.line[y][x1], x2 - x1, x1, y); -- -- i = ox = 0; -- for (x = x1; x < x2 && i < numspecs; x++) { -+ base = term.line[y][0]; -+ ic = ib = ox = 0; -+ for (x = x1; x < x2; x++) { - new = term.line[y][x]; - if (new.mode == ATTR_WDUMMY) - continue; - if (ena_sel && selected(x, y)) - new.mode ^= ATTR_REVERSE; -- if (i > 0 && ATTRCMP(base, new)) { -- xdrawglyphfontspecs(specs, base, i, ox, y); -- specs += i; -- numspecs -= i; -- i = 0; -+ if (ib > 0 && (ATTRCMP(base, new) -+ || ib >= DRAW_BUF_SIZ-UTF_SIZ)) { -+ wldraws(buf, base, ox, y, ic, ib); -+ ic = ib = 0; - } -- if (i == 0) { -+ if (ib == 0) { - ox = x; - base = new; - } -- i++; -+ -+ ib += utf8encode(new.u, buf+ib); -+ ic += (new.mode & ATTR_WIDE)? 2 : 1; - } -- if (i > 0) -- xdrawglyphfontspecs(specs, base, i, ox, y); -+ if (ib > 0) -+ wldraws(buf, base, ox, y, ic, ib); - } -- xdrawcursor(); --} -- --void --expose(XEvent *ev) --{ -- redraw(); --} -- --void --visibility(XEvent *ev) --{ -- XVisibilityEvent *e = &ev->xvisibility; -- -- MODBIT(xw.state, e->state != VisibilityFullyObscured, WIN_VISIBLE); -+ wldrawcursor(); - } - - void --unmap(XEvent *ev) -+wlseturgency(int add) - { -- xw.state &= ~WIN_VISIBLE; --} -- --void --xsetpointermotion(int set) --{ -- MODBIT(xw.attrs.event_mask, set, PointerMotionMask); -- XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs); --} -- --void --xseturgency(int add) --{ -- XWMHints *h = XGetWMHints(xw.dpy, xw.win); -- -- MODBIT(h->flags, add, XUrgencyHint); -- XSetWMHints(xw.dpy, xw.win, h); -- XFree(h); --} -- --void --focus(XEvent *ev) --{ -- XFocusChangeEvent *e = &ev->xfocus; -- -- if (e->mode == NotifyGrab) -- return; -- -- if (ev->type == FocusIn) { -- XSetICFocus(xw.xic); -- xw.state |= WIN_FOCUSED; -- xseturgency(0); -- if (IS_SET(MODE_FOCUS)) -- ttywrite("\033[I", 3); -- } else { -- XUnsetICFocus(xw.xic); -- xw.state &= ~WIN_FOCUSED; -- if (IS_SET(MODE_FOCUS)) -- ttywrite("\033[O", 3); -- } -+ /* XXX: no urgency equivalent yet in wayland */ - } - - int - match(uint mask, uint state) - { -- return mask == XK_ANY_MOD || mask == (state & ~ignoremod); -+ return mask == MOD_MASK_ANY || mask == (state & ~(ignoremod)); - } - - void -@@ -4198,7 +3869,7 @@ numlock(const Arg *dummy) - } - - char* --kmap(KeySym k, uint state) -+kmap(xkb_keysym_t k, uint state) - { - Key *kp; - int i; -@@ -4238,38 +3909,179 @@ kmap(KeySym k, uint state) - } - - void --kpress(XEvent *ev) -+cresize(int width, int height) -+{ -+ int col, row; -+ -+ if (width != 0) -+ wl.w = width; -+ if (height != 0) -+ wl.h = height; -+ -+ col = (wl.w - 2 * borderpx) / wl.cw; -+ row = (wl.h - 2 * borderpx) / wl.ch; -+ -+ tresize(col, row); -+ wlresize(col, row); -+} -+ -+void -+regglobal(void *data, struct wl_registry *registry, uint32_t name, -+ const char *interface, uint32_t version) -+{ -+ if (strcmp(interface, "wl_compositor") == 0) { -+ wl.cmp = wl_registry_bind(registry, name, -+ &wl_compositor_interface, 3); -+ } else if (strcmp(interface, "xdg_shell") == 0) { -+ wl.shell = wl_registry_bind(registry, name, -+ &xdg_shell_interface, 1); -+ xdg_shell_add_listener(wl.shell, &xdgshelllistener, NULL); -+ xdg_shell_use_unstable_version(wl.shell, -+ XDG_SHELL_VERSION_CURRENT); -+ } else if (strcmp(interface, "wl_shm") == 0) { -+ wl.shm = wl_registry_bind(registry, name, &wl_shm_interface, 1); -+ } else if (strcmp(interface, "wl_seat") == 0) { -+ wl.seat = wl_registry_bind(registry, name, -+ &wl_seat_interface, 4); -+ } else if (strcmp(interface, "wl_data_device_manager") == 0) { -+ wl.datadevmanager = wl_registry_bind(registry, name, -+ &wl_data_device_manager_interface, 1); -+ } else if (strcmp(interface, "wl_output") == 0) { -+ /* bind to outputs so we can get surface enter events */ -+ wl_registry_bind(registry, name, &wl_output_interface, 2); -+ } -+} -+ -+void -+regglobalremove(void *data, struct wl_registry *registry, uint32_t name) -+{ -+} -+ -+void -+surfenter(void *data, struct wl_surface *surface, struct wl_output *output) -+{ -+ wl.vis++; -+ if (!(wl.state & WIN_VISIBLE)) -+ wl.state |= WIN_VISIBLE; -+} -+ -+void -+surfleave(void *data, struct wl_surface *surface, struct wl_output *output) -+{ -+ if (--wl.vis == 0) -+ wl.state &= ~WIN_VISIBLE; -+} -+ -+void -+framedone(void *data, struct wl_callback *callback, uint32_t msecs) -+{ -+ wl_callback_destroy(callback); -+ wl.framecb = NULL; -+ if (needdraw && wl.state & WIN_VISIBLE) { -+ draw(); -+ } -+} -+ -+void -+kbdkeymap(void *data, struct wl_keyboard *keyboard, uint32_t format, int32_t fd, -+ uint32_t size) - { -- XKeyEvent *e = &ev->xkey; -- KeySym ksym; -- char buf[32], *customkey; -+ char *string; -+ -+ if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { -+ close(fd); -+ return; -+ } -+ -+ string = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); -+ -+ if (string == MAP_FAILED) { -+ close(fd); -+ return; -+ } -+ -+ wl.xkb.keymap = xkb_keymap_new_from_string(wl.xkb.ctx, string, -+ XKB_KEYMAP_FORMAT_TEXT_V1, 0); -+ munmap(string, size); -+ close(fd); -+ wl.xkb.state = xkb_state_new(wl.xkb.keymap); -+ -+ wl.xkb.ctrl = xkb_keymap_mod_get_index(wl.xkb.keymap, XKB_MOD_NAME_CTRL); -+ wl.xkb.alt = xkb_keymap_mod_get_index(wl.xkb.keymap, XKB_MOD_NAME_ALT); -+ wl.xkb.shift = xkb_keymap_mod_get_index(wl.xkb.keymap, XKB_MOD_NAME_SHIFT); -+ wl.xkb.logo = xkb_keymap_mod_get_index(wl.xkb.keymap, XKB_MOD_NAME_LOGO); -+ -+ wl.xkb.mods = 0; -+} -+ -+void -+kbdenter(void *data, struct wl_keyboard *keyboard, uint32_t serial, -+ struct wl_surface *surface, struct wl_array *keys) -+{ -+ wl.state |= WIN_FOCUSED; -+ if (IS_SET(MODE_FOCUS)) -+ ttywrite("\033[I", 3); -+ /* need to redraw the cursor */ -+ needdraw = true; -+} -+ -+void -+kbdleave(void *data, struct wl_keyboard *keyboard, uint32_t serial, -+ struct wl_surface *surface) -+{ -+ /* selection offers are invalidated when we lose keyboard focus */ -+ wl.seloffer = NULL; -+ wl.state &= ~WIN_FOCUSED; -+ if (IS_SET(MODE_FOCUS)) -+ ttywrite("\033[O", 3); -+ /* need to redraw the cursor */ -+ needdraw = true; -+ /* disable key repeat */ -+ repeat.len = 0; -+} -+ -+void -+kbdkey(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, -+ uint32_t key, uint32_t state) -+{ -+ xkb_keysym_t ksym; -+ char buf[32], *str; - int len; - Rune c; -- Status status; - Shortcut *bp; - - if (IS_SET(MODE_KBDLOCK)) - return; - -- len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status); -+ if (state == WL_KEYBOARD_KEY_STATE_RELEASED) { -+ if (repeat.key == key) -+ repeat.len = 0; -+ return; -+ } -+ -+ ksym = xkb_state_key_get_one_sym(wl.xkb.state, key + 8); -+ len = xkb_keysym_to_utf8(ksym, buf, sizeof buf); -+ if (len > 0) -+ --len; -+ - /* 1. shortcuts */ - for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) { -- if (ksym == bp->keysym && match(bp->mod, e->state)) { -+ if (ksym == bp->keysym && match(bp->mod, wl.xkb.mods)) { - bp->func(&(bp->arg)); - return; - } - } - - /* 2. custom keys from config.h */ -- if ((customkey = kmap(ksym, e->state))) { -- ttysend(customkey, strlen(customkey)); -- return; -+ if ((str = kmap(ksym, wl.xkb.mods))) { -+ len = strlen(str); -+ goto send; - } - - /* 3. composed string from input method */ - if (len == 0) - return; -- if (len == 1 && e->state & Mod1Mask) { -+ if (len == 1 && wl.xkb.mods & MOD_MASK_ALT) { - if (IS_SET(MODE_8BIT)) { - if (*buf < 0177) { - c = *buf | 0x80; -@@ -4281,101 +4093,327 @@ kpress(XEvent *ev) - len = 2; - } - } -- ttysend(buf, len); -+ /* convert character to control character */ -+ else if (len == 1 && wl.xkb.mods & MOD_MASK_CTRL) { -+ if ((*buf >= '@' && *buf < '\177') || *buf == ' ') -+ *buf &= 0x1F; -+ else if (*buf == '2') *buf = '\000'; -+ else if (*buf >= '3' && *buf <= '7') -+ *buf -= ('3' - '\033'); -+ else if (*buf == '8') *buf = '\177'; -+ else if (*buf == '/') *buf = '_' & 0x1F; -+ } -+ -+ str = buf; -+ -+send: -+ memcpy(repeat.str, str, len); -+ repeat.key = key; -+ repeat.len = len; -+ repeat.started = false; -+ clock_gettime(CLOCK_MONOTONIC, &repeat.last); -+ ttysend(str, len); -+} -+ -+void -+kbdmodifiers(void *data, struct wl_keyboard *keyboard, uint32_t serial, -+ uint32_t dep, uint32_t lat, uint32_t lck, uint32_t group) -+{ -+ xkb_mod_mask_t mod_mask; -+ -+ xkb_state_update_mask(wl.xkb.state, dep, lat, lck, group, 0, 0); -+ -+ mod_mask = xkb_state_serialize_mods(wl.xkb.state, XKB_STATE_MODS_EFFECTIVE); -+ wl.xkb.mods = 0; -+ -+ if (mod_mask & (1 << wl.xkb.ctrl)) -+ wl.xkb.mods |= MOD_MASK_CTRL; -+ if (mod_mask & (1 << wl.xkb.alt)) -+ wl.xkb.mods |= MOD_MASK_ALT; -+ if (mod_mask & (1 << wl.xkb.shift)) -+ wl.xkb.mods |= MOD_MASK_SHIFT; -+ if (mod_mask & (1 << wl.xkb.logo)) -+ wl.xkb.mods |= MOD_MASK_LOGO; - } - -+void -+kbdrepeatinfo(void *data, struct wl_keyboard *keyboard, int32_t rate, -+ int32_t delay) -+{ -+ keyrepeatdelay = delay; -+ keyrepeatinterval = 1000 / rate; -+} - - void --cmessage(XEvent *e) -+ptrenter(void *data, struct wl_pointer *pointer, uint32_t serial, -+ struct wl_surface *surface, wl_fixed_t x, wl_fixed_t y) - { -- /* -- * See xembed specs -- * http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html -- */ -- if (e->xclient.message_type == xw.xembed && e->xclient.format == 32) { -- if (e->xclient.data.l[1] == XEMBED_FOCUS_IN) { -- xw.state |= WIN_FOCUSED; -- xseturgency(0); -- } else if (e->xclient.data.l[1] == XEMBED_FOCUS_OUT) { -- xw.state &= ~WIN_FOCUSED; -+ struct wl_cursor_image *img = cursor.cursor->images[0]; -+ struct wl_buffer *buffer; -+ -+ wl_pointer_set_cursor(pointer, serial, cursor.surface, -+ img->hotspot_x, img->hotspot_y); -+ buffer = wl_cursor_image_get_buffer(img); -+ wl_surface_attach(cursor.surface, buffer, 0, 0); -+ wl_surface_damage(cursor.surface, 0, 0, img->width, img->height); -+ wl_surface_commit(cursor.surface); -+} -+ -+void -+ptrleave(void *data, struct wl_pointer *pointer, uint32_t serial, -+ struct wl_surface *surface) -+{ -+} -+ -+void -+ptrmotion(void *data, struct wl_pointer * pointer, uint32_t serial, -+ wl_fixed_t x, wl_fixed_t y) -+{ -+ int oldey, oldex, oldsby, oldsey; -+ -+ if (IS_SET(MODE_MOUSE)) { -+ wlmousereportmotion(x, y); -+ return; -+ } -+ -+ wl.px = wl_fixed_to_int(x); -+ wl.py = wl_fixed_to_int(y); -+ -+ if (!sel.mode) -+ return; -+ -+ sel.mode = SEL_READY; -+ oldey = sel.oe.y; -+ oldex = sel.oe.x; -+ oldsby = sel.nb.y; -+ oldsey = sel.ne.y; -+ getbuttoninfo(); -+ -+ if (oldey != sel.oe.y || oldex != sel.oe.x) -+ tsetdirt(MIN(sel.nb.y, oldsby), MAX(sel.ne.y, oldsey)); -+} -+ -+void -+ptrbutton(void * data, struct wl_pointer * pointer, uint32_t serial, -+ uint32_t time, uint32_t button, uint32_t state) -+{ -+ MouseShortcut *ms; -+ -+ if (IS_SET(MODE_MOUSE) && !(wl.xkb.mods & forceselmod)) { -+ wlmousereportbutton(button, state); -+ return; -+ } -+ -+ switch (state) { -+ case WL_POINTER_BUTTON_STATE_RELEASED: -+ if (button == BTN_MIDDLE) { -+ selpaste(NULL); -+ } else if (button == BTN_LEFT) { -+ if (sel.mode == SEL_READY) { -+ getbuttoninfo(); -+ selcopy(serial); -+ } else -+ selclear(); -+ sel.mode = SEL_IDLE; -+ tsetdirt(sel.nb.y, sel.ne.y); -+ } -+ break; -+ -+ case WL_POINTER_BUTTON_STATE_PRESSED: -+ for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { -+ if (button == ms->b && match(ms->mask, wl.xkb.mods)) { -+ ttysend(ms->s, strlen(ms->s)); -+ return; -+ } - } -- } else if (e->xclient.data.l[0] == xw.wmdeletewin) { -- /* Send SIGHUP to shell */ -- kill(pid, SIGHUP); -- exit(0); -+ -+ if (button == BTN_LEFT) { -+ /* Clear previous selection, logically and visually. */ -+ selclear(); -+ sel.mode = SEL_EMPTY; -+ sel.type = SEL_REGULAR; -+ sel.oe.x = sel.ob.x = x2col(wl.px); -+ sel.oe.y = sel.ob.y = y2row(wl.py); -+ -+ /* -+ * If the user clicks below predefined timeouts -+ * specific snapping behaviour is exposed. -+ */ -+ if (time - sel.tclick2 <= tripleclicktimeout) { -+ sel.snap = SNAP_LINE; -+ } else if (time - sel.tclick1 <= doubleclicktimeout) { -+ sel.snap = SNAP_WORD; -+ } else { -+ sel.snap = 0; -+ } -+ selnormalize(); -+ -+ if (sel.snap != 0) -+ sel.mode = SEL_READY; -+ tsetdirt(sel.nb.y, sel.ne.y); -+ sel.tclick2 = sel.tclick1; -+ sel.tclick1 = time; -+ } -+ break; - } - } - - void --cresize(int width, int height) -+ptraxis(void * data, struct wl_pointer * pointer, uint32_t time, uint32_t axis, -+ wl_fixed_t value) - { -- int col, row; -+ Axiskey *ak; -+ int dir = value > 0 ? +1 : -1; - -- if (width != 0) -- xw.w = width; -- if (height != 0) -- xw.h = height; -+ if (IS_SET(MODE_MOUSE) && !(wl.xkb.mods & forceselmod)) { -+ wlmousereportaxis(axis, value); -+ return; -+ } - -- col = (xw.w - 2 * borderpx) / xw.cw; -- row = (xw.h - 2 * borderpx) / xw.ch; -+ for (ak = ashortcuts; ak < ashortcuts + LEN(ashortcuts); ak++) { -+ if (axis == ak->axis && dir == ak->dir -+ && match(ak->mask, wl.xkb.mods)) { -+ ttysend(ak->s, strlen(ak->s)); -+ return; -+ } -+ } -+} - -- tresize(col, row); -- xresize(col, row); -+void -+xdgshellping(void *data, struct xdg_shell *shell, uint32_t serial) -+{ -+ xdg_shell_pong(shell, serial); - } - - void --resize(XEvent *e) -+xdgsurfconfigure(void *data, struct xdg_surface *surf, int32_t w, int32_t h, -+ struct wl_array *states, uint32_t serial) - { -- if (e->xconfigure.width == xw.w && e->xconfigure.height == xw.h) -+ xdg_surface_ack_configure(surf, serial); -+ if (w == wl.w && h == wl.h) - return; -+ cresize(w, h); -+ if (wl.configured) -+ ttyresize(); -+ else -+ wl.configured = true; -+} - -- cresize(e->xconfigure.width, e->xconfigure.height); -- ttyresize(); -+void -+xdgsurfclose(void *data, struct xdg_surface *surf) -+{ -+ /* Send SIGHUP to shell */ -+ kill(pid, SIGHUP); -+ exit(0); -+} -+ -+void -+datadevoffer(void *data, struct wl_data_device *datadev, -+ struct wl_data_offer *offer) -+{ -+ wl_data_offer_add_listener(offer, &dataofferlistener, NULL); -+} -+ -+void -+datadeventer(void *data, struct wl_data_device *datadev, uint32_t serial, -+ struct wl_surface *surf, wl_fixed_t x, wl_fixed_t y, -+ struct wl_data_offer *offer) -+{ -+} -+ -+void -+datadevleave(void *data, struct wl_data_device *datadev) -+{ -+} -+ -+void -+datadevmotion(void *data, struct wl_data_device *datadev, uint32_t time, -+ wl_fixed_t x, wl_fixed_t y) -+{ -+} -+ -+void -+datadevdrop(void *data, struct wl_data_device *datadev) -+{ -+} -+ -+void -+datadevselection(void *data, struct wl_data_device *datadev, -+ struct wl_data_offer *offer) -+{ -+ if (offer && (uintptr_t) wl_data_offer_get_user_data(offer) == 1) -+ wl.seloffer = offer; -+ else -+ wl.seloffer = NULL; -+} -+ -+void -+dataofferoffer(void *data, struct wl_data_offer *offer, const char *mimetype) -+{ -+ /* mark the offer as usable if it supports plain text */ -+ if (strncmp(mimetype, "text/plain", 10) == 0) -+ wl_data_offer_set_user_data(offer, (void *)(uintptr_t) 1); -+} -+ -+void -+datasrctarget(void *data, struct wl_data_source *source, const char *mimetype) -+{ -+} -+ -+void -+datasrcsend(void *data, struct wl_data_source *source, const char *mimetype, -+ int32_t fd) -+{ -+ char *buf = sel.primary; -+ int len = strlen(sel.primary); -+ ssize_t ret; -+ while ((ret = write(fd, buf, MIN(len, BUFSIZ))) > 0) { -+ len -= ret; -+ buf += ret; -+ } -+ close(fd); -+} -+ -+void -+datasrccancelled(void *data, struct wl_data_source *source) -+{ -+ if (sel.source == source) { -+ sel.source = NULL; -+ selclear(); -+ } -+ wl_data_source_destroy(source); - } - - void - run(void) - { -- XEvent ev; -- int w = xw.w, h = xw.h; - fd_set rfd; -- int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0; -+ int wlfd = wl_display_get_fd(wl.dpy), blinkset = 0; - struct timespec drawtimeout, *tv = NULL, now, last, lastblink; -- long deltatime; -- -- /* Waiting for window mapping */ -- do { -- XNextEvent(xw.dpy, &ev); -- /* -- * This XFilterEvent call is required because of XOpenIM. It -- * does filter out the key event and some client message for -- * the input method too. -- */ -- if (XFilterEvent(&ev, None)) -- continue; -- if (ev.type == ConfigureNotify) { -- w = ev.xconfigure.width; -- h = ev.xconfigure.height; -- } -- } while (ev.type != MapNotify); -+ ulong msecs; - -- cresize(w, h); -+ /* Look for initial configure. */ -+ wl_display_roundtrip(wl.dpy); -+ if (!wl.configured) -+ cresize(wl.w, wl.h); - ttynew(); - ttyresize(); -+ draw(); - - clock_gettime(CLOCK_MONOTONIC, &last); - lastblink = last; - -- for (xev = actionfps;;) { -+ for (;;) { - FD_ZERO(&rfd); - FD_SET(cmdfd, &rfd); -- FD_SET(xfd, &rfd); -+ FD_SET(wlfd, &rfd); - -- if (pselect(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, tv, NULL) < 0) { -+ if (pselect(MAX(wlfd, cmdfd)+1, &rfd, NULL, NULL, tv, NULL) < 0) { - if (errno == EINTR) - continue; - die("select failed: %s\n", strerror(errno)); - } -+ - if (FD_ISSET(cmdfd, &rfd)) { - ttyread(); - if (blinktimeout) { -@@ -4385,60 +4423,54 @@ run(void) - } - } - -- if (FD_ISSET(xfd, &rfd)) -- xev = actionfps; -+ if (FD_ISSET(wlfd, &rfd)) { -+ if (wl_display_dispatch(wl.dpy) == -1) -+ die("Connection error\n"); -+ } - - clock_gettime(CLOCK_MONOTONIC, &now); -- drawtimeout.tv_sec = 0; -- drawtimeout.tv_nsec = (1000 * 1E6)/ xfps; -- tv = &drawtimeout; -- -- dodraw = 0; -- if (blinktimeout && TIMEDIFF(now, lastblink) > blinktimeout) { -- tsetdirtattr(ATTR_BLINK); -- term.mode ^= MODE_BLINK; -- lastblink = now; -- dodraw = 1; -+ msecs = -1; -+ -+ if (blinkset && blinktimeout) { -+ if (TIMEDIFF(now, lastblink) >= blinktimeout) { -+ tsetdirtattr(ATTR_BLINK); -+ term.mode ^= MODE_BLINK; -+ lastblink = now; -+ } else { -+ msecs = MIN(msecs, blinktimeout - \ -+ TIMEDIFF(now, lastblink)); -+ } - } -- deltatime = TIMEDIFF(now, last); -- if (deltatime > 1000 / (xev ? xfps : actionfps)) { -- dodraw = 1; -- last = now; -+ if (repeat.len > 0) { -+ if (TIMEDIFF(now, repeat.last) >= \ -+ (repeat.started ? keyrepeatinterval : \ -+ keyrepeatdelay)) { -+ repeat.started = true; -+ repeat.last = now; -+ ttysend(repeat.str, repeat.len); -+ } else { -+ msecs = MIN(msecs, (repeat.started ? \ -+ keyrepeatinterval : keyrepeatdelay) - \ -+ TIMEDIFF(now, repeat.last)); -+ } - } - -- if (dodraw) { -- while (XPending(xw.dpy)) { -- XNextEvent(xw.dpy, &ev); -- if (XFilterEvent(&ev, None)) -- continue; -- if (handler[ev.type]) -- (handler[ev.type])(&ev); -+ if (needdraw && wl.state & WIN_VISIBLE) { -+ if (!wl.framecb) { -+ draw(); - } -+ } - -- draw(); -- XFlush(xw.dpy); -- -- if (xev && !FD_ISSET(xfd, &rfd)) -- xev--; -- if (!FD_ISSET(cmdfd, &rfd) && !FD_ISSET(xfd, &rfd)) { -- if (blinkset) { -- if (TIMEDIFF(now, lastblink) \ -- > blinktimeout) { -- drawtimeout.tv_nsec = 1000; -- } else { -- drawtimeout.tv_nsec = (1E6 * \ -- (blinktimeout - \ -- TIMEDIFF(now, -- lastblink))); -- } -- drawtimeout.tv_sec = \ -- drawtimeout.tv_nsec / 1E9; -- drawtimeout.tv_nsec %= (long)1E9; -- } else { -- tv = NULL; -- } -- } -+ if (msecs == -1) { -+ tv = NULL; -+ } else { -+ drawtimeout.tv_nsec = 1E6 * msecs; -+ drawtimeout.tv_sec = 0; -+ tv = &drawtimeout; - } -+ -+ wl_display_dispatch_pending(wl.dpy); -+ wl_display_flush(wl.dpy); - } - } - -@@ -4458,11 +4490,7 @@ usage(void) - int - main(int argc, char *argv[]) - { -- uint cols = 80, rows = 24; -- -- xw.l = xw.t = 0; -- xw.isfixed = False; -- xw.cursor = cursorshape; -+ wl.cursor = cursorshape; - - ARGBEGIN { - case 'a': -@@ -4478,13 +4506,6 @@ main(int argc, char *argv[]) - case 'f': - opt_font = EARGF(usage()); - break; -- case 'g': -- xw.gm = XParseGeometry(EARGF(usage()), -- &xw.l, &xw.t, &cols, &rows); -- break; -- case 'i': -- xw.isfixed = 1; -- break; - case 'o': - opt_io = EARGF(usage()); - break; -@@ -4516,9 +4537,8 @@ run: - opt_title = basename(xstrdup(argv[0])); - } - setlocale(LC_CTYPE, ""); -- XSetLocaleModifiers(""); -- tnew(MAX(cols, 1), MAX(rows, 1)); -- xinit(); -+ tnew(80, 24); -+ wlinit(); - selinit(); - run(); - --- -2.10.2 - diff --git a/desktop/st/rev b/desktop/st/rev deleted file mode 100644 index 0cfbf088..00000000 --- a/desktop/st/rev +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/desktop/st/src b/desktop/st/src deleted file mode 160000 -Subproject 740ada1447a0bf9eb7db327d9433fa0b96e0a4d diff --git a/desktop/swc/.gitignore b/desktop/swc/.gitignore deleted file mode 100644 index 012dc66e..00000000 --- a/desktop/swc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/tools.ninja diff --git a/desktop/swc/gen.rc b/desktop/swc/gen.rc deleted file mode 100644 index fe3823b4..00000000 --- a/desktop/swc/gen.rc +++ /dev/null @@ -1,96 +0,0 @@ -cflags\ - -D _GNU_SOURCE\ - -D 'screen_new=swc__screen_new' \ - -D 'remove_resource=swc__remove_resource' \ - -isystem desktop/fontconfig/src\ - -isystem desktop/libdrm/src/include/drm\ - -isystem desktop/libdrm/src\ - -isystem desktop/libevdev/src\ - -isystem desktop/libxkbcommon/src\ - -isystem '$builddir'/desktop/pixman/include\ - -isystem '$builddir'/desktop/wayland-protocols/include\ - -isystem '$builddir'/desktop/wayland/include\ - -isystem '$builddir'/desktop/wld/include\ - -I '$outdir' \ - -I '$outdir'/include\ - -I '$srcdir' - -cc launch/protocol.c - -waylandproto protocol/swc.xml\ - include/swc-^(client server)^-protocol.h swc-protocol.c - -build '$outdir'/include/swc.h copy '$srcdir'/libswc/swc.h -phony headers '$outdir'/include/^(swc.h swc-^(client server)^-protocol.h) - -build '$outdir'/wayland-drm-server-protocol.h copy '$builddir'/desktop/wld/protocol/wayland-drm-server-protocol.h - -{ - include 'toolchain/$host_toolchain.ninja' - exe convert_font cursor/convert_font.c -} >tools.ninja -subninja '$dir'/tools.ninja - -rule convert_font '$outdir/convert_font $in $out.tmp 2>/dev/null && mv $out.tmp $out' -build '$outdir'/cursor/cursor_data.h convert_font '$srcdir'/cursor/cursor.pcf '|' '$outdir'/convert_font - -phony deps\ - '$outdir'/^(\ - wayland-drm-server-protocol.h\ - include/swc-server-protocol.h\ - cursor/cursor_data.h\ - )\ - '$builddir'/desktop/^(fontconfig libdrm libevdev libxkbcommon)^/fetch.stamp\ - desktop/^(pixman wayland wayland-protocols wld)^/headers - -lib libswc.a -d '$dir'/deps\ - libswc/^(\ - bindings.c\ - compositor.c\ - cursor_plane.c\ - data.c\ - data_device.c\ - data_device_manager.c\ - drm.c\ - evdev_device.c\ - input.c\ - keyboard.c\ - launch.c\ - mode.c\ - output.c\ - panel.c\ - panel_manager.c\ - pointer.c\ - primary_plane.c\ - region.c\ - screen.c\ - seat.c\ - shell.c\ - shell_surface.c\ - shm.c\ - subcompositor.c\ - subsurface.c\ - surface.c\ - swc.c\ - util.c\ - view.c\ - wayland_buffer.c\ - window.c\ - xdg_popup.c\ - xdg_shell.c\ - xdg_surface.c\ - )\ - launch/protocol.c.o\ - swc-protocol.c.o\ - '$builddir'/^(\ - desktop/libevdev/libevdev.a\ - desktop/libxkbcommon/libxkbcommon.a\ - desktop/wayland-protocols/xdg-shell-unstable-v5-protocol.c.o\ - desktop/wayland/libwayland-server.a.d\ - desktop/wld/libwld.a.d\ - ) - -exe swc-launch launch/^(launch.c protocol.c.o) '$builddir'/desktop/libdrm/libdrm.a -file bin/swc-launch '$outdir'/swc-launch 4755 - -fetch git diff --git a/desktop/swc/rev b/desktop/swc/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/swc/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/swc/src b/desktop/swc/src deleted file mode 160000 -Subproject ee0825dd7b49a5ac65d5e94bdad159ca77481bc diff --git a/desktop/terminus-font/.gitignore b/desktop/terminus-font/.gitignore deleted file mode 100644 index 272eca1a..00000000 --- a/desktop/terminus-font/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/src -/terminus-font-4.40.tar.gz diff --git a/desktop/terminus-font/gen.rc b/desktop/terminus-font/gen.rc deleted file mode 100644 index c8ee5d4c..00000000 --- a/desktop/terminus-font/gen.rc +++ /dev/null @@ -1,13 +0,0 @@ -fn ucstox11 { - maps='$srcdir'/uni/^(x11gr.uni 10646-1.uni) - build '$outdir'/$1 awk $maps '|' '$dir'/ucstoany.awk '$srcdir'/$1 - with expr '-v font=$srcdir/'$1' -v charset=ISO10646-1 -f $dir/ucstoany.awk' - file share/fonts/terminus/$1 '$outdir'/$1 644 -} - -for(size in (12 14 16 20 22 24 28 32)) { - for(font in ter-u$size^(n b)^.bdf) - ucstox11 $font -} - -fetch curl diff --git a/desktop/terminus-font/rev b/desktop/terminus-font/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/terminus-font/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/terminus-font/sha256 b/desktop/terminus-font/sha256 deleted file mode 100644 index d624c615..00000000 --- a/desktop/terminus-font/sha256 +++ /dev/null @@ -1 +0,0 @@ -64f52c24d3f1c1e39f21e6c43077a9be3e21d4384f176f5766c00558ba670711 terminus-font-4.40.tar.gz diff --git a/desktop/terminus-font/ucstoany.awk b/desktop/terminus-font/ucstoany.awk deleted file mode 100644 index 24145a2e..00000000 --- a/desktop/terminus-font/ucstoany.awk +++ /dev/null @@ -1,55 +0,0 @@ -{ - d = 0 - for (i = 1; i <= length($0); ++i) - d = d * 16 + index("0123456789ABCDEF", substr($0, i, 1)) - 1 - unimap[unimap_len++] = d -} - -function readchar() { - name = $2 - buf = "" - while (getline < font) { - if ($1 == "ENDCHAR") - break - if ($1 == "ENCODING") - encoding = $2 - else - buf = buf $0 "\n" - } - names[encoding] = name - chars[encoding] = buf -} - -function printchar(i, encoding) { - if (!(encoding in names)) - exit(1) - print "STARTCHAR", names[encoding] - print "ENCODING", i - printf "%s", chars[encoding] - print "ENDCHAR" -} - -END { - while (getline < font) { - if ($1 == "STARTCHAR") { - readchar() - break - } - if ($1 == "CHARS") - $2 = unimap_len - else if ($1 == "FONT") - sub(/-[^-]*-[^-]*$/, "-" charset, $2) - print - } - while (getline < font) { - if ($1 == "STARTCHAR") - readchar() - else - tail = tail $0 "\n" - } - for (i = 0; i < unimap_len; ++i) { - encoding = unimap[i] - printchar(i >= 32 ? encoding : i, encoding) - } - printf "%s", tail -} diff --git a/desktop/terminus-font/url b/desktop/terminus-font/url deleted file mode 100644 index 9f934a3f..00000000 --- a/desktop/terminus-font/url +++ /dev/null @@ -1 +0,0 @@ -url = "http://downloads.sourceforge.net/project/terminus-font/terminus-font-4.40/terminus-font-4.40.tar.gz" diff --git a/desktop/velox/gen.rc b/desktop/velox/gen.rc deleted file mode 100644 index f0217c44..00000000 --- a/desktop/velox/gen.rc +++ /dev/null @@ -1,42 +0,0 @@ -cflags\ - -D 'VELOX_LIBEXEC=''"/libexec/velox"''' \ - -isystem desktop/fontconfig/src\ - -isystem desktop/libxkbcommon/src\ - -isystem '$builddir'/desktop/pixman/include\ - -isystem '$builddir'/desktop/swc/include\ - -isystem '$builddir'/desktop/wayland/include\ - -isystem '$builddir'/desktop/wld/include\ - -I '$outdir' - -waylandproto protocol/velox.xml\ - protocol/velox-^(client server)^-protocol.h velox-protocol.c -build '$outdir'/protocol/swc-client-protocol.h copy '$builddir'/desktop/swc/include/swc-client-protocol.h - -phony deps\ - '$outdir'/protocol/^(swc-client velox-^(client server))^-protocol.h\ - '$builddir'/desktop/^(fontconfig libxkbcommon swc)^/fetch.stamp\ - desktop/^(pixman swc wayland wld)^/headers - -exe velox -d '$dir'/deps \ - config.c\ - layout.c\ - screen.c\ - tag.c\ - util.c\ - velox.c\ - velox-protocol.c.o\ - window.c\ - '$builddir'/^(\ - desktop/swc/libswc.a.d\ - desktop/wayland/libwayland-server.a.d\ - ) -file bin/velox '$outdir'/velox 755 - -exe status_bar -d '$dir'/deps clients/status_bar.c velox-protocol.c.o '$builddir'/^(\ - desktop/swc/swc-protocol.c.o\ - desktop/wld/libwld.a.d\ - desktop/wayland/libwayland-client.a.d\ -) -file libexec/velox/status_bar '$outdir'/status_bar 755 - -fetch git diff --git a/desktop/velox/rev b/desktop/velox/rev deleted file mode 100644 index 0cfbf088..00000000 --- a/desktop/velox/rev +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/desktop/velox/src b/desktop/velox/src deleted file mode 160000 -Subproject a95412ddddfe6640bf14e8524e591c41cf769fc diff --git a/desktop/wayland-protocols/gen.rc b/desktop/wayland-protocols/gen.rc deleted file mode 100644 index f47de2ab..00000000 --- a/desktop/wayland-protocols/gen.rc +++ /dev/null @@ -1,10 +0,0 @@ -cflags\ - -I '$builddir'/desktop/wayland/include - -waylandproto unstable/xdg-shell/xdg-shell-unstable-v5.xml\ - include/xdg-shell-unstable-v5-^(client server)^-protocol.h\ - xdg-shell-unstable-v5-protocol.c - -phony headers '$outdir'/include/xdg-shell-unstable-v5-^(client server)^-protocol.h - -fetch git diff --git a/desktop/wayland-protocols/rev b/desktop/wayland-protocols/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/wayland-protocols/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/wayland-protocols/src b/desktop/wayland-protocols/src deleted file mode 160000 -Subproject 2e541a36deff5f2e16e25e27f7f93d26822eecc diff --git a/desktop/wayland/config.h b/desktop/wayland/config.h deleted file mode 100644 index c59dbe65..00000000 --- a/desktop/wayland/config.h +++ /dev/null @@ -1,17 +0,0 @@ -#include <config-posix.h> - -#define HAVE_ACCEPT4 1 -/* #undef HAVE_EXECINFO_H */ -/* #undef HAVE_EXPAT_H */ -/* #undef HAVE_LIBXML */ -#define HAVE_MEMORY_H 1 -#define HAVE_MKOSTEMP 1 -#define LT_OBJDIR ".libs/" -#define PACKAGE "wayland" -#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=wayland&version=1.11.0" -#define PACKAGE_NAME "wayland" -#define PACKAGE_STRING "wayland 1.12.0" -#define PACKAGE_TARNAME "wayland" -#define PACKAGE_URL "http://wayland.freedesktop.org/" -#define PACKAGE_VERSION "1.12.0" -#define VERSION "1.12.0" diff --git a/desktop/wayland/gen.rc b/desktop/wayland/gen.rc deleted file mode 100644 index c96a2e3f..00000000 --- a/desktop/wayland/gen.rc +++ /dev/null @@ -1,59 +0,0 @@ -cflags\ - -isystem '$builddir'/desktop/expat/include\ - -isystem '$builddir'/desktop/libffi/include\ - -I include\ - -I '$dir' \ - -I '$outdir'/include\ - -I '$srcdir' \ - -I '$srcdir'/src - -build '$outdir'/include/wayland-version.h sed '$srcdir'/src/wayland-version.h.in ; exprs=(\ - -e s,@WAYLAND_VERSION_MAJOR@,1,\ - -e s,@WAYLAND_VERSION_MINOR@,11,\ - -e s,@WAYLAND_VERSION_MICRO@,0,\ - -e s,@WAYLAND_VERSION@,1.11.0,\ -) with expr $"exprs - -cc src/wayland-util.c -cc src/wayland-os.c -cc src/connection.c '||' desktop/libffi/headers - -exe wayland-scanner -d 'desktop/expat/headers $outdir/include/wayland-version.h' \ - src/^(scanner.c wayland-util.c.o)\ - '$builddir'/desktop/expat/libexpat.a - -waylandproto protocol/wayland.xml\ - include/wayland-^(client server)^-protocol.h\ - src/wayland-protocol.c - -hdrs=wayland-^(client-core client egl-core egl server-core server util)^.h -for(hdr in $hdrs) build '$outdir'/include/$hdr copy '$srcdir'/src/$hdr -build '$outdir'/include/wayland-cursor.h copy '$srcdir'/cursor/wayland-cursor.h - -phony headers '$outdir'/include/^($hdrs wayland-^(cursor.h (client server)^-protocol.h version.h)) - -lib libwayland-server.a -d '$dir'/headers src/^(\ - connection.c.o\ - wayland-os.c.o\ - wayland-protocol.c.o\ - wayland-server.c\ - wayland-shm.c\ - wayland-util.c.o\ - event-loop.c\ -) '$builddir'/desktop/libffi/libffi.a - -lib libwayland-client.a -d '$dir'/headers src/^(\ - connection.c.o\ - wayland-os.c.o\ - wayland-protocol.c.o\ - wayland-client.c\ - wayland-util.c.o\ -) '$builddir'/desktop/libffi/libffi.a - -lib libwayland-cursor.a -d '$dir'/headers cursor/^(\ - os-compatibility.c\ - wayland-cursor.c\ - xcursor.c\ -) libwayland-client.a.d - -fetch git diff --git a/desktop/wayland/rev b/desktop/wayland/rev deleted file mode 100644 index 0cfbf088..00000000 --- a/desktop/wayland/rev +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/desktop/wayland/src b/desktop/wayland/src deleted file mode 160000 -Subproject a0d76ffda5c3483e5e67fed19b7d8afe8966782 diff --git a/desktop/wld/gen.rc b/desktop/wld/gen.rc deleted file mode 100644 index 85f6a180..00000000 --- a/desktop/wld/gen.rc +++ /dev/null @@ -1,68 +0,0 @@ -cflags=(\ - -D WITH_WAYLAND_SHM\ - -D WITH_WAYLAND_DRM\ - -isystem desktop/fontconfig/src\ - -isystem desktop/freetype/src/include\ - -isystem desktop/libdrm/src\ - -isystem desktop/libdrm/src/include/drm\ - -isystem '$builddir'/desktop/pixman/include\ - -isystem '$builddir'/desktop/wayland/include\ - -I '$outdir' \ -) - -hdrs=(drm.h pixman.h wayland.h wld.h) -for(hdr in $hdrs) { - build '$outdir'/include/wld/$hdr copy '$srcdir'/$hdr - file include/wld/$hdr '$srcdir'/$hdr 644 -} -phony headers '$outdir'/include/wld/$hdrs - -srcs=(\ - buffer.c\ - buffered_surface.c\ - color.c\ - context.c\ - drm.c\ - dumb.c\ - font.c\ - renderer.c\ - surface.c\ - pixman.c\ - wayland.c\ - wayland-shm.c\ - wayland-drm.c\ - wayland-drm-protocol.c.o\ -) -libs=(\ - desktop/fontconfig/libfontconfig.a.d\ - desktop/freetype/libfreetype.a.d\ - desktop/libdrm/libdrm.a\ - desktop/pixman/libpixman.a\ - desktop/wayland/libwayland-client.a.d\ -) - -if(~ intel $config_video_drivers) { - cflags=($cflags -D WITH_DRM_INTEL -I desktop/libdrm/src/intel) - srcs=($srcs intel.c intel/batch.c) - libs=($libs desktop/libdrm/libdrm_intel.a.d) -} -if(~ nouveau $config_video_drivers) { - cflags=($cflags -D WITH_DRM_NOUVEAU -I desktop/libdrm/src/nouveau) - srcs=($srcs nouveau.c) - libs=($libs desktop/libdrm/libdrm_nouveau.a) -} - -cflags $cflags - -waylandproto protocol/wayland-drm.xml\ - protocol/wayland-drm-^(client server)^-protocol.h\ - wayland-drm-protocol.c - -phony deps\ - '$outdir'/protocol/wayland-drm-client-protocol.h\ - '$builddir'/desktop/^(fontconfig freetype libdrm)^/fetch.stamp\ - desktop/^(pixman wayland)^/headers - -lib libwld.a -d '$dir'/deps $srcs '$builddir'/$libs - -fetch git diff --git a/desktop/wld/rev b/desktop/wld/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/wld/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/wld/src b/desktop/wld/src deleted file mode 160000 -Subproject efe0a1ed1856a2e4a1893ed0f2d7dde43b5627f diff --git a/desktop/xkeyboard-config/gen.rc b/desktop/xkeyboard-config/gen.rc deleted file mode 100644 index bfba7a51..00000000 --- a/desktop/xkeyboard-config/gen.rc +++ /dev/null @@ -1,201 +0,0 @@ -data=(\ - compat/^(\ - accessx basic caps complete\ - iso9995\ - japan ledcaps\ - lednum ledscroll level5\ - misc mousekeys\ - olpc pc pc98 xfree86\ - xtest README\ - )\ - geometry/^(\ - digital_vndr/^(lk pc unix)\ - sgi_vndr/^(indigo indy O2)\ - amiga ataritt chicony\ - dell everex fujitsu\ - hhk hp keytronic kinesis\ - macintosh microsoft nec nokia\ - northgate pc sanwa sony thinkpad\ - sun teck typematrix winbook README\ - )\ - keycodes/^(\ - digital_vndr/^(lk pc)\ - sgi_vndr/^(indigo indy iris)\ - aliases\ - amiga\ - ataritt\ - empty\ - evdev\ - fujitsu\ - hp\ - ibm\ - jolla\ - macintosh\ - olpc\ - sony\ - sun\ - xfree86\ - xfree98\ - README\ - )\ - rules/^(\ - xfree98\ - xkb.dtd\ - README\ - )\ - symbols/^(\ - digital_vndr/^(lk pc us vt)\ - fujitsu_vndr/^(jp us)\ - hp_vndr/^(us)\ - jolla_vndr/^(sbj)\ - macintosh_vndr/^(\ - apple ch de dk\ - fi fr\ - gb is it jp\ - latam nl no pt\ - se us\ - )\ - nec_vndr/^(jp)\ - nokia_vndr/^(rx-44 rx-51 su-8w)\ - sgi_vndr/^(jp)\ - sharp_vndr/^(sl-c3x00 ws003sh ws007sh ws011sh ws020sh)\ - sony_vndr/^(us)\ - sun_vndr/^(\ - ara be br ca ch\ - cz de dk ee es\ - fi fr gb gr it\ - jp kr lt lv nl\ - no pl pt ro ru\ - se sk solaris tr\ - tw ua us\ - )\ - xfree68_vndr/^(amiga ataritt)\ - af al am apl\ - ara at au az\ - ba bd be\ - bg bn br brai\ - bt bw by\ - ca cd ch\ - cm cn cz\ - de dk dz\ - ee es et epo eu\ - fi fo fr\ - gb ge gh gn\ - gr hr hu\ - id ie il\ - in iq\ - ir is it\ - jp\ - ke kg kh\ - kr kz\ - la latam latin\ - lk lt lv\ - ma mao md me\ - mk ml mm\ - mn mt mv my\ - ng nl no np\ - parens pc ph pk pl pt\ - ro rs ru\ - se si sk sn\ - sy th\ - terminate tg\ - tj tm tr tw tz\ - ua us uz vn\ - za\ - altwin capslock compose ctrl empty eurosign rupeesign group inet\ - keypad kpdl level3 level5 nbsp olpc shift srvr_ctrl typo\ - )\ - types/^(\ - basic cancel caps\ - complete default extra\ - iso9995 level5 mousekeys nokia numpad\ - pc README\ - )\ -) -for(f in $data) file share/xkb/$f '$srcdir'/$f 644 - -rule merge 'HDR=$srcdir/rules/HDR ./$srcdir/rules/merge.sh $out.tmp $in && mv $out.tmp $out' -fn merge { - out='$outdir'/$1 - shift - build $out merge '$srcdir'/rules/$* '|' '$srcdir'/rules/^(HDR merge.sh) -} - -merge base\ - base.hdr.part base.lists.part\ - base.lists.base.part\ - HDR base.m_k.part\ - HDR base.l1_k.part\ - HDR base.l_k.part\ - HDR\ - HDR base.ml_g.part\ - HDR base.m_g.part\ - HDR base.mlv_s.part\ - HDR base.ml_s.part\ - HDR base.ml1_s.part\ - HDR\ - HDR base.ml2_s.part\ - HDR base.ml3_s.part\ - HDR base.ml4_s.part\ - HDR\ - HDR\ - HDR\ - HDR base.m_s.part\ - HDR base.ml_s1.part\ - HDR\ - HDR\ - HDR\ - HDR\ - HDR\ - HDR base.ml_c.part\ - HDR base.ml1_c.part\ - HDR base.m_t.part\ - HDR\ - HDR base.l1o_s.part\ - HDR base.l2o_s.part\ - HDR base.l3o_s.part\ - HDR base.l4o_s.part\ - HDR base.o_s.part\ - HDR base.o_c.part\ - HDR base.o_t.part -merge evdev\ - base.hdr.part base.lists.part\ - evdev.lists.part\ - HDR evdev.m_k.part\ - HDR base.l1_k.part\ - HDR base.l_k.part\ - HDR\ - HDR base.ml_g.part\ - HDR base.m_g.part\ - HDR base.mlv_s.part\ - HDR base.ml_s.part\ - HDR base.ml1_s.part\ - HDR\ - HDR base.ml2_s.part\ - HDR base.ml3_s.part\ - HDR base.ml4_s.part\ - HDR\ - HDR\ - HDR\ - HDR evdev.m_s.part\ - HDR\ - HDR\ - HDR\ - HDR\ - HDR\ - HDR\ - HDR base.ml_c.part\ - HDR base.ml1_c.part\ - HDR base.m_t.part\ - HDR\ - HDR base.l1o_s.part\ - HDR base.l2o_s.part\ - HDR base.l3o_s.part\ - HDR base.l4o_s.part\ - HDR base.o_s.part\ - HDR base.o_c.part\ - HDR base.o_t.part - -for(f in base evdev) file share/xkb/rules/$f '$outdir'/$f 644 - -fetch git diff --git a/desktop/xkeyboard-config/rev b/desktop/xkeyboard-config/rev deleted file mode 100644 index d00491fd..00000000 --- a/desktop/xkeyboard-config/rev +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/desktop/xkeyboard-config/src b/desktop/xkeyboard-config/src deleted file mode 160000 -Subproject b68a9ab082ddb33647f225abe8cab4f963d1cb3 |
