summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HACKING3
-rw-r--r--data/autostart.sh6
-rw-r--r--data/rc.xml7
-rw-r--r--data/rc.xsd15
-rw-r--r--m4/openbox.m423
-rw-r--r--openbox/actions.c8
-rw-r--r--openbox/client.c6
-rw-r--r--openbox/config.c33
-rw-r--r--openbox/config.h2
-rw-r--r--openbox/event.c2
-rw-r--r--openbox/geom.h2
-rw-r--r--openbox/menuframe.c11
-rw-r--r--openbox/mouse.c2
-rw-r--r--po/nl.po17
-rw-r--r--render/font.c17
-rw-r--r--render/gradient.c259
-rw-r--r--render/icon.h795
-rw-r--r--render/test.c24
-rw-r--r--render/theme.c11
-rw-r--r--render/theme.h3
-rwxr-xr-xtools/xdg-autostart/xdg-autostart4
21 files changed, 725 insertions, 525 deletions
diff --git a/HACKING b/HACKING
index dab0aad8..e450bba3 100644
--- a/HACKING
+++ b/HACKING
@@ -27,8 +27,7 @@ not all, guidelines:
lines
* most other constructs should have braces on the same line as the
statement
+ * else appears on a new line, just like an if
* when in doubt look at the rest of the source
* vim users can use "set expandtab tabstop=4 shiftwidth=4
softtabstop=4" for some of this
-
-
diff --git a/data/autostart.sh b/data/autostart.sh
index ab542841..53063262 100644
--- a/data/autostart.sh
+++ b/data/autostart.sh
@@ -22,7 +22,9 @@ if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
fi
# Make GTK apps look and behave how they were set up in the gnome config tools
-if which gnome-settings-daemon >/dev/null; then
+if which /usr/libexec/gnome-settings-daemon >/dev/null; then
+ /usr/libexec/gnome-settings-daemon &
+elif which gnome-settings-daemon >/dev/null; then
gnome-settings-daemon &
fi
@@ -34,6 +36,6 @@ fi
# Run XDG autostart things. By default don't run anything desktop-specific
# See xdg-autostart --help more info
DESKTOP_ENV=""
-if which xdg-autostart; then
+if which xdg-autostart >/dev/null; then
xdg-autostart $DESKTOP_ENV
fi
diff --git a/data/rc.xml b/data/rc.xml
index ef3d9bdc..f223f678 100644
--- a/data/rc.xml
+++ b/data/rc.xml
@@ -652,7 +652,9 @@
<application name="first element of window's WM_CLASS property (see xprop)"
class="second element of window's WM_CLASS property (see xprop)"
- role="the window's WM_WINDOW_ROLE property (see xprop)">
+ role="the window's WM_WINDOW_ROLE property (see xprop)"
+ type="the window's _NET_WM_WINDOW_TYPE (if unspecified, then
+ it is dialog for child windows)">
# the name or the class can be set, or both. this is used to match
# windows when they appear. role can optionally be set as well, to
# further restrict your matches.
@@ -661,6 +663,9 @@
# used by a shell. you can use * to match any characters and ? to match
# any single character.
+ # the type is one of: normal, dialog, splash, utility, menu, toolbar, dock,
+ # or desktop
+
# when multiple rules match a window, they will all be applied, in the
# order that they appear in this list
diff --git a/data/rc.xsd b/data/rc.xsd
index 47eeed12..de227ea1 100644
--- a/data/rc.xsd
+++ b/data/rc.xsd
@@ -189,10 +189,11 @@
<xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/>
<xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/>
<xsd:element minOccurs="0" name="maximized" type="ob:maximization"/>
+ <xsd:attribute name="role" type="xsd:string"/>
+ <xsd:attribute name="type" type="ob:clienttype"/>
<!-- at least one of these must be present -->
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="class" type="xsd:string"/>
- <xsd:attribute name="role" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="applications">
<xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/>
@@ -252,6 +253,18 @@
<xsd:enumeration value="Unshade"/>
</xsd:restriction>
</xsd:simpleType>
+ <xsd:simpleType name="clienttype">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="desktop"/>
+ <xsd:enumeration value="dock"/>
+ <xsd:enumeration value="toolbar"/>
+ <xsd:enumeration value="menu"/>
+ <xsd:enumeration value="splash"/>
+ <xsd:enumeration value="utility"/>
+ <xsd:enumeration value="dialog"/>
+ <xsd:enumeration value="normal"/>
+ </xsd:restriction>
+ </xsd:simpleType>
<xsd:simpleType name="bool">
<!-- this is copied to maximization. Keep that in sync. -->
<xsd:restriction base="xsd:string">
diff --git a/m4/openbox.m4 b/m4/openbox.m4
index 18e27178..5a95e846 100644
--- a/m4/openbox.m4
+++ b/m4/openbox.m4
@@ -10,14 +10,23 @@ AC_DEFUN([OB_DEBUG],
AC_ARG_ENABLE([strict-ansi],
AC_HELP_STRING([--enable-strict-ansi],[Enable strict ANSI compliance build [[default=no]]]),
[STRICT=$enableval], [STRICT="no"])
- if test "$GCC" = "yes" && test "$STRICT" = "yes"; then
- CFLAGS="$CFLAGS -ansi -pedantic -D_XOPEN_SOURCE"
- fi
AC_ARG_ENABLE([debug],
AC_HELP_STRING([--enable-debug],[build a debug version [[default=no]]]),
[DEBUG=$enableval], [DEBUG="no"])
+ AC_ARG_ENABLE([gprof],
+ AC_HELP_STRING([--enable-gprof],[Enable gprof profiling output [[default=no]]]),
+ [PROF=$enableval], [PROF="no"])
+
+ AC_ARG_ENABLE([gprof-libc],
+ AC_HELP_STRING([--enable-gprof-libc],[Link against libc with profiling support [[default=no]]]),
+ [PROFLC=$enableval], [PROFLC="no"])
+
+ if test "$PROFLC" = "yes"; then
+ PROF="yes" # always enable profiling then
+ fi
+
TEST=""
test "${PACKAGE_VERSION%*alpha*}" != "$PACKAGE_VERSION" && TEST="yes"
test "${PACKAGE_VERSION%*beta*}" != "$PACKAGE_VERSION" && TEST="yes"
@@ -52,6 +61,7 @@ AC_DEFUN([OB_COMPILER_FLAGS],
AC_REQUIRE([AC_PROG_CC])
FLAGS=""
+ L=""
if test "$DEBUG" = "yes"; then
FLAGS="-DDEBUG"
@@ -73,11 +83,18 @@ AC_DEFUN([OB_COMPILER_FLAGS],
if test "$STRICT" = "yes"; then
FLAGS="$FLAGS -ansi -pedantic -D_XOPEN_SOURCE"
fi
+ if test "$PROF" = "yes"; then
+ FLAGS="$FLAGS -pg -fno-inline"
+ fi
+ if test "$PROFLC" = "yes"; then
+ L="$L -lc_p -lm_p"
+ fi
FLAGS="$FLAGS -fno-strict-aliasing"
fi
AC_MSG_CHECKING([for compiler specific flags])
AC_MSG_RESULT([$FLAGS])
CFLAGS="$CFLAGS $FLAGS"
+ LIBS="$LIBS $L"
])
AC_DEFUN([OB_NLS],
diff --git a/openbox/actions.c b/openbox/actions.c
index 11581af6..5bd70139 100644
--- a/openbox/actions.c
+++ b/openbox/actions.c
@@ -345,8 +345,14 @@ void actions_client_move(ObActionsData *data, gboolean start)
that moves windows our from under the cursor, the enter
event will come as a GrabNotify which is ignored, so this
makes a fake enter event
+
+ don't do this if there is a grab on the pointer. enter events
+ are ignored during a grab, so don't force fake ones when they
+ should be ignored
*/
- if ((c = client_under_pointer()) && c != data->client) {
+ if ((c = client_under_pointer()) && c != data->client &&
+ !grab_on_pointer())
+ {
ob_debug_type(OB_DEBUG_FOCUS,
"Generating fake enter because we did a "
"mouse-event action");
diff --git a/openbox/client.c b/openbox/client.c
index c7a82d16..946e80d3 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -779,13 +779,15 @@ static ObAppSettings *client_get_settings_state(ObClient *self)
!g_pattern_match(app->name, strlen(self->name), self->name, NULL))
match = FALSE;
else if (app->class &&
- !g_pattern_match(app->class,
- strlen(self->class), self->class, NULL))
+ !g_pattern_match(app->class,
+ strlen(self->class), self->class, NULL))
match = FALSE;
else if (app->role &&
!g_pattern_match(app->role,
strlen(self->role), self->role, NULL))
match = FALSE;
+ else if ((signed)app->type >= 0 && app->type != self->type)
+ match = FALSE;
if (match) {
ob_debug("Window matching: %s", app->name);
diff --git a/openbox/config.c b/openbox/config.c
index a268eb5b..b5b4ef4e 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -100,6 +100,7 @@ GSList *config_per_app_settings;
ObAppSettings* config_create_app_settings(void)
{
ObAppSettings *settings = g_new0(ObAppSettings, 1);
+ settings->type = -1;
settings->decor = -1;
settings->shade = -1;
settings->monitor = -1;
@@ -123,6 +124,7 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src,
g_assert(src != NULL);
g_assert(dst != NULL);
+ copy_if(type, -1);
copy_if(decor, -1);
copy_if(shade, -1);
copy_if(focus, -1);
@@ -190,15 +192,16 @@ static void config_parse_gravity_coord(xmlNodePtr node, GravityCoord *c)
static void parse_per_app_settings(xmlNodePtr node, gpointer d)
{
xmlNodePtr app = obt_parse_find_node(node->children, "application");
- gchar *name = NULL, *class = NULL, *role = NULL;
- gboolean name_set, class_set;
+ gchar *name = NULL, *class = NULL, *role = NULL, *type = NULL;
+ gboolean name_set, class_set, type_set;
gboolean x_pos_given;
while (app) {
- name_set = class_set = x_pos_given = FALSE;
+ name_set = class_set = type_set = x_pos_given = FALSE;
class_set = obt_parse_attr_string(app, "class", &class);
name_set = obt_parse_attr_string(app, "name", &name);
+ type_set = obt_parse_attr_string(app, "type", &type);
if (class_set || name_set) {
xmlNodePtr n, c;
ObAppSettings *settings = config_create_app_settings();;
@@ -209,6 +212,25 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d)
if (class_set)
settings->class = g_pattern_spec_new(class);
+ if (type_set) {
+ if (!g_ascii_strcasecmp(type, "normal"))
+ settings->type = OB_CLIENT_TYPE_NORMAL;
+ else if (!g_ascii_strcasecmp(type, "dialog"))
+ settings->type = OB_CLIENT_TYPE_DIALOG;
+ else if (!g_ascii_strcasecmp(type, "splash"))
+ settings->type = OB_CLIENT_TYPE_SPLASH;
+ else if (!g_ascii_strcasecmp(type, "utility"))
+ settings->type = OB_CLIENT_TYPE_UTILITY;
+ else if (!g_ascii_strcasecmp(type, "menu"))
+ settings->type = OB_CLIENT_TYPE_MENU;
+ else if (!g_ascii_strcasecmp(type, "toolbar"))
+ settings->type = OB_CLIENT_TYPE_TOOLBAR;
+ else if (!g_ascii_strcasecmp(type, "dock"))
+ settings->type = OB_CLIENT_TYPE_DOCK;
+ else if (!g_ascii_strcasecmp(type, "desktop"))
+ settings->type = OB_CLIENT_TYPE_DESKTOP;
+ }
+
if (obt_parse_attr_string(app, "role", &role))
settings->role = g_pattern_spec_new(role);
@@ -662,6 +684,11 @@ static void parse_resize(xmlNodePtr node, gpointer d)
if ((n2 = obt_parse_find_node(n->children, "y")))
config_parse_gravity_coord(n2,
&config_resize_popup_fixed.y);
+
+ config_resize_popup_fixed.x.pos =
+ MAX(config_resize_popup_fixed.x.pos, 0);
+ config_resize_popup_fixed.y.pos =
+ MAX(config_resize_popup_fixed.y.pos, 0);
}
}
}
diff --git a/openbox/config.h b/openbox/config.h
index cf9eb43e..1f4ae326 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -23,6 +23,7 @@
#include "misc.h"
#include "stacking.h"
#include "place.h"
+#include "client.h"
#include "geom.h"
#include "moveresize.h"
#include "render/render.h"
@@ -37,6 +38,7 @@ struct _ObAppSettings
GPatternSpec *class;
GPatternSpec *name;
GPatternSpec *role;
+ ObClientType type;
GravityPoint position;
gboolean pos_given;
diff --git a/openbox/event.c b/openbox/event.c
index cedac2e3..9502edf5 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -1369,7 +1369,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is "
"missing source indication");
- client_activate(client, FALSE, TRUE, TRUE,
+ client_activate(client, TRUE, TRUE, TRUE,
(e->xclient.data.l[0] == 0 ||
e->xclient.data.l[0] == 2));
} else if (msgtype == OBT_PROP_ATOM(NET_WM_MOVERESIZE)) {
diff --git a/openbox/geom.h b/openbox/geom.h
index bdcd3c55..7c5ee32e 100644
--- a/openbox/geom.h
+++ b/openbox/geom.h
@@ -23,7 +23,7 @@
#include <glib.h>
typedef struct _GravityCoord {
- int pos;
+ gint pos;
gboolean center;
gboolean opposite;
} GravityCoord;
diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index c25e485f..730f23f7 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -254,23 +254,24 @@ static void menu_frame_place_topmenu(ObMenuFrame *self, gint *x, gint *y)
static void menu_frame_place_submenu(ObMenuFrame *self, gint *x, gint *y)
{
- gint overlap;
+ gint overlapx, overlapy;
gint bwidth;
- overlap = ob_rr_theme->menu_overlap;
+ overlapx = ob_rr_theme->menu_overlap_x;
+ overlapy = ob_rr_theme->menu_overlap_y;
bwidth = ob_rr_theme->mbwidth;
if (self->direction_right)
*x = self->parent->area.x + self->parent->area.width -
- overlap - bwidth;
+ overlapx - bwidth;
else
- *x = self->parent->area.x - self->area.width + overlap + bwidth;
+ *x = self->parent->area.x - self->area.width + overlapx + bwidth;
*y = self->parent->area.y + self->parent_entry->area.y;
if (config_menu_middle)
*y -= (self->area.height - (bwidth * 2) - ITEM_HEIGHT) / 2;
else
- *y += overlap;
+ *y += overlapy;
}
void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y,
diff --git a/openbox/mouse.c b/openbox/mouse.c
index 071a23b2..ae9a6fc2 100644
--- a/openbox/mouse.c
+++ b/openbox/mouse.c
@@ -45,7 +45,7 @@ typedef struct {
/* Array of GSList*s of ObMouseBinding*s. */
static GSList *bound_contexts[OB_FRAME_NUM_CONTEXTS];
-/* TRUE when we have a grab on the pointer and need to reply the pointer event
+/* TRUE when we have a grab on the pointer and need to replay the pointer event
to send it to other applications */
static gboolean replay_pointer_needed;
diff --git a/po/nl.po b/po/nl.po
index ec779726..70ec7014 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -3,14 +3,15 @@
# This file is distributed under the same license as the openbox package.
# Mark Pustjens <pustjens@dds.nl>, 2007.
# Jochem Kossen <jkossen@xs4all.nl>, 2007.
+# Marvin Vek, 2008
#
msgid ""
msgstr ""
-"Project-Id-Version: Openbox 3.4.3\n"
+"Project-Id-Version: Openbox 3.4.6.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
"POT-Creation-Date: 2008-02-02 11:51-0500\n"
"PO-Revision-Date: 2007-07-12 13:01+0200\n"
-"Last-Translator: Jochem Kossen <jkossen@xs4all.nl>\n"
+"Last-Translator: Marvin Vek\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -33,11 +34,11 @@ msgstr "Uitvoeren van '%s' mislukt: %s"
#: openbox/client.c:1988 openbox/client.c:2020
msgid "Killing..."
-msgstr ""
+msgstr "Termineren..."
#: openbox/client.c:1990 openbox/client.c:2022
msgid "Not Responding"
-msgstr ""
+msgstr "Reageert Niet"
#: openbox/client_list_combined_menu.c:91 openbox/client_list_menu.c:94
msgid "Go there..."
@@ -232,7 +233,7 @@ msgstr " --replace Vervang de huidig draaiende window manager\n"
#: openbox/openbox.c:502
msgid " --config-file FILE Specify the path to the config file to use\n"
-msgstr ""
+msgstr " --config-file FILE Specificeer het pad naar het te gebruiken configuratiebestand\n"
#: openbox/openbox.c:503
msgid " --sm-disable Disable connection to the session manager\n"
@@ -256,7 +257,7 @@ msgstr " --restart Herstart Openbox\n"
#: openbox/openbox.c:507
msgid " --exit Exit Openbox\n"
-msgstr ""
+msgstr " --exit Openbox afsluiten\n"
#: openbox/openbox.c:508
msgid ""
@@ -293,7 +294,7 @@ msgstr ""
#: openbox/openbox.c:583
msgid "--config-file requires an argument\n"
-msgstr ""
+msgstr "--config-file vereist een argument\n"
#: openbox/openbox.c:626
#, c-format
@@ -321,6 +322,8 @@ msgid ""
"Openbox is configured for %d desktops, but the current session has %d. "
"Overriding the Openbox configuration."
msgstr ""
+"Openbox is geconfigureerd voor %d bureaubladen, maar de huidige sessie heeft %d. "
+"Overnemen van de Openbox configuratie."
#: openbox/screen.c:1169
#, c-format
diff --git a/render/font.c b/render/font.c
index 5ccfb8fd..583c9f7d 100644
--- a/render/font.c
+++ b/render/font.c
@@ -285,9 +285,20 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
}
if (t->shadow_offset_x || t->shadow_offset_y) {
- c.color.red = t->shadow_color->r | t->shadow_color->r << 8;
- c.color.green = t->shadow_color->g | t->shadow_color->g << 8;
- c.color.blue = t->shadow_color->b | t->shadow_color->b << 8;
+ /* From nvidia's readme (chapter 23):
+
+ When rendering to a 32-bit window, keep in mind that the X RENDER
+ extension, used by most composite managers, expects "premultiplied
+ alpha" colors. This means that if your color has components (r,g,b)
+ and alpha value a, then you must render (a*r, a*g, a*b, a) into the
+ target window.
+ */
+ c.color.red = (t->shadow_color->r | t->shadow_color->r << 8) *
+ t->shadow_alpha / 255;
+ c.color.green = (t->shadow_color->g | t->shadow_color->g << 8) *
+ t->shadow_alpha / 255;
+ c.color.blue = (t->shadow_color->b | t->shadow_color->b << 8) *
+ t->shadow_alpha / 255;
c.color.alpha = 0xffff * t->shadow_alpha / 255;
c.pixel = t->shadow_color->pixel;
diff --git a/render/gradient.c b/render/gradient.c
index 6439b301..fc75047f 100644
--- a/render/gradient.c
+++ b/render/gradient.c
@@ -197,6 +197,74 @@ static void create_bevel_colors(RrAppearance *l)
l->surface.bevel_dark = RrColorNew(l->inst, r, g, b);
}
+/*! Repeat the first pixel over the entire block of memory
+ @param start The block of memory. start[0] will be copied
+ to the rest of the block.
+ @param w The width of the block of memory (including the already-set first
+ element
+*/
+static inline void repeat_pixel(RrPixel32 *start, gint w)
+{
+ gint x;
+ RrPixel32 *dest;
+
+ dest = start + 1;
+
+ /* for really small things, just copy ourselves */
+ if (w < 8) {
+ for (x = w-1; x > 0; --x)
+ *(dest++) = *start;
+ }
+
+ /* for >= 8, then use O(log n) memcpy's... */
+ else {
+ gchar *cdest;
+ gint lenbytes;
+
+ /* copy the first 3 * 32 bits (3 words) ourselves - then we have
+ 3 + the original 1 = 4 words to make copies of at a time
+
+ this is faster than doing memcpy for 1 or 2 words at a time
+ */
+ for (x = 3; x > 0; --x)
+ *(dest++) = *start;
+
+ /* cdest is a pointer to the pixel data that is typed char* so that
+ adding 1 to its position moves it only one byte
+
+ lenbytes is the amount of bytes that we will be copying each
+ iteration. this doubles each time through the loop.
+
+ x is the number of bytes left to copy into. lenbytes will alwaysa
+ be bounded by x
+
+ this loop will run O(log n) times (n is the number of bytes we
+ need to copy into), since the size of the copy is doubled each
+ iteration. it seems that gcc does some nice optimizations to make
+ this memcpy very fast on hardware with support for vector operations
+ such as mmx or see. here is an idea of the kind of speed up we are
+ getting by doing this (splitvertical3 switches from doing
+ "*(data++) = color" n times to doing this memcpy thing log n times:
+
+ % cumulative self self total
+ time seconds seconds calls ms/call ms/call name
+ 49.44 0.88 0.88 1063 0.83 0.83 splitvertical1
+ 47.19 1.72 0.84 1063 0.79 0.79 splitvertical2
+ 2.81 1.77 0.05 1063 0.05 0.05 splitvertical3
+ */
+ cdest = (gchar*)dest;
+ lenbytes = 4 * sizeof(RrPixel32);
+ for (x = (w - 4) * sizeof(RrPixel32); x > 0;) {
+ memcpy(cdest, start, lenbytes);
+ x -= lenbytes;
+ cdest += lenbytes;
+ lenbytes <<= 1;
+ if (lenbytes > x)
+ lenbytes = x;
+ }
+ }
+}
+
static void gradient_parentrelative(RrAppearance *a, gint w, gint h)
{
RrPixel32 *source, *dest;
@@ -423,10 +491,9 @@ static void gradient_solid(RrAppearance *l, gint w, gint h)
static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
{
- gint x, y1, y2, y3;
+ gint y1, y2, y3;
RrSurface *sf = &a->surface;
- RrPixel32 *data = sf->pixel_data;
- RrPixel32 current;
+ RrPixel32 *data;
gint y1sz, y2sz, y3sz;
VARS(y1);
@@ -455,39 +522,48 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
}
SETUP(y3, sf->secondary, sf->split_secondary, y3sz);
- for (y1 = y1sz; y1 > 0; --y1) {
- current = COLOR(y1);
- for (x = w - 1; x >= 0; --x)
- *(data++) = current;
+ /* find the color for the first pixel of each row first */
+ data = sf->pixel_data;
+ for (y1 = y1sz-1; y1 > 0; --y1) {
+ *data = COLOR(y1);
+ data += w;
NEXT(y1);
}
-
- for (y2 = y2sz; y2 > 0; --y2) {
- current = COLOR(y2);
- for (x = w - 1; x >= 0; --x)
- *(data++) = current;
-
+ *data = COLOR(y1);
+ data += w;
+ for (y2 = y2sz-1; y2 > 0; --y2) {
+ *data = COLOR(y2);
+ data += w;
NEXT(y2);
}
-
- for (y3 = y3sz; y3 > 0; --y3) {
- current = COLOR(y3);
- for (x = w - 1; x >= 0; --x)
- *(data++) = current;
-
+ *data = COLOR(y2);
+ data += w;
+ for (y3 = y3sz-1; y3 > 0; --y3) {
+ *data = COLOR(y3);
+ data += w;
NEXT(y3);
}
+ *data = COLOR(y3);
+
+ /* copy the first pixels into the whole rows */
+ data = sf->pixel_data;
+ for (y1 = h; y1 > 0; --y1) {
+ repeat_pixel(data, w);
+ data += w;
+ }
}
static void gradient_horizontal(RrSurface *sf, gint w, gint h)
{
- gint x, y;
+ gint x, y, cpbytes;
RrPixel32 *data = sf->pixel_data, *datav;
+ gchar *datac;
VARS(x);
SETUP(x, sf->primary, sf->secondary, w);
+ /* set the color values for the first row */
datav = data;
for (x = w - 1; x > 0; --x) { /* 0 -> w - 1 */
*datav = COLOR(x);
@@ -497,22 +573,32 @@ static void gradient_horizontal(RrSurface *sf, gint w, gint h)
*datav = COLOR(x);
++datav;
- for (y = h - 1; y > 0; --y) { /* 1 -> h */
- memcpy(datav, data, w * sizeof(RrPixel32));
- datav += w;
+ /* copy the first row to the rest in O(logn) copies */
+ datac = (gchar*)datav;
+ cpbytes = 1 * w * sizeof(RrPixel32);
+ for (y = (h - 1) * w * sizeof(RrPixel32); y > 0;) {
+ memcpy(datac, data, cpbytes);
+ y -= cpbytes;
+ datac += cpbytes;
+ cpbytes <<= 1;
+ if (cpbytes > y)
+ cpbytes = y;
}
}
static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h)
{
- gint x, y, half1, half2;
+ gint x, y, half1, half2, cpbytes;
RrPixel32 *data = sf->pixel_data, *datav;
+ gchar *datac;
VARS(x);
half1 = (w + 1) / 2;
half2 = w / 2;
+ /* set the color values for the first row */
+
SETUP(x, sf->primary, sf->secondary, half1);
datav = data;
for (x = half1 - 1; x > 0; --x) { /* 0 -> half1 - 1 */
@@ -534,31 +620,43 @@ static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h)
++datav;
}
- for (y = h - 1; y > 0; --y) { /* 1 -> h */
- memcpy(datav, data, w * sizeof(RrPixel32));
- datav += w;
+ /* copy the first row to the rest in O(logn) copies */
+ datac = (gchar*)datav;
+ cpbytes = 1 * w * sizeof(RrPixel32);
+ for (y = (h - 1) * w * sizeof(RrPixel32); y > 0;) {
+ memcpy(datac, data, cpbytes);
+ y -= cpbytes;
+ datac += cpbytes;
+ cpbytes <<= 1;
+ if (cpbytes > y)
+ cpbytes = y;
}
}
static void gradient_vertical(RrSurface *sf, gint w, gint h)
{
- gint x, y;
- RrPixel32 *data = sf->pixel_data;
- RrPixel32 current;
+ gint y;
+ RrPixel32 *data;
VARS(y);
SETUP(y, sf->primary, sf->secondary, h);
- for (y = h - 1; y > 0; --y) { /* 0 -> h-1 */
- current = COLOR(y);
- for (x = w - 1; x >= 0; --x) /* 0 -> w */
- *(data++) = current;
+ /* find the color for the first pixel of each row first */
+ data = sf->pixel_data;
+ for (y = h - 1; y > 0; --y) { /* 0 -> h-1 */
+ *data = COLOR(y);
+ data += w;
NEXT(y);
}
- current = COLOR(y);
- for (x = w - 1; x >= 0; --x) /* 0 -> w */
- *(data++) = current;
+ *data = COLOR(y);
+
+ /* copy the first pixels into the whole rows */
+ data = sf->pixel_data;
+ for (y = h; y > 0; --y) {
+ repeat_pixel(data, w);
+ data += w;
+ }
}
@@ -656,14 +754,13 @@ static void gradient_crossdiagonal(RrSurface *sf, gint w, gint h)
*data = COLOR(x);
}
-static void gradient_pyramid(RrSurface *sf, gint inw, gint inh)
+static void gradient_pyramid(RrSurface *sf, gint w, gint h)
{
- gint x, y, w = (inw >> 1) + 1, h = (inh >> 1) + 1;
- RrPixel32 *data = sf->pixel_data;
- RrPixel32 *end = data + inw*inh - 1;
- RrPixel32 current;
+ RrPixel32 *ldata, *rdata;
+ RrPixel32 *cp;
RrColor left, right;
RrColor extracorner;
+ gint x, y, halfw, halfh, midx, midy;
VARS(lefty);
VARS(righty);
@@ -673,54 +770,64 @@ static void gradient_pyramid(RrSurface *sf, gint inw, gint inh)
extracorner.g = (sf->primary->g + sf->secondary->g) / 2;
extracorner.b = (sf->primary->b + sf->secondary->b) / 2;
- SETUP(lefty, (&extracorner), sf->secondary, h);
- SETUP(righty, sf->primary, (&extracorner), h);
+ halfw = w >> 1;
+ halfh = h >> 1;
+ midx = w - halfw - halfw; /* 0 or 1, depending if w is even or odd */
+ midy = h - halfh - halfh; /* 0 or 1, depending if h is even or odd */
+
+ SETUP(lefty, sf->primary, (&extracorner), halfh + midy);
+ SETUP(righty, (&extracorner), sf->secondary, halfh + midy);
+
+ /* draw the top half
+
+ it is faster to draw both top quarters together than to draw one and
+ then copy it over to the other side.
+ */
+
+ ldata = sf->pixel_data;
+ rdata = ldata + w - 1;
+ for (y = halfh + midy; y > 0; --y) { /* 0 -> (h+1)/2 */
+ RrPixel32 c;
- for (y = h - 1; y > 0; --y) { /* 0 -> h-1 */
COLOR_RR(lefty, (&left));
COLOR_RR(righty, (&right));
- SETUP(x, (&left), (&right), w);
+ SETUP(x, (&left), (&right), halfw + midx);
- for (x = w - 1; x > 0; --x) { /* 0 -> w-1 */
- current = COLOR(x);
- *(data+x) = current;
- *(data+inw-x) = current;
- *(end-x) = current;
- *(end-(inw-x)) = current;
+ for (x = halfw + midx - 1; x > 0; --x) { /* 0 -> (w+1)/2 */
+ c = COLOR(x);
+ *(ldata++) = *(rdata--) = c;
NEXT(x);
}
- current = COLOR(x);
- *(data+x) = current;
- *(data+inw-x) = current;
- *(end-x) = current;
- *(end-(inw-x)) = current;
-
- data+=inw;
- end-=inw;
+ c = COLOR(x);
+ *ldata = *rdata = c;
+ ldata += halfw + 1;
+ rdata += halfw - 1 + midx + w;
NEXT(lefty);
NEXT(righty);
}
- COLOR_RR(lefty, (&left));
- COLOR_RR(righty, (&right));
- SETUP(x, (&left), (&right), w);
+ /* copy the top half into the bottom half, mirroring it, so we can only
+ copy one row at a time
- for (x = w - 1; x > 0; --x) { /* 0 -> w-1 */
- current = COLOR(x);
- *(data+x) = current;
- *(data+inw-x) = current;
- *(end-x) = current;
- *(end-(inw-x)) = current;
+ it is faster, to move the writing pointer forward, and the reading
+ pointer backward
- NEXT(x);
+ this is the current code, moving the write pointer forward and read
+ pointer backward
+ 41.78 4.26 1.78 504 3.53 3.53 gradient_pyramid2
+ this is the opposite, moving the read pointer forward and the write
+ pointer backward
+ 42.27 4.40 1.86 504 3.69 3.69 gradient_pyramid2
+
+ */
+ ldata = sf->pixel_data + (halfh - 1) * w;
+ cp = ldata + (midy + 1) * w;
+ for (y = halfh; y > 0; --y) {
+ memcpy(cp, ldata, w * sizeof(RrPixel32));
+ ldata -= w;
+ cp += w;
}
- current = COLOR(x);
- *(data+x) = current;
- *(data+inw-x) = current;
- *(end-x) = current;
- *(end-(inw-x)) = current;
}
-
diff --git a/render/icon.h b/render/icon.h
index 13eff847..f0b2d267 100644
--- a/render/icon.h
+++ b/render/icon.h
@@ -1,3 +1,5 @@
+/* GIMP RGBA C-Source image dump (icon.h) */
+
/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
icon.h for the Openbox window manager
@@ -16,17 +18,14 @@
See the COPYING file for a copy of the GNU General Public License.
*/
-/* GIMP RGBA C-Source image dump (icon.h) */
-
#define OB_DEFAULT_ICON_WIDTH (48)
#define OB_DEFAULT_ICON_HEIGHT (48)
#define OB_DEFAULT_ICON_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
#define OB_DEFAULT_ICON_COMMENT \
- "To recreate this file, save an image as \"C-Source\" in The Gimp. " \
- "Use \"ob_default_icon\" as the Prefixed Name. Enable Glib Types. " \
- "Enable Save Alpha Channel. Enable Use Macros instead of Struct."
+ "To recreate this file, save an image as \"C-Source\" in The Gimp. Use \"ob_default_icon\" as the Prefixed Name. Enable Glib Types. Enable Save Alpha Channel. Enable Use Macros instead of Struct."
#define OB_DEFAULT_ICON_PIXEL_DATA ((guint8*) OB_DEFAULT_ICON_pixel_data)
static const guint8 OB_DEFAULT_ICON_pixel_data[48 * 48 * 4 + 1] =
+("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
@@ -36,406 +35,388 @@ static const guint8 OB_DEFAULT_ICON_pixel_data[48 * 48 * 4 + 1] =
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10"
- "\373\10\10\10\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22"
- "\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20"
- "\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373"
- "\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24"
- "\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22"
- "\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20"
- "\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373"
- "\20\22\24\373\23\26\32\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\20\22\24\373\277\324\347\373\277\325\347\373\277\324\347\373\277"
- "\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373"
- "\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347"
- "\373\277\325\347\373\277\324\347\373\300\324\347\373\277\324\347\373\277\324"
- "\347\373\277\324\347\373\277\324\347\373\300\324\347\373\277\324\347\373\277"
- "\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373"
- "\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\300\324\347"
- "\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\325"
- "\347\373\277\324\347\373\277\324\347\373\277\324\347\373\20\22\24\373\10\10"
- "\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\20\22\24\373\277\323"
- "\347\373l\232\277\373n\232\277\373n\232\300\373n\232\300\373o\233\300\373"
- "o\233\300\373o\233\301\373o\235\301\373q\235\303\373q\235\303\373q\235\303"
- "\373r\236\304\373r\236\304\373t\236\304\373t\237\304\373t\237\305\373t\237"
- "\305\373u\237\305\373u\237\306\373u\241\306\373u\241\306\373w\241\307\373"
- "w\242\307\373y\242\307\373y\242\307\373y\242\310\373y\245\310\373z\245\311"
- "\373z\244\311\373z\245\311\373|\245\311\373|\245\313\373|\245\313\373}\247"
- "\313\373}\247\314\373}\247\314\373}\250\314\373\177\251\315\373t\232\277\373"
- "\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\20"
- "\22\24\373\277\323\346\373l\232\276\373l\230\277\373l\230\277\373n\232\277"
- "\373n\232\300\373n\233\300\373o\233\300\373o\233\301\373o\233\301\373o\233"
- "\301\373q\235\301\373q\235\303\373q\236\303\373r\236\303\373r\236\304\373"
- "r\237\304\373t\236\304\373t\237\305\373t\237\305\373t\241\305\373u\241\306"
- "\373u\241\306\373u\242\306\373w\241\306\373w\241\307\373w\242\307\373y\244"
- "\307\373y\244\310\373y\244\310\373y\245\310\373z\245\311\373z\244\311\373"
- "z\245\311\373|\247\313\373|\247\313\373|\245\313\373}\250\313\373}\250\314"
- "\373q\230\276\373\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\10\10\10\373\20\22\24\373\275\322\345\373l\227\276\373k\230\276\373l\230"
- "\276\373l\232\277\373l\230\277\373n\232\277\373n\233\300\373n\232\300\373"
- "n\232\300\373o\233\300\373o\233\301\373o\233\301\373q\233\301\373q\235\303"
- "\373q\235\303\373r\235\303\373r\236\304\373r\237\304\373r\237\304\373t\236"
- "\304\373t\237\305\373t\237\305\373u\237\305\373u\241\306\373u\241\306\373"
- "u\241\306\373w\242\307\373y\241\307\373w\244\307\373y\242\307\373y\244\310"
- "\373z\244\310\373y\244\310\373z\244\311\373z\245\311\373z\245\311\373|\245"
- "\313\373|\245\313\373o\230\275\373\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24\373\273\322\344\373k\227\275\373"
- "k\227\275\373k\230\276\373k\227\276\373l\230\276\373l\232\277\373l\232\277"
- "\373n\232\277\373n\232\277\373n\232\300\373n\233\300\373o\232\300\373o\233"
- "\301\373o\233\301\373o\233\301\373q\235\303\373r\236\303\373q\235\303\373"
- "r\235\303\373r\236\304\373r\237\304\373r\237\304\373u\237\305\373t\237\305"
- "\373t\241\305\373u\237\306\373u\237\306\373w\241\306\373w\241\306\373w\242"
- "\307\373w\242\307\373w\242\307\373z\242\310\373y\244\310\373z\244\310\373"
- "y\244\310\373|\244\311\373z\245\311\373n\225\273\373\17\22\24\373\10\10\10"
- "\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24\373\273\321\344"
- "\373k\227\275\373i\227\275\373k\227\275\373k\230\276\373k\227\276\373l\230"
- "\276\373l\230\276\373l\232\277\373l\232\277\373l\230\277\373n\232\277\373"
- "n\232\300\373n\233\300\373o\233\300\373o\233\301\373o\235\301\373o\235\301"
- "\373q\235\301\373r\235\303\373q\236\303\373r\235\303\373r\236\304\373r\236"
- "\304\373r\236\304\373t\237\304\373t\236\305\373t\237\305\373t\237\305\373"
- "w\241\306\373u\241\306\373u\241\306\373w\242\306\373w\242\307\373w\242\307"
- "\373w\244\307\373y\244\310\373y\244\310\373z\244\310\373l\225\272\373\17\22"
- "\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24"
- "\373\272\321\343\373i\225\273\373i\225\273\373i\227\275\373k\225\275\373i"
- "\227\275\373k\227\275\373k\230\276\373l\230\276\373l\230\276\373l\230\276"
- "\373n\232\277\373l\230\277\373n\232\277\373n\232\300\373o\233\300\373o\233"
- "\300\373o\233\300\373o\233\301\373o\235\301\373o\233\301\373q\235\303\373"
- "r\235\303\373q\236\303\373r\236\303\373t\236\304\373r\236\304\373r\237\304"
- "\373t\237\304\373u\237\305\373t\237\305\373t\241\305\373u\241\306\373u\241"
- "\306\373w\241\306\373u\242\306\373w\242\307\373w\242\307\373w\242\307\373"
- "k\224\271\373\17\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\22\24\373\271\320\343\373h\224\272\373_\212\260\373_\212\260"
- "\373`\212\261\373`\212\261\373`\212\261\373`\212\261\373`\212\261\373`\214"
- "\261\373b\214\263\373b\214\263\373b\214\263\373b\214\263\373b\214\263\373"
- "c\214\263\373c\216\264\373e\216\264\373e\216\264\373c\216\264\373e\216\264"
- "\373e\216\264\373f\217\265\373f\217\265\373e\217\265\373f\217\265\373f\217"
- "\265\373f\217\265\373f\221\265\373f\217\266\373f\221\266\373h\221\266\373"
- "i\221\266\373h\221\266\373h\222\266\373h\222\270\373i\221\270\373i\222\270"
- "\373i\222\270\373i\222\270\373\17\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201"
- "\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373"
- "T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201"
- "\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373"
- "T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373\17\21\24\373\10\10\10\373\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T\201"
- "\250\373\17\21\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10"
- "\373\17\21\24\373T\201\250\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\376\376\373\375\375\376\373\375\375\376\373\375\376\376\373\375\375"
- "\376\373\375\375\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373T\201\250\373\17\21\24\373\10\10\10\373\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373\373"
- "\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373"
- "\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376"
- "\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375"
- "\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373"
- "\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373"
- "\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376"
- "\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375"
- "\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373T"
- "\201\250\373\17\21\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\24\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\24\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\21\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\21\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\376\376"
- "\373\375\375\376\373\375\376\376\373\375\375\376\373\375\376\376\373\375\375"
- "\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\20\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\20\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\20\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\20\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\20\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\20\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\375\375\376\373\374\375\376\373\375\375\376\373\375"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\20\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373"
- "\373\374\375\373\373\375\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\375\375\373\373\374\375\373\373\375\375\373\373\374\375\373\373"
- "\375\375\373\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373"
- "\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373\373\374\375"
- "\373\373\374\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\374\375\373\373\374\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373]"
- "\211\261\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\373\375\375\373\\\211\260\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373["
- "\207\257\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\20\22\373T\201\250\373\375\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373Y\206\255\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373V"
- "\204\254\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\20\22\373T\201\250\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\375\373\374\375"
- "\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\374\375\375\373\374\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\374\375\373V\202\253\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373V"
- "\202\253\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\17\22\373T\201\250\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375"
- "\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373U\201\251\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\17\22\373T\201\250\373T\201"
- "\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373"
- "T\177\250\373T\177\250\373T\201\250\373T\177\250\373T\201\250\373T\177\250"
- "\373R\177\250\373T\201\250\373R\177\250\373T\177\250\373T\201\250\373T\177"
- "\250\373R\177\250\373T\201\250\373T\177\250\373T\177\250\373T\177\250\373"
- "T\177\250\373T\201\250\373T\177\250\373T\177\250\373T\201\250\373T\177\250"
- "\373T\177\250\373T\177\250\373T\177\250\373R\177\250\373R\177\250\373T\177"
- "\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373\15\17\22\373"
- "\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\17\22\373\202"
- "\247\300\373\201\244\300\373}\242\277\373\177\244\277\373\201\245\300\373"
- "\202\247\301\373\204\247\303\373\206\250\303\373Ju\236\373\212\254\305\373"
- "\214\255\306\373\216\257\307\373\217\260\307\373\221\261\310\373\222\261\311"
- "\373\224\263\311\373\225\264\313\373\227\265\314\373\230\266\315\373\233\266"
- "\315\373\235\270\316\373\236\272\317\373\237\273\320\373\237\272\320\373\237"
- "\272\320\373\237\273\320\373\237\273\320\373\237\273\320\373\237\273\320\373"
- "\237\273\320\373\237\273\320\373Ju\236\373\236\273\320\373\237\272\320\373"
- "\237\272\320\373\237\272\320\373\237\273\320\373\236\272\320\373\237\273\320"
- "\373\237\273\320\373\15\17\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\10\10\10\373\15\17\21\373\201\245\277\373My\241\373My\241\373Ly\241\373"
- "My\241\373My\241\373My\241\373My\241\3733V\202\373Ny\242\373Nz\242\373Ny\242"
- "\373Nz\242\373Mz\242\373Ny\242\373Nz\242\373Mz\242\373Nz\242\373Nz\242\373"
- "Nz\242\373Nz\242\373Nz\242\373P|\244\373Pz\244\373N|\244\373Pz\244\373P|\244"
- "\373Pz\244\373Pz\244\373P|\244\373P|\244\373-Nz\373Nz\244\373P|\244\373P|"
- "\244\373P|\244\373P|\244\373P|\244\373P|\244\373P|\244\373\15\17\21\373\10"
- "\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10\10\10\373\15\17"
- "\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15"
- "\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373"
- "\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21"
- "\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17"
- "\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15"
- "\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373"
- "\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\10\10\10"
- "\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0";
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\40J\207\15\40J\207\23\40J\207"
+ "\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J"
+ "\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23"
+ "\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207"
+ "\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J"
+ "\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23"
+ "\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207"
+ "\23\40J\207\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'P\213\267'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214"
+ "\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275(R\215\275'Q\214\275'Q\214"
+ "\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275(R\215"
+ "\275(R\215\275(R\215\275&P\213\267\40J\207\20\0\0\0\0\0\0\0\0\40J\207+Y{\252"
+ "\377\216\253\320\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243"
+ "\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204"
+ "\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377"
+ "\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314"
+ "\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243"
+ "\314\377\204\243\314\377\203\243\314\377\203\243\313\377\203\243\313\377\203"
+ "\243\313\377\203\242\313\377\202\242\313\377\202\242\313\377\202\241\313\377"
+ "\201\241\312\377\201\241\312\377\201\240\312\377\201\240\312\377\200\240\312"
+ "\377\200\240\312\377\200\240\312\377\200\240\312\377\211\247\316\377Jn\241"
+ "\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Wy\251\377]\207\275\377>o\260\377>o"
+ "\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260"
+ "\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377"
+ ">o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260"
+ "\377>o\260\377>o\260\377>o\260\377>o\260\377=o\260\377=o\260\377=o\260\377"
+ "=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260"
+ "\377=o\260\377_\210\275\377Hm\241\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Tw"
+ "\251\377]\207\276\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r"
+ "\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263"
+ "\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377"
+ "?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263"
+ "\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377"
+ "?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377]\210\277\377Fl\241\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+Rv\250\377\\\210\300\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377\\\210\300\377Dj\240\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ot\247"
+ "\377\\\211\302\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377"
+ "Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377"
+ "Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377[\211\302\377Bi\240\377\40J\207"
+ "+\0\0\0\0\0\0\0\0\40J\207+Ls\247\377\\\211\303\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "\\\211\303\377Ah\240\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Jq\246\377\\\212"
+ "\305\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377[\212\305\377?g\237\377\40J\207+\0\0\0\0"
+ "\0\0\0\0\40J\207+Jq\246\377\\\212\305\377I}\277\377I}\277\377I}\277\377I}"
+ "\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377J~\300\377K\177\301\377K\177\301\377K\177\301"
+ "\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177"
+ "\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377"
+ "K\177\301\377K\177\301\377K\177\301\377K\177\301\377Z\212\307\377=f\237\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ip\247\377\\\213\307\377J\177\301\377J\177"
+ "\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377"
+ "J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301"
+ "\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177"
+ "\301\377J\177\301\377J\177\301\377K\200\302\377K\200\302\377K\200\302\377"
+ "K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302"
+ "\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200"
+ "\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377Z\212\307\377"
+ "=f\237\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ho\247\377e\223\314\377Z\213\310"
+ "\377Z\213\310\377Z\213\310\377Z\213\310\377Z\213\307\377Z\213\307\377Z\213"
+ "\307\377Z\213\307\377Z\213\307\377Y\212\307\377Y\212\307\377Y\212\307\377"
+ "Y\212\307\377Y\212\307\377X\212\307\377X\212\307\377X\212\307\377X\211\307"
+ "\377X\212\307\377X\212\307\377X\211\307\377X\211\307\377X\211\307\377X\211"
+ "\307\377X\211\307\377X\211\307\377X\211\307\377X\211\307\377X\211\307\377"
+ "X\211\307\377W\211\307\377W\211\307\377W\211\307\377W\211\307\377W\211\307"
+ "\377W\211\307\377V\211\307\377V\211\307\377V\210\307\377V\210\307\377`\217"
+ "\312\377<e\237\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+<b\231\377i\212\267\377"
+ "i\211\266\377i\211\266\377i\211\266\377i\211\266\377i\211\266\377h\211\266"
+ "\377h\211\266\377h\211\266\377h\211\266\377h\211\266\377h\211\266\377h\211"
+ "\266\377g\211\266\377g\211\266\377g\211\266\377g\211\266\377g\210\266\377"
+ "g\210\266\377g\211\266\377g\211\266\377g\210\266\377g\210\266\377g\210\265"
+ "\377g\210\265\377g\210\265\377g\210\265\377g\210\265\377g\210\265\377g\210"
+ "\265\377g\210\265\377g\210\265\377f\210\265\377f\210\264\377f\210\264\377"
+ "f\210\264\377f\210\264\377f\210\264\377f\210\264\377f\210\264\377f\207\264"
+ "\377f\207\264\3778^\226\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+b\177\251\377"
+ "\340\344\351\377\337\342\350\377\337\342\350\377\336\342\350\377\336\342\347"
+ "\377\336\342\347\377\336\342\347\377\336\342\347\377\335\341\347\377\335\341"
+ "\346\377\335\341\346\377\335\341\346\377\335\341\346\377\335\341\346\377\335"
+ "\341\346\377\335\341\346\377\335\341\346\377\334\340\346\377\334\340\346\377"
+ "\335\341\346\377\335\341\346\377\334\340\346\377\334\340\346\377\334\340\345"
+ "\377\334\340\345\377\334\340\345\377\333\337\345\377\333\337\345\377\333\337"
+ "\344\377\333\337\344\377\333\337\344\377\333\336\344\377\332\336\344\377\332"
+ "\336\344\377\332\336\344\377\332\336\343\377\332\336\343\377\332\336\343\377"
+ "\332\336\343\377\332\336\343\377\332\336\343\377\333\337\345\377a}\247\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\355\355\355\377\351\351\351"
+ "\377\351\351\352\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351"
+ "\350\377\351\350\350\377\351\351\351\377\350\350\350\377\350\350\350\377\350"
+ "\350\350\377\350\350\350\377\350\350\350\377\350\350\350\377\350\350\350\377"
+ "\350\347\350\377\350\347\347\377\347\347\347\377\347\347\347\377\347\347\347"
+ "\377\347\347\347\377\347\347\347\377\347\347\347\377\346\347\347\377\347\346"
+ "\347\377\347\346\347\377\346\346\347\377\346\346\346\377\346\346\346\377\346"
+ "\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377"
+ "\346\345\345\377\345\345\346\377\345\346\345\377\345\346\345\377\345\346\345"
+ "\377\345\345\345\377\351\351\351\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\354\354\354\377\350\350\350\377\347\350\350\377\347"
+ "\347\350\377\347\347\350\377\347\347\347\377\347\347\347\377\347\347\347\377"
+ "\347\347\347\377\347\346\347\377\347\346\346\377\347\346\346\377\347\347\347"
+ "\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346"
+ "\346\377\346\346\346\377\345\345\346\377\345\345\345\377\345\345\346\377\345"
+ "\346\346\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377"
+ "\345\345\345\377\345\344\344\377\345\345\344\377\345\345\345\377\345\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\344"
+ "\344\377\343\344\344\377\344\344\344\377\344\344\343\377\344\343\343\377\350"
+ "\350\350\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\353"
+ "\352\352\377\346\346\346\377\346\345\345\377\345\346\346\377\345\346\345\377"
+ "\345\345\345\377\345\345\345\377\345\345\345\377\345\345\346\377\345\345\345"
+ "\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345"
+ "\345\377\344\345\345\377\344\344\344\377\344\345\344\377\344\344\344\377\344"
+ "\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\343\344\377"
+ "\343\343\343\377\344\343\343\377\343\343\343\377\343\343\343\377\343\343\343"
+ "\377\343\343\343\377\343\343\343\377\342\343\343\377\342\343\343\377\343\342"
+ "\343\377\343\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\346\346\346\377g\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\351\351\351\377\345\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\344"
+ "\344\377\343\344\344\377\343\343\344\377\343\343\343\377\343\343\343\377\343"
+ "\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377"
+ "\343\343\343\377\343\343\343\377\343\342\342\377\342\342\342\377\342\342\342"
+ "\377\342\342\342\377\342\342\342\377\342\341\342\377\342\342\342\377\342\342"
+ "\341\377\342\341\342\377\341\341\342\377\341\341\341\377\341\341\341\377\341"
+ "\341\341\377\341\341\341\377\341\341\341\377\341\340\341\377\341\341\341\377"
+ "\340\341\341\377\341\341\341\377\340\340\340\377\340\340\340\377\340\340\340"
+ "\377\340\340\340\377\346\345\346\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\350\350\350\377\342\342\343\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377"
+ "\342\342\342\377\342\342\341\377\342\341\342\377\341\341\341\377\341\341\341"
+ "\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341"
+ "\341\377\340\341\341\377\341\340\340\377\341\340\340\377\340\340\340\377\340"
+ "\340\340\377\340\340\340\377\340\340\340\377\340\340\340\377\340\340\340\377"
+ "\340\340\337\377\340\340\340\377\337\337\337\377\340\340\337\377\337\337\337"
+ "\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337"
+ "\337\377\337\337\337\377\337\337\336\377\336\337\336\377\336\336\336\377\344"
+ "\344\344\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\347"
+ "\347\347\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377"
+ "\341\341\341\377\340\341\340\377\340\340\340\377\340\340\340\377\340\340\337"
+ "\377\340\340\340\377\340\340\340\377\340\340\337\377\337\340\337\377\337\340"
+ "\337\377\337\337\340\377\337\337\337\377\337\337\337\377\337\337\337\377\337"
+ "\337\337\377\337\337\337\377\337\337\337\377\336\337\337\377\336\337\336\377"
+ "\337\336\336\377\336\336\336\377\336\336\336\377\336\336\336\377\336\336\336"
+ "\377\336\336\336\377\336\336\336\377\336\336\335\377\336\335\335\377\336\335"
+ "\335\377\336\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335"
+ "\335\335\377\335\335\335\377\335\335\335\377\343\343\343\377g\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\345\346\346\377\337\337\340"
+ "\377\340\337\337\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337"
+ "\337\377\337\337\336\377\337\336\336\377\336\336\337\377\336\336\337\377\336"
+ "\336\336\377\336\336\336\377\336\336\336\377\336\336\335\377\336\336\336\377"
+ "\336\335\336\377\336\336\336\377\335\335\336\377\335\335\335\377\335\335\335"
+ "\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335"
+ "\334\377\334\335\335\377\334\334\334\377\334\334\334\377\334\334\334\377\334"
+ "\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377"
+ "\334\333\334\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333"
+ "\377\333\333\333\377\341\341\342\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\345\345\345\377\336\335\336\377\336\335\335\377\335"
+ "\335\335\377\336\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377"
+ "\335\334\335\377\335\335\335\377\335\335\335\377\334\335\334\377\334\334\335"
+ "\377\334\335\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334"
+ "\334\377\334\334\334\377\334\334\334\377\334\333\334\377\334\333\333\377\333"
+ "\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377"
+ "\333\332\333\377\333\333\333\377\333\333\333\377\332\333\333\377\332\333\332"
+ "\377\332\332\332\377\332\332\332\377\332\332\332\377\332\332\332\377\332\332"
+ "\332\377\332\332\332\377\331\332\331\377\331\332\331\377\331\331\332\377\341"
+ "\341\341\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\343"
+ "\343\344\377\334\334\334\377\334\333\334\377\334\334\334\377\333\333\334\377"
+ "\333\333\333\377\333\334\333\377\333\333\333\377\333\333\333\377\333\333\333"
+ "\377\333\333\333\377\333\333\333\377\333\332\333\377\333\332\333\377\333\332"
+ "\332\377\332\332\333\377\332\332\333\377\332\332\332\377\333\332\332\377\332"
+ "\332\332\377\332\332\332\377\331\332\332\377\331\332\331\377\331\332\331\377"
+ "\331\332\331\377\331\331\331\377\331\331\331\377\332\331\331\377\331\331\331"
+ "\377\331\331\331\377\331\331\331\377\330\330\331\377\330\330\330\377\331\330"
+ "\330\377\330\330\330\377\330\330\330\377\331\330\330\377\330\330\330\377\330"
+ "\330\330\377\330\330\330\377\330\330\330\377\337\337\337\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\342\342\343\377\332\332\332"
+ "\377\332\332\332\377\332\332\332\377\332\332\332\377\331\332\332\377\331\332"
+ "\332\377\332\332\331\377\332\331\331\377\331\331\331\377\331\331\331\377\331"
+ "\331\331\377\331\331\331\377\331\331\331\377\331\331\331\377\331\331\331\377"
+ "\331\331\331\377\330\330\330\377\331\330\331\377\330\331\330\377\330\330\330"
+ "\377\330\330\330\377\330\330\330\377\330\330\327\377\327\330\330\377\330\330"
+ "\327\377\327\330\330\377\330\330\327\377\327\327\327\377\327\327\327\377\327"
+ "\327\327\377\327\327\327\377\327\327\327\377\327\327\327\377\327\327\327\377"
+ "\326\327\327\377\327\326\326\377\326\327\326\377\326\326\326\377\326\326\326"
+ "\377\326\326\326\377\336\336\337\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+g\203\253\377\341\341\341\377\331\331\331\377\330\331\331\377\330"
+ "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377"
+ "\327\330\330\377\330\330\327\377\330\330\330\377\330\327\330\377\327\327\327"
+ "\377\327\330\327\377\327\330\327\377\327\327\327\377\327\327\327\377\327\327"
+ "\327\377\327\327\327\377\326\327\326\377\326\327\326\377\326\326\326\377\326"
+ "\326\326\377\326\326\326\377\326\326\326\377\326\326\326\377\326\326\326\377"
+ "\326\326\326\377\325\325\326\377\325\326\326\377\326\325\325\377\325\325\325"
+ "\377\325\326\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325"
+ "\325\377\325\325\325\377\325\324\325\377\324\324\324\377\324\324\324\377\335"
+ "\335\335\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\340"
+ "\340\340\377\327\327\327\377\327\327\327\377\326\327\327\377\327\326\327\377"
+ "\326\326\326\377\326\326\327\377\326\326\326\377\326\326\326\377\326\326\326"
+ "\377\326\326\326\377\326\326\326\377\326\326\325\377\325\326\325\377\325\326"
+ "\326\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325"
+ "\325\325\377\325\325\325\377\324\325\325\377\325\325\325\377\324\325\325\377"
+ "\324\324\324\377\325\324\324\377\324\324\324\377\324\324\324\377\324\324\324"
+ "\377\323\324\324\377\324\323\324\377\323\324\324\377\323\324\324\377\323\324"
+ "\323\377\323\323\324\377\323\323\323\377\323\323\323\377\323\323\323\377\323"
+ "\323\323\377\323\323\323\377\323\323\323\377\334\334\334\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\337\336\337\377\325\325\325"
+ "\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325"
+ "\325\377\325\325\324\377\325\325\325\377\324\325\324\377\324\324\324\377\324"
+ "\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377"
+ "\324\324\324\377\324\323\323\377\323\323\323\377\324\323\323\377\323\323\323"
+ "\377\323\323\323\377\324\323\323\377\323\323\323\377\323\323\323\377\323\322"
+ "\323\377\323\322\322\377\322\322\322\377\322\322\322\377\322\322\322\377\322"
+ "\322\322\377\322\322\322\377\322\322\322\377\322\322\322\377\321\322\321\377"
+ "\321\321\322\377\321\321\321\377\321\321\321\377\321\321\321\377\321\321\321"
+ "\377\321\321\321\377\334\333\334\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\336\336\336\377\323\324\323\377\324\323\324\377\324"
+ "\323\323\377\323\324\323\377\323\323\323\377\323\323\323\377\323\323\323\377"
+ "\323\323\323\377\323\323\323\377\323\323\323\377\322\323\323\377\323\322\323"
+ "\377\322\322\323\377\322\322\322\377\322\322\322\377\322\322\322\377\322\322"
+ "\322\377\322\322\322\377\322\322\322\377\322\322\322\377\321\321\321\377\322"
+ "\321\321\377\321\321\321\377\321\321\321\377\321\321\321\377\321\321\321\377"
+ "\321\321\320\377\321\321\321\377\321\321\321\377\321\321\321\377\320\320\320"
+ "\377\320\320\320\377\320\320\320\377\320\320\320\377\320\317\320\377\317\320"
+ "\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\317\317\377\332"
+ "\332\332\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\335"
+ "\335\335\377\322\322\322\377\322\322\322\377\322\322\322\377\321\322\322\377"
+ "\321\321\321\377\321\321\321\377\322\321\321\377\321\321\321\377\321\321\321"
+ "\377\321\321\321\377\321\321\321\377\321\320\321\377\320\321\320\377\320\320"
+ "\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320"
+ "\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\317\320\320\377"
+ "\317\320\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317"
+ "\377\317\317\317\377\316\317\317\377\317\317\317\377\317\316\316\377\316\316"
+ "\316\377\317\316\316\377\316\316\316\377\316\316\316\377\316\316\316\377\316"
+ "\316\316\377\316\316\316\377\316\316\316\377\331\331\331\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\334\334\334\377\320\320\320"
+ "\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320"
+ "\320\377\320\320\317\377\317\317\320\377\320\317\317\377\317\317\317\377\317"
+ "\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377"
+ "\317\316\317\377\317\317\316\377\316\317\317\377\316\316\316\377\316\316\316"
+ "\377\316\316\316\377\316\316\316\377\316\316\316\377\316\316\316\377\316\315"
+ "\315\377\316\316\315\377\315\316\315\377\315\316\316\377\315\315\315\377\315"
+ "\315\315\377\315\315\315\377\315\315\315\377\315\314\315\377\315\315\315\377"
+ "\315\315\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314"
+ "\377\314\314\314\377\331\330\331\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\333\333\333\377\317\317\316\377\316\317\316\377\317"
+ "\316\316\377\317\316\316\377\316\317\316\377\316\316\316\377\316\316\316\377"
+ "\316\316\316\377\316\316\316\377\316\315\316\377\315\315\315\377\315\315\316"
+ "\377\315\315\315\377\315\315\315\377\315\315\315\377\315\315\315\377\315\315"
+ "\315\377\315\315\315\377\315\315\314\377\315\314\314\377\314\314\314\377\314"
+ "\315\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314\377"
+ "\314\314\314\377\314\314\313\377\313\313\313\377\314\314\313\377\313\313\313"
+ "\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313"
+ "\313\377\312\313\313\377\312\312\313\377\312\312\313\377\312\312\313\377\327"
+ "\327\327\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\332"
+ "\332\332\377\315\315\315\377\314\315\315\377\315\315\315\377\315\315\315\377"
+ "\314\315\315\377\314\314\315\377\314\314\314\377\314\314\314\377\314\314\314"
+ "\377\314\314\314\377\314\314\314\377\314\314\314\377\313\314\314\377\313\314"
+ "\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313"
+ "\313\313\377\313\313\313\377\313\312\313\377\313\313\313\377\312\313\313\377"
+ "\313\313\313\377\312\312\312\377\312\312\312\377\312\312\312\377\312\312\312"
+ "\377\312\312\312\377\312\312\312\377\312\312\311\377\312\311\311\377\312\312"
+ "\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311"
+ "\311\311\377\311\311\311\377\311\311\311\377\327\326\327\377g\203\253\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\331\331\331\377\313\313\313"
+ "\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313"
+ "\313\377\312\312\313\377\312\313\313\377\312\312\312\377\312\312\312\377\312"
+ "\312\312\377\312\312\312\377\312\312\312\377\312\312\312\377\311\311\311\377"
+ "\312\312\312\377\311\311\311\377\311\311\311\377\311\312\311\377\311\311\311"
+ "\377\311\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311\310"
+ "\311\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377\310"
+ "\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377"
+ "\307\307\310\377\310\307\310\377\307\307\307\377\307\307\307\377\307\307\307"
+ "\377\307\307\307\377\325\325\325\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\204\254\377\330\330\331\377\312\312\311\377\312\312\311\377\312"
+ "\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\310\311\311\377"
+ "\311\311\311\377\311\311\311\377\311\310\311\377\311\310\310\377\311\311\311"
+ "\377\310\310\311\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310"
+ "\310\377\310\310\310\377\307\310\307\377\310\310\310\377\307\307\307\377\307"
+ "\307\310\377\307\307\307\377\307\307\307\377\307\307\307\377\307\307\307\377"
+ "\307\307\307\377\307\307\307\377\306\306\307\377\306\307\307\377\306\306\306"
+ "\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306"
+ "\306\377\305\306\306\377\305\306\305\377\305\306\306\377\305\306\306\377\325"
+ "\325\325\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\327"
+ "\327\327\377\310\310\310\377\310\310\310\377\310\310\310\377\310\307\307\377"
+ "\307\307\310\377\307\307\307\377\307\307\307\377\307\307\307\377\307\307\307"
+ "\377\307\307\307\377\307\307\307\377\307\307\307\377\307\306\306\377\307\306"
+ "\306\377\306\307\306\377\307\306\306\377\306\306\306\377\306\306\306\377\306"
+ "\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\305\305\305\377"
+ "\305\305\306\377\306\305\305\377\305\305\305\377\305\305\306\377\305\305\305"
+ "\377\305\305\305\377\305\305\305\377\305\304\305\377\304\304\304\377\304\304"
+ "\305\377\304\304\305\377\304\304\304\377\304\304\304\377\304\304\304\377\304"
+ "\304\304\377\304\304\304\377\304\304\304\377\324\324\324\377g\203\253\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\326\326\326\377\307\306\306"
+ "\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\306\305"
+ "\306\377\306\306\305\377\305\305\306\377\305\306\306\377\305\305\305\377\305"
+ "\305\305\377\305\305\305\377\305\305\305\377\305\305\305\377\305\305\305\377"
+ "\305\304\305\377\305\305\305\377\304\304\305\377\304\304\304\377\304\304\304"
+ "\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304"
+ "\303\377\304\303\304\377\303\303\304\377\303\303\304\377\303\303\303\377\303"
+ "\303\303\377\303\302\303\377\303\303\303\377\303\303\303\377\303\302\303\377"
+ "\303\302\303\377\303\302\303\377\302\302\302\377\302\302\302\377\302\302\302"
+ "\377\302\302\302\377\323\323\323\377h\204\254\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\206+h\204\254\377\325\325\325\377\304\305\305\377\305\305\305\377\305"
+ "\304\304\377\304\304\305\377\304\305\305\377\304\304\304\377\305\304\305\377"
+ "\304\305\304\377\304\304\304\377\304\304\304\377\304\304\303\377\304\304\304"
+ "\377\304\304\303\377\303\303\304\377\303\303\303\377\304\303\303\377\303\303"
+ "\303\377\303\303\303\377\303\303\303\377\303\302\303\377\303\302\303\377\302"
+ "\303\303\377\302\302\303\377\302\303\303\377\302\303\302\377\302\302\302\377"
+ "\302\302\302\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301"
+ "\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301"
+ "\301\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301\377\322"
+ "\322\322\377g\203\253\377\37H\204,\0\0\0\0\0\0\0\1\35Cy0f\202\252\377\350"
+ "\350\350\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377"
+ "\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344"
+ "\344\377\344\344\344\377\344\344\344\377\343\343\343\377\343\343\343\377\344"
+ "\344\344\377\344\343\344\377\343\343\343\377\343\343\343\377\343\343\343\377"
+ "\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\342\342\342"
+ "\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342"
+ "\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\347\347\347\377f\202\252\377"
+ "\33=p3\0\0\0\5\0\0\0\14\27""5`<+T\216\377<d\233\377<d\233\377<d\233\377<d"
+ "\233\377<d\233\377<d\233\377<c\233\377:b\232\377-U\217\377<c\233\377;c\233"
+ "\377:c\233\377:c\233\377:c\233\377:c\233\377:c\233\377:c\232\377:c\232\377"
+ ":b\232\377:c\232\377:c\232\377:b\232\377:b\232\377:b\232\3779b\232\3779b\232"
+ "\3779b\232\3779b\232\3779b\232\3779b\232\3779b\232\3779b\232\3778b\232\377"
+ "+U\217\3778a\231\3778a\232\3778a\232\3778a\232\3778a\232\3778a\232\3778a\232"
+ "\3777`\231\377)R\216\377\25""1YA\0\0\0\23\0\0\0\25\24.UD4_\234\377R\202\277"
+ "\377R\202\277\377R\202\277\377R\202\277\377R\202\277\377R\202\277\377R\202"
+ "\277\377N\177\273\3771^\232\377R\202\277\377Q\202\277\377Q\202\277\377Q\202"
+ "\277\377Q\202\277\377Q\202\277\377Q\202\277\377Q\201\276\377Q\201\276\377"
+ "P\201\276\377Q\201\276\377Q\201\276\377P\201\276\377P\201\276\377P\201\276"
+ "\377P\201\276\377P\201\276\377P\201\276\377P\201\276\377P\201\276\377P\201"
+ "\276\377O\200\276\377O\200\276\377O\200\276\3770]\232\377N\177\274\377O\200"
+ "\276\377O\200\276\377O\200\276\377N\200\276\377N\200\276\377N\200\276\377"
+ "N\177\275\3771]\233\377\22+OI\0\0\0\34\0\0\0\33\20%C@*S\214\377<b\227\377"
+ "<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377;_\226\377-T\216"
+ "\377;`\226\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377"
+ "<a\227\377<a\227\377<a\227\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226"
+ "\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377"
+ ";`\226\377;`\226\377-T\215\377;`\226\377;`\226\377;`\226\377;`\226\377;a\226"
+ "\377;a\226\377;a\226\377<a\227\377*R\214\377\17!=G\0\0\0#\0\0\0\33\3\7\14"
+ ")\31""6bw\30""4\\}\26""0W\205\25.S\214\25.R\215\25.R\215\25.R\215\25.R\215"
+ "\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25"
+ ".R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25."
+ "R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R"
+ "\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25-Q\217"
+ "\26/T\212\27""2Y\202\30""4^{\2\5\12""1\0\0\0#\0\0\0\25\0\0\0\37\0\0\0+\0\0"
+ "\0""4\0\0\0=\0\0\0C\0\0\0D\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0"
+ "C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0"
+ "\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0"
+ "C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0D\0\0\0F\0\0\0B\0\0\0:\0"
+ "\0\0""2\0\0\0&\0\0\0\35\0\0\0\15\0\0\0\26\0\0\0\40\0\0\0'\0\0\0/\0\0\0""3"
+ "\0\0\0""3\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0"
+ "\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0"
+ "\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0"
+ """2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2"
+ "\0\0\0""2\0\0\0""2\0\0\0""3\0\0\0""5\0\0\0""2\0\0\0,\0\0\0%\0\0\0\34\0\0\0"
+ "\23\0\0\0\1\0\0\0\7\0\0\0\16\0\0\0\25\0\0\0\32\0\0\0\35\0\0\0\35\0\0\0\34"
+ "\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0"
+ "\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0"
+ "\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0"
+ "\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34"
+ "\0\0\0\35\0\0\0\36\0\0\0\35\0\0\0\30\0\0\0\23\0\0\0\12\0\0\0\3\0\0\0\0\0\0"
+ "\0\0\0\0\0\2\0\0\0\5\0\0\0\10\0\0\0\13\0\0\0\14\0\0\0\13\0\0\0\13\0\0\0\13"
+ "\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0"
+ "\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0"
+ "\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0"
+ "\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\14\0\0\0\14"
+ "\0\0\0\12\0\0\0\6\0\0\0\3\0\0\0\0\0\0\0\0");
diff --git a/render/test.c b/render/test.c
index 307e2629..36c962da 100644
--- a/render/test.c
+++ b/render/test.c
@@ -44,6 +44,7 @@ gint main()
Window win;
RrInstance *inst;
RrAppearance *look;
+ int done;
Window root;
XEvent report;
@@ -67,8 +68,10 @@ gint main()
inst = RrInstanceNew(ob_display, ob_screen);
look = RrAppearanceNew(inst, 0);
- look->surface.grad = RR_SURFACE_PYRAMID;
+ look->surface.grad = RR_SURFACE_MIRROR_HORIZONTAL;
look->surface.secondary = RrColorParse(inst, "Yellow");
+ look->surface.split_secondary = RrColorParse(inst, "Red");
+ look->surface.split_primary = RrColorParse(inst, "Green");
look->surface.primary = RrColorParse(inst, "Blue");
look->surface.interlaced = FALSE;
if (ob_display == NULL) {
@@ -76,8 +79,21 @@ gint main()
return 0;
}
+#if BIGTEST
+ int i;
+ look->surface.pixel_data = g_new(RrPixel32, w*h);
+ for (i = 0; i < 10000; ++i) {
+ printf("\r%d", i);
+ fflush(stdout);
+ RrRender(look, w, h);
+ }
+ exit (0);
+#endif
+
+
RrPaint(look, win, w, h);
- while (1) {
+ done = 0;
+ while (!done) {
XNextEvent(ob_display, &report);
switch (report.type) {
case Expose:
@@ -87,8 +103,10 @@ gint main()
report.xconfigure.width,
report.xconfigure.height);
break;
+ case UnmapNotify:
+ done = 1;
+ break;
}
-
}
RrAppearanceFree (look);
diff --git a/render/theme.c b/render/theme.c
index e1cff0cd..ec12dafb 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -177,9 +177,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
theme->osd_font = RrFontOpenDefault(inst);
/* load direct dimensions */
- if (!read_int(db, "menu.overlap", &theme->menu_overlap) ||
- theme->menu_overlap < -100 || theme->menu_overlap > 100)
- theme->menu_overlap = 0;
+ if ((!read_int(db, "menu.overlap.x", &theme->menu_overlap_x) &&
+ !read_int(db, "menu.overlap", &theme->menu_overlap_x)) ||
+ theme->menu_overlap_x < -100 || theme->menu_overlap_x > 100)
+ theme->menu_overlap_x = 0;
+ if ((!read_int(db, "menu.overlap.y", &theme->menu_overlap_y) &&
+ !read_int(db, "menu.overlap", &theme->menu_overlap_y)) ||
+ theme->menu_overlap_y < -100 || theme->menu_overlap_y > 100)
+ theme->menu_overlap_y = 0;
if (!read_int(db, "window.handle.width", &theme->handle_height) ||
theme->handle_height < 0 || theme->handle_height > 100)
theme->handle_height = 6;
diff --git a/render/theme.h b/render/theme.h
index 5b4e785e..9b2d663e 100644
--- a/render/theme.h
+++ b/render/theme.h
@@ -45,7 +45,8 @@ struct _RrTheme {
gint obwidth; /*!< osd border width */
gint cbwidthx;
gint cbwidthy;
- gint menu_overlap;
+ gint menu_overlap_x;
+ gint menu_overlap_y;
/* these ones are calculated, not set directly by the theme file */
gint win_font_height;
gint menu_title_font_height;
diff --git a/tools/xdg-autostart/xdg-autostart b/tools/xdg-autostart/xdg-autostart
index daa9117d..95ee5f51 100755
--- a/tools/xdg-autostart/xdg-autostart
+++ b/tools/xdg-autostart/xdg-autostart
@@ -67,7 +67,7 @@ def main(argv=sys.argv):
if list: autofile.list(environments)
else: autofile.run(environments)
-class AutostartFile():
+class AutostartFile:
def __init__(self, path):
self.path = path
self.filename = os.path.basename(path)
@@ -178,7 +178,7 @@ def show_help():
print " --version Show version and copyright information"
print
print "ENVIRONMENT specifies a list of environments for which to run autostart"
- print "applications for. If none are specified, only applications which do not "
+ print "applications. If none are specified, only applications which do not "
print "limit themselves to certain environments will be run."
print
print "ENVIRONMENT can be one or more of:"