Merge branch 'backport' into work

Diffing against the old work branch where most of the changes
in backport were cherry-picked from indicates this should be
alright. (0de9097017d4d1991388a35e380a57dc1135b431)
This commit is contained in:
Mikael Magnusson 2008-02-14 10:51:35 +01:00
commit 1124d10369
21 changed files with 725 additions and 525 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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">

View file

@ -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],

View file

@ -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");

View file

@ -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);

View file

@ -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);
}
}
}

View file

@ -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;

View file

@ -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)) {

View file

@ -23,7 +23,7 @@
#include <glib.h>
typedef struct _GravityCoord {
int pos;
gint pos;
gboolean center;
gboolean opposite;
} GravityCoord;

View file

@ -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,

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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;
}

View file

@ -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");

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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:"