Initial dockapps git repo

I tried to get the latest versions from dockapps.org, but I haven't
tested any of them.

More dockapps will be added as time permits.
This commit is contained in:
Carlos R. Mafra 2011-03-25 19:45:13 +01:00
commit 21625f40b5
859 changed files with 236527 additions and 0 deletions

340
Temperature.app-1.5/COPYING Normal file
View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -0,0 +1,38 @@
Vesrion 1.5 - Feb 7, 2010
- Fix ancient c++ codeing, using std:: namespace (carlos@gamma.ttk.pte.hu)
Version 1.4 - April 6, 2002
- Now fetching temperature information over http (instead of ftp).
- Fixed possible race condition when creating temporary files.
Version 1.3 - Jul 2, 2001
- Added option -V, which enables verbose messages from wget and
can be useful for tracing if wget fails.
- Minor bug fixes.
Version 1.2 - Jun 29, 2001
- Temporary files are now unique to the process,
so that multiple instances can run at once.
Version 1.1 - Jun 25, 2001
- Fixed some compilation problems.
- Fixed potential race condition.
- Now works better on Solaris.
Version 1.0 - March 17, 2001
- New Makefile.
Version 0.4 - April 23, 2000
- Added option -t, which makes the time of the temperature observation
appear (in 12 or 24 hour format).
Version 0.3 - April 19, 2000
- Fixed exit bug.
Version 0.2 - April 18, 2000
- Minor code clean up.
- Updated help text.
- Corrected spelling faults.
Version 0.1 - April 16, 2000
- First release.

View file

@ -0,0 +1,44 @@
Installation instructions for Temperature.app
Requirements
-------------------------------------------------------------------
- wget
The wget utility is used to fetch the weather information.
If you don't have it installed already you can find it here:
http://www.gnu.org/software/wget/wget.html
- ICAO Location Indicator
You must find the ICAO Location Indicator (a 4-character string)
of a weather station near you. You can search for a station
on this site: http://www.nws.noaa.gov/oso/siteloc.shtml
- X11, libxpm, C++ development environment
Most (Linux) systems have these things installed by default.
If you don't have it look for packages that fit your
distribution/vendor.
Installation
-------------------------------------------------------------------
1) make
2) su
3) make install (to put it in /usr/local/GNUstep/Apps/Temperature.app)
or
make install-x11 (to put it in /usr/X11R6/bin)
5) exit
Running
-------------------------------------------------------------------
To run this program:
/usr/local/GNUstep/Apps/Temperature.app/Temperature -s <station id> &
or
/usr/X11R6/bin/Temperature.app -s <station id> &
For more information about available command line arguments:
/usr/local/GNUstep/Apps/Temperature.app/Temperature --help
or
/usr/X11R6/bin/Temperature.app --help

View file

@ -0,0 +1,29 @@
//
// Temperature.app
//
// Copyright (c) 2000 Per Liden
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
#include "Temperature.h"
int main(int argc, char** argv)
{
Temperature app(argc, argv);
app.run();
return 0;
}

View file

@ -0,0 +1,35 @@
#
# Temperature.app Makefile
#
DESTDIR =
GNUSTEP_BINDIR = /usr/local/GNUstep/Apps/Temperature.app
X11_BINDIR = /usr/X11R6/bin
CXX=c++
CXXFLAGS += -Wall -pedantic -fno-rtti -fno-exceptions -O2 -I/usr/X11R6/include
LDFLAGS += -L/usr/X11R6/lib -lXpm -lXext -lX11
OBJECTS = Main.o Temperature.o Xpm.o
all: Temperature.app
Temperature.app: $(OBJECTS)
$(CXX) $(OBJECTS) -o $@ $(LDFLAGS)
.PHONY: install install-gnustep install-x11 clean
install: install-gnustep
install-gnustep: all
install -d $(DESTDIR)$(GNUSTEP_BINDIR)
install -m 0755 Temperature.app $(DESTDIR)$(GNUSTEP_BINDIR)/Temperature
install-x11: all
install -d $(DESTDIR)$(X11_BINDIR)
install -m 0755 Temperature.app $(DESTDIR)$(X11_BINDIR)/Temperature.app
clean:
rm -f *~ *.o
# End of file

View file

@ -0,0 +1,49 @@
Temperature.app
<http://www.fukt.bth.se/~per/temperature/>
by Per Liden
<per@fukt.bth.se>
modified to work with modern compilers by:
<carlos@gamma.ttk.pte.hu>
Description
--------------------------------------------------------------
Temperature.app is a Window Maker dock application which
fetches local temperature information every 15 minutes from
ftp://weather.noaa.gov and displays it (in Celsius or Fahrenheit).
Hints
--------------------------------------------------------------
The led:
If the led is blinking (green/red), then that means
Temperature.app is trying to fetch weather information.
If successful the led will stop blinking and go green.
If unsuccessful the led will stop blinking and go red.
Also, a error message will be printed in the console,
describing what went wrong. If the error message is
"wget failed" and you can't figure out why, try using
option -V, which will cause wget to be run in verbose
mode.
Bugs
--------------------------------------------------------------
If you discover any bugs in this software, please send a
bugreport to per@fukt.bth.se and describe the problem.
Special thanks to
--------------------------------------------------------------
Mike Henderson (mghenderson@lanl.gov) - Author of wmWeather
(I didn't know about the weather.noaa.gov ftp-site before I
caught sight of his program).
Copyright
--------------------------------------------------------------
Temperature.app is copyright (c) 2000-2002 by Per Liden and is
licensed through the GNU General Public License. Read the
COPYING file for the complete license.

View file

@ -0,0 +1,449 @@
//
// Temperature.app
//
// Copyright (c) 2000-2002 Per Liden
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
#include <X11/Xlib.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <math.h>
#include <time.h>
#include "Xpm.h"
#include "Temperature.h"
#include "pixmaps/main.xpm"
#include "pixmaps/redlight.xpm"
volatile static ChildStatus childStatus;
static void catchBrokenPipe(int sig)
{
exit(0);
}
static void catchChildExit(int sig)
{
int status;
waitpid(-1, &status, 0);
if (WIFEXITED(status)) {
if (WEXITSTATUS(status)) {
childStatus = ChildError;
} else {
childStatus = ChildDone;
}
} else {
childStatus = ChildError;
}
if (childStatus == ChildError) {
std::cerr << APPNAME << ": could not fetch temperature (wget failed), try option -V for more information" << std::endl;
}
}
Temperature::Temperature(int argc, char** argv)
{
XClassHint classHint;
XSizeHints sizeHints;
XWMHints wmHints;
Atom deleteWindow;
Xpm* image;
char* displayName = NULL;
mInstanceName = INSTANCENAME;
mStationId = 0;
mTemperature[0] = 0;
mTime[0] = 0;
mTimeDiff = 0.0;
mFahrenheit = false;
mShowTime = false;
mTime12HourFormat = false;
mVerbose = false;
// Parse command line
if (argc>1) {
for (int i=1; i<argc; i++) {
// Display
if (!strcmp(argv[i], "-d")) {
checkArgument(argv, argc, i);
displayName = argv[i+1];
i++;
}
// Station id
else if (!strcmp(argv[i], "-s")) {
checkArgument(argv, argc, i);
mStationId = argv[i+1];
i++;
}
// Fahrenheit
else if (!strcmp(argv[i], "-f")) {
mFahrenheit = true;
}
// Time
else if (!strcmp(argv[i], "-t")) {
mShowTime = true;
checkArgument(argv, argc, i);
if (!strcmp(argv[i+1], "12")) {
mTime12HourFormat = true;
} else if (strcmp(argv[i+1], "24")) {
std::cerr << APPNAME << ": unknown time format, use 12 or 24" << std::endl;
exit(0);
}
i++;
}
// Verbose
else if (!strcmp(argv[i], "-V")) {
mVerbose = true;
}
// Instance name
else if (!strcmp(argv[i], "-n")) {
checkArgument(argv, argc, i);
mInstanceName = argv[i+1];
i++;
}
// Version
else if (!strcmp(argv[i], "-v")) {
std::cerr << APPNAME << " version " << VERSION << std::endl;
exit(0);
}
// Help
else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) {
showHelp();
exit(0);
}
// Unknown option
else {
std::cerr << APPNAME << ": invalid option '" << argv[i] << "'" << std::endl;
tryHelp(argv[0]);
exit(0);
}
}
}
if (mStationId == 0) {
std::cerr << APPNAME << ": you must supply a station id using -s <id>" << std::endl;
tryHelp(argv[0]);
exit(0);
}
// Open display
if ((mDisplay = XOpenDisplay(displayName)) == NULL) {
std::cerr << APPNAME << ": could not open display " << displayName << std::endl;
exit(0);
}
// Get root window
mRoot = RootWindow(mDisplay, DefaultScreen(mDisplay));
// Create windows
mAppWin = XCreateSimpleWindow(mDisplay, mRoot, 1, 1, 64, 64, 0, 0, 0);
mIconWin = XCreateSimpleWindow(mDisplay, mAppWin, 0, 0, 64, 64, 0, 0, 0);
// Set classhint
classHint.res_name = mInstanceName;
classHint.res_class = CLASSNAME;
XSetClassHint(mDisplay, mAppWin, &classHint);
// Create delete atom
deleteWindow = XInternAtom(mDisplay, "WM_DELETE_WINDOW", False);
XSetWMProtocols(mDisplay, mAppWin, &deleteWindow, 1);
XSetWMProtocols(mDisplay, mIconWin, &deleteWindow, 1);
// Set windowname
XStoreName(mDisplay, mAppWin, APPNAME);
XSetIconName(mDisplay, mAppWin, APPNAME);
// Set sizehints
sizeHints.flags= USPosition;
sizeHints.x = 0;
sizeHints.y = 0;
XSetWMNormalHints(mDisplay, mAppWin, &sizeHints);
// Set wmhints
wmHints.initial_state = WithdrawnState;
wmHints.icon_window = mIconWin;
wmHints.icon_x = 0;
wmHints.icon_y = 0;
wmHints.window_group = mAppWin;
wmHints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(mDisplay, mAppWin, &wmHints);
// Set command
XSetCommand(mDisplay, mAppWin, argv, argc);
// Set background image
image = new Xpm(mDisplay, mRoot, main_xpm);
image->setWindowPixmapShaped(mIconWin);
delete image;
// Create status led
mStatusLed = XCreateSimpleWindow(mDisplay, mIconWin, LED_X, LED_Y, 3, 2, 0, 0, 0);
image = new Xpm(mDisplay, mRoot, redlight_xpm);
image->setWindowPixmap(mStatusLed);
delete image;
XMapWindow(mDisplay, mIconWin);
XMapWindow(mDisplay, mAppWin);
XSync(mDisplay, False);
// Catch broker pipe signal
signal(SIGPIPE, catchBrokenPipe);
// Catch child exit signal
signal(SIGCHLD, catchChildExit);
}
void Temperature::tryHelp(char* appname)
{
std::cerr << std::endl << "Try `" << appname << " --help' for more information" << std::endl;
}
void Temperature::showHelp()
{
std::cerr << APPNAME << " Copyright (c) 2000-2002 by Per Liden (per@fukt.bth.se)" << std::endl << std::endl
<< "options:" << std::endl
<< " -s <id> set station id (ICAO Location Indicator)" << std::endl
<< " -t 12|24 display time of temperature observation (12 or 24 hour format)" << std::endl
<< " -f display degrees in Fahrenheit" << std::endl
<< " -V display verbose messages from wget" << std::endl
<< " -n <name> set client instance name" << std::endl
<< " -d <disp> set display" << std::endl
<< " -v print version and exit" << std::endl
<< " -h, --help display this help text and exit" << std::endl
<< std::endl
<< "You must supply the ICAO Location Indicator (a 4-character string)" << std::endl
<< "of a weather station near you. You can search for a station on" << std::endl
<< "this site: http://www.nws.noaa.gov/oso/siteloc.shtml" << std::endl;
}
void Temperature::checkArgument(char** argv, int argc, int index)
{
if (argc-1 < index+1) {
std::cerr << APPNAME << ": option '" << argv[index] << "' requires an argument" << std::endl;
tryHelp(argv[0]);
exit(0);
}
}
void Temperature::showLed(bool show)
{
if (show) {
XMapWindow(mDisplay, mStatusLed);
} else {
XUnmapWindow(mDisplay, mStatusLed);
}
XSync(mDisplay, False);
}
void Temperature::calcTimeDiff()
{
struct tm* t;
double localTime;
double universalTime;
time_t currentTime;
currentTime = time(0);
t = gmtime(&currentTime);
universalTime = (double)t->tm_hour + (double)t->tm_min / 60.0 + (double)t->tm_sec / 3600.0;
currentTime = time(0);
t = localtime(&currentTime);
localTime = (double)t->tm_hour + (double)t->tm_min / 60.0 + (double)t->tm_sec / 3600.0;
mTimeDiff = universalTime - localTime;
if (mTimeDiff > 24.0) {
mTimeDiff -= 24.0;
} else if (mTimeDiff < 0.0) {
mTimeDiff += 24.0;
}
}
void Temperature::setTime(char* utcTime)
{
char unit[3];
int hour = 0;
int min = 0;
strncpy(unit, &utcTime[0], 2);
hour = atoi(unit);
strncpy(unit, &utcTime[2], 2);
min = atoi(unit);
double time = ((double)hour + (double)min / 60.0) - mTimeDiff;
if (time < 0.0) {
time += 24.0;
} else if (time > 24.0) {
time -= 24.0;
}
hour = (int)time;
min = (int)((time - (double)hour) * 60.0 + 0.5);
if (min >= 60){
min = 0;
if (++hour >= 24) {
hour = 0;
}
}
if (mTime12HourFormat) {
if (hour >= 0 && hour <= 11) {
mTimeAMPM = "AM";
} else {
mTimeAMPM = "PM";
}
if (hour == 0) {
hour = 12;
} else if (hour > 12) {
hour -= 12;
}
}
sprintf(mTime, "%d:%.2d", hour, min);
}
bool Temperature::updateTemperture(ifstream& file)
{
const int MAX_LINE = 1024;
char buffer[MAX_LINE];
if (mShowTime) {
// Find time of observation
char* start;
char time[5];
file.getline(buffer, MAX_LINE - 1);
file.getline(buffer, MAX_LINE - 1);
if ((start = strstr(buffer, "UTC")) == 0) {
return false;
}
strncpy(time, start - 5, 4);
setTime(time);
}
// Find temperature
while (!file.eof()) {
file >> buffer;
if (!strcmp(buffer, "Temperature:")) {
file >> buffer;
if (buffer && strlen(buffer) < 5) {
char* unit;
if (mFahrenheit) {
strcpy(mTemperature, buffer);
unit = " °F";
} else {
sprintf(mTemperature, "%d", (int)rint((atoi(buffer) - 32) / 1.8));
unit = " °C";
}
Xpm* image = new Xpm(mDisplay, mRoot, main_xpm);
if (mShowTime) {
if (mTime12HourFormat) {
image->drawComposedString(TIME_POS, TIME_FONT, mTime, AMPM_FONT, mTimeAMPM);
} else {
image->drawString(TIME_POS, TIME_FONT, mTime);
}
image->drawComposedString(TEMP_WITH_TIME_POS, TEMP_FONT, mTemperature, UNIT_FONT, unit);
} else {
image->drawComposedString(TEMP_POS, TEMP_FONT, mTemperature, UNIT_FONT, unit);
}
image->setWindowPixmap(mIconWin);
delete image;
XSync(mDisplay, False);
return true;
}
}
}
std::cerr << APPNAME << ": could not fetch temperature (unknown file format)" << std::endl;
return false;
}
void Temperature::run()
{
if (mShowTime) {
calcTimeDiff();
}
int counter = 0;
while(1) {
if (counter <= 0) {
char tmpFile[sizeof(TMP_FILE)] = TMP_FILE;
int fd = mkstemp(tmpFile);
if (fd == -1) {
std::cerr << APPNAME << ": could not create temporary file " << tmpFile << ": " << strerror(errno) << std::endl;
exit(1);
}
close(fd);
counter = UPDATE_INTERVAL;
childStatus = ChildRunning;
signal(SIGCHLD, catchChildExit);
showLed(true);
int pid = fork();
if (pid == 0) {
const char* verbose = (mVerbose ? "--verbose" : "--quiet");
char* URL = new char[strlen(METAR_URL) + strlen(mStationId) + 1];
sprintf(URL, METAR_URL, mStationId);
execlp("wget", "wget", "--cache=off", "--tries=0", verbose, "-O", tmpFile, URL, 0);
std::cerr << APPNAME << ": could not fetch temperature (wget not found in $PATH)" << std::endl;
remove(tmpFile);
exit(0);
} else if (pid == -1) {
std::cerr << APPNAME << ": could not fetch temperature (fork() failed)" << std::endl;
} else {
bool toggle = true;
while (childStatus == ChildRunning) {
showLed(toggle);
toggle ^= true;
sleep(1);
}
showLed(true);
if (childStatus == ChildDone) {
ifstream file(tmpFile);
if (file) {
if (updateTemperture(file)) {
showLed(false);
}
file.close();
}
}
remove(tmpFile);
}
} else {
counter--;
sleep(1);
XSync(mDisplay, False);
}
}
}

View file

@ -0,0 +1,89 @@
//
// Temperature.app
//
// Copyright (c) 2000-2002 Per Liden
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
#ifndef _TEMPERATURE_H_
#define _TEMPERATURE_H_
#include <fstream>
#include <X11/Xlib.h>
#define APPNAME "Temperature.app"
#define VERSION "1.5"
#define INSTANCENAME "temperature_app"
#define CLASSNAME "Temperature_app"
#define METAR_URL "http://weather.noaa.gov/pub/data/observations/metar/decoded/%s.TXT"
#define UPDATE_INTERVAL 900
#define TIME_POS 22
#define TEMP_POS 35
#define TEMP_WITH_TIME_POS 42
#define TIME_FONT "-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*"
#define AMPM_FONT "-*-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*"
#define TEMP_FONT "-*-helvetica-medium-r-*-*-18-*-*-*-*-*-*-*"
#define UNIT_FONT "-*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
#define LED_X 57
#define LED_Y 59
#define TMP_FILE "/tmp/temperature.app-XXXXXX"
/* temporary hack */
using namespace std;
enum ChildStatus
{
ChildRunning,
ChildDone,
ChildError
};
class Temperature
{
public:
Temperature(int argc, char** argv);
~Temperature() {};
void run();
private:
void tryHelp(char* appname);
void showHelp();
void checkArgument(char** argv, int argc, int index);
void showErrorLed(bool show);
void calcTimeDiff();
void setTime(char* utcTime);
bool updateTemperture(ifstream& file);
void showLed(bool show);
Display* mDisplay;
Window mRoot;
Window mAppWin;
Window mIconWin;
Window mStatusLed;
char* mInstanceName;
char* mStationId;
char mTemperature[5];
char mTime[6];
char* mTimeAMPM;
double mTimeDiff;
bool mFahrenheit;
bool mShowTime;
bool mTime12HourFormat;
bool mVerbose;
};
#endif

155
Temperature.app-1.5/Xpm.cc Normal file
View file

@ -0,0 +1,155 @@
//
// Temperature.app
//
// Copyright (c) 2000-2002 Per Liden
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include "Temperature.h"
#include "Xpm.h"
Xpm::Xpm(Display* display, Window root, char** data)
{
int error;
mDisplay = display;
mAttributes.valuemask = 0;
error = XpmCreatePixmapFromData(mDisplay, root, data, &mImage, &mMask, &mAttributes);
switch (error) {
case XpmColorError:
std::cerr << APPNAME << ": xpm image loaded but did not get all colors needed" << std::endl;
break;
case XpmColorFailed:
std::cerr << APPNAME << ": could not load xpm image (not enough colors available)" << std::endl;
exit(0);
break;
case XpmNoMemory:
std::cerr << APPNAME << ": could not load xpm image (not enough memory available)" << std::endl;
exit(0);
break;
case XpmOpenFailed:
case XpmFileInvalid:
std::cerr << APPNAME << ": could not load xpm image (image broken or corrupt)" << std::endl;
exit(0);
break;
case XpmSuccess:
default:
// Image loaded ok
break;
}
}
Xpm::~Xpm()
{
if (mImage) {
XFreePixmap(mDisplay, mImage);
}
if (mMask) {
XFreePixmap(mDisplay, mMask);
}
}
void Xpm::setWindowPixmap(Window win)
{
XResizeWindow(mDisplay, win, mAttributes.width, mAttributes.height);
XSetWindowBackgroundPixmap(mDisplay, win, mImage);
XClearWindow(mDisplay, win);
}
void Xpm::setWindowPixmapShaped(Window win)
{
XResizeWindow(mDisplay, win, mAttributes.width, mAttributes.height);
XSetWindowBackgroundPixmap(mDisplay, win, mImage);
XShapeCombineMask(mDisplay, win, ShapeBounding, 0, 0, mMask, ShapeSet);
XClearWindow(mDisplay, win);
}
void Xpm::drawString(int pos, char* font, char* str)
{
XFontStruct* fontStruct;
GC gc;
XGCValues gcv;
if ((fontStruct = XLoadQueryFont(mDisplay, font)) == 0) {
cerr << APPNAME << ": could not load font '" << font << "'" << endl;
exit(0);
}
gcv.foreground = WhitePixel(mDisplay, DefaultScreen(mDisplay));
gc = XCreateGC(mDisplay, mImage, GCForeground, &gcv);
int strLength = strlen(str);
int strWidth = XTextWidth(fontStruct, str, strLength);
int x = (64 / 2) - (strWidth / 2);
XSetFont(mDisplay, gc, fontStruct->fid);
XDrawString(mDisplay, mImage, gc, x, pos, str, strLength);
XFreeGC(mDisplay, gc);
XFreeFont(mDisplay, fontStruct);
}
void Xpm::drawComposedString(int pos, char* font1, char* str1, char* font2, char* str2)
{
XFontStruct* fontStruct1;
XFontStruct* fontStruct2;
GC gc;
XGCValues gcv;
if ((fontStruct1 = XLoadQueryFont(mDisplay, font1)) == 0) {
cerr << APPNAME << ": could not load font '" << font1 << "'" << endl;
exit(0);
}
if ((fontStruct2 = XLoadQueryFont(mDisplay, font2)) == 0) {
cerr << APPNAME << ": could not load font '" << font2 << "'" << endl;
exit(0);
}
gcv.foreground = WhitePixel(mDisplay, DefaultScreen(mDisplay));
gc = XCreateGC(mDisplay, mImage, GCForeground, &gcv);
int str1Length = strlen(str1);
int str1Width = XTextWidth(fontStruct1, str1, str1Length);
int str2Length = strlen(str2);
int str2Width = XTextWidth(fontStruct2, str2, str2Length);
int x = (64 / 2) - ((str1Width + str2Width) / 2);
XSetFont(mDisplay, gc, fontStruct1->fid);
XDrawString(mDisplay, mImage, gc, x, pos, str1, str1Length);
x += str1Width;
XSetFont(mDisplay, gc, fontStruct2->fid);
XDrawString(mDisplay, mImage, gc, x, pos, str2, str2Length);
XFreeGC(mDisplay, gc);
XFreeFont(mDisplay, fontStruct1);
XFreeFont(mDisplay, fontStruct2);
}

45
Temperature.app-1.5/Xpm.h Normal file
View file

@ -0,0 +1,45 @@
//
// Temperature.app
//
// Copyright (c) 2000-2002 Per Liden
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
#ifndef _XPM_H_
#define _XPM_H_
#include <X11/Xlib.h>
#include <X11/xpm.h>
class Xpm
{
public:
Xpm(Display* display, Window root, char** data);
virtual ~Xpm();
void setWindowPixmap(Window win);
void setWindowPixmapShaped(Window win);
void drawString(int pos, char* font, char* str);
void drawComposedString(int pos, char* font1, char* str1, char* font2, char* str2);
private:
Display* mDisplay;
XpmAttributes mAttributes;
Pixmap mImage;
Pixmap mMask;
};
#endif

View file

@ -0,0 +1,210 @@
/* XPM */
static char * main_xpm[] = {
"64 64 143 2",
" c None",
". c #000000",
"+ c #2F2542",
"@ c #302643",
"# c #322745",
"$ c #332846",
"% c #342948",
"& c #352A49",
"* c #362B4B",
"= c #372C4C",
"- c #382D4E",
"; c #392E4F",
"> c #3A2E50",
", c #3B2F52",
"' c #3C3053",
") c #3C3154",
"! c #3D3155",
"~ c #3E3256",
"{ c #3F3357",
"] c #3F3358",
"^ c #403459",
"/ c #41345A",
"( c #41355A",
"_ c #41355B",
": c #42355B",
"< c #42365C",
"[ c #43365D",
"} c #B7BAC7",
"| c #312745",
"1 c #352A4A",
"2 c #372C4D",
"3 c #3A2F51",
"4 c #3B3052",
"5 c #43365C",
"6 c #43375E",
"7 c #44375E",
"8 c #44375F",
"9 c #44385F",
"0 c #45385F",
"a c #322846",
"b c #392E50",
"c c #3B3053",
"d c #453860",
"e c #463961",
"f c #332948",
"g c #3D3154",
"h c #403358",
"i c #463962",
"j c #473A62",
"k c #473A63",
"l c #483A63",
"m c #483A64",
"n c #332947",
"o c #342A49",
"p c #483B64",
"q c #493B65",
"r c #493C65",
"s c #493C66",
"t c #352B4A",
"u c #483B65",
"v c #4A3C66",
"w c #4A3C67",
"x c #4A3D67",
"y c #4B3D67",
"z c #4B3D68",
"A c #362B4C",
"B c #382D4D",
"C c #43375D",
"D c #4B3E69",
"E c #4C3E69",
"F c #4C3E6A",
"G c #4C3F6A",
"H c #392D4F",
"I c #453960",
"J c #4D3F6A",
"K c #4D3F6B",
"L c #4E406C",
"M c #4F406D",
"N c #4F416D",
"O c #4F416E",
"P c #50416E",
"Q c #382C4D",
"R c #4D3F6C",
"S c #4E406D",
"T c #50426F",
"U c #504270",
"V c #514270",
"W c #514371",
"X c #524371",
"Y c #524372",
"Z c #524472",
"` c #534473",
" . c #534574",
".. c #544574",
"+. c #544575",
"@. c #554676",
"#. c #564777",
"$. c #50416F",
"%. c #554675",
"&. c #574778",
"*. c #574879",
"=. c #584879",
"-. c #58497A",
";. c #58497B",
">. c #59497B",
",. c #59497C",
"'. c #3E3257",
"). c #564778",
"!. c #594A7C",
"~. c #5A4A7D",
"{. c #5A4B7D",
"]. c #5B4B7E",
"^. c #5C4C7F",
"/. c #5C4C80",
"(. c #5A4A7C",
"_. c #5D4D81",
":. c #5D4D82",
"<. c #5E4D82",
"[. c #5E4E82",
"}. c #5E4E83",
"|. c #5F4F84",
"1. c #604F85",
"2. c #615086",
"3. c #605086",
"4. c #615187",
"5. c #625188",
"6. c #625288",
"7. c #635289",
"8. c #625187",
"9. c #63528A",
"0. c #64538B",
"a. c #64538A",
"b. c #65548C",
"c. c #66548D",
"d. c #66558D",
"e. c #67558F",
"f. c #67568F",
"g. c #685790",
"h. c #695791",
"i. c #6B5894",
"j. c #2E2440",
"k. c #292039",
"l. c #00FF29",
" ",
" ",
" ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < < [ [ [ [ [ [ [ < < : _ ( / ^ ] { ~ ! ) ' , > ; - = * & % $ # @ } ",
" . @ | $ % 1 * 2 - ; 3 4 ' ! ~ { ] ^ / _ < 5 [ 6 7 7 8 9 0 0 0 9 8 7 7 6 [ 5 < _ / ^ ] { ~ ! ' 4 3 ; - 2 * 1 % $ | } ",
" . | a % & * 2 - b 3 c ) ! ~ ] ^ / : < [ 6 7 0 d d e e e e e e e e e d d 0 7 6 [ < : / ^ ] ~ ! ) c 3 b - 2 * & % a } ",
" . a f & * 2 - b 3 ' g ~ { h ^ _ < [ 7 9 d e e i j k k l m m m l k k j i e e d 9 7 [ < _ ^ h { ~ g ' 3 b - 2 * & f } ",
" . n o * = - b 3 ' g ~ { ^ / : [ 6 8 d e i k l p p q r s s s s s r q p p l k i e d 8 6 [ : / ^ { ~ g ' 3 b - = * o } ",
" . o t = - ; 3 ' g ~ { ^ ( < [ 7 d e i k p u r v w x y z z z z z y x w v r u p k i e d 7 [ < ( ^ { ~ g ' 3 ; - = t } ",
" . 1 A B ; 3 c g ~ { ^ ( < C 8 d e k p q s w y z D E F F G G G F F E D z y w s q p k e d 8 C < ( ^ { ~ g c 3 ; B A } ",
" . * 2 H > 4 ) ~ { ^ ( < 6 9 I i k p s w z D E J K K L L L L L L L K K J E D z w s p k i I 9 6 < ( ^ { ~ ) 4 > H 2 } ",
" . = - b , ' ! { ^ ( < 6 0 e j m q v y D F K K L M N O O P P P O O N M L K K F D y v q m j e 0 6 < ( ^ { ! ' , b - } ",
" . Q ; 3 ' ! ~ h / < C 9 e j p q w z E J R S N P T U V V W W W V V U T P N S R J E z w q p j e 9 C < / h ~ ! ' 3 ; } ",
" . - > 4 ) ~ ] ^ : [ 8 I j p r x z F K L N P T V X Y Z ` ` ` ` ` Z Y X V T P N L K F z x r p j I 8 [ : ^ ] ~ ) 4 > } ",
" . ; 3 ' ! { ^ _ [ 7 d i m q x z F K S O T V X Z ` ...+.+.+.+.+... .` Z X V T O S K F z x q m i d 7 [ _ ^ { ! ' 3 } ",
" . > 4 g ~ ] / < 6 d e k q w z F K M P V X Z ` ..+.@.@.#.#.#.#.#.@.@.+...` Z X V P M K F z w q k e d 6 < / ] ~ g 4 } ",
" . 3 ' ! { ^ : [ 8 e k p v z F K M $.V X ` ..%.@.#.&.*.*.*.=.*.*.*.&.#.@.%...` X V $.M K F z v p k e 8 [ : ^ { ! ' } ",
" . , ) ~ ] / < 7 d i p s y E K S P V Y ` +.@.#.&.*.-.;.>.>.,.>.>.;.-.*.&.#.@.+.` Y V P S K E y s p i d 7 < / ] ~ ) } ",
" . ' ! '.^ _ [ 9 e k q w D J L O V X ` +.@.).*.-.>.!.~.{.].].].{.~.!.>.-.*.).@.+.` X V O L J D w q k e 9 [ _ ^ '.! } ",
" . ' ~ ] / < 6 d i p s z F R N T X ` +.@.).*.;.!.~.].^.^./././.^.^.].~.!.;.*.).@.+.` X T N R F z s p i d 6 < / ] ~ } ",
" . ) ~ h ( 5 7 e k u w D K S P V Z ..@.).*.>.(.].^./._.:.<.[.<.:._./.^.].(.>.*.).@...Z V P S K D w u k e 7 5 ( h ~ } ",
" . ! '.^ _ [ 0 e l r y E K N T X ` %.#.*.;.(.].^._.<.}.|.|.|.|.|.}.<._.^.].(.;.*.#.%.` X T N K E y r l e 0 [ _ ^ '.} ",
" . ! { ^ : 6 d i p v z J L P V Z ..@.&.-.!.].^._.[.|.1.2.2.2.2.2.1.|.[._.^.].!.-.&.@...Z V P L J z v p i d 6 : ^ { } ",
" . ~ ] / < 7 d j p w D K M T X ` +.#.*.>.~.^._.[.|.3.4.5.6.7.6.5.4.3.|.[._.^.~.>.*.#.+.` X T M K D w p j d 7 < / ] } ",
" . ~ ] ( < 7 e k q x E K N U Y .@.&.-.!.]./.<.|.3.8.7.9.0.0.0.9.7.8.3.|.<./.].!.-.&.@. .Y U N K E x q k e 7 < ( ] } ",
" . ~ h ( [ 8 e k r y F L O V Z ..@.*.;.~.^._.}.1.4.7.a.b.c.c.c.b.a.7.4.1.}._.^.~.;.*.@...Z V O L F y r k e 8 [ ( h } ",
" . ~ ^ _ [ 9 e l s z F L O V ` +.#.*.>.{.^.:.|.2.5.9.b.d.e.f.e.d.b.9.5.2.|.:.^.{.>.*.#.+.` V O L F z s l e 9 [ _ ^ } ",
" . ~ ^ _ [ 0 e m s z G L P W ` +.#.*.>.]./.<.|.2.6.0.c.e.g.h.g.e.c.0.6.2.|.<./.].>.*.#.+.` W P L G z s m e 0 [ _ ^ } ",
" . '.^ _ [ 0 e m s z G L P W ` +.#.=.,.]./.[.|.2.7.0.c.f.h.i.h.f.c.0.7.2.|.[./.].,.=.#.+.` W P L G z s m e 0 [ _ ^ } ",
" . ~ ^ _ [ 0 e m s z G L P W ` +.#.*.>.]./.<.|.2.6.0.c.e.g.h.g.e.c.0.6.2.|.<./.].>.*.#.+.` W P L G z s m e 0 [ _ ^ } ",
" . ~ ^ _ [ 9 e l s z F L O V ` +.#.*.>.{.^.:.|.2.5.9.b.d.e.f.e.d.b.9.5.2.|.:.^.{.>.*.#.+.` V O L F z s l e 9 [ _ ^ } ",
" . ~ h ( [ 8 e k r y F L O V Z ..@.*.;.~.^._.}.1.4.7.a.b.c.c.c.b.a.7.4.1.}._.^.~.;.*.@...Z V O L F y r k e 8 [ ( h } ",
" . ~ ] ( < 7 e k q x E K N U Y .@.&.-.!.]./.<.|.3.8.7.9.0.0.0.9.7.8.3.|.<./.].!.-.&.@. .Y U N K E x q k e 7 < ( ] } ",
" . ~ ] / < 7 d j p w D K M T X ` +.#.*.>.~.^._.[.|.3.4.5.6.7.6.5.4.3.|.[._.^.~.>.*.#.+.` X T M K D w p j d 7 < / ] } ",
" . ! { ^ : 6 d i p v z J L P V Z ..@.&.-.!.].^._.[.|.1.2.2.2.2.2.1.|.[._.^.].!.-.&.@...Z V P L J z v p i d 6 : ^ { } ",
" . ! '.^ _ [ 0 e l r y E K N T X ` %.#.*.;.(.].^._.<.}.|.|.|.|.|.}.<._.^.].(.;.*.#.%.` X T N K E y r l e 0 [ _ ^ '.} ",
" . ) ~ h ( 5 7 e k u w D K S P V Z ..@.).*.>.(.].^./._.:.<.[.<.:._./.^.].(.>.*.).@...Z V P S K D w u k e 7 5 ( h ~ } ",
" . ' ~ ] / < 6 d i p s z F R N T X ` +.@.).*.;.!.~.].^.^./././.^.^.].~.!.;.*.).@.+.` X T N R F z s p i d 6 < / ] ~ } ",
" . ' ! '.^ _ [ 9 e k q w D J L O V X ` +.@.).*.-.>.!.~.{.].].].{.~.!.>.-.*.).@.+.` X V O L J D w q k e 9 [ _ ^ '.! } ",
" . , ) ~ ] / < 7 d i p s y E K S P V Y ` +.@.#.&.*.-.;.>.>.,.>.>.;.-.*.&.#.@.+.` Y V P S K E y s p i d 7 < / ] ~ ) } ",
" . 3 ' ! { ^ : [ 8 e k p v z F K M $.V X ` ..%.@.#.&.*.*.*.=.*.*.*.&.#.@.%...` X V $.M K F z v p k e 8 [ : ^ { ! ' } ",
" . > 4 g ~ ] / < 6 d e k q w z F K M P V X Z ` ..+.@.@.#.#.#.#.#.@.@.+...` Z X V P M K F z w q k e d 6 < / ] ~ g 4 } ",
" . ; 3 ' ! { ^ _ [ 7 d i m q x z F K S O T V X Z ` ...+.+.+.+.+... .` Z X V T O S K F z x q m i d 7 [ _ ^ { ! ' 3 } ",
" . - > 4 ) ~ ] ^ : [ 8 I j p r x z F K L N P T V X Y Z ` ` ` ` ` Z Y X V T P N L K F z x r p j I 8 [ : ^ ] ~ ) 4 > } ",
" . Q ; 3 ' ! ~ h / < C 9 e j p q w z E J R S N P T U V V W W W V V U T P N S R J E z w q p j e 9 C < / h ~ ! ' 3 ; } ",
" . = - b , ' ! { ^ ( < 6 0 e j m q v y D F K K L M N O O P P P O O N M L K K F D y v q m j e 0 6 < ( ^ { ! ' , b - } ",
" . * 2 H > 4 ) ~ { ^ ( < 6 9 I i k p s w z D E J K K L L L L L L L K K J E D z w s p k i I 9 6 < ( ^ { ~ ) 4 > H 2 } ",
" . 1 A B ; 3 c g ~ { ^ ( < C 8 d e k p q s w y z D E F F G G G F F E D z y w s q p k e d 8 C < ( ^ { ~ g c 3 ; B A } ",
" . o t = - ; 3 ' g ~ { ^ ( < [ 7 d e i k p u r v w x y z z z z z y x w v r u p k i e d 7 [ < ( ^ { ~ g ' 3 ; - = t } ",
" . n o * = - b 3 ' g ~ { ^ / : [ 6 8 d e i k l p p q r s s s s s r q p p l k i e d 8 6 [ : / ^ { ~ g ' 3 b - = * o } ",
" . a f & * 2 - b 3 ' g ~ { h ^ _ < [ 7 9 d e e i j k k l m m m l k k j i e e d 9 7 [ < _ ^ h { ~ g ' 3 b - 2 * & f } ",
" . | a % & * 2 - b 3 c ) ! ~ ] ^ / : < [ 6 7 0 d d e e e e e e e e e d d 0 7 6 [ < : / ^ ] ~ ! ) c 3 b - 2 * & % a } ",
" . @ | $ % 1 * 2 - ; 3 4 ' ! ~ { ] ^ / _ < 5 [ 6 7 7 8 9 0 0 0 9 8 7 7 6 [ 5 < _ / ^ ] { ~ ! ' 4 3 ; - 2 * 1 % $ | } ",
" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < < [ [ [ [ [ [ [ < < : _ ( / ^ ] { ~ ! ) ' , > ; - = * & % $ # @ } ",
" . j.+ @ # $ % & * = B H b 3 4 ' g ! ~ '.] h ^ ^ / ( ( _ _ _ _ _ ( ( / ^ ^ h ] '.~ ! g ' 4 3 b H B = * & % $ # @ + } ",
" . } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } ",
" . . . . . . . . . . . . . ",
" . . . . . . . . k.k.k.k. ",
" . . . . . . . . . . k.l.l.l. ",
" . . . . . k.l.l.l. ",
" . . . . . . . ",
" ",
" "};

View file

@ -0,0 +1,7 @@
/* XPM */
static char * redlight_xpm[] = {
"3 2 2 1",
" c None",
". c #FF0000",
"...",
"..."};

1
wmCalClock-1.25/BUGS Normal file
View file

@ -0,0 +1 @@
Please send bug reports to mghenderson@lanl.gov

61
wmCalClock-1.25/CHANGES Normal file
View file

@ -0,0 +1,61 @@
wmCalClock changes.
Version Description
------------------------------------------------------------------------------------------------
Version 1.25 - released July 2, 1999.
Some optimization + ignores double click if no command set (patch from
Robert Horn).
Version 1.24 - released March 27, 1999.
Added support for additional fonts for time field;
-tekton for Tekton
-arial for Arial (Helvetica) (this is the same font as usual)
-luggerbug for LuggerBug (part of AcidFonts).
-comicsans for ComicSans
-jazz for JazzPoster
Different width fonts get used depending on whether or not seconds
are displayed. Still need to add in a few more fonts... Graphite
would be nice! Or EagleFeather (Frank Lloyd Wright inspired font)?
Version 1.23 - released March 20, 1999.
Switched from wmgeneral.c stuff to xutils.c (a more stripped down version
of wmgeneral).
Centered Calendar text better.
Added command line options and code to change colors of the time
field digits and the background of the time field. So now you can
get things like darkblue on light grey or very dark color on an LCD-ish
colored background (e.g. wmCalClock -bc #6e9e69 -tc #001100)..
Rewrote the command line parsing routine.
Version 1.22 - released February 24, 1999.
Added double click detection and -e command-line option.
Version 1.21 - released February 4, 1999.
cosmetic for AfterStep users. removed spurious black line at RHS edge an mask.
Version 1.2 - released January 14, 1999.
Changed support for LowColor Pixmap. Now, check for Depth
automatically. If its <= 8, then use LowColor.
Version 1.11 - released January 8, 1999.
Fixed bug in 12-hour mode. Now displays 12:xx:xx AM instead
of 0:xx:xx AM.
Version 1.1 - released January 7, 1999.
Added support for LowColor Pixmap. (21 colors may still be a
bit high, but the poor saps with 8-bit displays can at least run
it now.)
Version 1.02 - released January 7, 1999.
Fixed bug in AM/PM determination...
Version 1.01 - released January 3, 1999.
Added "-S" option to inhibit drawing of seconds.
Version 1.0 - released December 16, 1998.

339
wmCalClock-1.25/COPYING Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

54
wmCalClock-1.25/HINTS Normal file
View file

@ -0,0 +1,54 @@
Hints for wmCalClock
Generic.
--------
% wmCalClock -h
wmCalClock version: 1.24
usage: wmCalClock [-b <Volume>] [-tc <Color>] [-bc <Color>] [-e "Command"] [-S]
[-24] [-g] [-s] [-l <longitude>] [-l] [-h]
-b <Volume> Beep on the hour. Volume is between -100 to 100.
-tekton Use the Tekton font for time field.
-arial Use the Arail (i.e. Helvetica) font for time field.
-jazz Use the JazzPoster font for time field.
-litterbug Use the Litterbug font for time field.
-comicsans Use the ComicSans font for time field.
-tc <Color> Color of the time digits (e.g. red or #ff8800).
-bc <Color> Background color.
-e "Command" Command to execute via double click of mouse button 1.
-S Do not show seconds.
-24 Show 24-hour time. Default is 12 hour AM/PM Time.
-g Show Greenwich time.
-s Show Greenwich Mean Sidereal Time (GMST) in 24-hour format.
-L <Longitude> Show Local Sidereal Time (LST) in 24-hour format.
Longitude is in degrees (- for West + for East).
-l Use a low-color pixmap to conserve colors. On 8-bit displays the
low color pixmap will always be used.
-h Display help screen.
Example: wmCalClock -b 100 -tc #001100 -bc #7e9e69
WindowMaker.
------------
In WindowMaker simply drag and drop the wmCalClock App on the WindowMaker Dock or Clip.
Afterstep.
---------
Afterstep users put the following in their .steprc "Wharf wmCalClock - MaxSwallow
"wmCalClock" wmCalClock &". Dont use Afterstep so I have no idea if it works...
Note: AfterStep's Wharf supposedly has a problem with pixmaps that are larger
than 60x60 pixels. Please tell the AfterStep authors to fix this, this is not
our fault, but a Wharf problem!
Other window managers.
----------------------
wmCalClock shows as a 64x64 shaped icon on your desktop under other window
managers.

24
wmCalClock-1.25/INSTALL Normal file
View file

@ -0,0 +1,24 @@
Installation instructions for wmCalClock.
Requirements
--------------------------------------------------------------
wmCalClock requires the Xpm library (which should be available on
most machines with XFree86 installed).
Installation
--------------------------------------------------------------
1) gunzip wmCalClock-x.xx.tar.gz
1) tar -xvf wmCalClock-x.xx.tar
2) cd wmCalClock-x.xx/Src/
3) make
4) make install (must be root)
5) wmCalClock & (or 'wmCalClock -h' for help, or 'man wmCalClock' for the man page)
Notes:
- On FreeBSD, you may need to use gmake.
- On Solaris 2.6, -lsocket is required (use the Solaris-specfic
LIB line in the Makefile instead of the default one for Linux).
- On SGI/IRIX, use gmake (?) or the Makefile.sgi

32
wmCalClock-1.25/README Normal file
View file

@ -0,0 +1,32 @@
wmCalClock-1.24 release
-----------------------
Author....: Michael G. Henderson <mghenderson@lanl.gov>
Description
-----------
wmCalClock is a simple Calendar Clock that uses anti-aliased characters and
drop shadows. Doesnt do much except tell time...
Files
-----
README This file.
INSTALL Installation instructions.
HINTS Hints about what you can do with wmCalClock.
BUGS Bug reports
CHANGES Change history.
COPYING GNU General Public License Version 2.
TODO Wish list.
Bugs
-----
Send bug reports to mghenderson@lanl.gov
Copyright
----------
wmCalClock is copyright (c) 1998, 1999 by Michael G. Henderson and licensed
through the GNU General Public License. Read the COPYING file for the complete
GNU license.

View file

@ -0,0 +1,36 @@
CC = gcc
CFLAGS = -O2 -Wall
INCDIR = -I/usr/X11R6/include/X11 -I/usr/X11R6/include
DESTDIR= /usr/X11R6
LIBDIR = -L/usr/X11R6/lib
# for Linux
LIBS = -lXpm -lX11 -lXext
# for Solaris
# LIBS = -lXpm -lX11 -lXext -lsocket -lnsl
OBJS = wmCalClock.o \
xutils.o
.c.o:
$(CC) $(CFLAGS) -D$(shell echo `uname -s`) -c $< -o $*.o $(INCDIR)
all: wmCalClock.o wmCalClock
wmCalClock.o: wmCalClock_master.xpm wmCalClock_mask.xbm
wmCalClock: $(OBJS)
$(CC) $(COPTS) $(SYSTEM) -o wmCalClock $^ $(INCDIR) $(LIBDIR) $(LIBS)
clean:
for i in $(OBJS) ; do \
rm -f $$i; \
done
rm -f wmCalClock
install:: wmCalClock
install -c -s -m 0755 wmCalClock $(DESTDIR)/bin
install -c -m 0644 wmCalClock.1 $(DESTDIR)/man/man1

View file

@ -0,0 +1,36 @@
CC = gcc
CFLAGS = -O2 -Wall
INCDIR = -I/usr/X11R6/include/X11 -I/usr/X11R6/include
DESTDIR= /usr/X11R6
LIBDIR = -L/usr/X11R6/lib
# for Linux, IRIX
LIBS = -lXpm -lX11 -lXext
# for Solaris
# LIBS = -lXpm -lX11 -lXext -lsocket -lnsl
OBJS = wmCalClock.o \
xutils.o
.c.o:
$(CC) $(CFLAGS) -c $< -o $*.o $(INCDIR)
all: wmCalClock.o wmCalClock
wmCalClock.o: wmCalClock_master.xpm wmCalClock_mask.xbm
wmCalClock: $(OBJS)
$(CC) $(COPTS) $(SYSTEM) -o wmCalClock $(OBJS) $(INCDIR) $(LIBDIR) $(LIBS)
clean:
for i in $(OBJS) ; do \
rm -f $$i; \
done
rm -f wmCalClock
install:: wmCalClock
install -s -m 0755 wmCalClock $(DESTDIR)/bin
install -c -m 0644 wmCalClock.1 $(DESTDIR)/man/man1

View file

@ -0,0 +1,36 @@
CC = gcc
CFLAGS = -O2 -Wall
INCDIR = -I/usr/X11R6/include/X11 -I/usr/X11R6/include
DESTDIR= /usr/X11R6
LIBDIR = -L/usr/X11R6/lib
# for Linux
#LIBS = -lXpm -lX11 -lXext
# for Solaris
LIBS = -lXpm -lX11 -lXext -lsocket -lnsl
OBJS = wmCalClock.o \
xutils.o
.c.o:
$(CC) $(CFLAGS) -D$(shell echo `uname -s`) -c $< -o $*.o $(INCDIR)
all: wmCalClock.o wmCalClock
wmCalClock.o: wmCalClock_master.xpm wmCalClock_mask.xbm
wmCalClock: $(OBJS)
$(CC) $(COPTS) $(SYSTEM) -o wmCalClock $^ $(INCDIR) $(LIBDIR) $(LIBS)
clean:
for i in $(OBJS) ; do \
rm -f $$i; \
done
rm -f wmCalClock
install:: wmCalClock
install -s -m 0755 wmCalClock $(DESTDIR)/bin
install -c -m 0644 wmCalClock.1 $(DESTDIR)/man/man1

View file

@ -0,0 +1,65 @@
.TH WMCALCLOCK 1 "16 December 1998"
.SH NAME
WMCALCLOCK \- Dockable Calendar Clock
.SH SYNOPSIS
.B wmCalClock
[-h] [-display <Display>] [-b <Volume>] [-e <Command>] [-24] [-s] [-S] [-L <Longitude>] [-l] [-tc <color>] [-bc <color>] [-tekton] [-comicsans] [-arial] [-luggerbug] [-jazz]
.SH DESCRIPTION
.PP
wmCalClock is a simple Calendar Clock with anti-aliased text and drop-shadows.
.SH OPTIONS
.TP
.B \-h
Display list of command-line options.
.TP
.B \-display [display]
Use an alternate X Display.
.TP
.B \-b <Volume>
Beep on the hour with specified volume (between -100 and 100).
.TP
.B \-e <Command>
Command to execute via double click of mouse button 1. (Use quotes if your command
has white space in it).
.TP
.B \-24
Show time in 24-hour format instead of default 12-hour AM/PM format.
.TP
.B \-s
Show Greenwich Mean Sidereal Time (GMST) in 24-hour format.
.TP
.B \-S
Dont show seconds.
.TP
.B \-L <Longitude>
Show Local Sidereal Time (LST) in 24-hour format. Longitude is in degrees
(- for West + for East).
.TP
.B \-l
Force use of lower color pixmap to conserve colors. On displays with <= 8 bits,
the low color Pixmap will always be used.
.TP
.B \-tc <color>
Change color of time-field digits.
.TP
.B \-bc <color>
Change color of time-field background.
.TP
.B \-tekton
Use the Tekton font for time field.
.TP
.B \-arial
Use the Arial (i.e. Helvetica) font for time field.
.TP
.B \-jazz
Use the JazzPoster font for time field.
.TP
.B \-luggerbug
Use the LuggerBug font for time field.
.TP
.B \-comicsans
Use the ComicSans font for time field.
.SH BUGS
Who knows? (Let me know if you find any).
.SH AUTHOR
Michael G. Henderson <mghenderson@lanl.gov>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,38 @@
#define wmCalClock_mask_width 64
#define wmCalClock_mask_height 64
static char wmCalClock_mask_bits[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};

View file

@ -0,0 +1,347 @@
/* XPM */
static char *wmCalClock_master[] = {
/* width height num_colors chars_per_pixel */
" 499 165 175 2",
/* colors */
".. c #000000",
".# c #020204",
".a c #0e0e0c",
".b c #0e0e14",
".c c #0e1214",
".d c #1c0000",
".e c #121214",
".f c #121614",
".g c #161614",
".h c #16161c",
".i c #161a1c",
".j c #181818 s Back",
".k c #1e1e24",
".l c #1e2224",
".m c #380000",
".n c #313115 s Color1",
".o c #222224",
".p c #222624",
".q c #262624",
".r c #26262c",
".s c #262a2c",
".t c #2a2a2c",
".u c #2a2e2c",
".v c #2e2e2c",
".w c #2e2e34",
".x c #282c38",
".y c #2e3234",
".z c #283038",
".A c #323234",
".B c #323634",
".C c #32363c",
".D c #36363c",
".E c #363a3c",
".F c #3a3a3c",
".G c #3a3e3c",
".H c #303040",
".I c #303440",
".J c #303840",
".K c #3a3e44",
".L c #3e3e44",
".M c #383848",
".N c #383c48",
".O c #3e4244",
".P c #384048",
".Q c #550000",
".R c #710000",
".S c #4a4a12 s Color2",
".T c #656510 s Color3",
".U c #7e7e0d s Color4",
".V c #424244",
".W c #424644",
".X c #404048",
".Y c #42464c",
".Z c #46464c",
".0 c #464a4c",
".1 c #4a4a4c",
".2 c #4a4e4c",
".3 c #404050",
".4 c #404450",
".5 c #404850",
".6 c #484850",
".7 c #4a4e54",
".8 c #4e4e54",
".9 c #484858",
"#. c #484c58",
"## c #4e5254",
"#a c #485058",
"#b c #525254",
"#c c #52565c",
"#d c #56565c",
"#e c #565a5c",
"#f c #5a5e5c",
"#g c #505060",
"#h c #505460",
"#i c #5a5e64",
"#j c #5e5e64",
"#k c #5e6264",
"#l c #62626c",
"#m c #62666c",
"#n c #666a6c",
"#o c #666a74",
"#p c #6a6e74",
"#q c #6a7274",
"#r c #6e7274",
"#s c #6e727c",
"#t c #6e767c",
"#u c #72767c",
"#v c #727a7c",
"#w c #767a7c",
"#x c #767a84",
"#y c #767e84",
"#z c #7a7e84",
"#A c #7a8284",
"#B c #7e8284",
"#C c #7e828c",
"#D c #7e868c",
"#E c #8d0000",
"#F c #aa0000",
"#G c #c60000",
"#H c #e20000",
"#I c #ff0000",
"#J c #97970a s Color5",
"#K c #b2b208 s Color6",
"#L c #cbcb05 s Color7",
"#M c #e4e402 s Color8",
"#N c #ffff00 s Color9",
"#O c #82868c",
"#P c #828a8c",
"#Q c #868a8c",
"#R c #868a94",
"#S c #868e94",
"#T c #8a8e94",
"#U c #8a9294",
"#V c #8a929c",
"#W c #8e929c",
"#X c #8e969c",
"#Y c #92969c",
"#Z c #929a9c",
"#0 c #929aa4",
"#1 c #969aa4",
"#2 c #969ea4",
"#3 c #9a9ea4",
"#4 c #9aa2a4",
"#5 c #98a0a8",
"#6 c #9aa2ac",
"#7 c #9ea2ac",
"#8 c #9ea6ac",
"#9 c #a2a6ac",
"a. c #a2aaac",
"a# c #a0a4b0",
"aa c #a2aab4",
"ab c #a6aab4",
"ac c #a6aeb4",
"ad c #aaaeb4",
"ae c #aab2bc",
"af c #aeb2bc",
"ag c #aeb6bc",
"ah c #b2b6bc",
"ai c #b2b6c4",
"aj c #b2bac4",
"ak c #b6bac4",
"al c #b6bec4",
"am c #babecc",
"an c #bac2cc",
"ao c #bec2cc",
"ap c #bec6cc",
"aq c #bec6d4",
"ar c #c2cad4",
"as c #c6cad4",
"at c #c6ced4",
"au c #c6cedc",
"av c #c8ccd8",
"aw c #cacedc",
"ax c #c8d0d8",
"ay c #cad2dc",
"az c #ced6dc",
"aA c #d0d0d0",
"aB c #d0d0d8",
"aC c #ced6e4",
"aD c #d0d0e0",
"aE c #d0d4e0",
"aF c #d0d8e0",
"aG c #d2dae4",
"aH c #d8d8e0",
"aI c #d8d8e8",
"aJ c #d8dce8",
"aK c #d8e0e8",
"aL c #e0e0f0",
"aM c #e0e4f0",
"aN c #e0e8f0",
"aO c #e8e8f8",
"aP c #e8ecf8",
"aQ c #e8f0f8",
"aR c #f0f0f8",
"aS c #f0f4f8",
/* pixels */
"aSaSaRaRaRaQaQaQaPaPaPaPaPaPaPaOaOaNaNaNaNaMaMaMaMaMaMaLaLaKaKaKaKaJaJaJaJaJaJaJaIaHaFaFaFaFaEaEaEaEaEaEaDaBaxaxaxaxaxavavava#........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aSaRaRaRaQaQaQaPaPaPaPaPaPaPaOaOaNaNaNaNaMaMaMaMaMaMaLaLaKaKaKaKaJaJaJaJaJaJaJaIaHaFaFaFaFaEaEaEaEaEaEaDaBaxaxaxaxaxavavavav#h........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aRaR#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#h........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aRaR#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#h........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aRaQ#5#5................................................................................................................#5#5#h........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aQaQ#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#h........................aGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.0.0.0#WaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.0.0.0#wanaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGan#W#k.0.0.0#vaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.0.0.0#WaGaGaGaGaGaGaGaGaGaGaGaGan#W#W#W#W#WaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.0.0.0#wanaGaGaGaGaGaGaGaGaa#W#W#W#W#W#W#U#U#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W.0.0.0aaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.0.0.0#WaGaGaGaGaGaGan#W#W#W#W#W#W#U#U#U#U#U#U#WaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.0.0.0#wanaGaGaGaGaGaGaGaGaGaG#W.0.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaG",
"aQaQ#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#g........................aGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.h#TaCaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.i.#.#.#.#.#.##iazaCaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGan.y.#.#.#.#.#.#.#.#.YalaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.h#TaCaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.YazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.i.#.#.#.#.#.##iazaCaGaGaGaGaG.0.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaG#w.i.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.h#TaCaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaa.i.#.#.#.#.#.##iazaCaGaGaGaGaG#w.#.#.#.#.#.#.#.halaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaa.i.#.#.#.#.#.#.walaCaGaGaGaGaG",
"aQaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#g........................aGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.##3ayaCaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.##datazaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGan.#.#.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.##3ayaCaGaGaGaGaGaG#w.#.#.#.#.#.#.LaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.##datazaGaGaGaG.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGan.i.#.#.#.#.#.#.##BarayaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.##3ayaCaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqayaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.##datazaGaGaG#k.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaG#W.#.#.#.#.#.#.#.#.#.gagazaGaGaGaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#g........................aG#k.#.#.#.#.q.p.#.#.#.##barazaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.e.D.#.#.#.#.faoawaCaGaa.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.E.e.#.#.#.##WasazaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaG.h.#.#.F.D.p.#.#.#.#.##masazaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.e.D.#.#.#.#.faoawaCaGaGaGaGan.i.#.#.#.#.#.#.DagaqazaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.E.e.#.#.#.##WasazaGaGaG.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaGaGaa.#.#.#.#.#.#.q.D.D#OajarazaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.e.D.#.#.#.#.faoawaC#U.#.#.#.#.#.#.#.#.#.#.#.#.eaaaharazaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.E.e.#.#.#.##WasazaGaa.#.#.#.#.E#p#i.#.#.#.#.LarazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGan.i.#.#.#.#.E.D.#.#.#.#.sarazaGaGaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#a........................aG.#.#.#.##i#1#1#e.#.#.#.##8arazaG.#.#.#.##i#1#1#e.#.#.#.##8arazaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.p#1#1#T.#.#.#.##kaoayaGaG.#.#.#.s.#.#.#.##k#9anayaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#0#1.o.#.#.#.pakataCaG.h.u#Taa#7#8#p.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#1#1#e.#.#.#.##8arazaG#i#raj#9#3#7#W.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.p#1#1#T.#.#.#.##kaoayaGaGaGaG#k.#.#.g.E.#.#.#.y#9anayaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#0#1.o.#.#.#.pakataCaGaa.#.#.#.W#k#k#k#k#k#l#QabanayaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#1#1#e.#.#.#.##8arazaGan.i.#.#.#.f#i#7#2#2#7abajarazaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.p#1#1#T.#.#.#.##kaoayan#S#B#r#m#l#k#k#k.c.#.#.####1aeaqazaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#0#1.o.#.#.#.pakataC#k.#.#.#.e#1#1#6.0.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#1#1#e.#.#.#.##8araz#k.#.#.#.e#T#1#2#n.#.#.#.##UarazaGaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#a........................#w.#.#.#.e#0#0#8ae.e.#.#.##iakat#u.#.#.#.e#0#0#8ae.e.#.#.##iakataCaGaGaGaGaGaGaGaGaGaGan.#.#.#.##u#Y#7ad.7.#.#.#.oagasaCaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.Z#W#Y#8#P.#.#.#.##ZanayaG#Tarajadadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.e#0#0#8ae.e.#.#.##iakataCaCawanafadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##u#Y#7ad.7.#.#.#.oagasaCaGaGaa.#.#.##m.D.#.#.#.w#6alayaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.Z#W#Y#8#P.#.#.#.##ZanayaG#U.#.#.##B#U#Z#3#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.e#0#0#8ae.e.#.#.##iakataC#k.#.#.#.F#W#3#6#8abagalaqayaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##u#Y#7ad.7.#.#.#.oagasazazaqag#9#7#6#6#z.#.#.#.##S#1agasaCaGaGaGaGaGaGaGaGaGaG.y.#.#.#.Z#W#Y#8#P.#.#.#.##Zanay.Z.#.#.#.A#Y#7ae#x.#.#.#.##9alataCaGaGaGaGaGaGaGaGaGaG#w.#.#.#.e#0#0#8ae.e.#.#.##iakat.h.#.#.#.Z#0#3aaae.F.#.#.#.DakataCaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#a.........................0.#.#.#.A#Y#8aiap.O.#.#.#.Aacap.Z.#.#.#.A#Y#8aiap.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##W#1aeao#C.#.#.#.#aaanayaGazarajac.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##m#X#7aiap.#.#.#.##nagataCaCayaranapasat.V.#.#.#.l#8amayaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.A#Y#8aiap.O.#.#.#.AacapazaGazauaqaqasag.g.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##W#1aeao#C.#.#.#.#aaanayaGaG.i.#.#.fab.D.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##m#X#7aiap.#.#.#.##nagataC#T.#.#.##W#ZaaahalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.A#Y#8aiap.O.#.#.#.Aacapal.#.#.#.f#U#3#p#u#zanarawazaCaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##W#1aeao#C.#.#.#.#aaanayaCayaqanalalal.s.#.#.#.O#U#6alayaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##m#X#7aiap.#.#.#.##nagat.Z.#.#.#.c#1aeap#r.#.#.#.k#0adaqazaGaGaGaGaGaGaGaGaGaG.0.#.#.#.A#Y#8aiap.O.#.#.#.Aacap.#.#.#.##m#1acalar#C.#.#.#.eacapazaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................h.#.#.####1aearay#S.#.#.#.c#8am.h.#.#.####1aearay#S.#.#.#.c#8amayaGaGaGaGaGaGaGaGaGaG#k.#.#.#.l#W#6alauay.#.#.#.##wagataCaCayaran.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.##B#1aearay.Y.#.#.#.OabapazaGaCazazazaCaC.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaG.h.#.#.####1aearay#S.#.#.#.c#8amayaGaG#T#T#T#i.h.#.#.#.o#W#8anayaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.l#W#6alauay.#.#.#.##wagataC#w.#.#.##k#8.E.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.##B#1aearay.Y.#.#.#.Oabapaz.Z.#.#.#.#.#.#.O#qauayayazaCaGaGaGaGaGaGaGaGaGaGaGaG.h.#.#.####1aearay#S.#.#.#.c#8am#t.#.#.#.D.Y.#.#.#.#.##iayaCaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.l#W#6alauay.#.#.#.##wagasaCaCazayayay#R.#.#.#.##C#YaaaoazaGaGaGaGaGaGaGaGaGaGaa.#.#.#.##B#1aearay.Y.#.#.#.Oabap#8.#.#.#.#.o#T#3.#.#.#.##j#YacapazaGaGaGaGaGaGaGaGaGaG.h.#.#.####1aearay#S.#.#.#.c#8al.#.#.#.####3ajataz#S.#.#.#.##7alayaG",
"aPaP#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................#.#.#.##k#3ajawaG#T.#.#.#.##3ak.#.#.#.##k#3ajawaG#T.#.#.#.##3akawaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#XaaaoazaC.#.#.#.##kaaapazaGaCazay.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#3ajawaC.Z.#.#.#.y#8amayaGaGaGaGaGaGan.#.#.#.##k#6alayaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#3ajawaG#T.#.#.#.##3akawaGaG.#.#.#.#.#.#.#.7#2#1acapazaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#XaaaoazaC.#.#.#.##kaaapal.#.#.#.s#8#8.G.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#3ajawaC.Z.#.#.#.y#8amay.Z.#.#.#.#.#.#.#.#.gajazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#3ajawaG#T.#.#.#.##3ak.Y.#.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#XaaaoazaC.#.#.#.##kaaapazaGaGaGaGaG.h.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaG#W.#.#.#.##T#3ajawaC.Z.#.#.#.y#8amay.Y.#.#.#.#.#.#.#.#.#.W#W#3agataCaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#3ajawaG#T.#.#.#.##3aj.u.#.#.#.b#Talayan.w.#.#.#.##1agasaC",
"aPaO#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................#.#.#.##k#6alayaG#U.#.#.#.##1af.#.#.#.##k#6alayaG#U.#.#.#.##1agasaCaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#1afaraCaG.#.#.#.##j#7amayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#3alayaG.Z.#.#.#.y#6alayaGaGaGaGaGaG.i.#.#.#.e#W#8amayaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#6alayaG#U.#.#.#.##1agasaCaG.#.#.#.#.#.#.r#e#3#9akataCaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#1afaraCaG.#.#.#.##j#7am.Y.#.#.##C#3ab.L.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#3alayaG.Z.#.#.#.y#6alay.h.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#6alayaG#U.#.#.#.##1ag.#.#.#.#.#.#.#.#.#.#.#.#.###arazaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#1afaraCaG.#.#.#.##j#7amayaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#3alayaG.Z.#.#.#.y#6alayay#p.#.#.#.#.#.#.#.o#D#YaaanayaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##k#6alayaG#U.#.#.#.##1af#p.#.#.#.#.#.K.V.#.#.#.#.#.##Wabapaz",
"aOaO#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................#.#.#.##j#6alayaG#U.#.#.#.##Waa.#.#.#.##j#6alayaG#U.#.#.#.##WaaapazaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#3ajawaGaG.#.#.#.##i#6alayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6alayaGaGaGaGaG.0.#.#.#.##l#YabapazaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##j#6alayaG#U.#.#.#.##WaaapazaG.#.#.#.#.#.#.#.#.e#4arazaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#3ajawaGaG.#.#.#.##i#6#X.#.#.#.2#2#6ah.V.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6alay.Z#S#z#p##.w.#.#.#.#.###asazaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##j#6alayaG#U.#.#.#.##Waa.#.#.#.#.#.7#Y#2#v.c.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#3ajawaGaG.#.#.#.##i#6alayaGaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6alay#T.g.#.#.#.#.#.#.#.#.c#TaiataCaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##j#6alayaG#U.#.#.#.##Waaan.g.#.#.#.#.#.#.#.#.#.#.#.a#U#8anay",
"aOaN#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................#.#.#.##i#6alayaG#U.#.#.#.##T#7.#.#.#.##i#6alayaG#U.#.#.#.##T#7amayaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaG.#.#.#.##i#6alayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6alayaGaGaGaG.0.#.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG#U.#.#.#.##T#7amayaGayanab#R.O.#.#.#.#.sarazaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaG.#.#.#.##i#6.f.#.#.#.o.A.D.L.g.#.#.#.c.C.LayaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6alayaGazaqaf#9#6#T.e.#.#.#.eakataCaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG#U.#.#.#.##T#7.#.#.#.#.G#R#X#3#6#e.#.#.#.##pakataCaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaG.#.#.#.##i#6alayaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaG.Z.#.#.#.y#6al#R.#.#.#.#.W#i.k.#.#.#.#.eaaawaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG#U.#.#.#.##T#7alag.t.#.#.#.#.#.#.F.#.#.#.w#Waaapaz",
"aNaN#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5#..........................w.#.#.#.L#6alayaG#k.#.#.#.k#T#7.s.#.#.#.L#6alayaG#k.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaG#v.#.#.#.c#6alayaGaa.#.#.#.##z#6alayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##p#6alayaG.h.#.#.####6alayaGaGaG.0.#.#.#.#.D#Y#0abanayaGaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7amayaGazaqag#9#7#n.#.#.#.##UarazaGaGaGaGaGaGaGaGaGaGaG#v.#.#.#.c#6alayaGaa.#.#.#.##z#3.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#asazaCaGaGaGaGaGaGaGaGaGan.#.#.#.##p#6alayaG.h.#.#.####6alayaGaCayaqanalak#k.#.#.#.#abanayaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7.#.#.#.##e#U#6aeakal.#.#.#.##macapazaGaGaGaGaGaGaGaGaG#v.#.#.#.c#6alayaGaa.#.#.#.##z#6alayaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##p#6alayaG.h.#.#.####6al.#.#.#.##i#1#Y#1#n.#.#.#.##marazaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7amauat#V.0.A.A#c#T.o.#.#.#.7#1afasaC",
"aNaN#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5.9.........................Z.#.#.#.w#6alayaG.Z.#.#.#.w#Waa.L.#.#.#.w#6alayaG.Z.#.#.#.w#WaaapazaGaGaGaGaGaGaGaGaG#U.#.#.#.##3akawaG#U.#.#.#.##S#6alayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG.#.#.#.##k#6alayaGan.y.#.#.#.#.D#0#0#9akataCaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.w#6alayaG.Z.#.#.#.w#WaaapazaGaCayaqanalaj.#.#.#.##pakataCaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##3akawaG#U.#.#.#.##S#6.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#akaqayaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG.#.#.#.##k#6alayaGaGaCazayayaw#O.#.#.#.##3agataCaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.w#6alayaG.Z.#.#.#.w#Waa.s.#.#.#.7#0aeapauay.#.#.#.##j#8amayaGaGaGaGaGaGaGaGaG#U.#.#.#.##3akawaG#U.#.#.#.##S#6alayaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaG.#.#.#.##k#6#z.#.#.#.##2#1#7aeai.r.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.w#6alayaG.Z.#.#.#.w#Waaaoayazarakac#8#8#p.#.#.#.##A#3akawaG",
"aNaN#5#5...j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jaA#5#5.9........................#T.#.#.#.##Takawan.#.#.#.##k#1af#D.#.#.#.##Takawan.#.#.#.##k#1agasaCaGaGaGaGaGaGaGaGaGaG.#.#.#.##cagasaC.w.#.#.#.w#T#7amayaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Y.#.#.#.k#3alay#v.#.#.#.##W#6alayan.i.#.#.#.##p#0#0#8ajarazaGaGaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##Takawan.#.#.#.##k#1agagaCaGaGaCazayay#4.#.#.#.##macapazaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##cagasaC.w.#.#.#.w#T#7.K.L.F.A.y.A.B.D.e.#.#.#.a.w.AaaajarazaGaGaGaGaGaGaGaGaG.Y.#.#.#.k#3alay#v.#.#.#.##W#6alayaGaGaGaGaGaGaG.Z.#.#.#.k#YacapazaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##Takawan.#.#.#.##k#1af#d.#.#.#.b#3ajauaC#T.#.#.#.##z#6alayaGaGaGaGaGaGaGaGaGaG.#.#.#.##cagasaC.w.#.#.#.w#T#7amayaGan.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Y.#.#.#.k#3alay#v.#.#.#.##W#6#z.#.#.#.##B#1aeapat.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##Takawan.#.#.#.##k#1agasaCaGazatapan#z.#.#.#.#.V#W#8alayaG",
"aNaM#5#5aAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA#5#5.9........................aG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alau.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alayaGaGaGaGaGaGaGaGaGaGaG#i.#.#.#.c#Dao#u.#.#.#.##p#WaaapazaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG#8.#.#.#.##eaj#6.h.#.#.#.O#W#8amaj.h.#.#.#.#.e.A.A.D.K.V.Za.aGaGaGaGaGaGaGaGaGaGaGaGaGaG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7al#R.h#k#WaGaGaG#v.h.#.#.#.##U#8anayaGaGaGaGaGaGaGaGaGaGaG#i.#.#.#.c#Dao#u.#.#.#.##p#Waaamanagaa#7#7#8aa.D.#.#.#.w#U#2aaajarazaGaGaGaGaGaGaGaGaG#8.#.#.#.##eaj#6.h.#.#.#.O#W#8am#S.Z#WanaGaGaa.Z.#.#.#.#.8#YacapazaGaGaGaGaGaGaGaGaGaGaG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alag.#.#.#.#.B#8aua..h.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaG#i.#.#.#.c#Dao#u.#.#.#.##p#WaaapazaG#k.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#8.#.#.#.##eaj#6.h.#.#.#.O#W#8#X.#.#.#.#.w#3ajau#T.#.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alayaGaGaGal#S.w.#.#.#.#.e#D#0acapazaG",
"aMaM#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5.6........................aG#T.#.#.#.#.#.#.#.#.#.##l#Yaaaoay#S.#.#.#.#.#.#.#.#.#.##l#YaaaoazaGaGaGaGaGaGaGaGaGaGaGal.g.#.#.#.#.#.#.#.#.#.A#W#2agataCaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.#.e#C#Yabap.#.#.#.#.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.#.#.#.#.#.#.##l#Yaaao.Z.#.#.#.#.#.#.#.#.#.#.#.7#T#8anayaGaGaGaGaGaGaGaGaGaGaGal.g.#.#.#.#.#.#.#.#.#.A#W#2agarataqanalalalal.L.#.#.#.w#ZabakaqayaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.#.e#C#Yabap#i.#.#.#.#.#.#.#.#.#.#.o#W#3agataCaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.#.#.#.#.#.#.##l#Yaaaoay#s.#.#.#.#.#.#.#.#.#.#.##z#WaaapazaGaGaGaGaGaGaGaGaGaGal.g.#.#.#.#.#.#.#.#.#.A#W#2agataCan.#.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.#.e#C#Yabao.u.#.#.#.#.e.K.u.#.#.#.#.e#W#8anayaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.#.#.#.#.#.#.##l#Yaaaoaz#U.#.#.#.#.#.#.#.#.e#O#0#9akataCaG",
"aMaM#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5.5........................aGaC.V.#.#.#.#.#.#.#.#.A#W#3agataCaC.V.#.#.#.#.#.#.#.#.A#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaC#Q.#.#.#.#.#.#.#.#.e#D#ZaaanayaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaj.g.#.#.#.#.#.#.#.##m#Y#8akat.#.#.#.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.A#W#3agat.h.#.#.#.#.#.#.#.#.#.#.W#T#YabapazaGaGaGaGaGaGaGaGaGaGaGaC#Q.#.#.#.#.#.#.#.#.e#D#ZaaanayaCazayayayayay.Y.#.#.#.y#3aiasazaCaGaGaGaGaGaGaGaGaGaGaGaj.g.#.#.#.#.#.#.#.##m#Y#8akat.w.#.#.#.#.#.#.#.#.#.D#O#0abanayaGaGaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.A#W#3agatazaz.O.#.#.#.#.#.#.#.#.##m#W#3agataCaGaGaGaGaGaGaGaGaGaGaC#Q.#.#.#.#.#.#.#.#.e#D#ZaaanayaG#k.#.#.#.##D#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaj.g.#.#.#.#.#.#.#.##m#Y#8akataj.g.#.#.#.#.#.#.#.#.#.e#D#0acapazaGaGaGaGaGaGaGaGaGaGaGaC.V.#.#.#.#.#.#.#.#.A#W#3agataC#W.#.#.#.#.#.#.#.p#P#0#8ajarazaGaG",
"aMaM#5#5................................................................................................................#5#5.5........................aGaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaz#2.r.#.#.#.#.#.W#Y#Z#9akataCaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCag##.#.#.#.#.#.o#Q#Z#6agaraz.#.#.#.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaGay#o.e.#.#.#.#.e#m#Y#1abanaya..Z.#.#.#.#.#.#.#.o#v#Y#Z#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaz#2.r.#.#.#.#.#.W#Y#Z#9akataCaGaGaGaGaGaGaG.Z.#.#.#.A#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaCag##.#.#.#.#.#.o#Q#Z#6agaraz#k.h.#.#.#.#.#.#.o#c#Z#1#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaCat#z.e.#.#.#.#.#.o#Q#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaz#2.r.#.#.#.#.#.W#Y#Z#9akataCan.#.#.#.#.V#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCag##.#.#.#.#.#.o#Q#Z#6agarazazat##.e.#.#.#.#.#.#.0#P#0#9akataCaGaGaGaGaGaGaGaGaGaGaGaGay#o.e.#.#.#.#.e#m#Y#1abanayaG#W.#.#.#.#.#.C#w#0#1#9ajarazaGaGaG",
"aMaM#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.5........................aGaGaCatal#O#n#m#t#Y#0#3abalataCaGaGaCatal#O#n#m#t#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGayao#2#o#m#l#W#W#0#9ajarazaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj#p#m#k#C#Y#0#6aeaoayaCayanab#0#U#S#S#T#W#W#W#W#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaCatal#O#n#m#t#Y#0#3abalataCaGazar#R#n#m#k#t#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGayao#2#o#m#l#W#W#0#9ajarazaGaGaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj#p#m#k#C#Y#0#6aeaoayaGaGazar#u#n#m#k#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCatal#O#n#m#t#Y#0#3abalataCaGaGazasak#Z#n#m#l#X#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGaGayao#2#o#m#l#W#W#0#9ajarazaGaGaGauak#8#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj#p#m#k#C#Y#0#6aeaoayaGaGazasak#Z#o#n#p#A#6#1#1#9ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaCatal#O#n#m#t#Y#0#3abalataCaGan#T#B#r#R#Y#Y#0#3abakarazaGaGaGaG",
"aMaM#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................aGaGaGazatanagab#8#8abaganatazaGaGaGaGazatanagab#8#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCawaoahab#8#7#8acakarazaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazarakac#8#7#8abahaoawaCaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaGaGaGazatanagab#8#8abaganatazaGaGaCatalad#8#7#6#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCawaoahab#8#7#8acakarazaGaGaGaGaGaGaGaGaGaGazaqagabagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazarakac#8#7#8abahaoawaCaGaGaCatalad#8#7#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatanagab#8#8abaganatazaGaGaGaGazatanagab#8#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCawaoahab#8#7#8acakarazaGaGaGaCatalac#9acalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazarakac#8#7#8abahaoawaCaGaGaGazatanahacaaaa#9#9acakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatanagab#8#8abaganatazaGaGaGazaqag#9#7#8abaganatazaGaGaGaGaG",
"aMaL#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................aGaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapamalamapatazaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatapamalamapatayaCaGaGaCayaqanalalalalalalalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGazatapanalalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapamalamapatazaGaGaGaGaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatapamalamapatayaCaGaGaGaGazatapanalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaCayatapamalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapamalamapatazaGaGaGaGaGayarananapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatapamalamapatayaCaGaGaGaGaGaCayatapanalalanapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGaCayaqanalamapatayaCaGaGaGaGaGaG",
"aLaL#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................aGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaCazayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaG",
"aLaK#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aKaK#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"aKaK#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.4........................aGaGaGaGaG#W#W#W#WaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W#W#WaaaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#W#W#WaGaGaGaGaGaGaGaGan#W#k.0.0.0#vaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGaGaGaGaGaGaGan#W#W#W#W#WaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W#W#WaaaGaGaGaGaGaGaGaGaa#W#W#W#W#W#W#U#U#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#W#W#WaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W.0.0.0aaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGan#W#W#W#W#W#W#U#U#U#U#U#U#WaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W#W#WaaaGaGaGaGaGaGaGaGaGaG#W.0.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#W#W#WaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaG..",
"aKaK#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.3........................aGaGan#k.i.#.#.#.#ayazaCaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.0.#.#.#.#.YazaCaGaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.i.#.#.#.#ayazaCaGaGaGan.y.#.#.#.#.#.#.#.#.YalaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.YazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.0.#.#.#.#.YazaCaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.i.#.#.#.#ayazaCaGaGaGaGaGaGaGaG#w.i.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.0.#.#.#.#.YazaCaGaGaGaGaGaG#w.#.#.#.#.#.#.#.halaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.i.#.#.#.#ayazaCaGaGaGaGaGaa.i.#.#.#.#.#.#.walaCaGaGaGaGaG..",
"aKaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.3........................aa#k.#.#.#.#.#.#.#anaqayaCaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.y.#.#.#.#.#.#.LaqayaCaGaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#k.#.#.#.#.#.#.#anaqayaCaGaGan.#.#.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaGaGaGaGaGaG#w.#.#.#.#.#.#.LaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaG#W.y.#.#.#.#.#.#.LaqayaCaGaGaGaGaG.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaa#k.#.#.#.#.#.#.#anaqayaCaGaGaGaGaGan.i.#.#.#.#.#.#.##BarayaGaGaGaGaGaGaGaGaGaGaGaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqayaGaGaGaGaGaGaGaGaGaGaGaG#W.y.#.#.#.#.#.#.LaqayaCaGaGaGaG#k.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#k.#.#.#.#.#.#.#anaqayaCaGaGaG#W.#.#.#.#.#.#.#.#.#.gagazaGaGaGaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.X........................#k.#.#.#.#.#.#.#.##9agaqazaGaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.#.#.#.##pagaqazaGaGaGaa.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.#.#.#.DagaqazaGaGaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.#.#.#.##9agaqazaGaGaG.h.#.#.F.D.p.#.#.#.#.##masazaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGan.i.#.#.#.#.#.#.DagaqazaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.#.#.#.DagaqazaGaGaGaGaG.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.#.#.#.##9agaqazaGaGaGaGaa.#.#.#.#.#.#.q.D.D#OajarazaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.#.#.#.##pagaqazaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.eaaaharazaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.#.#.#.#.DagaqazaGaGaGaa.#.#.#.#.E#p#i.#.#.#.#.LarazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.#.#.#.##9agaqazaGaGan.i.#.#.#.#.E.D.#.#.#.#.sarazaGaGaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.P........................#W.#.#.#.r.#.#.#.##W#9anayaGaGaG.#.#.#.##i#1#1#e.#.#.#.##8arazaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.s.#.#.#.##k#9anayaGaGaGaG.#.#.#.s.#.#.#.##k#9anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.g.e.#.#.#.y#9anayaGaGaGaG.h.u#Taa#7#8#p.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.r.#.#.#.##W#9anayaGaGaG#i#raj#9#3#7#W.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.s.#.#.#.##k#9anayaGaGaGaGaGaG#k.#.#.g.E.#.#.#.y#9anayaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.g.e.#.#.#.y#9anayaGaGaGaGaa.#.#.#.W#k#k#k#k#k#l#QabanayaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.r.#.#.#.##W#9anayaGaGaGan.i.#.#.#.f#i#7#2#2#7abajarazaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.s.#.#.#.##k#9anayaGaGan#T#B#r#m#l#k#k#k.c.#.#.####1aeaqazaGaGaGaGaGaGaGaGaGaGaG.0.#.#.g.e.#.#.#.y#9anayaGaGaG#k.#.#.#.e#1#1#6.0.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.r.#.#.#.##W#9anayaGaG#k.#.#.#.e#T#1#2#n.#.#.#.##UarazaGaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.P........................aG.h#paf#o.#.#.#.##T#6alayaGaG#w.#.#.#.e#0#0#8ae.e.#.#.##iakataCaGaGaGaGaGaGaGaGaGaGaGaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.w#2ag.D.#.#.#.w#6alayaGaGaGaG#Tarajadadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGaG.h#paf#o.#.#.#.##T#6alayaGaGaGaGawanafadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGaGaGaa.#.#.##m.D.#.#.#.w#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#W.w#2ag.D.#.#.#.w#6alayaGaGaGaG#U.#.#.##B#U#Z#3#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaGaGaG.h#paf#o.#.#.#.##T#6alayaGaGaG#k.#.#.#.F#W#3#6#8abagalaqayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGazaqag#9#7#6#6#z.#.#.#.##S#1agasaCaGaGaGaGaGaGaGaGaGaGaG#W.w#2ag.D.#.#.#.w#6alayaGaGaG.0.#.#.#.A#Y#7ae#x.#.#.#.##9alataCaGaGaGaGaGaGaGaGaGaGaGaG.h#paf#o.#.#.#.##T#6alayaGaG.i.#.#.#.Z#0#3aaae.F.#.#.#.DakataCaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.P........................aGazarai#r.#.#.#.##S#6alayaGaG.0.#.#.#.A#Y#8aiap.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGazarajac.#.#.#.##i#6alayaGaGaGaGazarajac.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj.F.#.#.#.y#6alayaGaGaGaGaGayaranapasat.V.#.#.#.l#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGazarai#r.#.#.#.##S#6alayaGaGaGaGazauaqaqasag.g.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaGaGaGazarajac.#.#.#.##i#6alayaGaGaGaGaG.i.#.#.fab.D.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj.F.#.#.#.y#6alayaGaGaGaG#U.#.#.##W#ZaaahalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGazarai#r.#.#.#.##S#6alayaGaGan.#.#.#.f#U#3#p#u#zanarawazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGazarajac.#.#.#.##i#6alayaGaGaGaCayaqanalalal.s.#.#.#.O#U#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGazaraj.F.#.#.#.y#6alayaGaGaG.Z.#.#.#.c#1aeap#r.#.#.#.k#0adaqazaGaGaGaGaGaGaGaGaGaGaGaGazarai#r.#.#.#.##S#6alayaGaG.#.#.#.##m#1acalar#C.#.#.#.eacapazaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGayar#B.#.#.#.##S#6alayaGaG.h.#.#.####1aearay#S.#.#.#.c#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGayaran.#.#.#.##i#6alayaGaGaGaGaGayaran.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayar.O.#.#.#.y#6alayaGaGaGaGaGaGazazazaCaC.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGayar#B.#.#.#.##S#6alayaGaGaGaGaG#T#T#T#i.h.#.#.#.o#W#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGayaran.#.#.#.##i#6alayaGaGaGaG#w.#.#.##k#8.E.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayar.O.#.#.#.y#6alayaGaGaGaG.Z.#.#.#.#.#.#.O#qauayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayar#B.#.#.#.##S#6alayaGaG#w.#.#.#.D.Y.#.#.#.#.##iayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayaran.#.#.#.##i#6alayaGaGaGaGaCazayayay#R.#.#.#.##C#YaaaoazaGaGaGaGaGaGaGaGaGaGaGaGaGaGayar.O.#.#.#.y#6alayaGaGaGaa.#.#.#.#.o#T#3.#.#.#.##j#YacapazaGaGaGaGaGaGaGaGaGaGaGaGaGayar#B.#.#.#.##S#6alayaGaG.#.#.#.####3ajataz#S.#.#.#.##7alayaG..",
"aJaJ#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaCaz#R.#.#.#.##S#6alayaGaG.#.#.#.##k#3ajawaG#T.#.#.#.##3akawaGaGaGaGaGaGaGaGaGaGaGaGaGaGazay.#.#.#.##i#6alayaGaGaGaGaGaGazay.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaz.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGan.#.#.#.##k#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaz#R.#.#.#.##S#6alayaGaGaGaGaG.#.#.#.#.#.#.#.7#2#1acapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazay.#.#.#.##i#6alayaGaGaGan.#.#.#.s#8#8.G.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaz.Z.#.#.#.y#6alayaGaGaGaG.Z.#.#.#.#.#.#.#.#.gajazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaz#R.#.#.#.##S#6alayaGaG.0.#.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazay.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaG.h.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaz.Z.#.#.#.y#6alayaGaGaGaG.Y.#.#.#.#.#.#.#.#.#.W#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaCaz#R.#.#.#.##S#6alayaGaG.w.#.#.#.b#Talayan.w.#.#.#.##1agasaC..",
"aJaI#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaGaG#T.#.#.#.##S#6alayaGaG.#.#.#.##k#6alayaG#U.#.#.#.##1agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaG.i.#.#.#.e#W#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##S#6alayaGaGaGaGaG.#.#.#.#.#.#.r#e#3#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaG.0.#.#.##C#3ab.L.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaG.h.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##S#6alayaGaG.#.#.#.#.#.#.#.#.#.#.#.#.###arazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaz#p.#.#.#.#.#.#.#.o#D#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#T.#.#.#.##S#6alayaGaG#u.#.#.#.#.#.K.V.#.#.#.#.#.##Wabapaz..",
"aIaH#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaGaG#U.#.#.#.##S#6alayaGaG.#.#.#.##j#6alayaG#U.#.#.#.##WaaapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaG.0.#.#.#.##l#YabapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaG.#.#.#.#.#.#.#.#.e#4arazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaa.#.#.#.2#2#6ah.V.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaG.Z#S#z#p##.w.#.#.#.#.###asazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.#.#.#.#.#.7#Y#2#v.c.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaG#T.g.#.#.#.#.#.#.#.#.c#TaiataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaC.g.#.#.#.#.#.#.#.#.#.#.#.a#U#8anay..",
"aHaF#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaGaG#U.#.#.#.##S#6alayaGaG.#.#.#.##i#6alayaG#U.#.#.#.##T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaG.0.#.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaGazanab#R.O.#.#.#.#.sarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaG.i.#.#.#.o.A.D.L.g.#.#.#.c.C.LayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGazaqaf#9#6#T.e.#.#.#.eakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.#.#.#.#.G#R#X#3#6#e.#.#.#.##pakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG#W.#.#.#.#.W#i.k.#.#.#.#.eaaawaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGak.t.#.#.#.#.#.#.F.#.#.#.w#Waaapaz..",
"aFaF#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaGaG#U.#.#.#.##S#6alayaGaG.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaG.0.#.#.#.#.D#Y#0abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaGazaqag#9#7#n.#.#.#.##UarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaG.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#asazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaCayaqanalak#k.#.#.#.#abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.#.#.#.##e#U#6aeakal.#.#.#.##macapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG.#.#.#.##i#1#Y#1#n.#.#.#.##marazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaCat#V.0.A.A#c#T.o.#.#.#.7#1afasaC..",
"aFaF#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.N........................aGaGaGaG#U.#.#.#.##S#6alayaGaG.Z.#.#.#.w#6alayaG.Z.#.#.#.w#WaaapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGan.y.#.#.#.#.D#0#0#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaGaCayaqanalaj.#.#.#.##pakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaG.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#akaqayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaCazayayaw#O.#.#.#.##3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.w.#.#.#.7#0aeapauay.#.#.#.##j#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaG#W.#.#.#.##2#1#7aeai.r.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGazasakac#8#8#p.#.#.#.##A#3akawaG..",
"aFaF#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.M........................aGaGaGaG#U.#.#.#.##S#6alayaGaG#T.#.#.#.##Takawan.#.#.#.##k#1agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGan.i.#.#.#.##p#0#0#8ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGanaGaGaGaCazayay#4.#.#.#.##macapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaG.Z.O.F.A.y.A.B.D.e.#.#.#.a.w.AaaajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.k#YacapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG#i.#.#.#.b#3ajauaC#T.#.#.#.##z#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGan.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaG#W.#.#.#.##B#1aeapat.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaGazatapan#z.#.#.#.#.V#W#8alayaG..",
"aFaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.M........................aGaGaGaG#U.#.#.#.##S#6alayaGaGaG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGan.i.#.#.#.#.e.A.A.D.K.V.Za.aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG#W.i#k#WaGaGaG#v.h.#.#.#.##U#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGazarahaa#7#7#8aa.D.#.#.#.w#U#2aaajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG#W.0#WanaGaGaa.Z.#.#.#.#.8#YacapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGal.#.#.#.#.B#8aua..h.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaG#k.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaa.#.#.#.#.w#3ajau#T.#.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaGaGaGal#S.w.#.#.#.#.e#D#0acapazaG..",
"aEaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.J........................aGaGaGaG#U.#.#.#.##S#6alayaGaGaG#T.#.#.#.#.#.#.#.#.#.##l#YaaaoazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.0.#.#.#.#.#.#.#.#.#.#.#.7#T#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGayaqanalalalal.L.#.#.#.w#ZabakaqayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG#k.#.#.#.#.#.#.#.#.#.#.o#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaG#s.#.#.#.#.#.#.#.#.#.#.##z#WaaapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGan.#.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG.w.#.#.#.#.e.K.u.#.#.#.#.e#W#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaG#W.#.#.#.#.#.#.#.#.e#O#0#9akataCaG..",
"aEaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.J........................aGaGaGaG#U.#.#.#.##S#6alayaGaGaGaC.V.#.#.#.#.#.#.#.#.A#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaG.i.#.#.#.#.#.#.#.#.#.#.W#T#YabapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaCazayayayayay.Y.#.#.#.y#3aiasazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaG.y.#.#.#.#.#.#.#.#.#.D#O#0abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaGaz.O.#.#.#.#.#.#.#.#.##m#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaG#k.#.#.#.##D#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.y#6alayaGaGaGal.g.#.#.#.#.#.#.#.#.#.e#D#0acapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##S#6alayaGaGaG#W.#.#.#.#.#.#.#.p#P#0#8ajarazaGaG..",
"aEaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.J........................aGaGaGaG#U.#.#.#.##T#6alayaGaGaGaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.A#7alayaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#6alayaGaGaa.Z.#.#.#.#.#.#.#.o#v#Y#Z#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.A#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.A#7alayaGaGaG#k.h.#.#.#.#.#.#.o#c#Z#1#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#6alayaGaGaGaCat#z.e.#.#.#.#.#.o#Q#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGan.#.#.#.#.V#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.A#7alayaGaGaGaCat##.e.#.#.#.#.#.#.0#P#0#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#U.#.#.#.##T#6alayaGaGaG#W.#.#.#.#.#.C#w#0#1#9ajarazaGaGaG..",
"aEaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.J........................aGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaCatal#O#n#m#t#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGazanab#0#U#S#S#T#W#W#W#W#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGazar#R#n#m#k#t#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGaGazar#u#n#m#k#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGazasak#Z#n#m#l#X#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGauak#8#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGaGazasak#Z#o#n#p#A#6#1#1#9ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayan#8#X#X#8anayaGaGaGan#T#B#r#R#Y#Y#0#3abakarazaGaGaGaG..",
"aEaE#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................aGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGazatanagab#8#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqagabagaqazaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaCatalad#8#7#6#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGaGaGaGaGaGaGazaqagabagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqagabagaqazaGaGaGaGaCatalad#8#7#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGazatanagab#8#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaCatalac#9acalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqagabagaqazaGaGaGaGaGazatanahacaaaa#9#9acakarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqaf#9#9afaqazaGaGaGaGazaqag#9#7#8abaganatazaGaGaGaGaG..",
"aEaD#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................aGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaCayaqanalalalalalalalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGazatapanalalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaGaGazatapanalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaCayatapamalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaGayarananapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaGaGaGaCayatapanalalanapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqananaqayaCaGaGaGaGaCayaqanalamapatayaCaGaGaGaGaGaG..",
"aDaB#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................aGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaCazayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaG..",
"aBax#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"axax#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"axax#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.I........................aGaGaGaa#w.0.0.0#waaaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W.0.0.0#k#WaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#w.0.0.0#waaaGaGaGaGaGaGaGaGan#W#k.0.0.0#vaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W.0.0.0#k#WaGaGaGaGaGaGaGaGaGaGaGaGan#W#W#W#W#WaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaa#W#W#W#W#W#W#U#U#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#w.0.0.0#waaaGaGaGaGaGaGaGaGaGaGaGaGaGaa#W.0.0.0aaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#W.0.0.0#k#WaGaGaGaGaGaGan#W#W#W#W#W#W#U#U#U#U#U#U#WaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#k.0.0.0#WanaGaGaGaGaGaGaGaGaGaG#W.0.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#w.0.0.0#waaaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaG",
"axax#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.H........................aGaa.y.#.#.#.#.#.#.#.walaCaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.#.#.#.#.#.#.#.h#TaCaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.y.#.#.#.#.#.#.#.walaCaGaGaGan.y.#.#.#.#.#.#.#.#.YalaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.#.#.#.#.#.#.#.h#TaCaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.YazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaGaG.0.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaa.y.#.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaG#w.i.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.#.#.#.#.#.#.#.h#TaCaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazaCaGaGaGaGaGaGaGaGaGaGaGaG#w.i.#.#.#.#.#.#.##iazaCaGaGaGaGaG#w.#.#.#.#.#.#.#.halaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.y.#.#.#.#.#.#.#.walaCaGaGaGaGaGaa.i.#.#.#.#.#.#.walaCaGaGaGaGaG",
"axax#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.H........................an.#.#.#.#.#.#.#.#.#.#.gagazaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.#.##OayaCaGaGan#w.i.#.#.#.#.#.##BaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.#.#.gagazaGaGan.#.#.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.#.##OayaCaGaGaGaGaGaG#w.#.#.#.#.#.#.LaqayaCaGaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaG.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGan.i.#.#.#.#.#.#.##BarayaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.#.##OayaCaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqayaGaGaGaGaGaGaGaGaGaGaG#w.#.#.#.#.#.#.#.#.#.#.OatazaGaGaG#k.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.#.#.#.#.#.#.#.gagazaGaGaG#W.#.#.#.#.#.#.#.#.#.gagazaGaGaGaG",
"axav#5#5..aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaA#5#5.z........................aG.h.#.#.f.F.D.#.#.#.#.###arazaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.F.D.e.#.#.#.#.faoawaCaGaa.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaGaGaGaGaGaGaGaGaGaGaGaG.h.#.#.f.F.D.#.#.#.#.###arazaGaG.h.#.#.F.D.p.#.#.#.#.##masazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.F.D.e.#.#.#.#.faoawaCaGaGaGaGan.i.#.#.#.#.#.#.DagaqazaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaGaG.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaGaGaG.h.#.#.f.F.D.#.#.#.#.###arazaGaGaGaa.#.#.#.#.#.#.q.D.D#OajarazaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.F.D.e.#.#.#.#.faoawaC#U.#.#.#.#.#.#.#.#.#.#.#.#.eaaaharazaGaGaGaGaGaGaGaGaGaGaa.#.#.#.s.F.p.#.#.#.#.##VasazaGaa.#.#.#.#.E#p#i.#.#.#.#.LarazaGaGaGaGaGaGaGaGaGaGaGaGaG.h.#.#.f.F.D.#.#.#.#.###arazaGan.i.#.#.#.#.E.D.#.#.#.#.sarazaGaGaG",
"avav#5#5aAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA#5#5.z........................aG#i.g#nac#8#8#W.e.#.#.#.#ajarazaG.#.#.#.##i#1#1#e.#.#.#.##8arazaGaGaGaGaGaGaGaGaGaGaGaGaa.##e#2#6#2#6.D.#.#.#.##uaoayaGaG.#.#.#.s.#.#.#.##k#9anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.h.u#Taa#7#8#p.#.#.#.#.DakataCaG.h.u#Taa#7#8#p.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaG#i.g#nac#8#8#W.e.#.#.#.#ajarazaG#i#raj#9#3#7#W.#.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaGaa.##e#2#6#2#6.D.#.#.#.##uaoayaGaGaGaG#k.#.#.g.E.#.#.#.y#9anayaGaGaGaGaGaGaGaGaGaGaGaGaG.h.u#Taa#7#8#p.#.#.#.#.DakataCaGaa.#.#.#.W#k#k#k#k#k#l#QabanayaGaGaGaGaGaGaGaGaGaGaGaG#i.g#nac#8#8#W.e.#.#.#.#ajarazaGan.i.#.#.#.f#i#7#2#2#7abajarazaGaGaGaGaGaGaGaGaGaGaGaGaa.##e#2#6#2#6.D.#.#.#.##uaoayan#S#B#r#m#l#k#k#k.c.#.#.####1aeaqazaGaGaGaGaGaGaGaGaGaGaG.h.u#Taa#7#8#p.#.#.#.#.DakataC#k.#.#.#.e#1#1#6.0.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaGaGaG#i.g#nac#8#8#W.e.#.#.#.#ajaraz#k.#.#.#.e#T#1#2#n.#.#.#.##UarazaGaG",
"avav#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5.z........................aGa.ajanagaeagaj#u.#.#.#.##8akat#u.#.#.#.e#0#0#8ae.e.#.#.##iakataCaGaGaGaGaGaGaGaGaGaGaGaG#Tapae#9abagaj.#.#.#.##nahataCaG.Z#e#7aa.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#Tarajadadagaj.F.#.#.#.AacapazaG#Tarajadadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGa.ajanagaeagaj#u.#.#.#.##8akataCaCawanafadagaj.F.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGaG#Tapae#9abagaj.#.#.#.##nahataCaGaGaa.#.#.##m.D.#.#.#.w#6alayaGaGaGaGaGaGaGaGaGaGaGaGaG#Tarajadadagaj.F.#.#.#.AacapazaG#U.#.#.##B#U#Z#3#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaGaGa.ajanagaeagaj#u.#.#.#.##8akataC#k.#.#.#.F#W#3#6#8abagalaqayaGaGaGaGaGaGaGaGaGaGaGaGaGaG#Tapae#9abagaj.#.#.#.##nahataCazaqag#9#7#6#6#z.#.#.#.##S#1agasaCaGaGaGaGaGaGaGaGaGaGaG#Tarajadadagaj.F.#.#.#.Aacapaz.Z.#.#.#.A#Y#7ae#x.#.#.#.##9alataCaGaGaGaGaGaGaGaGaGaGaGa.ajanagaeagaj#u.#.#.#.##8akat.h.#.#.#.Z#0#3aaae.F.#.#.#.DakataCaG",
"avav#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5#5.z........................aGaGaCauaraqasat#O.#.#.#.##Oacap.Z.#.#.#.A#Y#8aiap.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGazaralalanarat.#.#.#.###abapazaGazarajac.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayaranapasat.V.#.#.#.l#8amayaGaCayaranapasat.V.#.#.#.l#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGaCauaraqasat#O.#.#.#.##OacapazaGazauaqaqasag.g.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaGaGaGazaralalanarat.#.#.#.###abapazaGaG.i.#.#.fab.D.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGayaranapasat.V.#.#.#.l#8amayaG#U.#.#.##W#ZaaahalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCauaraqasat#O.#.#.#.##Oacapal.#.#.#.f#U#3#p#u#zanarawazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaralalanarat.#.#.#.###abapazaCayaqanalalal.s.#.#.#.O#U#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGayaranapasat.V.#.#.#.l#8amay.Z.#.#.#.c#1aeap#r.#.#.#.k#0adaqazaGaGaGaGaGaGaGaGaGaGaGaGaCauaraqasat#O.#.#.#.##Oacap.#.#.#.##m#1acalar#C.#.#.#.eacapazaG",
"a##h#h#h#h#h#g#g#g#a#a#a#.#.#.#.#.#..9.9.9.6.5.5.5.4.4.4.4.4.4.3.3.X.P.P.P.N.N.N.N.N.N.N.M.M.J.J.J.J.I.I.I.I.I.I.H.H.z.z.z.z.x........................aGaGaGaCazazaCaC#T.#.#.#.##U#8an.h.#.#.####1aearay#S.#.#.#.c#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGayatauayaCaC.#.#.#.##j#7amayaGaCayaran.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazazazaCaC.Z.#.#.#.y#6alayaGaGaGazazazaCaC.Z.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazazaCaC#T.#.#.#.##U#8anayaGaG#T#T#T#i.h.#.#.#.o#W#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGayatauayaCaC.#.#.#.##j#7amayaG#w.#.#.##k#8.E.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazazazaCaC.Z.#.#.#.y#6alayaG.Z.#.#.#.#.#.#.O#qauayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazazaCaC#T.#.#.#.##U#8an#t.#.#.#.D.Y.#.#.#.#.##iayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayatauayaCaC.#.#.#.##j#7amayaGaCazayayay#R.#.#.#.##C#YaaaoazaGaGaGaGaGaGaGaGaGaGaGaGaGaGazazazaCaC.Z.#.#.#.y#6alaya..#.#.#.#.o#T#3.#.#.#.##j#YacapazaGaGaGaGaGaGaGaGaGaGaGaGaGaCazazaCaC#T.#.#.#.##U#8am.#.#.#.####3ajataz#S.#.#.#.##7alayaG",
"......................................................................................................................................................aGaGaGaGaGaGaGaG.w.#.#.#.w#T#8am.#.#.#.##k#3ajawaG#T.#.#.#.##3akawaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaG#v.#.#.#.##T#6alayaGaGaGazay.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##k#6alayaGaGaGaGaGaGaGan.#.#.#.##k#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.w#T#8amayaGaG.#.#.#.#.#.#.#.7#2#1acapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaG#v.#.#.#.##T#6alayan.#.#.#.s#8#8.G.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##k#6alayaG.Z.#.#.#.#.#.#.#.#.gajazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.w#T#8am.Y.#.#.#.#.#.#.#.#.#.#.#.OatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaG#v.#.#.#.##T#6alayaGaGaGaGaGaG.h.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.#.#.#.##k#6alayaG.Y.#.#.#.#.#.#.#.#.#.W#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.w.#.#.#.w#T#8al.u.#.#.#.b#Talayan.w.#.#.#.##1agasaC",
"......................................................................................................................................................aGaGaGaGaGaGaG#k.#.#.#.##p#Waaao.#.#.#.##k#6alayaG#U.#.#.#.##1agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.L#T#7amayaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.e#W#8amayaGaGaGaGaGaGaG.i.#.#.#.e#W#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.##p#WaaapazaGaG.#.#.#.#.#.#.r#e#3#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.L#T#7amay.Z.#.#.##C#3ab.L.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.e#W#8amayaG.h.#.#.#.#.#.#.#.#.#.gagazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.##p#Waaap.#.#.#.#.#.#.#.#.#.#.#.#.###arazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa.#.#.#.#.L#T#7amayaGaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.#.#.#.e#W#8amayaGaz#p.#.#.#.#.#.#.#.o#D#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.##p#Waaao#r.#.#.#.#.#.K.V.#.#.#.#.#.##Wabapaz",
"......................................................................................................................................................aGaGaGaGaGaG#W.#.#.#.#.A#W#2agar.#.#.#.##j#6alayaG#U.#.#.#.##WaaapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.e#z#YabapazaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.##l#YabapazaGaGaGaGaGaG.0.#.#.#.##l#YabapazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.A#W#2agataCaGaG.#.#.#.#.#.#.#.#.e#4arazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.e#z#Yabap#8.#.#.#.2#2#6ah.V.#.#.#.y#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.##l#YabapazaG.Z#S#z#p##.w.#.#.#.#.###asazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.A#W#2agas.#.#.#.#.#.7#Y#2#v.c.#.#.#.#ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.e#z#YabapazaGaGaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.##l#YabapazaG#T.g.#.#.#.#.#.#.#.#.c#TaiataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.A#W#2agasay.g.#.#.#.#.#.#.#.#.#.#.#.a#U#8anay",
"......................................................................................................................................................aGaGaGaGaG#W.#.#.#.#.e#Y#Zaaanay.#.#.#.##i#6alayaG#U.#.#.#.##T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##t#W#8ajataCaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.Y#W#3agataCaGaGaGaGaG.0.#.#.#.#.Y#W#3agataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#Y#ZaaanayaGaGaGazanab#R.O.#.#.#.#.sarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##t#W#8ajat.h.#.#.#.o.A.D.L.g.#.#.#.c.C.LayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.Y#W#3agataCaGaGazaqaf#9#6#T.e.#.#.#.eakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#Y#Zaaanay.#.#.#.#.G#R#X#3#6#e.#.#.#.##pakataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##t#W#8ajataCaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.Y#W#3agataC#W.#.#.#.#.W#i.k.#.#.#.#.eaaawaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#Y#ZaaanayaCaj.t.#.#.#.#.#.#.F.#.#.#.w#Waaapaz",
"......................................................................................................................................................aGaGaGaG#W.#.#.#.#.e#P#0#9akataz.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##n#W#2agarazaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#Y#0abanayaGaGaGaGaG.0.#.#.#.#.D#Y#0abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#P#0#9akataCaGaGaGazaqag#9#7#n.#.#.#.##UarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##n#W#2agaraz.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#asazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#Y#0abanayaGaGaGaCayaqanalak#k.#.#.#.#abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#P#0#9akataz.#.#.#.##e#U#6aeakal.#.#.#.##macapazaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##n#W#2agarazaGaGaGaGaG.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#Y#0abanayaG.#.#.#.##i#1#Y#1#n.#.#.#.##marazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.e#P#0#9akataCaGaCat#V.0.A.A#c#T.o.#.#.#.7#1afasaC",
"......................................................................................................................................................aGaGaG#k.#.#.#.#.e#P#0#8ajarazaG.Z.#.#.#.w#6alayaG.Z.#.#.#.w#WaaapazaGaGaGaGaGaGaGaGaGaGaGaG#W.i.#.#.#.##p#Y#0aaanayaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.y.#.#.#.#.D#0#0#9akataCaGaGaGan.y.#.#.#.#.D#0#0#9akataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.e#P#0#8ajarazaGaGaGaGaCayaqanalaj.#.#.#.##pakataCaGaGaGaGaGaGaGaGaGaGaGaGaG#W.i.#.#.#.##p#Y#0aaanayaG.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#akaqayaGaGaGaGaGaGaGaGaGaGaGaGan.y.#.#.#.#.D#0#0#9akataCaGaGaGaGaCazayayaw#O.#.#.#.##3agataCaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.e#P#0#8ajarazaG.w.#.#.#.7#0aeapauay.#.#.#.##j#8amayaGaGaGaGaGaGaGaGaGaGaGaG#W.i.#.#.#.##p#Y#0aaanayaGaGaGaGaG#w.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.y.#.#.#.#.D#0#0#9akataC#W.#.#.#.##2#1#7aeai.r.#.#.#.DakataCaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.e#P#0#8ajarazaGaGaGazasakac#8#8#p.#.#.#.##A#3akawaG",
"......................................................................................................................................................aGaG.0.#.#.#.#.D#0#0#8ajarazaGaG#T.#.#.#.##Takawan.#.#.#.##k#1agasaCaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.f#X#1#1#9akataCaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##p#0#0#8ajarazaGaGaGan.i.#.#.#.##p#0#0#8ajarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#0#0#8ajarazaGaGanaGaGaGaCazayay#4.#.#.#.##macapazaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.f#X#1#1#9akataCaG.Z.O.F.A.y.A.B.D.e.#.#.#.a.w.AaaajarazaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##p#0#0#8ajarazaGaGaGaGaGaGaGaGaGaG.Z.#.#.#.k#YacapazaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#0#0#8ajarazaGaG#i.#.#.#.b#3ajauaC#T.#.#.#.##z#6alayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.f#X#1#1#9akataCaGaGaGaGan.i.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.##p#0#0#8ajarazaG#W.#.#.#.##B#1aeapat.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.D#0#0#8ajarazaGaGaGaGaGazatapan#z.#.#.#.#.V#W#8alayaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aG.0.#.#.#.#.#.A.A.D.K.V.Y#vaGaGaG.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.p.A.B.E.K.V.ZaGaGaGaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.#.e.A.A.D.K.V.Za.aGaGan.i.#.#.#.#.e.A.A.D.K.V.Za.aGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.A.A.D.K.V.Y#vaGaG#W.i#k#WaGaGaG#v.h.#.#.#.##U#8anayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.p.A.B.E.K.V.ZaGaGazarahaa#7#7#8aa.D.#.#.#.w#U#2aaajarazaGaGaGaGaGaGaGaGaGan.i.#.#.#.#.e.A.A.D.K.V.Za.aGaG#W.0#WanaGaGaa.Z.#.#.#.#.8#YacapazaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.A.A.D.K.V.Y#vaGaGal.#.#.#.#.B#8aua..h.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.p.A.B.E.K.V.ZaGaGaGaGaG#k.#.#.#.##O#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan.i.#.#.#.#.e.A.A.D.K.V.Za.aGaa.#.#.#.#.w#3ajau#T.#.#.#.####8anayaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.A.A.D.K.V.Y#vaGaGaGaGaGaGal#S.w.#.#.#.#.e#D#0acapazaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.................................0.#.#.#.#.#.#.#.#.#.#.#.#.YazaCaG#T.#.#.#.#.#.#.#.#.#.##l#YaaaoazaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazaCaGaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##SazaC.#.#.#.#.#.#.#.#.#.#.#.#.##SazaCaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.YazaC.0.#.#.#.#.#.#.#.#.#.#.#.7#T#8anayaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazazayaqanalalalal.L.#.#.#.w#ZabakaqayaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##SazaC#k.#.#.#.#.#.#.#.#.#.#.o#W#3agataCaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.YazaCaG#s.#.#.#.#.#.#.#.#.#.#.##z#WaaapazaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#ayazaCaGan.#.#.#.#.Y#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##SazaC.w.#.#.#.#.e.K.u.#.#.#.#.e#W#8anayaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.YazaCaG#W.#.#.#.#.#.#.#.#.e#O#0#9akataCaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.................................0.#.#.#.#.#.#.#.#.#.#.#.#.LaqayaCaC.V.#.#.#.#.#.#.#.#.A#W#3agataCaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqayaCaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##zaqay.#.#.#.#.#.#.#.#.#.#.#.#.##zaqayaCaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.Laqay.h.#.#.#.#.#.#.#.#.#.#.W#T#YabapazaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqawazazayayayayay.Y.#.#.#.y#3aiasazaCaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##zaqay.w.#.#.#.#.#.#.#.#.#.D#O#0abanayaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.LaqayaCaz.O.#.#.#.#.#.#.#.#.##m#W#3agataCaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.#anaqayaC#k.#.#.#.##D#YaaanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##zaqawaj.g.#.#.#.#.#.#.#.#.#.e#D#0acapazaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.LaqayaC#W.#.#.#.#.#.#.#.p#P#0#8ajarazaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.................................0.#.#.#.#.#.#.#.#.#.#.#.#.DagaqazaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.##9agaqazaGaGaGaG.#.#.#.##i#6alayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##pagaq.#.#.#.#.#.#.#.#.#.#.#.#.##pagaqazaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.Dagaq#8.Z.#.#.#.#.#.#.#.o#v#Y#Z#9akataCaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.##9agaqazaGaGaGaGaGaG.Z.#.#.#.A#6alayaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##pagaq#i.h.#.#.#.#.#.#.o#c#Z#1#9akataCaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.DagaqazaCat#z.e.#.#.#.#.#.o#Q#Y#1abanayaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.#.##9agaqal.#.#.#.#.V#W#3agasaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.#.#.#.#.#.#.#.#.#.##pagaqayat##.e.#.#.#.#.#.#.0#P#0#9akataCaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.#.#.#.#.#.Dagaqaz#U.#.#.#.#.#.C#w#0#1#9ajarazaGaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGayanaa#Y#T#S#S#T#W#W#W#Y#1abanayaGaCatal#O#n#m#t#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#W#Y#1abanayaGaGaGaGayan#8#X#X#8anayaGaGaGaGaGaGaGaGaGaGaGaGaGaGazanab#0#U#S#S#T#W#W#W#W#Y#1abanatanab#0#U#S#S#T#W#W#W#W#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#Y#1abanayazar#R#n#m#k#t#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#W#Y#1abanayaGaGaGaGaGaGaGayan#9#1#9anayaGaGaGaGaGaGaGaGaGaGaGaGazanab#0#U#S#S#T#W#W#W#W#Y#1abanayazar#u#n#m#k#X#Y#0#3abakarazaGaGaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#Y#1abanayaGazasak#Z#n#m#l#X#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#W#Y#1abanayaCauak#8#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazanab#0#U#S#S#T#W#W#W#W#Y#1abanayazarak#Z#o#n#p#A#6#1#1#9ajarazaGaGaGaGaGaGaGaGaGaGaGaGayanaa#Y#T#S#S#T#W#W#W#Y#1abanayan#S#B#r#R#Y#Y#0#3abakarazaGaGaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGazaqag#9#6#6#6#6#6#6#6#7#9agaqazaGaGazatanagab#8#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGaGaGaGazaqaf#9#9afaqazaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqawaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#7#9agaqazaCatalad#8#7#6#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGaGaGaGaGaGaGazaqagabagaqazaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaCatalad#8#7#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#7#9agaqazaGaGazatanagab#8#7#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaCatalac#9acalataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#6#7#9agaqazaGazatanahacaaaa#9#9acakarazaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#6#6#6#6#6#6#6#7#9agaqazaGazaqag#9#7#8abaganatazaGaGaGaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaCayaqanalalalalalalalalanaqayaCaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayaCaGaGaGaGaCayaqananaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayazayaqanalalalalalalalalalanaqayaCaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalanaqayaCaGazatapanalalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayaCaGaGaGaGaGaGaGaCayaqanaqayaCaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayaCaGazatapanalalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalanaqayaCaGaGaGaCayatapamalamapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayaCaGayarananapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalalanaqayaCaGaGaCayatapanalalanapatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanalalalalalalalalanaqayaCaGaCayaqanalamapatayaCaGaGaGaGaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaCazayayayayayayayayayayazaCaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayazaCaGaGaGaCazayayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaGaGaGaGaCazayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayazaCaGaGaGaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayayazaCaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayayayayayayayazaCaGaGaGaCazayayayazaCaGaGaGaGaGaGaGaG",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGan#W#k.0.0.0#vaaaGaGaGaGaGaGaGaGaGaGaa#k.0.0#kaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W#w.0.0.0#k#WaGaGaGaGaGaGaGaGaGaGaGaGaa#W#W#WanaGaGaG....aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#WanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaa#WaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.............Q.Q...........d.d.........d.Q.Q.........Q.Q.Q.Q.Q.Q.d.............d.d.................m.m.............Q.Q.d.......Q.Q.Q.Q...d.Q.d.........m.Q.m...............d.Q.Q........................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................an.y.#.#.#.#.#.#.#.#.YalaCaGaGaGaGaGan.0.#.#.#.#.#.#.walaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.#.#.#.#.h#8aCaGaGaGaGaGaGaG#w.y.#.#.#.##SazaCaG....aGaG.#.0aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.ZaGaGaGaGaG#W.##TazaCaGaGaGaGaGaG.0.#.ZaG.w.#.ZaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.##TaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.##Tan.#.##TaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.##UaGaGaGaGaGaG.0.#azazaGaGaGaG#w.#.#.ZaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.i.#.#a.aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#k.#.#.ZanaGaGaGaGaGaGanaaaGaGaGaGaG#W.#.haG#T.##UaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.h#ianaGaGaGaGaGaGaGaGaGaGaGaGaG........#E#I#I#I#H.d......#F#F......#F#I#I#I#H.....Q#I#I#I#I#I#I.Q...........d#H#F......#F#H#I#I#I#I#E.........Q#H#I#I#I.R...Q#I#I#I#I#I#I#H.d.....d#G#I#I#I#G..........#E#I#I#I#H.m....................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................an.#.#.#.#.#.#.#.#.#.#.gatazaGaGaGaG.y.#.#.#.#.#.#.#.#.gatazaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.#.#.#.#.#.#.#.#.#.##3ayaCaGaGan#w.i.#.#.#.#.#.##BaqayaC....aGaG.#.ZatatazaGaGaGaGaGaGaGaGaGaGaGaGaG.0.##P#C#ZaqataCaGaG#W.##OapataCaGaGaGaGaG.0.#.gar.#.#.VaqatazaGaGaGaGaGaGaGaGaGaGaGaGaG.#.Z.#.OaqawaCaGaGaGaGaGaGaGaGaGaGaGaGaG.#.##e#O.#.##OarayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#atatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.##RatayaCaGaGaG.0.#aqaoayaGaGaG.0.#.Y.#apatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.i.h#R#paparayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.y.##u#r.#.tasayaGaGaGaG.#.ZaCaCaGaGaG#W.#.##p#O.##RatayaCaGaGaGaGaGaGaGaGaGaGaGaGaG.#.w#O#c.#.tatazaGaGaGaGaGaGaGaGaGaGaG......#F#I.R...d#H#G....#F#I#F....#E#H.R...d#H.R...Q#I......#H#H.d..........#F#I#F......#I#F.Q.Q.d...........Q#I#F.d..#F#H...Q#I.Q.Q...d#I.R......#E#H.m...d#I.Q......#F#I.R...d#F#H.d..................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aG.h.#.#.F.D.p.#.#.#.#.##masazaGaG#k.#.#.#.#.q.p.#.#.#.##barazaGaGaGaGaGaGaGaGaGaGaGaGaG#k.#.#.r.E.D.#.#.#.#.#.saoawaCaGaa.#.#.#.#.#.#.#.##pagaqaz....aGaG.#.Vag.f.#.##TaG.#.Z.h.##TaGaGaGaGaG.Z.##w#p#Xae.L.#.wan#T.#.L.#.fajaCaGaGaGaG.w.g.f#D.r.#.F#9#T.#.#.hal#T.##k.#aGaGaGaGaGaa.##e.#.eaa.L.v.h.##kaG.Z.w.w.ZaGaGaGaGan.#.u.r#i.s.##raa#c.#.#.ZaG.w.waG.w.haGaGaGaGaGaG.Z.#aj.#.VaC.Z.#aG.#.Z.h.##TaGaGaGaGaGaG#W.##B.F.#ay#T.##U.Z.#agaearaGaGaG.h.g.K.##B#u.##TaG.#.ZaG#U.#.h.h.ZaGaGaGaGaG.#.g#Wacabag.V.#.wan#T.#.Z.#.wanaGaGaGaGaa.##iaoag.7.##Rac.w.##k.Z.#.#.OarayaGaG#W.#.t.q#s.##zag#c.#.h#TaG.h.haG.w.haGaGaGaGaG.#.Vad#8#i.##Sac.h.##kaGaG#k.#.haGaGaG.....R#I.Q.......m#I.m#F#H#G#F...m#I.m......#F#F...Q#I....#F#H.d..........#E#H#G#F......#I.Q...............m#I#F.............m#I.m....#E#I.d......#I.Q.....Q#I.d.....d#I.R.......Q#I.Q..................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aG#i#raj#9#3#7#W.#.#.#.#.DakataCaG.#.#.#.##i#1#1#e.#.#.#.##8arazaGaGaGaGaGaGaGaGaGaGaGaG#W#iacac#7#7#8.o.#.#.#.#aeaoayaGaG.#.#.#.s.#.#.#.##k#9anay....aGaG.#.O#9#0#C.g.#aq.#.var.u.#arawaCaGaG.Z.#.#.##p#k.##4.##e#O.####A.##carayaGaGaG.#.V.E.A.D.e.##Yaa#2#s.#.O#O.#.g.VaratazaGaG#w.##B.D.##O.E.#ag#e.##1.V.#.u#parauaCaG#W.##B.#.A.0.#.A#1#6#4.W.##C#r.#at.##iatatazaGaGaG.Z.#ac.#.Lar.V.#at.#.uar.u.#arawaCaGaGaG#W.##x.D.#ao#O.##R.V.#aa#9aoaCaGan.#.V#r.##b#p.##Oas.#.Yag.##iaj.#.OaratazaGaG#T.#.#.e#Y#m.##8.##e#O.##r#2.##easayaGaG#W.##Oad#9#s.##p.r.gajagar.#.LacadapazaG#U.##m.#.W.##s#i.##3#e.#af#i.#at.##iatatazaGaG.#.O#8#3#s.##p.r.t#s.##2#r.##Tagarataz....#G#G..........#I.Q.d.m#F#F...d#F........#H#E........#F#I#I#H.d.......Q#I.m#F#F.....Q#I.R#E#I#I#H.Q....#G#H...m#G#I#I#E...........d#I#E........#I.R#E#I#I#H.R.....Q#I........#F#I#F...d.m............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGawanafadagaj.F.#.#.#.Aacapaz#v.#.#.#.e#0#0#8ae.e.#.#.##iakataCaGaGaGaGaGaGaGaGaGaGaGaGazaraiaeagaj#u.#.#.#.##3ahataCaG.Z#e#7aa.#.#.#.##i#6alay....aGaG.#.O#W.e.g.f.#aa.#.Lae.E.#adakawaGaG.Z.#aa#1#8.F.#.#.#.E#u.##u#3.#.EaeanazaGaG.#.O.D.A.Y.D.##W#p.#.t.#.E#s.##xacabahataGaG.0.#.#.#.##m.D.#ag#s.##s.G.#agabadalayaG#W.##z.#.A#x.#.A#0.F.#.t.##r#2.#.K.#a.agajataGaGaG.Z.#ab.#.Fae.G.#ah.#.Kae.E.#adakawaGaGaG#U.##x.D.#ad#u.##z.F.##8#8aoaCaG#W.#.#.#.#.A#n.##xaf.#.O#u.##Baj.#.EabajataGaGaGae#i.#.E.L.#.#.#.E#u.##xad.#.FafaoazaGaa.##n#9ab#n.##O.#.Gakafag.#.F#2#3akayaG#U.##w.Y.e.##p.C.#al#w.##u#x.#.F.##VagajataGaG.#.O#8#9#c.##O.#.#.#.##r.G.#apahaealaw....#I.Q..........#I.Q....#F#F...........m#H#I.m......#F#I#G#F#H#H.....m#I.Q..#F#F.....Q#I#I#G.Q.Q#F#I.d.d#I.Q.Q#I#H.R#E#I.m........#E#I.d.........R#I#I#E.Q#E#I#F...m#I.R...Q#G#I#H#F..#H#I............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGazauaqaqasag.g.#.#.####8anay.Z.#.#.#.A#Y#8aiap.O.#.#.#.AacapazaGaGaGaGaGaGaGaGaGaGaGaGaCayaraqasat.V.#.#.#.k#YacapazaGazarajac.#.#.#.##i#6alay....#w#w.##c#p.##z.r.##0.#.F#7.D.##8aaaqaGaG.Z.#aa#0#7.7.##2#T#2#n.##i#y.##i#8agataGaa.##c#p.##n.D.##O.D.#ac.#.B#m.##r#3#7agataGaG.#.u#u#n.#.A.A.##X.Z.##D.D.##9#2aaalayaG#k.##U.C.##1.#.o#1.#.L#m.##n#6.r.e.pab#9agataG#W#W.h.gab.#.q#8.q.#ab.#.F#7.D.##8aaaqaGaa#W.Z.##T.D.##U#e.##w.D.##6#8aoaCaG.0.##z#n.l.##m.##i#X.#.K#B.#.8#Y.#.E#6acaraGaG#U#R#m.#.0.1.##2#T#2#n.##i#z.#.2#8agataGaG.h.##e#k.#.uaf.e.e#X#Xaj.#.s#T#8anazaG#U.##w#y.#.##m#c.##P.0.##Yaa.#.q.eaa#8afataGaG.#.t#p.2.#.Vaf.e.q#8#R#1.0.##u#Xafapay...Q#I.d.........m#I.m....#F#F.........R#I#H.m.........m.m.....d#I.Q.d#H.Q....#F#G.R#E.Q#I.Q........#I.Q.Q#I.m#I#H.d....#G#F........#H#F.........d#H#F.d.......R#I.....Q#I#I#I#G.m#F#F..#H#H............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaG#T#T#T#i.h.#.#.#.o#W#8anay.h.#.#.####1aearay#S.#.#.#.c#8amayaGaGaGaGaGaGaGaGaGaGaGaGaGa.#T#T#u.w.#.#.#.##z#YacapazaGaCayaran.#.#.#.##i#6alay.....i.#.u#8#U.e.#.p.##Y.#.E#6.D.##9#8aoaCaG.Z.#ab#3agac.t.#.##w#p.#.E.#.qae#7aeataG#W.##B#p.##p#p.##n#o.#.f.e.A#m.##p#3adapazaGaa.##eaa#0.e.e.A.#.e.#.7ac.D.##7#6ajataCaG.Z.#ag.D.##2.C.##3.D.#.r.##m#2#k.##e#3#8alayaG#k.#.h#B#9#p.#.e.D.##9.#.E#6.D.##9#8aoaCaa.#.##eae#U.e.#.0.##u.D.##6#8aoaCaG.h.gag#1.W.##u.B.#.o.r.G#7.0.#.o.#.F#7abaraGaG.y.#.####8#S.p.#.##w#p.#.e.#.q#2#7adasaGaGak.t.#.##cacac#p.e.#.0an#r.#.0aaapaCaG#U.##x#7.p.##m#Z.0.#.e#uac#8.F.#.Y#2#7akayaGaG.#.#.#.e#canab#p.e.#.c#2#X.r.#.eajataC...Q#I..........#E#H......#F#F......#E#I#E......................#I.Q#H#I#I#I#I#I#I#F#F..............#I.Q.Q#I#H#H.d......#G#F.......R#I.m........#H#F..........#F#G.........Q.d...d#I.Q...d..............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaG.#.#.#.#.#.#.#.7#2#1acapaz.#.#.#.##k#3ajawaG#T.#.#.#.##3akawaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.r#R#X#3ahataCaGaGaGazay.#.#.#.##i#6alay....aGayalac#7acae#7#2#0#3ac#8abajab#9apaCaGaGarac#9anayatag#6#8aeajae#7aaab#9aiawaGaGazal#8#9aa#8aa#8#8afad#3#3#1#7aa#8aiawaGaGaGaCao#9#6acaa.B.##1#2aaaa#8ad#9#9anaCaGaGaGataf#8ab#8#8ad#7#9ag#9#2#1#3.F.##X#1aaapaCaGaGayapaf#7aaagaa#8ad#8#7ad#8abajab#9apaCaGaCaraj#9#8aeab#7adab#7aa#8#9apaCaGaGasad#3aaac#6#3#9#7abad#7#Xad#p.##i#3abaraGaGaGayanaf#9#7abaa#3#8#u.##u#3#9ab#8agataGaGaCaqac#8acac#9acagaa#8aiaranaa#9anazaGaGayaj#9aeae#2#1acad#9abaaabalal#7#1#9apaCaGaGaCao#8#3acac#9aeai#9#3aaagalae#8aeapay...Q#I.........m#I#E......#F#F.....Q#I.Q..........#F#E.........Q#I.d#F#F#E.Q.Q#F#F.....d.Q.........R#I...d#I#I.d.......Q#I.Q......#H#G.........Q#I.d........#F#I.m..#E#F........#F#I.d..................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaG.#.#.#.#.#.#.r#e#3#9akataC.#.#.#.##k#6alayaG#U.#.#.#.##1agasaCaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.e.0#R#3adaoayaGaGaGaGaGaG.#.#.#.##i#6alay....aGatajacaealamadaa#9adajaeahanahagaraGaGaGatajagaraCazaoaeadahanaladadadafaqazaGaGazanafaiajafaiagaeajaiabaaaaaeagafanayaGaGaGaCapafagapan.F.##2#0#8acagalagagaraGaGaGaGauajafakagafalagafalafaaaa#s.##Bac#3afataGaGaGayanaeacakapajadadacaeajaeahanahagaraGaGazaragabagaoalaeadaeadagaeafaraGaGaGatagaeanapagadagaeadaead.f.#.#.0#7#1acaraGaGaGawaladacaganalaead#w.##u#3#6aaaeaoazaGaGaGayanadaaacaganarakadaganaqajaeanayaGaGayanagalanaeabalanagadaealataragabaiataGaGaGaGarad#8aaacagaparaladaeakaranaeadalaw...d#I.R.....R#I#H........#F#F...d#H#F.......m#H..#F#E.......Q#I#E............#F#F....#F#I.d.....R#I.R....#F#H.d.....R#I#G.......R#I.Q.........m#I.Q.....Q#H#I.Q....#E#I.d.....R#I.R....#F#F............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaG.#.#.#.#.#.#.#.#.e#4arazaG.#.#.#.##j#6alayaG#U.#.#.#.##WaaapazaGaGaGaGaGaGaGaGaGaGaGaG.0.#.#.#.#.#.#.#.##ualataCaGaGaGaGaGaG.#.#.#.##i#6alay....aGazasaqarayayarapaparataratayatatazaGaGaGazatatazaGaGayaraqarawauararaqasazaGaGaGaGayasatatasatatasatatarapaqaratasayaCaGaGaGaGayasatazayaral#9#6agapatayatatazaGaGaGaGazatasauatasawatasawataqaparataoacaaanazaGaGaGaCauararawazawaraqararataratayatatazaGaGaGayaraqatazayararararatarasazaGaGaGazatasayazatarataraqararataralad#8#7aiawaGaGaGazataqaqatazayaraqararah#8acamarayaGaGaGaGaGayarapaqatayazawararauayauarawaCaGaGaCayatawayasarawayatararawaCazatarataCaGaGaGaGazarapaparatazaCawaraqatayayaraqataz....#F#I#G#H#I#F.d........#G#F...R#I#I#I#I#I#I#I...m#I#G#F#H#I#F..............#G#G.....d#H#I#F#H#I.R........#H#I#F#H#I#E........#F#I............#F#I#H#I#I#G.d.......d#H#H#F#H#I#E......#I#I............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaGazanab#R.O.#.#.#.#.sarazaC.#.#.#.##i#6alayaG#U.#.#.#.##T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGazanab#c.c.#.#.#.#a.arazaGaGaGaGaGaG.#.#.#.##i#6alay....aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCataiafarazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazapagalataGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaualaeadagarazaGaGaGaGaGaCaGaGaGaGaGaGaCayanagamayaCaGaGaGaGaGaGaGaGaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaG.......Q#E.R.m.............m.m...d.Q.Q.Q.Q.Q.Q.Q.....m#F#F.R.m.................m.m.........Q#F.R.d.............R#F.R.d...........m.Q...............Q.R.Q.d.............d.R#F#E.d........#E.Q............",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaGazaqag#9#7#n.#.#.#.##Uaraz.w.#.#.#.L#6alayaG#k.#.#.#.k#T#7amayaGaGaGaGaGaGaGaGaGaGaGaGaGazaqag#9#U.e.#.#.#.7alataCaGaGaGaGaG.#.#.#.##i#6alay....aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazatatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayatawaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazataqaqatazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG........................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaGaCayaqanalaj.#.#.#.##pakat.Y.#.#.#.w#6alayaG.Z.#.#.#.w#WaaapazaGaGaGaGaGaGaGaGaGaGaGaGaGaCayaqanal.L.#.#.#.AacapazaGaGaGaGaG.#.#.#.##i#6alay....aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG........................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................anaGaGaGaCazayay#4.#.#.#.##macap#R.#.#.#.##Takawan.#.#.#.##k#1agasaCaGaGaGaGaGaGaGaGaGaGanaGaGaGaCazayay.g.#.#.#.y#8amayaGaGaGaGaG.#.#.#.##i#6alay..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................#W.i#k#WaGaGaG#v.h.#.#.#.##U#8amay.g.#.#.#.A#3ag.Z.#.#.#.e#W#7alayaGaGaGaGaGaGaGaGaGaGaG.#.Z#TalaGaGa..w.#.#.#.##k#7alayaGaGaGaGaG.#.#.#.##i#6alay....aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#WaaaGaGaGaGaGaGaGaGaGaGaGaGaG#WaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaanaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG...........j.T#N#N.T.j.j.j.j#J#N.j.j.j#J#N#N#J.j.j#J#N#N#J.j.j.j.j.n#N#K.j.j#N#N#N#N.T.j.T#M#N#K.j.T#N#N#N#N#N.j.j#K#N#N.T.j.j.U#N#N#J.j.j.j.j.........j.S.T.j.j.j.n.T.T.S.j....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.................................0.#.#.#.#.#.#.#.#.#.#.#.7#T#8anay#S.#.#.#.#.#.#.#.#.#.##l#YaaaoazaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.#.#.#.#.#.#.#.o#W#8amayaGaGaGaGaG.#.#.#.##i#6alay....aG.#.##Tan.#.##TaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.#.#.#.#.ZaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.0.#aG#T.##Uan.#.ZaGaGaGaGaGaGaGaGaG.#.ZazazaGaGaGaGaG.0.#.#.#.##T.#.ZazazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.#.#.##TaGaGaGaG.#.ZaCaCaGaGaGaGaGaG#k.#.#.haCaGaGaGaGaGaGaaanaGaGaGaGaGaGaGaG#W.i.#.#a.aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG...........n#N#M#M#N.n.j.j.T#N#N.j.j.U#N#L#L#N.U.S#N#L#L#N.U.j.j.j#J#N#K.j.S#N#L#K#K.S.n#M#M#L#N.U.S#K#K#K#N#M.j#J#N#L#M#N.S.S#N#M#L#N.U.j.j.j.........j#K#N.j.j.j.T#M#K#N.n....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG.................................i.#.#.#.#.#.#.#.#.#.#.W#T#Yabapazaz.V.#.#.#.#.#.#.#.#.A#W#3agataCaGaGaGaGaGaGaGaGaGaG#k.#.#.#.#.#.#.#.#.#.#.o#O#0acapazaGaGaGaGaG.#.#.#.##i#6alay....aG.#.##e#O.#.##OarayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGan#T.w.##C#ZaqataCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG#W.##Q#e.g#i#O.##RasataCaGaGaGaGaGaG.#.YaoaqayaGaGaGaGaa#T.#.t#Cac.#.OanapayaGaGaGaGaGaGaGaGaGaGaGaGaGaG.#.w#O#CacarayaGaGaaajararazaGaGaGaGaa.#.Z#P#DapasazaGaGaG#W.##TaCaCaGaGaGaGaGaG.i.h#R#paparayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG...........U#N.S.S#N.U.j#J#N#N#N.j.j.U#N.n.j#N#K.U#L.j.j#N#K.j.j.S#N#N#K.j.T#N.T.j.j.j.T#N.S.j#K.S.j.j.j.T#N.S.j#K#N.j.T#N.T#K#N.n.j#L#K.j.S.T.........j#N#K.T.j.j.T#K.j#K.T....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aa.Z.#.#.#.#.#.#.#.o#v#Y#Z#9akataCaGay#o.e.#.#.#.#.e#m#Y#1abanayaGaGaGaGaGaGaGaGaGaGaGan#i.g.#.#.#.#.#.#.e#c#Z#1#9akataCaGaGaGaGaG.#.#.#.##i#6alay....an.#.u.r#i.s.##raaaa.w.#.wanaG.#.0.h.##TaGaGaGaGaGaGaGaGaz.O.##8#7.E.#aw#T.##UaG.Z.#.wanaGaGaGaGaGaGaGaa.##z.F.L.L#u.##Waf.L.#.wanaG#k.#.h.#.OadagataGaGaGaGaGay.#.E#7#8.#.r.e.##OaC.#.ZaG.Z.#aGaGaGaGaGaGaGaG.#.u#u#paa.#.O.h#T.#.VakamayaGaGaGaG#W.#.V#6aaac##.#.#.ZaG.#.#.##CasazaGaGaGaGaG.#.g#Wacab.G.#az#T.##U.Z.w.w.#.ZaGaGaGaGaGaG..........#K#N.j.j#N#K.j#J.T#K#N.j.j.j.j.j.n#N#K.j.j.j.T#N#J.j.j#L#L#N#K.j.U#N#M#N#J.j#K#N.n.T.n.j.j.j.j#L#L.j.j.U#N.U#K#N.n#K#N.j.j#K#N.j#K#N.........T#L.U#J.j.j.T#M#K#N.n....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGazar#R#n#m#k#t#X#Y#0#3abakarazaGaGaCatal#O#n#m#t#Y#0#3abalataCaGaGaGaGaGaGaGaGaGaGaGaGazar#4#p#m#m#k#X#Y#0#3abakarazaGaGaGaGaGaGayan#8#X#X#8anay....#W.##B.#.A.0.#.A#1.s.gay.g.uas.#.war.u.#arawaCaGaGaGaGaGaC.V.##3#1.F.#aq#O.##R#r.##8.##easayaGaGaGaGaGaG.#.K.e.7.e.D.#ac#f.##2.##e#3.##iag.#.G#6abaraGaGaGaGaGaz.#.F#1#3.#.r#6.p.#aq.#.Yas.V.#atatazaGaGaGaGaG.#.#.#.#aa.#.#.O#1.#.OaialawaGaGaGaGaG.Z.#.#.Cadaa#4.W.##C#O.##xabahataCaGaGaGaG#T.#.#.e#Y.K.#ar#O.##R.V.#ag#p.##OatazaGaGaG..........#K#N.j.j#N#K.j.j.j#K#N.j.j.j.j.j#K#N.S.j.j#K#N#L.j.j.S#N.n#N#K.j#K#N#K#M#N.S#K#N#M#N#N.S.j.j.S#N.U.j.j.j#M#N#N#J.j.U#N#K.U#N#N.j.S.T........#J#N#N#M.j.j.T#L.T.n.j....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaCatalad#8#7#6#7#8abaganatazaGaGaGaGazatanagab#8#8abaganatazaGaGaGaGaGaGaGaGaGaGaGaGaGaCayapaiab#8#7#7#8abaganatazaGaGaGaGaGaGaGazaqaf#9#9afaqaz....#W.##z.#.A#x.#.A#0.#.Oan.F.#af.#.Oae.E.#adakawaGaGaGaGaGaG.Z.##9#7.L.#ah#u.##z.F.#.#.#.EaeaoazaGaGaGaGaG.w.L.##8.#.C.o#8.D.#.#.#.E#u.##Cag.#.D#1aaaraGaGaGaGaGaG.#.L#7#9.#.L#6.B.#ac.#.Laf.G.#ahagaraGaGaGaGaG.#.O#6#0#9.#.Ladaa.#.FaaagataGaGaGaGaGay#X.D.##u.O.#.t.##r#u.##r#1aaapazaGaGaGaGaGae#i.#.E.L.#ag#u.##z.F.#af#u.##uagaraCaGaG..........#K#N.j.j#N#K.j.j.j#K#N.j.j.j.j.T#N#K.j.j.j.U#L#N.T.j#M#J.j#N#K.j.j.S.j.n#N#K#K#N#K.U#N#L.j.j#J#N.j.j.j#J#N.U#K#N.S.j#M#N#N#N#N.j.j.j........#L.S.j#M.n.j.T#K.j.j.j....................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGazatapanalalalamapatayaCaGaGaGaGaGaGaCayatapananapatayaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatapamalalamapatayaCaGaGaGaGaGaGaGaGaCayaqananaqayaC....#k.##U.C.##1.#.o#1.q.fad.e.q#9.#.F#8.D.##8#i#eaCaGaGaGaGaG.Z.#ab#8.L.##1#i.##w.0.##1#T#2#6.F#QaGaGaGaGaG.Z.g.e#2.#.e.B#2.0.##3#T#2#y.#.8#X.#.E#3.E#OaCaGaGaGaGaG.#.O#8ab.#.L#7.C.##8.#.r#8.q.#ab#i#caCaGaGaGaG.#.O#3#Z#8.#.G#6#2.#.F#6.E#OaCaGaGaGaG#u#O.F.##z.#.L#m.##n#o.##i#S#k#eazaGaGaGaG#U#R#m.#.0.D.##X#f.##w.D.##8#p.##r#C.LajaGaG..........#K#N.j.j#N#K.j.j.j#K#N.j.j.j.T#N#M.n.j.j.j.j.j#L#N.T#N#L#K#N#M.U.j.j.j.j#N#K#K#N.j.j#K#N.j.j#M#L.j.j.j#N#K.j.j#N#K.j.j.T.S#K#N.j.U#K..................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG................................aGaGaGaCazayayayayayazaCaGaGaGaGaGaGaGaGaGaGaCazayayazaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazayayayayazaCaGaGaGaGaGaGaGaGaGaGaGaCazayayazaCaG.....Z.#ag.D.##2.C.##3#X.r.#.p#2#9.#.F#7.D.##9.e#cauayaCaGaGaG.Z.#ab#8ab.g.#.0.##u#U.p.#.##w#z.##2awayaGaGaG#T.#.E#1.B.##n#1#X.s.#.##w#7.7.#.e.q.F#z.##ZauayaGaGaGaG.#.O#8ab.#.L#8.D.##9#p.#.e.D.##9.e#cauayaCaGaG.#.O#7#7aj.#.L#7#8.#.K#A.##ZauayaGaGaa.h.#.g#u#6.D.#.p.##m#2.q.##z.e#eawayaCaGaG.y.#.####8#R.e.#.0.##u.D.##6#p.##u.0.farawaz...........U#N.S.S#N.U.j.j.j#K#N.j.j.n#N#M.n.j.j.U#L.j.j#L#N.T#N#N#N#N#N#K#L#L.j.S#N#J.T#N.n.j#L#N.j.j#N#K.j.j.j#N#L.j.n#N#K.n#J.S.j#M#K.j#K#N..................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG......................................................................................................................................................................................aGataf#8ab#8#8ad#7#9aiad#9ac#9acag#8abaj#Z.##8alanayaGaGaGaGarac#9anaraf#8adab#7acab#3#8#k.tapalaqazaGaGaGasad#2#8ae#7#1acalaf#6#8aealaj#9aaab#e.pakalapazaGaGaGaCap#9acaqan#9abajab#8ae#9#8ad#W.##8alanayaGaGaCap#9abarayao#9acapan#i.pakalapazaGaGaGatalac#7#8ad#8#1#1#3aeaf#W.#a.alanayaGaGaGayanaf#9#6aa#9#7adab#7aa#8#8ajag.p#kakalat...........n#N#M#M#N.n.j.j.j#K#N.j.j#J#N#L#K#K.U.T#N#L#L#N#J.j.j.j.j#N#K.j#K#N#L#M#N.n.n#N#M#L#N#J.j.T#N.T.j.j.j#J#N#L#M#N.S.n#N#M#L#N.T.j.j.j..................................................................................................................................................................................................................................",
"..........aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaG......................................................................................................................................................................................aGauajafakagafalagagaoanafadafananafahan#7#QaiaeakawaGaGaGaGatajagarayanaeadaeadajalaead#TacalafanazaGaGaGayalacagalafacalaranaeadaiapaqahacac#O#3agaeanazaGaGaGaGaragajataragahanahafalajadad#1#PaiaeakawaGaGaGaragajataCaragajatar#S#2agaeanazaGaGaCaraiacadajamafaaaaacalan#3#RagaeajawaGaGaGawaladacaganalaeadaeadagaeafanal#uagaeagar...........j.T#N#N.T.j.j.j.j#K#N.j.j#N#N#N#N#N#K.j#J#N#N#J.j.j.j.j.j#N#K.j.n#L#N#M.T.j.j.T#M#N#K.n.j.T#N.T.j.j.j.n#J#N#N.U.j.j.T#N#N#J.j.j.j.j..................................................................................................................................................................................................................................",
"............................................................................................................................................................................................................................................................................................................aGazatasauatasawatatayayaraqarayayasatayataranaiaoazaGaGaGaGazatatazaCayararararauayaraqararamajaraCaGaGaGaCayaratayatarawazayaraqarayazataqaqaqapalajaraCaGaGaGaGazatatazayatatayatasayauaraqaraqanaiaoazaGaGaGazatatazaGazatatazayarapalajaraCaGaGaGayaraparawayataqaparawayasaqamaganazaGaGaGazataqaqatayayararararatarasayawaraoajalaw................................................................................................................................................................................................................................................................................................................................................................................",
"............................................................................................................................................................................................................................................................................................................aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazauarayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCazatasazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCayatasazaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGazauarayaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGayatasazaGaGaGaGaGaGaCaGaGaGaGaGaGaGaGaGaGazauarayaGaGaGaGaGaGaCaGaGaGaGaGaGaGaGaGaGaGaGaGaCayarataC................................................................................................................................................................................................................................................................................................................................................................................",
"............................................................................................................................................................................................................................................................................................................aGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaCaCaG................................................................................................................................................................................................................................................................................................................................................................................",
".......................................................................................................................................................j.j.j.j.j.T.T.j.j.j.j.j.j.j.j.j.n.n.j.j.j.j.j.j.j.j.n.T.T.j.j.j.j.j.j.j.j.T.T.T.T.T.T.n.j.j.j.j.j.j.j.j.j.j.n.n.j.j.j.j.j.j.j.j.j.j.j.j.S.S.j.j.j.j.j.j.j.j.j.j.T.T.n.j.j.j.j.j.j.j.T.T.T.T.j.n.T.n.j.j.j.j.j.j.j.S.T.S.j.j.j.j.j.j.j.j.j.j.j.n.T.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".......................................................................................................................................................j.j.j#J#N#N#N#M.n.j.j.j.j.j.j.j#K#K.j.j.j.j.j.j.j#K#N#N#N#M.j.j.j.j.j.j.T#N#N#N#N#N#N.T.j.j.j.j.j.j.j.j.j.n#M#K.j.j.j.j.j.j.j#K#M#N#N#N#N#J.j.j.j.j.j.j.j.j.T#M#N#N#N.U.j.j.j.j.j.T#N#N#N#N#N#N#M.n.j.j.j.j.j.n#L#N#N#N#L.j.j.j.j.j.j.j.j.j#J#N#N#N#M.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.j.j.j.j.j.j.j.j.j.j.j.j.n#J.j.j.j.j.j.j.T#K#K#J.j.j.j.j.j.j.T.T.n.n.n.S.S.j.j.j.j.j.j.j.j.j.j.j#J.j.j.j.j.j.j.j.j.j.j.j.T.S.j.j.j.j.j.j.n.T.T.T.T.j.j.j.j.n.U.j.j.j.j.j.n.j.j.j.j.j.j.U#K#K.U.j.j.j.j.j.j.j.j.U#K#J.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j#K#N.U.j.n#M#L.j.j.j.j.j.j#K#N#K.j.j.j.j.j.j#J#M.U.j.n#M.U.j.j.j.j.j.T#N.j.j.j#M#M.n.j.j.j.j.j.j.j.j.j#K#N#K.j.j.j.j.j.j.j#N#K.T.T.n.j.j.j.j.j.j.j.j.j.T#N#K.n.j#K#M.j.j.j.j.j.T#N.T.T.j.n#N.U.j.j.j.j.j.j#J#M.S.j.n#N.T.j.j.j.j.j.j.j#K#N.U.j.n#K#M.n.j.j.j.j.j.n.S.j.j.j.j.j.j.j#J#N#N#N#M#J.j.j.j.j.j.j.n.T#J#N.U.j.j.j.j.j#L#N#N#N#N#M.j.j.j.j.j.U#N#N#N#N#N#K.j.j.j.j.j.j.j.j.j.j#L#N.j.j.j.j.j.j.j#L#L#L#M#N.T.j.j.j.j.j#K#N#N#N#N.U.j.j.j.j.j#N#M#M#M#M#N#M.j.j.j.j.j#M#N#N#N#N#M.j.j.j.j.j.T#N#N#N#N#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.U#N.T.j.j.j.S#N.S.j.j.j.j#K#M#L#K.j.j.j.j.j.S#N.S.j.j.j#K#K.j.j.j.j.j.T#N.j.j#K#M.n.j.j.j.j.j.j.j.j.j#J#M#L#K.j.j.j.j.j.j.j#N.T.j.j.j.j.j.j.j.j.j.j.j.S#N#K.j.j.j.j.j.j.j.j.j.j.S#N.S.j.j#J#N.n.j.j.j.j.j.j#N.T.j.j.T#N.n.j.j.j.j.j.j.n#N.U.j.j.j.T#N.T.j.j.j.j.j#M#N.j.j.j.j.j.j#M#N#N#N#N#N#N#K.j.j.j.j.S#L#N#N#N.j.j.j.j.S#M#N#N#N#N#N#N#J.j.j.j.j.T#N#N#N#N#N.S.j.j.j.j.j.j.j.j.j#K#N#N.j.j.j.j.j.j.j#N#N#N#N#N.S.j.j.j.j#L#N#N#N#N#N.j.j.j.j.j.n#N#N#N#N#N#N.U.j.j.j.j.U#N#N.U#J#N#N.T.j.j.j.j#M#N#N#N#N#N#N.U.j.j.n.S.j.j.j.j.j.j.j.j.j.j.S#K#K.U.j.j.j.j.j.j.j.j.j.j.n#K.S.j.j.j.j.j.j.j.j.j.j.j.U#K#J.S.j.j.j.j.j.j.j.j.j.S#K#K.U.j.j.j.j.j.j.j.j.j.j.j.n#J#J.j.j.j.j.j.j.j.j#J#K#K#K#K#K.T.j.j.j.j.j.j.j.j.j.n#J.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#J#K.U.j.j.j.j.j.j.j.j.j.j.T#K#K.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j#L#L.j.j.j.j.j#N.T.j.j.j.j.n.S#K#K.j.j.j.j.j.n#K.j.j.j.j#M#J.j.j.j.j.j.j.j.j#K#N#N#M.n.j.j.j.j.j.j.j.T#N.S#K#K.j.j.j.j.j.j.T#N.U#J#N#N#M.T.j.j.j.j.j.j#L#M.j.S#L#N#N#J.j.j.j.j.j.j.j.j.j.n#N#J.j.j.j.j.j.j.j#N.U#J#N#N#M.U.j.j.j.j.j.j.T#N.j.j.j.j#K#N#K.j.j.j.j.j#M#M.j.j.j.j.j#K#N#N#N#N#N#N#N#N.U.j.j.j.j.S#N#N#N.j.j.j.j.j.T#M#M.n#L#N#N#K.j.j.j.j.U#J.T#M#N#L.j.j.j.j.j.j.j.j.j#J#N#N#N.j.j.j.j.j.j.S#N#N#J.T#J.U.j.j.j.U#N#N#K.j.j.U.j.j.j.j.j.U#N#L#M#N#N#L.j.j.j.j.j#J#N#N.j.T#N#N.T.j.j.j.T#N#N#J.j#L#N#N#L.j.j#M#N.j.j.j.j.j.j.j.j.j.T#N#N#N#N#K.j.j.j.j.j.j.j.j.T#M#N.T.j.j.j.j.j.j.j.j.j.n#M#N#N#N#N.S.j.j.j.j.j.j.j#J#N#N#N#N#M.j.j.j.j.j.j.j.j.j.j#K#N#N.j.j.j.j.j.j.j.j#L#N#N#N#N#N.U.j.j.j.j.j.j.j.j.n#M#N#J.j.j.j.j.j.j.j.j#M#N#N#N#N#N#N#J.j.j.j.j.j.j.n#M#N#N#N#J.j.j.j.j.j.j.j.j#L#N#N#N#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j#N.T.j.j.j.j.j#N.T.j.j.j.j.j.j#K#K.j.j.j.j.j.j.j.j.j.S#M#N.S.j.j.j.j.j.j.j#K#N#L#K#M#M.j.j.j.j.j.j.S#N.T.j#K#K.j.j.j.j.j.j.T#N#N#L.T.T#K#N.n.j.j.j.j.n#N.T.T#N#M.U#J#N.S.j.j.j.j.j.j.j.j#J#N.n.j.j.j.j.j.j.j.U#N#N#J.T#J#N#K.j.j.j.j.j.S#N.U.j.T#L#N#M#K.j.j.j.j.j.n.j.j.j.j.j.n#N#N#N#J.n.n#L#N#N#L.j.j.j.j.n#N#N#N.j.j.j.j.j.j.n#J.j#J#N#N#J.j.j.j.j.n.j.j#N#N#K.j.j.j.j.j.j.j.j#J#N#N#N#N.j.j.j.j.j.j.U#N#N#L.T.j.j.j.j.j#L#N#M.S.U.U.S.j.j.j.j.j.U.n.j#K#N#N.T.j.j.j.j.j.S#N#N#N#N#N#L.j.j.j.j.T#N#N#K.S#L#N#N#N.j.j#M#M.j.j.j.j.j.j.j.j.n#N#M.n.j#K#N.S.j.j.j.j.j.j.j#N#N#N.T.j.j.j.j.j.j.j.j.j#K#N#J.j.S#N#K.j.j.j.j.j.j.j.T#J.n.j#J#N.T.j.j.j.j.j.j.j.j.U#N#N#N.j.j.j.j.j.j.j.j#K#K.j.j.j.j.j.j.j.j.j.j.j.j.j#M#N#J.j.j.j.j.j.j.j.j.j#J#K#K#K#L#N#N.S.j.j.j.j.j.j#J#N.T.j#L#N.j.j.j.j.j.j.j.U#N#J.j.n#K#N.U.j.j.n.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................T#N.n.j.j.j.j.S#N.S.j.j.j.j.j.j#K#K.j.j.j.j.j.j.j.j.U#N#M.S.j.j.j.j.j.j.j.j.S.S.j.j.n#N.T.j.j.j.j.n#M.T.j.j#K#L.U#J.j.j.j.j.T#N.T.j.j.j.j#N.T.j.j.j.j.T#N.S#N#M.n.j.j#L#K.j.j.j.j.j.j.j.j#M#K.j.j.j.j.j.j.j.n#M#K.n.j.j.j.U#N.j.j.j.j.j.j.T#N#N#N#L.S#K#K.j.j.j.j.j.j.j.j.j.j.j.T#N#N#M.j.j.j.S#N#N#N.j.j.j.j.j#N#N#N.j.j.j.j.j.j.j.j.j#M#N#N.T.j.j.j.j.j.j.U#N#N#N#L.j.j.j.j.j.j.U#N#L.T#N#N.j.U.j.j.j.j#K#N#N#N#N#J.j.j.j.j#N#N#N#N#N#N#N.T.j.j.j.j.j.j.S#N#N#M.j.j.j.j.j.j.n#M#N#N#N#N#L.j.j.j.j.n#N#N#N#N#N#N#N#N.j.j.n.j.j.j.j.j.j.j.j.j.U#N.T.j.j.S#N#J.j.j.j.j.j.j.j.S.U#N.T.j.j.j.j.j.j.j.j.j.n.S.j.j.S#N#K.j.j.j.j.j.j.j.j.j.j.j#J#N.T.j.j.j.j.j.j.j.n#N#M#L#N.j.j.j.j.j.j.j.j#K#M#M#N#N#J.j.j.j.j.j.j.j.j#J#N.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j#M#N.T.j.j.j.j.j.j.j#K#N.n.j#L#N.j.j.j.j.j.j.j#K#N.j.j.j.n#N#K.j.j#K#N.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................T#N.j.j.j.j.j#J#M.j.j.j.j.j.j.j#K#K.j.j.j.j.j.j.j#J#N#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N.T.j.j.j.j#M#N#N#N#N#N#N#K#K.j.j.j.j.j.j.j.j.j.j.j#N.T.j.j.j.j.T#N#M#M.n.j.j.j#L#K.j.j.j.j.j.j.j.U#N.S.j.j.j.j.j.j.j#M#K.j.j.j.j.j#K#L.j.j.j.j.j.j.j.j.T.n.j.n#N.T.j.j.j.j.j#K#K.j.j.j.j.T#N#N#M.j.j.j.T#N#N#N.j.j.j.j.j#N#N#N.j.j.j.j.j.j.j.j.T#N#N#L.j.j.j.j.j.j.j.j.n#L#N#N.U.j.j.j.j.T#N#N#K#J#N#N#M#M.j.j.j.j.n.j.T#N#N#N.T.j.j.j#N#N#N#N#N#N#N#M.j.j.j.j.j.j#K#N#N.U.j.j.j.j.j.j#M#N#N#N#N#N#N#L.j.j.j.j.U#N#N#N#N#N#N#M.j.j.j.j.j.j.j.j.j.j.j.j#K#N.j.j.j.j#N#K.j.j.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j.j.j.j.j.j.S#M#N.S.j.j.j.j.j.j.j.j.n#K#N#N#M.j.j.j.j.j.j.j.j#L#N.T#K#N.j.j.j.j.j.j.j.j#N#N#N#K#L#N.U.j.j.j.j.j.j.j#N#N#M#N#L.n.j.j.j.j.j.j.j.j.j.j#J#N#K.j.j.j.j.j.j.j.j.T#N#M#L#N#K.j.j.j.j.j.j.j#K#N.n.j.j.n#N#K.j.j.T#K.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................T#N.j.j.j.j.S#N#J.j.j.j.j.j.j.j#K#K.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j.j.j#K#J.j.j.j.j.T#N.n.j.j.j.j#K#K#J.T.T#K#K.j.j.j.j.j.j.n.T.j.j.j.j.U#N.j.j.j.j.j.n#N#N.n.j.j.j.T#N.T.j.j.j.j.j.j.j#M#L.j.j.j.j.j.j.j.T#N.n.j.j.j.j#K#N.S.j.j.j.j.j#J#K.j.j.j.j#K#N.n.j.j.j.j.j#N#N.j.j.j.j.S#N#N#N#K.S.T#M#N#N#K.j.j.j.j.j#M#N#N.n.j.j.j.j.j.j.j#M#N#N#J#J.T.j.j.j.j.T.T.j.U#N#N#J.j.j.j.T#N#N#N#N#N#N#N#N#N.j.j.j.j.T.j.j#J#N#N.U.j.j.j#M#N#N.T.j#M#N#N.n.j.j.j.j.T#N#N#N.j.j.j.j.j.j.T#N#N#K.j.S#N#N#N.n.j.j.j.j.T.S.n#J#N#N#J.j.j#K#K.j.j.j.j.j.j.j.j#K#N.j.j.j.j#N#K.j.j.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j.j.j.j.j#J#N#N.T.j.j.j.j.j.j.j.j.j.S#N#N#N#K.j.j.j.j.j.j.j#J#N#K.j#K#N.j.j.j.j.j.j.j.j#N#M.n.j.j#L#M.j.j.j.j.j.j.S#N#N#K#K#N#M.j.j.j.j.j.j.j.j.j.j#N#N.n.j.j.j.j.j.j.j.j.n#M#N#N#N#J.j.j.j.j.j.j.j.S#N#N#K#L#N#N.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................n#N.U.j.j.U#N#M.j.j.j.j.j.j.j.j#K#K.j.j.j.j.j.n#M#K.j.j.j.S#M.j.j.j.j.j#K#J.j.j.j.T#N#J.j.j.j.j.j.j.j.j.j.j#K#K.j.j.j.j.j.j#K#N.n.j.j.U#N.U.j.j.j.j.j.j#K#M.n.j.j.U#N#L.j.j.j.j.j.j.j.U#N.T.j.j.j.j.j.j.j.S#N.T.j.j.T#M#N.T.j.j.j.j.j.j#J#N.n.j.j.U#N.U.j.j.j.j.j.j#J.T.j.j.j.j.j#K#N#N#N#N#N#N#N#N.T.j.j.j.j.j#M#N#N.S.j.j.j.j.j.j#J#N#N#N#N#N.n.j.j.j.j#L#L.U#M#N#N.T.j.j.j#K#L#K#J.U#K#N#N#K#K.n.j.j.j#M#J#J#N#N#N.T.j.j.j#L#N#N#J.S#N#N#N.j.j.j.S#J#N#N#N#J.j.j.j.j.j.j.U#N#N#L.S.U#N#N#N.j.j.j.j.j#M#K#K#N#N#M.n.j.j#N#N.j.j.j.j.j.j.j.j#K#N.j.j.j.j#N#K.j.j.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j.j.j.j#M#N#K.n.j.j.j.j.j.j.j.j.j.j.j.j.S#M#N.S.j.j.j.j.j.S#N#N#N#N#N#N#N.S.j.j.j.j.j.j.S.n.j.j.j#K#N.j.j.j.j.j.j.T#N.T.j.j.U#N.T.j.j.j.j.j.j.j.j.U#N#J.j.j.j.j.j.j.j.j.j#L#N.U.n#K#N.U.j.j.j.j.j.j.j.S#L#N#N#M#N.S.j.j.n.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j#K#N#L#M#N#K.n.j.j.j.j.j.j.j.j#L#K.j.j.j.j.j.U#N#N#N#N#N#N#N.j.j.j.j.j.S#N#L#K#M#N#K.j.j.j.j.j.j.j.j.j.j.j#L#L.j.j.j.j.j.j.n#M#N#K#M#N.U.j.j.j.j.j.j.j.j#M#N#K#M#N#J.j.j.j.j.j.j.j.j#K#N.j.j.j.j.j.j.j.j.j#K#N#M#N#N#L.n.j.j.j.j.j.j.j.n#M#M#K#M#N#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N#N#N#N#N#N.T.j.j.j.j.j.j#M#N#N.T.j.j.j.j.j.T#N#N#N#N#N#N.j.j.j.j.U#N#N#N#N#N#L.j.j.j.j.j.j.j.j.j.U#N#N.U.j.j.j.j.n#N#N#N#N#N#M.j.j.j.j.T#N#N#N#N#N#N#J.j.j.j.j.U#M#N#N.T.j.j.j.j.j.j.j#N#N#N#N#N#N#N#J.j.j.j.j.T#N#N#N#N#N.T.j.j.j#J.T.j.j.j.j.j.j.j.j.U#N.S.j.j.T#N.T.j.j.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j.j.j.U#N#K.j.j.j.j.j.j.j.j.j.j.j.S.n.j.j.T#N.T.j.j.j.j.j.n#J#K#K#K#M#N#K.n.j.j.j.j.j.j.j.j.j.j.j#L#N.j.j.j.j.j.j.T#N.T.j.j.T#N.T.j.j.j.j.j.j.j.j#L#N.S.j.j.j.j.j.j.j.j.j#N#K.j.j.j#N#K.j.j.j.j.j.j.j.j.j.j.T#N#L.j.j.j#K#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j.T#J.U.S.j.j.j.j.j.j.j.j.j.j.S.S.j.j.j.j.j.n.T.T.T.T.T.T.T.j.j.j.j.j.j.S#K#K.U.S.j.j.j.j.j.j.j.j.j.j.j.j.S.S.j.j.j.j.j.j.j.j.T#K.U.n.j.j.j.j.j.j.j.j.j.j.U#K.U.n.j.j.j.j.j.j.j.j.j.S.T.j.j.j.j.j.j.j.j.j.j.T.U.T.n.j.j.j.j.j.j.j.j.j.j.n.U#K#J.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#K#L#L.U.j.j.j.j.j.j.j.U#N#N#N#K.j.j.j.j.j#J#K#J#J#J#J#M.S.j.j.S#K#N#N#N#N#L.n.j.j.j.j.j.j.j.j.S#M#N#N#M.T.j.j.j.U#N#N#N#N#L.n.j.j.j.j.j#J#N#N#N#N#L.j.j.j.j.j.j.j.U#N.S.j.j.j.j.j.j.j.S#L#N#N#N#N#K.j.j.j.j.j#J#N#M#M#K.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#N#L.n.n#M#N.n.j.j.j.j.j.j.j.S#J#N#J.S.j.j.j.j.j.j.j.j#K#N.T.T.T.T.j.j.j.j.j.j.j.j#N#M.n.j#K#N.S.j.j.j.j.j.j.j.j.j.j#K#N.j.j.j.j.j.j.j.j#M#K.j.j#K#N#J.j.j.j.j.j.j.n#N#L.n.n#L#N.n.j.j.j.j.j.j.j.S#N#L.j.j.j.j.j.j.j.j.j.j#N#M.n.j.T#N#J.j.j.j.j.j.j.j.j.S#J#N#M.n.j.j.j.U#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U.T.n.n.T.j.j.j.j.j.j.j.j.j.j.j.S.n.j.j.j.j.j.T.U.T.j.j.j.j.j.j.j.j.j.j.T.T.n.n.T.S.j.j.j.S.j.n.T.S.j.j.j.j.j.j.j.j.n.T.U.S.j.j.j.j.j.j.j.j.j.S.n.j.j.j.j.j.j.j.j.j.S.U.T.n.j.j.j.j.j.j.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#N#N#N#J.j.j.j.j.j.j.j.j#N#N#N#N#N.j.j.j.j.j.j.j.j#K#N#N#N#N#N#J.j.j.j.j.j.j.j#J#N#N#N#N#K.j.j.j.j.j.j.j.j.j.j.j#K#N.j.j.j.j.j.j.j.j#K#N#N#N#N#M.n.j.j.j.j.j.j.j#J#N#N#N#N#J.j.j.j.j.j.j.j.j#J#N.U.j.j.j.j.j.j.j.j.j.j#J#N#N#N#N#M.n.j.j.j.j.j.j.j#M#N#N#L.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#K#K.S.j.j.j.j.j.j.j.j.j.S.T.T.T.S.j.j.j.j.j.j.j.j.n.T.T.T.T.T.n.j.j.j.j.j.j.j.j.S#K#K.T.j.j.j.j.j.j.j.j.j.j.j.j.T#J.j.j.j.j.j.j.j.j.j.U#K#K.U.j.j.j.j.j.j.j.j.j.j.U#K#K.S.j.j.j.j.j.j.j.j.j.T#J.j.j.j.j.j.j.j.j.j.j.j.j.S#K#K#J.n.j.j.j.j.j.j.j.j#J#J.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S.j.j.j.j.j.j.S.S.j.j.j.j.j.j.j.j.T.j.j.j.j.j.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.j.j.j.j.j.j.j.n.T.j.j.j.S#K#J.j.j.j.j.T.n.n.S.j.j.j.j.j.j.j.U.j.j.j.j.j.j.j.T.j.j.j.j.S.T.T.j.j.j.T.j.j.j.j.j.j.j.S#K#K.n.j.j.j.j.U#K.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j.T#M#M.S.j.j.j.j#J.U.j.j.j.j#K#N#L.j.j.j.j#K#N#M#N.U.j.j.j.j.j.j#K.S.j.j.j.T#L#M#N#L.j.j.j.j.j#J#N#N.T.j.j.j#J#M#N#N#M.j.j.j.j#M#N#M.j.j.j.j.j.j#L#N#L.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#L#N#N.T.j.j.j.j.U#M.T.j.j.n#N#N#N#K.j.j.j#L#N#N#N.n.j.j.j.j.j.T#M.j.j.j.j#J#M#N#K.j.j.j#J#N#N#L.j.j.j#K#N#M#N#L.j.j.j#N#N#N#L.j.j.j.U#N#N#N.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#K#K.S.j.j.j.j.j.j.j.j#K.n.j.j.j.j.j.j.j.j.U#J.n.j.j.j.j.j.j.j.T.U.S.j.j.j.j.j.j.j.j.j#J#J.j.j.j.j.j.j.U#J.U#J.U.j.j.j.j.j.j.j.n#K.n.j.j.j.j.j.j.T.T.T.S.T.n.j.j.j.j.j.j.U.U.j.j.j.j.j.j.j.j.T#J.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
"...........j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.................................j.j#N#L#M#L.j.j.j.j#N.U.j.j.j.U#N#K#N.U.j.j.j#M#L#K#N.U.j.j.j.j.j.U#N.S.j.j.j#K#N#L#L.U.j.j.j.j.T#N#J#K#L.j.j.j#M#M#K#N#K.j.j.j#J#N.T#M.U.j.j.j.j#K#N#J#N.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J.T.j.j.j.j.T#L#J#K#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#L#N#N#N#N.S.j.j#J#N#N.j.j.j#L#N#N#N#N.j.j.j#L#N#N#L.j.j.j.j.j.j#L#N.j.j.j.j#K#N#N#L.j.j.S#N#N#N#J.j.j.j#L#N#N#N.U.j.j.T#N#J#L#N.j.j.j#N#N#N#N#L.j.j.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N#N#N.n.j.j.j.j.j.j#K#N.S.j.j.j.j.j.j.j#L#N#N#N.n.j.j.j.j.j#J#N#N#N.T.j.j.j.j.j.j.j.S#N#M.j.j.j.j.j.j#N#N#N#N#N.j.j.j.j.j.j.j#L#N.n.j.j.j.j.j#J#N#N#N#N#N#J.j.j.j.j.j#L#N#N#L.j.j.j.j.j.j#K#N#N#N.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#L.j.j#N.S.j.j#K#N.U.j.j.j#L.U.j.U#K.j.j.j#N.j.S#L.j.j.j.j.j.j#L#N.j.j.j.j#K.U.j.j.j.j.j.j.j#L#K.j.j.T.j.j.j#N.S.j#L.T.j.j.j#L.U.n#K.U.j.j.j.j#N.S.j#J#L.j.j.j#J.T.j.j.j.j.j.j.j.j.j.n#J#K.j.j.j.j.T.T.j.U#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#N#N#N#N#J.j.j.j#N#N.j.j.j.U#M.T#N#N.j.j.j#J.U#N#J.j.j.j.j.j.U#N#M.j.j.j.j#L#N.T#J.j.j#J#N.U.n.T.j.j.j#M#M#N#N.n.j.j.T#N.T#K#N.j.j.S#N#K.T#N#N.j.j#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N.T.T#N#J.j.j.j.j.j.U#N#N.S.j.j.j.j.j.j#J#N.U.U#N.U.j.j.j.j.j#L#L.T#M#L.j.j.j.j.j.j.j#K#N#M.j.j.j.j.j.j#N#K.S.T.n.j.j.j.j.j.j.U#N#J.j.j.j.j.j.j.n#J#J#J#N#N.T.j.j.j.j.U#N.T.U#N.S.j.j.j.j.n#N#J.j#M#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#M.U.j.j#L.T.j.j#J#N.U.j.j.j#N.S.j.U#K.j.j.j.U.j#L#K.j.j.j.j.j.T#L#M.j.j.j.j#K.U.U#K.S.j.j.j.S#N.j.j.S.j.j.j.j.U.j.j#N.S.j.j.j#L.S.j#M.S.j.j.j.T#L.j.j#J#M.j.j.j#N#J.j.j.j.j.j.j.j.j.j#J#J#L.S.j.j.j.T#L#M#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#L.j#J#N#L.j.j.j#N#N.j.j.j.j.T.j#N#N.j.j.j.j.T#N#J.j.j.j.j.j#M#N#M.j.j.j.j#M#N.U.j.j.j#L#N.T.U.j.j.j.n.S.n#N#L.j.j.j.n#N#N#N#L.j.j.S#N#K.U#N#N.n.j#M.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#M#K.j.j#L#M.j.j.j.j.j.S#K#N.S.j.j.j.j.j.j.S.U.j.j#N.U.j.j.j.j.j.j.j.j#K#L.j.j.j.j.j.j.T#N#N#M.j.j.j.j.j.j#N#L#K#K.n.j.j.j.j.j.j#N#K.j.j.j.j.j.j.j.j.j.j.n#N#J.j.j.j.j.j#J#N.j.j#N.T.j.j.j.j.T#N.j.j.T#N.S.j.j.j.j.j#J#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N.j.j.j#L.T.j.j.j#K.U.j.j.j.T.j.j#L#J.j.j.j.j.U#N#N#J.j.j.j.j#L.U#L.S.j.j.j#K#N#N#N#M.j.j.j.T#L.j#M#N#J.j.j.j.j.j.T#M.j.j.j.j#K#L#N#N#K.j.j.j.T#L.j.j#M#M.j.j.j#L.T.j.j.j.j.j.j.j.j.j#L.U.T#L.j.j.j.T.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N.U.j.n#N#M.j.j.j#N#N.j.j.j.j.j.S#N#L.j.j.j.j#J#N#N.S.j.j.j#J#M#K#M.S.n.j.n#N#N#N.T.j.j#M#N#N#N#L.j.j.j.j.U#N.U.j.j.j.j#N#N#N#L.j.j.n#N#N#N#N#N.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N.U.j.j#K#N.j.j.j.j.j.j.S#N.n.j.j.j.j.j.j.j.j.j#K#N.T.j.j.j.j.j.j.T#L#N#J.j.j.j.j.j.j#L#L#J#N.j.j.j.j.j.j#N#N#N#N#M.j.j.j.j.j.T#N#L#L.U.j.j.j.j.j.j.j.j#K#N.j.j.j.j.j.j.U#N#J#L#N.n.j.j.j.j.U#N.j.j.S#N.S.j.j.j.j.j#L#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#M.j.j.j#L.T.j.j.j#K.U.j.j.j.j.j#J#N.S.j.j.j.j#M#J.U#M.j.j.j.T#M.j#L.j.j.j.j#L#N.j.j#N.S.j.j#J#J#K#M#J#N.j.j.j.j.j#K#J.j.j.j.j#J#N#J.U#N.T.j.j.S#N.U#L#N#L.j.j.j.j.j.j.j.j.j.j.j.j.j.U.U.j.j#J.n.j.j.T.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N.U.j.n#N#M.j.j.j#M#N.j.j.j.j.j#J#N#J.j.j.j.j.j#J#N#J.j.j.n#N#L#K#N#M.S.j.j.j#J#N#K.j.j#M#N#N#N#N.n.j.j.j#M#N.S.j.j.j#J#N#N#N#N.T.j.j#K#N#N#N#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N.U.j.j#J#N.j.j.j.j.j.j.T#N.n.j.j.j.j.j.j.j.j#K#N#K.j.j.j.j.j.j.j#L#N#N.S.j.j.j.j.j.T#N.T.U#M.j.j.j.j.j.n#N#L.j.U#N.S.j.j.j.j#J#N#N#N#N.T.j.j.j.j.j.j.j#N#K.j.j.j.j.j.j.j#N#N#N#L.j.j.j.j.j.S#N#K.T#L#N.n.j.j.j.j.j.S.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#L.j.j.j#M.S.j.j.j#K.U.j.j.j.j.T#N.U.j.j.j.j.j.S.j.j#M.S.j.j#K.U.j#N#M.U.j.j#L.U.j.j#L.T.j.j#J#L#M.j.j#M.S.j.j.j.j#M.T.j.j.j.j#N.U.j.j#K.U.j.j.j#K#N#M.T#L.j.j.j.j.j.j.j.j.j.j.j.j.j.U.j.j.j.S.S.j.j.S.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#M.S#K#N#L.j.j.j#M#N.j.j.j.j.j#M#N#J.T.j.j.n.n.n#N#K.j.j#L#N#N#N#N#N.S.j.n.j.j#N#M.j.j#M#N.n#K#N.S.j.j.S#N#M.j.j.j.j#M#N.j#J#N#J.j.j.j.T.T#N#M.j.j#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N.U.j.j#K#N.j.j.j.j.j.j.T#N.n.j.j.j.j.j.j.j#K#N#K.j.j.j.j.j.j.j.j.n.U#N#L.j.j.j.j.j#M#N#L#M#N#K.j.j.j.j.j#K.n.j.n#N.T.j.j.j.j#L#N.n.n#N#K.j.j.j.j.j.j.T#N.T.j.j.j.j.j.j.U#N#J#K#N.U.j.j.j.j.j#K#N#N#N#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#L.j.j.S#N.j.j.j.j#K.U.j.j.j.j#N#J.j.j.j.j.j.S.j.j.j#M.S.j.S#N#N#N#N#M.U.j.j.j.j.j.j#L.T.j.j#J#N.U.j.j#M.S.j.j.j.S#N.j.j.j.j.T#M.j.j.j#M.T.j.j.j.j.S.j.U#L.j.j.j#K.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#N#N#N#N.U.j.j.j#M#N.n.j.j.j.T#N#N#N.U.j.j.U#K#L#N#J.j.n#L#K.U#L#N#K.T.j.T#K#K#N#L.j.j#L#N.U#L#N.S.j.S#L#N#K.j.j.j.j#M#N.T#K#N.U.j.j.U#L#L#N.U.j.j#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#J.j.j#L#L.j.j.j.j.j.j.T#N.n.j.j.j.j.j.j.S#N#J.j.j.j.j.j.j.j.j.j.j.j#J#N.j.j.j.j.j#M#N#N#N#N#L.j.j.j.j.j.j.j.j.n#N.T.j.j.j.j#L#L.j.j#L#L.j.j.j.j.j.j#K#N.j.j.j.j.j.j.j#L#M.j.j#N#K.j.j.j.j.j.j.T.U#N#K.j.j.j.j.j.j.T.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#L.j.j#J#L.j.j.j.j#K.U.j.j.j.U#N.j.j.j.j.j.S#M.j.j.S#M.j.j.S#L#J.T#M.j.j.j.j.U.j.j.j#M.S.j.j.U#N.j.j.S#N.j.j.j.j.U#L.j.j.j.j#J#J.j.j.U#N.j.j.j#J#K.j.j#L#J.j.j.j#N.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N#N#N#L.j.j.j.j#M#N.S.j.j.j#L#N#N#N.T.j.j#M#N#N#N.S.j.j.j.j.j#K#N.S.j.j.T#N#N#N#J.j.j#J#N#N#N#M.j.j.n#L#N.U.j.j.j.j#K#N#N#N#N.S.j.j#J#N#N#N.j.j.j.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#L#M.j.j#N#J.j.j.j.j.j.j.T#N.n.j.j.j.j.j.j.U#N.n.j.n.j.j.j.j.j.j#M.T.j#K#N.j.j.j.j.j.j.j.j#K#M.j.j.j.j.j.n#J.j.j#J#N.n.j.j.j.j#K#N.j.j#N#K.j.j.j.j.j.j#N#K.j.j.j.j.j.j.j#L#L.j.j#N#K.j.j.j.j.j.j.j.U#N.T.j.j.j.j.j.j#K#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#M.j.j#N.U.j.j.j.j#K.U.j.j.j#L#J.j.S#J.j.j.S#N.j.j#K#K.j.j.j.j.j.j#M.S.j.j.j#N.T.j#J#M.j.j.j.T#N.j.j#L#K.j.j.j.j#L#J.j.j.j.j#J#K.j.T#N#J.j.j.j.U#L.j.S#N.S.j.j.j#K.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#L#J.j.j.j.j.S#N#N.U.j.j.j#K#J#J#L.U.j.S#M#N#N#J.j.j.j.j.j.n#N#N#K.j.j#J#N#N#L.j.j.j.j#M#N#N.U.j.j.j.j#K.U.j.j.j.j.n#M#N#N#K.j.j.j#K#N#L.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#L#M#N.S.j.j.j.j.j.T#N#N#N.n.j.j.j.j.j#J#N#N#N#N.U.j.j.j.j.j#N#N#K#N#K.j.j.j.j.j.j.j.j#K#N.j.j.j.j.j.S#N#L#K#N#L.j.j.j.j.j.U#N#J#J#N.T.j.j.j.j.j.T#N.T.j.j.j.j.j.j.j#J#N#K#K#N.U.j.j.j.j.j.T#L#N#K.j.j.j.j.j.j.j.U#L.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#L#N#L.j.j.j.j.j#L#J.j.j.j#N#N#N#N#M.j.j.j#N#K#L#N.S.j.j.j.j.j.j#N.S.j.j.j#K#N#L#N.T.j.j.j.j#L#L#M#N.S.j.j.j.j#N.T.j.j.j.j.T#N#L#N#K.j.j.j.j.S#N#K#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T.T.S.S.j.j.j.j.j.j.j.n.j.j.j.T.T.j.j.j.j.j.j.S.T.S.T.j.j.n.n.T.j.j.j.j.j.j.U.T.j.j.j.j.j.j.S.j.j.j.j.j.j.U.T.j.j.j.j.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#N.U.j.j.j.j.j.j.T#M#M#L.j.j.j.j.j.j.T#M#L#L#M.U.j.j.j.j.j.T#N#N#L.j.j.j.j.j.j.j.j.j.U#L.j.j.j.j.j.j#J#N#N#M.n.j.j.j.j.j.j#L#N#N#K.j.j.j.j.j.j.U#N.j.j.j.j.j.j.j.j.j#L#N#N#K.j.j.j.j.j.j#N#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#N#L.j.j.j.j.j.j#J.T.j.j.j#K#K#K#L#J.j.j.j.U#N#M.T.j.j.j.j.j.j.j#K.S.j.j.j.j#L#N.U.j.j.j.j.j.S#N#M.S.j.j.j.j.j#K.S.j.j.j.j.j#J#M#J.j.j.j.j.j.j#J#N#L.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.S.j.j.j.j.j.j.j.j.j.T.T.j.j.j.j.j.j.j.j.S.j.j.j.j.j.j.j.j.j.j.n.n.j.j.j.j.j.j.j.T.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.T.T.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#M#N#N#N#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#M#N#M.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#K#K#J.n.j.j.j.j.j.j.j.j.j.j.j.j#L#N.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#N#M#N#N#M.j.j.j.j.j.j.j.j.j.j.n#M#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.U.T.j.j.j.j.j.j.j.T#N#N#N#N.U.j.j.j.j.j.j.j#J.U.U#K#L.S.j.j.j.j.j.j.j#K#N#L#N#J.j.j.j.j.j.j.j.j.j#J#K#J.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#N#N#N#N#N.S.j.j.j.j.j.j.j.j.j.n#K#N#N.j.j.j.j.j.j.j.j.j.n#L#N#M.n.j.j.j.j.j.j.j.j.T#K#K.j.T#N#N#J.j.j.j.j.j.j.j.j.j#M#N#N.T.j.j.j.j.j.j.j.j.n#K#K#L#N#N#M.j.j.j.j.j.j.j#M#N#K.n#N#M.j.j.j.j.j.j.S#N#N#N#N#N.T.j.j.j.j.j.j.n#N#K.j#N#K.j.j.j.j.j.j.j.j#M#N#N#N#N.T.j.j.j.n.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N#N#J#K#N#M.n.j.j.j.j.j.j.j.j#M#N#N#N.j.j.j.j.j.j.j.j.j#L#N#N#N#M.j.j.j.j.j.j.j.j.j.j.T#J.U#N#N#J.j.j.j.j.j.j.j.j.S#N#N#N.T.j.j.j.j.j.j.j.j.T#N#N#N#N#N#L.j.j.j.j.j.j.T#N#N.U.T.U#J.j.j.j.j.j.j.T#N#N#L#M#N.n.j.j.j.j.j.j.T#N#N.U#N#K.j.j.j.j.j.j.j.U#N#N#J#K#N#M.j.j.j#M#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#M#N#N.n.n#N#N#J.j.j.j.j.j.j.j.j#L#J#N#N.j.j.j.j.j.j.j.j.n#N#L.n#M#N.S.j.j.j.j.j.j.j.j.j#K#N#N#N#M.S.j.j.j.j.j.j.j.j#L#M.S#N#J.j.j.j.j.j.j.j.j.T#N#M.T.T#K.n.j.j.j.j.j.j#K#N#N#N#N#N.T.j.j.j.j.j.j.j#J.n.j#M#M.j.j.j.j.j.j.j.S#N#N#N#N.U.j.j.j.j.j.j.j#K#N#N.j.T#N#N.S.j.j#M#M.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N#N.j.j#L#N#N.n.j.j.j.j.j.j.j.j.T#N#N.j.j.j.j.j.j.j.j.j.T.S.j#M#N.T.j.j.j.j.j.j.j.j.j.T#M#K#N#N#M.S.j.j.j.j.j.j.S#N.U.j#N#K.j.j.j.j.j.j.j.j.T#N#K#J#K#J.j.j.j.j.j.j.j#K#N#N#L#L#N#M.n.j.j.j.j.j.j.j.j.U#N#K.j.j.j.j.j.j.j.T#M#N#N#N#N.S.j.j.j.j.j.j#K#N#N.T#K#N#N.T.j.j.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N#N.n.j#K#N#N.T.j.j.j.j.j.j.j.j.T#N#M.j.j.j.j.j.j.j.j.j.j.j.U#N#N.S.j.j.j.j.j.j.j.n.T.S.j.j#K#N#N#K.j.j.j.j.j.j#J#N.T.n#N#M.T.T.j.j.j.j.j.j#K#N#N#N#N#N#L.j.j.j.j.j.j#K#N#N.j.j#N#N#J.j.j.j.j.j.j.j.j#L#N#J.j.j.j.j.j.j.S#N#M.S#J#N#N#K.j.j.j.j.j.j#J#N#N#N#N#N#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#M#N#N.T.j#K#N#N#J.j.j.j.j.j.j.j.j.T#N#K.j.j.j.j.j.j.j.j.j.j#K#N#N#K.j.j.j.j.j.j.j.j#M#N#N.U.S#M#N#N.S.j.j.j.j.j.j#L#N#L#N#N#N#N#N.j.j.j.j.j.j.T#M#J.T#K#N#N.S.j.j.j.j.j.S#N#N.T.j#N#N#L.j.j.j.j.j.j.j.n#N#N.T.j.j.j.j.j.j#K#N#L.j.j#N#N#K.j.j.j.j.j.j.j#J#M#J#L#N#N.j.j.j#K#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#N#J.j#K#N#N#J.j.j.j.j.j.n#M#L#M#N#M#K#N.n.j.j.j.j.j.T#M#N#N#J.j.j.j.j.j.j.j.j.j#J#N#N#N#N#N#N.T.j.j.j.j.j.j.n#N#N#N#N#N#N#M#N.j.j.j.j.j.j#L#L.T.j.T#N#N.T.j.j.j.j.j.j#K#N#N#L#N#N#L.j.j.j.j.j.j.j.T#N#N.T.j.j.j.j.j.j#K#N#N#M#N#N#N.T.j.j.j.j.j.j.S.U.S.n#M#N#J.j.j.j#N#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#M#N#N#J#N#N#N.S.j.j.j.j.j.S#N#N#N#N#N#N#N.T.j.j.j.j.j#L#N#N#N#K#K#K.n.j.j.j.j.j.j.j#K#N#N#M#J.S.j.j.j.j.j.j.j.n#M#L.U.U#N#N.U.j.j.j.j.j.j.j#J#N#N#K#M#N#N.T.j.j.j.j.j.j.j.U#N#N#N#N.T.j.j.j.j.j.j.j#J#N#N.T.j.j.j.j.j.j.S#M#N#N#N#L.S.j.j.j.j.j.j.T#N#N#M#M#N#M.n.j.j.j#J.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#N#N#N#N#N#K.j.j.j.j.j.j.j.T.S.n.T.U#K#M.n.j.j.j.j.j#K#N#N#N#N#N#N#M.j.j.j.j.j.j.j.j.j.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#N#N#N.j.j.j.j.j.j.j.j#J#N#N#N#N#M.j.j.j.j.j.j.j.j.j.j.T.T.S.j.j.j.j.j.j.j.j#K#N#J.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#N#N#N#N#L.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.U#K#K.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T.U#K#N#L.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#J.T.T.j.j.j.j.j.j.j.j.j.n#J#K#J.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U.n.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S#K#K.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#K.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.j.j.j.j.j.j.j.j.j#L.S.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N#N.T.j.j.j.j.j.j.j.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N.U.j.j.j.j.j.j.j.j.j.j.j.j.T#N#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#N#L.j.j.j.j.j.j.j.U#N.n.j.j.j.j.j.S.T.j.j.j.j.j.T#N#L#N#N.j.j.j.j.j.j#K#N.n.j.j.j.j.j.j.j#J#K.j.j.j.j#J#N#N#L.j.j.j.j#K#L#N#K.j.j.j.j#K#L#N.S.j.j.j.j.n#M#M.S.j.j.j#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N#N#K.j.j.j.j.j.S#N#N.j.j.j.j.j.j#N#N.T.j.j.j.j.j#J.j.U#N.T.j.j.j.j.j#N#N.n.j.j.j.j.j#M#N#N#M.j.j.j.j#M#L.n#N.j.j.j.j#N#N#N#J.j.j.j.j#M.T#M.T.j.j.j.j#K#N#N#L.j.j.j#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#K#J#N.n.j.j.j.j#K#N#M.j.j.j.j.j.U#N#N#K.j.j.j.j.j.j#L#M#N.n.j.j.j.j.S#N#N.S.j.j.j.j.S#N#N#N#K.j.j.j.j#N#L#J.T.j.j.j.j#N#J#M.U.j.j.j.j#N#M#N.n.j.j.j.j#N#K.U#N.n.j.j#L.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#N.U.S#N.U.j.j.j.j.T#K#N.j.j.j.j.j#K#J#J#M.j.j.j.j.j.n#N#N#M.j.j.j.j.j#J#J#L.T.j.j.j.j.n#N.T.T.j.j.j.j.S#N#N#N#K.j.j.j.j.S.j#N.T.j.j.j.j#L#N#N.S.j.j.j.n#N.U.S#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#N.U.j#N#K.j.j.j.j.j#K#N.j.j.j.j.j.n.j#K#N.j.j.j.j.j.j#J#J#N#L.j.j.j.j#M.S#K.U.j.j.j.j.S#N#L#N.T.j.j.j.S#N#K#J#N.n.j.j.j.j.T#N.n.j.j.j.n#N#N#N#K.j.j.j.n#N#M#L#N.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.U#N#J.j#N#M.j.j.j.j.j#K#M.j.j.j.j.j.j.n#N#L.j.j.j.j.S#L.n.j#N#M.j.j.j.j#N.U#M#M#J.j.j.j.T#N#N#N#L.j.j.j.j#N.U.j#N.U.j.j.j.j#J#N.j.j.j.j#K#M.j#N#L.j.j.j.j#M#N#N#N.S.j.j#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T#N#K.j#N#M.j.j.j.j.S#K#L.n.j.j.j.j.n#M#N.T.j.j.j.j.U#N#L#K#N#J.j.j.j.n#N#N#N#N#M.j.j.j.n#K.j#K#N.j.j.j.j#M#M.T#N#J.j.j.j.j#K#N.j.j.j.j#M#M.n#N#L.j.j.j.j.S.U#K#N.j.j.j#N.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#N#M.n#N#M.j.j.j.U#N#N#N#N.U.j.j.j#L#N#J.j.j.j.j.j.n#N#N#N#M.j.j.j.j.U#N#N#N#N.U.j.j.j.U#N.j#K#N.j.j.j.j.T#N#N#N.U.j.j.j.j#M#N.j.j.j.j#L#N#N#N.U.j.j.j.S#L.T#M#L.j.j.j#K.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#K#N#M#N#K.j.j.j.T#N#M#N#N.U.j.j.n#N#N#N#N#J.j.j.j.j.U#M#J.j.j.j.j.j.S#K.j#M#N.j.j.j.j.n#N#N#N#N.j.j.j.j.j.U#N#N.n.j.j.j.j#N#N.j.j.j.j.T#M#L.U.j.j.j.j.U#N#N#N.T.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n#N#N#N.T.j.j.j.j.j.j.n#J.n.j.j.j#J#L#N#N#M.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#N#N.S.j.j.j.j.T#N#N#K.j.j.j.j.j.j.j.j.j.j.j.j.j#M.T.j.j.j.j.j.j.j.j.j.j.j.j.S#N#N#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.n.T.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j#J#J.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T.n.j.j.j.j.j.j.S.U.j.j.j.j.j.j.j.j.j.j.j.j.j.j.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.T.S.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j",
".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j"
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,193 @@
/* XPM */
static char *wmCalClock_master_LowColor[] = {
/* width height num_colors chars_per_pixel */
" 499 165 21 1",
/* colors */
". c #000000",
"# c #000001",
"a c #0e1114",
"b c #171717",
"c c #181818 s Back",
"d c #313115 s Color1",
"e c #2e3033",
"f c #3d3f44",
"g c #64640f s Color3",
"h c #585b60",
"i c #7c8186",
"j c #abab08 s Color7",
"k c #f4f401 s Color9",
"l c #8c9198",
"m c #9aa1a9",
"n c #a8aeb6",
"o c #b9c0ca",
"p c #c7cdd5",
"q c #ccd4dc",
"r c #ced6e4",
"s c #d2dae4",
/* pixels */
"###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############ssssnhffhnssssssssssnhffhnsssssssssssssssssssssphhfflssssssssssssnlllossssssssssssssssssssslffhhossssssssslhhfflosssssssssssssssssssssnhffhnssssssssolhffhhnsssssssssssssssssssssphhfflssssssssssssolllllnssssssssssssssssssslffhhossssssssnlllllllllossssssssssssssssssnhffhnsssssssssssssmmfffnssssssssssssssssssphhfflssssssolllllllllllllsssssssssssssssssslffhhosssssssssslhffhnsssssssssssssssssssssnhffhnssssssssssnhffhnssssssss",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############ssof#a#a##eorsssssof#a#a##eorssssssssssssssssshaa##a#blrssssssshf####lqrsssssssssssssssssnb#a##a#hrrsssshe####a##hqrssssssssssssssssof#a#a##eorsssoe##a###a#forssssssssssssssssshaa##a#blrssssssssse#####frrsssssssssssssssnb#a##a#hrrsssssf#########lqrssssssssssssssof#a#a##eorsssssssshe###a#lqrssssssssssssssshaa##a#blrsssl#############qqrsssssssssssssnb#a##a#hrrsssssha###a##borssssssssssssssssof#a#a##eorsssssnb##a###eorsssss",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############sse########apqsssse########apqsssssssssssssssha########mqrssphba#####ipqrssssssssssssssso#########hprssha#########fpqssssssssssssssse########apqsrp##########apqsssssssssssssssha########mqrssssssi######fpqrssssssssssssso#########hpqsssra###a#####ipqrssssssssssssse########apqsssssoba######ipqssssssssssssssha########mqrrm###a#########opqsssssssssssso#########hpqsssha########bnqssssssssssssssse########apqsssl#########bnqssss",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############sh#a##eba###hpqssh#a##eba###hpqsssssssssssssna###bf####boqrsna#######hoorsssssssssssssssb####fb####lprso###efba####lpqsssssssssssssh#a##eba###hpqsrb##ffe####ahpqsssssssssssssna###bf####boqrssssob##a###fnpqsssssssssssssb####fb####lpqsss##########hoorssssssssssssh#a##eba###hpqsssn######eefiopqssssssssssssna###bf####boqrl######a#####bnnpqsssssssssssb####fb####lpqsn####fhha###fpqsssssssssssssh#a##eba###hpqsob###aff####epqsss",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############s####hmmh####mprs####hmmh####mpqssssssssssssf###elml####hoqss###e#a#ahnoqssssssssssssssl####lmle###eopssbelnmnh####foprssssssssssss####hmmh####mprshhommml####foprssssssssssssf###elml####hoqssssh##bf#a#emoqssssssssssssl####lmle##aboprsn##afhhhhhhlnoqssssssssssss####hmmh####mpqsob###bhmmmmnnpqssssssssssssf###elml####hoqoliihhhhhaa##hmnpqssssssssssl####lmle###eopsh###bmmnf####opqssssssssssss####hmmh####mpsh###bllmh####lpqss",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############hb##bmlmnb###hopha##bmlmnb###hoprssssssssssp#a##hmmnh###enprsfhnn####hmoqsssssssssssssse#a#fmlml####loqslpnnnoof###enorssssssssssshb##bmlmnb###hopssspnnnof###enorsssssssssssp#a##hmmnh###enprssn###hf###emoqrssssssssssse#a#fmlml####moqsl###llmnnnnmnpqssssssssssshb##bmlmnb###hoprh##aflmmmnnopqrsssssssssssp#a##hmmnh###enpqqpnnnnmi####llnprsssssssssse#a#fmlml####loqfa##elmni####moprsssssssssshb##bmlmnb###hopb#a#fmmnnf###foprs",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############h###elmopf###enph###elmopf###enoqssssssssssl####mmnoi####noqsspnn####hmoqssssssssssssss###ahlmoo###ahnprrqpooppf##abmoqsssssssssssh###elmopf###enorsrpppqnb###hmoqsssssssssssl####mmnoi####noqssb##bnf###emoqssssssssssss###ahlmoo###ahnprl###llnnoooopqrsssssssssssh###elmopf###enooa##almihiopqqrssssssssssssl####mmnoi####noqrqpooooe###flmoqsssssssssss###ahlmoo###ahnqf###amnqh##abmnpqssssssssssh###elmopf###enp####hmnopl###anoqs",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############b###hmnppl###bmoa###hmnppl###bmoqssssssssssh###elmoqq####inprrqpo#a##hmopsssssssssssssn####lmnpqf###fnpqsrqsqrrfa##enoqsssssssssssb###hmnppl###bmoqsslllhb###elmoqsssssssssssh###elmoqq####inpri###hne###emopsssssssssssn####lmnpqf###fnpqf######fhqpqrrrsssssssssssb###hmnppl###bmoha##ff##a##hqrrssssssssssssh###elmoqq####inprrqqppl####imnorssssssssssn####lmnpqf###fnpn####elma###hmnoqssssssssssb###hmnppl###bmo###ahmnpql####moqs",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###################hmoqrl####mo#a##hmoqrl####moqsssssssssrh###elnorr#a##hnorsrrr###ahmoqsssssssssssssla###lmoqsfa##emoqsssssrp####hmnqsssssssssss####hmoqrl####moqss#######hlmnpqssssssssssrh###elnorr#a##hnoo###enmf#a#emoqsssssssssssla###lmoprh###emoph##a###a#boqrsssssssssssss####hmoqrl####moh###########fpqsssssssssssrh###elnorr#a##hnorsrssrb##aflmnprssssssssssla###lmoprh###enoqfa########flmnprssssssssss####hmoqrl####moe####loqoe####mnpr",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs#################a#hmopsl####mn####hmopsl##a#mnprsssssssssf###emnprr####hnoqsssr####hmoqrssssssssssssl####lmnqrf##aemoqrsssssb###bmmpqsssssssssss##a#hmopsl##a#mnprs#####aehmmnpssssssssssssf###emnprr####hnof###imnf###emoqrssssssssssl####lmnrrf##aemoqa#########bnssssssssssssss##a#hmopsl##a#mn##########a##hpqsssssssssssf###emnprr####hnoqrsssi####llnorrssssssssssl####lmnrrf###emoqqha#####aeimnoqsssssssssss##a#hmopsl####mnha####ff###a##lnpq",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###################hmoqsl#a##ln###ahmoqsl####lnpqsssssssssf#a#emoqss###ahmoqssss####hmoqsssssssssssssl####lmoqrh###emoqsssssf###ahlnoqsssssssssss####hmoqsl####lnors##a#####amprssssssssssssf#a#emoqss##a#hmm##afmmof###emoqsssssssssssl####lmorsf###emorfllhhe#####hpqssssssssssss####hmoqsl####ln#####hmmia####opqssssssssssf#a#emoqss###ahmoqssssb###flmnprsssssssssssl####lmorsf##aemoqlb########alnprsssssssssss####hmoqsl#a##lnpb##a########almoq",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###################hnnrrl####lm####hmopsl####lmopsssssssssh###emoprs####hmopssss#a##hnoprssssssssssssl##a#lmoqrf###emopssssfa###fmmnprsssssssssss#a##hnnrrl####lmoqsqonlf####epqssssssssssssh###emoprs####hma###eeefb###befqrssssssssssl##a#lmopsh###emopsroommlb###aoprsssssssssss#a##hnnrrl####lm##a#filmmh####hoprsssssssssh###emoprs####hmopsssi##a#llnorrsssssssssssl##a#lmopsh###emol####fhe####anqssssssssssss#a##hnnrrl####lmone####a#f###elnoq",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############e#a#fmoqsh###elmea##fmorsh##ablmoqsssssssssh###amorsn#a##imoqssss####hmoqssssssssssssso####hmoqsb###hmoqssqh####fmlnoqsssssssssssse###fmorsh###elmoqsqpnmnh####lpqsssssssssssh###amorsn####im##########a####pqrssssssssso####hmoqrb###hmoqsrqpoooh####noqssssssssssse###fmorsh##abln####hlmnoo###ahnoqsssssssssh###amorsn#a##imoqsssb###flmnprsssssssssssso####hmoqrb###hmo###ahmmmh####hpqssssssssssse###fmoqsh##ablmoppmfeehle###hmnps",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############f###emoqsfa##elnf###emoqsfa##elnorsssssssssm####moprl####lmopssss##a#hmopssssssssssssss###ahmops##a#hmopsoe####flmmoprssssssssssssf#a#emopsh###elnorsrqpooo####hopsssssssssssm####moprl#a##lm#a###########a#opqssssssssss###ahmops####hmopssrqqqql####mnprssssssssssf#a#emopsfa##elne###hlnppq####hnoqsssssssssm####moprl####lmopssi####llnorssssssssssssss###ahmops####hmi####mmmnoe##afoprssssssssssf#a#emoqsfa##elnorqponmmh####imops",
"#####ccccccccccccccccccccccccccccccccccccccccccccccccccccccs###############l####lopp####hmni####lopp####hmnprssssssssss#a##hnpre###elmoqssss####hmoqssssssssssssssfa##bmoqi####lmorob####ilmmopqsssssssssssssl####loqo####hlonrsrrqqqm###ahnoqsssssssssss#a##hnpre###elmfffeefefb###aeennpqsssssssssfa##bmopi##a#lmoqssrsrrsf###elnpqssssssssssl####lopp####hmnh###amoprl##a#imoqssssssssss#a##hnpre###elmorsob##aflmnprssssssssssssssfa##bmoqi##a#lmi####imnppf###enoqssssssssssl####lopp####hmnprrqpopi#a##flmors",
"####ssssssssssssssssssssssssssssssssssssssssssssssssssssssss###############sb###emnf###blmorb###emnf#a#blnoqrssssssssssh###aipha###ilnorssss##a#hmopssssssssssssssn###ahnmb###flnoob####beeefffnssssssssssssssb###emnf##aalnolbhlsrsib####lnoqsssssssssssh###aipi####ilnoonnmmmne#a#elmnopqsssssssssn###ahnmb###flnolflprsnfa###hlnoqsssssssssssb###emnf#a#blmon####emqmb###blnoqssssssssssh###aipi####ilnorsh####llnpqrssssssssssssssn###ahnmb###flnl##a#emnql####hmoqsssssssssssb###emnf##aalnoqrssole####bllnoqs",
"###########################################################################sl#a#####a#ahlnopl#a####a###hlnoqsssssssssssob#####a###elmnprsssra###hmoqssssssssssssssrf#########allno####a########lqrssssssssssssl#######a##hlnof########a##hlmoqsssssssssssob#########elmnpppooooof###elmooqrsssssssssrf####a####allnoh#########ablmnpssssssssssssl######a###hlnopia##########ilnoqssssssssssob#########elmnpro##a#flmnprsssssssssssssssrf#########allnoe####afe####almoqsssssssssssl#######a##hlnorl########bimmoprs",
"###########################################################################srf####a###emmnqrrf########flmnprsssssssssssrl########bimmorsssss###ahmoqrssssssssssssssob###a##a#hmmop#############ipprsssssssssssrfa###a###flmnqb#a########fllnpqsssssssssssrl########bimmorrqqqpqqf###emopqrrssssssssssob######a#hmmope#########fllnoqssssssssssssrfa#######flmoprpf###a##a##hmmnprssssssssssrl#######aaimmorsh####llnoqrssssssssssssssssob######a#hmmopoa########aallnpqsssssssssssrfa###a###flmnprl#######eimmopqss",
"###########################################################################ssshb####bhlmnoqrsrhaa###bhlmnorsssssssssssssqme#a##aflmmoprsssss####hmoqsssssssssssssssrnh#####blmmnpr##a###a##a##ahnpqssssssssssssrhb####bhlmnoqnf###a##abilmmoprssssssssssssqme#a##aflmmoprrrsrsssf#a#emoqrssssssssssssrnh#####blmmnprhba##a##ehlmmoprsssssssssssssrhb#a##bhlmnoqrrpib#####blmmnoqssssssssssssqme##a##flmmoprp##a#flmnprsssssssssssssssssrnha##a#blmmnpqqphb######fimmoprssssssssssssrhb####bhlmnorsl##a##filmnnpqsss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssrrolhhimmmnoprrsrroihhimmmnoprsssssssssssssspomhhhmlmmopqssssssronlmmoqrsssssssssssssssrpohihimlmnpprqonmlllllllmlmnoqssssssssssssrrolhhilmmnoprsrplhhhillmmnnpqsssssssssssssspomhhhmlmmopqrssssssssronmmoqrsssssssssssssrpohihimlmnppssrpihhhmllmnopqssssssssssssssrqoihhimmmnoprrsrpolhihmmlmmoprssssssssssssspomhhhmlmmopqrrsqommmnorrssssssssssssssssssrpnhihimlmnpqrsqpomhihlmmmmopqsssssssssssssrqolhhilmmnoprrplihlmlmmmopqssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssrrpoonmmnnoprssssqpponmmnnopqsssssssssssssssrroonnmmnoprrsssssrrpnmnnorssssssssssssssssrqponnmmnooqrrrpnmmmmmmmmmmnnprsssssssssssssqpoonmnnnoprssrponnmmnmnnoprsssssssssssssssrroonnmmnopqssssssssssrpnnnprssssssssssssssrqponmnmnnpprssrponnnmmnnopqssssssssssssssssqpponmmnnopqrsssqpoonmmmnnoprssssssssssssssrqponnmmnopqsssrponmnoprsssssssssssssssssssrqponmmmnooprssrqpoonnnnmnopqsssssssssssssssrpoonnmnnopqssrqponmmnnopqsssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############ssssrqppooopqrrsssssrpppooppqrssssssssssssssssrrrppoooopqrsssssssrqpooprrssssssssssssssssssqpooooopqrrsrqpooooooooooopqrrsssssssssssssrqppoooqqrssssrppooooooqqsssssssssssssssssrrqppoooopqrssssssssssrqoopqrssssssssssssssssqpooooppqrrssrqppooooppqrrsssssssssssssssssrqppooppqrrsssssrrpoooopprrsssssssssssssssrrpppoooopqrsssrqpooopqssssssssssssssssssssssrpooooopqrrssssrppooonpopqrssssssssssssssssrqpoooppqrrsssrpoooooqqrssssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############sssssrrqqqrrsrssssssssrqrqqrsrsssssssssssssssssrrrrpqqrrsssssssssrrrqrqrsssssssssssssssssssrrrpqqrrrsssrrrprppqpqpqpqqrssssssssssssssssrrqqqrrsrsssssrqrpqpqrrssssssssssssssssssssrrrpqqrrssssssssssssrrrqrrrsssssssssssssssssrrrpqqrrssssssrqpqpqqrrsssssssssssssssssssrrrqqqqrrrsssssssrrrqqqqrsrsssssssssssssssssrrrqqqrrssssssrqpqrrssssssssssssssssssssssssrrrqqrrrssssssssrqqqqqqrsssssssssssssssssssrrrqqrrrssssssrrqqqrrrsssssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp#######################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq#######################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############sssssllllssssssssssnhffhnsssssssssssssssssssssssnlllosssssssssssnlllossssssssssssssssssssssolllnssssssssslhfhflosssssssssssssssssssssssllllssssssssolhffhhnsssssssssssssssssssssssnlllosssssssssssolllllnssssssssssssssssssssolllnssssssssnlllllllllossssssssssssssssssssllllsssssssssssssnlffhmssssssssssssssssssssnlllosssssolllllllllllllsssssssssssssssssssolllnsssssssssslffhhnrssssssssssssssssssssssllllssssssssssnhffhnssssssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssohb####qqrssssrpf###a##eorsssssssssssssssssshe####lqrssssssshe####lqrssssssssssssssssssnf####fqrssssshb#a#####hrrssssssssssssssssrphb####qqrsssoe###a##a#forsssssssssssssssssshe####lqrssssssssse##a##fqrssssssssssssssssnf####fqrssssssf#########lqrssssssssssssssrphb####qqrsssssssshb##a##lqrsssssssssssssssrie####lqrsssl#############qqrssssssssssssssnf####fqrssssssh##a####borssssssssssssssssrphb####qqrssssrnb###a##eorsssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############nh##a####porrsssse##a#####bpqssssssssssssssoiba#####ipqrsssoibaa####ipqrsssssssssssssssle##a###fpqrsssia######a##fprssssssssssssssnh#######porrsso##########bpqssssssssssssssoiba#####ipqrsssssssi#####afpprsssssssssssssle##a###fpqrsssss##a##a####ipqrssssssssssssnh####a##porrssssspba######ipqsssssssssssssohb######ipqrssl#a###########opqssssssssssssle##a###fpqrsssshb########bnrssssssssssssssnh#######porrsssl#########bnrssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############h########nnpqsssh####be####hpqsssssssssssssn####a##ahnpqsssn#######ahnpqsssssssssssssssb#####a#fnpqsssn###efe#####lpqsssssssssssssh#####a##nnpqsssb##fee##a##hpqsssssssssssssn#####a#ahnpqssssssob#a####enpqsssssssssssssb#######fnpqsssss#########ahnpqssssssssssssh########nnpqssssn#####abffiopqssssssssssssnaa###a#ahnpqsrm####a##a####bnnpqsssssssssssb#######fnpqsssna###fhh####fpqsssssssssssssh#####a##nnpqssob####ff####epqsss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############la##e#a##lnoqsss##a#hmmh####mpqsssssssssssss###e####hnoqssss###e####hnoqsssssssssssssssfa#ba###enoqssssbelmmmha###foprssssssssssssl#a#e####lnoqssshiommml###afoprsssssssssssss##ae####hnoqssssssh##af###enoqsssssssssssssfa#bb#a#enoqssssn##afhhhhhhlnoqssssssssssssl#a#e####lnoqsssob###bhmmmmnnpqsssssssssssss###e####hnoqssolihhhhhhb#a#hlnpqsssssssssssfa#bb###enopsssh###bmmnfa###opqssssssssssssl#a#e####lnoqssha##blmmha###lpqss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############sbhoh####lmoqssi###ammmnb###hoprssssssssssssfhmn###ahmoqssssfhmn###ahmoqssssssssssssssslemnf###emoqsssslponnooea##enoqsssssssssssssbhoh####lmoqsssrqonnnof###enoqsssssssssssssfhmn###ahmoqsssssn###hf###emoqssssssssssssslemnf###emoqssssl###llmmnnnnnpqsssssssssssssbhoh####lmoqsssh###flmmmnnopqssssssssssssssfhmn###ahmoqssrrponnnni####lmnprssssssssssslemnf#a#emorsssf###emmni####moprssssssssssssbhoh####lmoqssb##aflmnnf###eoprs#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssqoha###lmopssf###elmopf###enorssssssssssssspon####hnopssssspon####hnopssssssssssssssssrpof###emoprsssrppooppf###emoqssssssssssssssqoi####lmopssssrqpppnb###hmoqsssssssssssssspnn####hnopsssssb#abnf##aemopssssssssssssssrpoe###emoprsssl###llnnoooopprssssssssssssssqoi##a#lmopsso#a#blmhiioppqrssssssssssssssspon####hnopsssrqpooooe###flmoqsssssssssssssrpoe###emopsssh###bmnpha##elnpqsssssssssssssqoi####lmopss####hmnopi###bnoqs#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssppl####lmoqssba##hmnppl###anoqsssssssssssssqpo##a#hmoqssssrqpo##a#hmoqsssssssssssssssssppf###emoqssssssqqrrsf###emoqssssssssssssssppi#a##lmoqssssrlllhb##ablmoqsssssssssssssrrpp####hmoqsssri###hmf###emoqsssssssssssssssppfa##emoqsssrh######fhpppqrsssssssssssssssppi####lmoqssi###ff#a###hqrssssssssssssssssppo#a##hmoqsssrrqrppl####ilnorssssssssssssssppf###emoqssrn#a##blma###hlnoqsssssssssssssppi#a##lmoqss####hmoprl####moqs#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############ssrrl####lmopss####hmoprl####mopsssssssssssssrrq####hmopssssssrq####hmoprsssssssssssssssssrf#a#emoqrsssssssssoa###hmopssssssssssssssrql####lmopsssss#######hmmnorsssssssssssssssqq##a#hmoprsso###emne###emoprsssssssssssssssrf###emoqrssrf##a##a#aborrssssssssssssssssrrl####lmoprsf###########fprssssssssssssssssrq####hmopsssssrrsrb###fmmnprsssssssssssssssrfa##emoqrssrf#########fmmnqrsssssssssssssrql####lmopssea##alopoe####mnpr#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssrrl#a##lmoqss####hmoqsl#a##mnprsssssssssssssss####hmoqssssssrs####hmorssssssssssssssssssqh###emoqssssssssssb###ammoqssssssssssssssrrl####lmoqsssss######ehmmopssssssssssssssssrs####hmorsssf###imnfa##emorssssssssssssssssqh###emoqssssb#########bnrssssssssssssssssrrl####lmorss#a###a###a###hpqsssssssssssssssrs###ahmoqsssssssri####llnoqsssssssssssssssssf###emoqsssssh#a####abllnoqssssssssssssssrrl####lmoqsri#####ff###a##lnpq#",
"#####sssssssssssssssssssssssssssssssssssssssssssssssssssssspa##############ssssl####lmoprs#a##hnnrrl####lnoqsssssssssssssss##a#hnoprsssssss#a##hnoprssssssssssssssssssf###emopsssssssssf##a#hmnorssssssssssssssssl####lmoprssss##a#####ampqssssssssssssssssss##a#hmopssna##hmmnf###emopsssssssssssssssssf##aemoprsssflihhe#####hpqsssssssssssssssssl##a#lmoprs#####hlmia####opqssssssssssssssss####hmoqrsssssssb##aflmnprsssssssssssssssssh###emopsssslba#######alnqrssssssssssssssssl####lmopsrra###########blmoq#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############ssssl####lmorss###ahmoqsl####lmoqsssssssssssssss####hmoqssssssss###ahmoqsssssssssssssssssssf###emoqssssssssf#a##flmnprssssssssssssssssl#a##lmorsssssronlf####epqssssssssssssssssss####hmoqssb###beffb###befqsssssssssssssssssf###emorsssssrponmlb###aoprssssssssssssssssl####lmoqss###aellmmh####hoprsssssssssssssss##a#hmoqsssssssi####imnorssssssssssssssssssf###emoqsssl####fhe####bnpsssssssssssssssssl#a##lmoqssroe#a####f###elnoq#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssssl##a#lmopsse###fmoqrh##ablmorsssssssssssssss#a##hmopssssssss####hmopsssssssssssssssssssh###emopsssssssfa###fmmnoqsssssssssssssssssl####lmopsssssqpnnmha###lpqsssssssssssssssss#a##hnopss####a#####a####prrsssssssssssssssh###emopsssssrqooooh####noqssssssssssssssssl####lmopss####hlmnoo##a#hnoqsssssssssssssss####hmopsssssssb###fmmnprssssssssssssssssssfa##emopsss####hmmlha###hprssssssssssssssssl####lmopsssrplfefhle###hmnps#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssssl####lmoqssf###emoqrh###elnpqsssssssssssssss###ahmorssssssss#a##hmoqsssssssssssssssssssf##aemoqsssssof####emlmoprsssssssssssssssssl####lmoqsssssrqpooo###ahnprssssssssssssssss###ahmorss############a##ooqsssssssssssssssf###emoqssssssrqrppla###mnprsssssssssssssssl#a##lmoqsse##afmnopq####hnoqsssssssssssssss###ahmoqsssssri####llnoqsssssssssssssssssssf##aemorsrm##a#mmmnoe###foprsssssssssssssssl####lmoqssssrponmnh###ahmoqs#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############ssssl####lmopssla###lopo####hmnprsssssssssssssss####hmopssssssss###ahmopsssssssssssssssssssfa##emoqrsssob####ilmmoorssssssssssssssssssl##a#lmopssosssrqqqm####hooqssssssssssssssss####hmopssfffeeeffa###aeenopqssssssssssssssfa##emopssssssssrsrf###elnoqsssssssssssssssl####lmopssha##amoprl###aimoqsssssssssssssssa###hmoqrssssob##aflmnprsssssssssssssssssssh###emopssl####imnppf###enoqsssssssssssssssl##a#lmopsssssqpooi#a##fmnnrr#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssssl####lmorssrb###elof###ammoqssssssssssssssss###ahmoqssssssss####hmoqsssssssssssssssssssf###emoqsssob####aeeefffnssssssssssssssssssl####lmoqsslbhlrrrib###almoqssssssssssssssss#a##hmorssrponnmmmf###elmnnpqssssssssssssssf###emoqssrmflossnf####hlnprsssssssssssssssl####lmoqsso####empnb###blmoqsssssssssssssss###ahmoqsssssh####llnoqssssssssssssssssssssf###emoqsrn####emopl####hmoqsssssssssssssssl####lmoqrsssssole####allnpqs#",
"#####sssssssssssssssssssssssssssssssssssssssssssssssssssssspa##############ssssl##a#lmoprssl##a####a##hmnoqssssssssssssssssa###hmoqrsssssss#a##hmoqrssssssssssssssssssh###emopsss##a##a#######lqrssssssssssssssssl####lmopssfa##########hlmoqssssssssssssssss###ahmopsssqoooooof###elnoorrssssssssssssssh##aemoqrssh#a####a###elmnpqsssssssssssssssl####lmopssri########a##ilnorsssssssssssssss####hmoqrsssp##a#flmnprrsssssssssssssssssssfa##emopssse####afe####blmppsssssssssssssssl####lmopsssl########bllnopqs#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############ssssl####lmoqsssrf########flmnprssssssssssssssss####hmoqssssssss###ahmoqsssssssssssssssssssf###emorsss#########a###ipqrsssssssssssssssl#a##lmorssb##a#######fllnprssssssssssssssss####hmoqsssrqrpqprf#a#emoprrsssssssssssssssf###emoqssse#########filnoqssssssssssssssssl#a##lmoqssrqf#a##a###ahlmnprsssssssssssssss###ahmoqssssh####llnorsssssssssssssssssssssf###emorsssoba########bimnoqsssssssssssssssl#a##lmoqssrm#######eimmnpqss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssssl####lmopssssrhb#a##bhmmnoqsssssssssssssssss##a#hmoqrsssssss####hmopsssssssssssssssssssfa##enopsss####a########hoorsssssssssssssssl####lmopssnf###a##aehmlnnprssssssssssssssss#a##hmoqrssssrssssfa##emoprssssssssssssssssfa##emopssshb#a####ehlmmoprssssssssssssssssl####lmopsssrpia#####eimmnorssssssssssssssss#a##hmoqrsso####flmnprsssssssssssssssssssssh###fmopssrrpha#####aflmmoprsssssssssssssssl####lmopssrl##a##filmmopqrss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############sssssronllmoqssssrqolhhilmmmoprsssssssssssssssssromlmmoqssssssssronlmmorsssssssssssssssssssrronmmoqsssronmllllmlmlmmnoqssssssssssssssssqonllmoqsssrqlhhhillmmnopqsssssssssssssssssqonlmmoqsssssssssssponmmoqsssssssssssssssssrronmnorssssrpihhhlllmnopqssssssssssssssssssqonllmorssssqpomhihlllmnoprssssssssssssssssromlmmoqsssssqonlmnorsssssssssssssssssssssrrqpmmmoqssssppolihiimmmmopqsssssssssssssssssqonllmoqsssollhlmllmnopqssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############sssssqpnnnnorsssssrpoonmnnnopqssssssssssssssssssrpnnmnprrsssssssrpnnmnpqrsssssssssssssssssssrpnnnpqsssrpnnmmmmmmmmmmoorssssssssssssssssronnnnorsssrponnmmmnnnopqssssssssssssssssssronnmnprrssssssssssrpnnnpqssssssssssssssssssronnnpqssssrponnnnmnnopqsssssssssssssssssssronnnnorsssssrponnmnmnnopqsssssssssssssssssrpnnmnprrsssrponmnoprrssssssssssssssssssssssronnnprsssssqponnnmmmnooqssssssssssssssssssronnnnprrsssqpnnmmnnopqrssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############sssssrqpooorrssssssrpppooopqrssssssssssssssssssrrqpoopqrsssssssrrroooprrssssssssssssssssssssrppoorrsssrqponooooooooopqrsssssssssssssssrrrpooorrsssrrppoooooopqsssssssssssssssssssrrrpoopqrssssssssssrrqpoorrssssssssssssssssssrrpooqrsssssrppooooppqrsssssssssssssssssssrrrpooorrsssssrrqppooopprrsssssssssssssssssrrqpoopqrssssrqpopoprssssssssssssssssssssssssrrpopqrsssssrrqqooooooprssssssssssssssssssrrrpoooqrsssrrqpoooppqrssssss#",
"#####sssssssssssssssssssssssssssssssssssssssssssssssssssssspa##############sssssrrqqrrrsssssssssrqqqrrsssssssssssssssssssssrrrqrrrrssssssssrrrrprrrsssssssssssssssssssssrrrrrrsssrrrqrppppqpqpqqrrsssssssssssssssssrqqrrrssssssrqqpqpqrsssssssssssssssssssssssrrprrrrssssssssssssrrqrrrsssssssssssssssssssrqrrrrssssssrqqpqprrrssssssssssssssssssssssrqrqrrsssrssssrrqqprqrrsssssssssssssssssssrrrprqrrsssssrrpqqrssssssssssssssssssssssssssrrqrrrsssssssrrrqqqqrrsssssssssssssssssssssrqrqrrrsssssrqqpqqrrsssssss#",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp#######################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq#######################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############ssrniffhhnssssssssssnhffhnssssssssssssssssssssolhffhlssssssssssssnlllosssssssssssssssssssslhhfflossssssssslhfhflosssssssssssssssssssrniffhhnssssssssolhffhhnssssssssssssssssssssolhffhlssssssssssssolllllnsssssssssssssssssslhhfflossssssssnlllllllllossssssssssssssssrniffhhnsssssssssssssmmfffnsssssssssssssssssolhffhlssssssolllllllllllllssssssssssssssssslhhfflosssssssssslhffhnsssssssssssssssssssrniffhhnssssssssssnhffhnssssssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssp###############sne#####a#eorsssssof#a#a##eorsssssssssssssssoh####a##blrssssssshf####lqrsssssssssssssssshe####a##hrrsssshe#####a#hrrsssssssssssssssne#####a#eorsssoe##a###a#forsssssssssssssssoh####a##blrssssssssse#####frrsssssssssssssshe####a##hrrsssssf#########lqrsssssssssssssne#####a#eorsssssssshe###a#lqrsssssssssssssoh####a##blrsssl#############qqrsssssssssssshe####a##hrrsssssha###a##borsssssssssssssssne#####a#eorsssssnb#a#a##eorsssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssssq###############o##########bnqssssea#######apqsssssssssssssse##########lqrssoiba#####ipqrssssssssssssssia#########fpqssia##a######fpqssssssssssssso##########bnqsrp##########apqsssssssssssssse##########lqrssssssi###a##fpqrssssssssssssia#########fpqssss#a##a#####ipqrssssssssssso##########bnqsssssoba######ipqssssssssssssse##########lqrsla##a#########opqsssssssssssha#########fpqsssha########bnqssssssssssssso##########bnqsssl#########anqssss",
"#####sssssssssssssssssssssssssssssssssssssssssssssssssssssspa##############sb##bff#####hpqssh####eba###hpqsssssssssssssha##ffa####aoqrsn#####a##hoorssssssssssssssn###efba####lpqsn###efe#####lpqsssssssssssssb##bff#####hpqsrb##ffe####ahprsssssssssssssha##ffa####aoqrssssob######fnpqssssssssssssn###efba####lpqsss######a###hoorssssssssssssb##bff#####hpqsssn######eefiopqssssssssssssha##ffa####aoqrl######a#####bnnpqsssssssssso###efba####lpqsn####fhha###fpqsssssssssssssb##bff#####hpqsob####ff####epqsss",
"####ppqpqpqqpqqpqqqpqqqpqqqpqqpqqpqqpqqpqqpqqpqqqpqpqqpqqpqp###############shbhnnmlb####opqs####hmmh####mpqssssssssssssn#hmmmmf###ahoqss###e###ahnoqssssssssssssssrbelnmnh####foprrbelmmnh####foprsssssssssssshbhnnmlb####opsshhommml####foprssssssssssssn#hmmmmf###ahoqssssh##bf###emoqssssssssssssrbelnmnh####foprsn##afhhhhhhlnoqsssssssssssshbhnnmlb####opqsob###bhmmmmnnpqssssssssssssn#hmmmmfa###ioqoliihhhhhaa##hmnpqsssssssssssbelnmnh####foqsh###bmmnf####opqsssssssssssshbhnnmlb####opsh#a#almmh####lpqss",
"#######################a####a####a#####a##a##a##a#a#a#aa#aa################snopnnooha###mophb##bmlmnb###hoprsssssssssssslonnnno####hpprsfhnn####hmoqssssssssssssssslpnnnoof###enorslpnnnnof#a#enorssssssssssssnopnnooha###moprsspnnnof###enoqssssssssssssslonnnno####hpprssn##ahf##aemoqrsssssssssssslpnnnoof###enorsl###llmmnnnmnpqssssssssssssnopnnooha###moprh#a#flmmmnnopqrssssssssssssslonnmno####hoprqpnnnnmi####llnprssssssssssslpnnnoof###enoqfa##elmni####moprsssssssssssnopnnooha###mopb###fmmnnf###foprs",
"###########################################################################srrqpoppl####lnoh###elmopf###enoqssssssssssssqpooopp##a#hnoqsspnn#a##hmoqsssssssssssssssrqpooppf##abmoqsrqpoppqf###bmoqssssssssssssrrqpoppl####lnorsrpppqnb###hmoqsssssssssssssqpooopp##a#hnoqssb##anf###emoqsssssssssssssrqpooppf##abmoqsl###lmmonooopqrssssssssssssrrqpoppl####lnoo###alnhiiopqqrssssssssssssssqpooopp####hnoqrqpooooe###flmoqssssssssssssrqpooppf##abmoph###amnqh##abmnpqsssssssssssrrqpoppl####inp###ahlnopia##anoqs",
"###########################################################################ssrrrrrrl####lmob###hmnppl###bmoqsssssssssssssqppprr####hmorsrqpo###ahmopsssssssssssssssssrqrrrfa##enopssrrqqrrfa##fmoqsssssssssssssrrrrrrl####lmoqsslllhb###elmoqssssssssssssssqppprr####hmorsi###hne###emopsssssssssssssssrqrrrfa##enoqsf######fhrqprrrsssssssssssssrrrrrrl####lmoha##ff#####hqrrsssssssssssssssqppqrr##a#hmorrrqqppl####imnorssssssssssssssrqrrrfa##enoqm####elma###hmnoqssssssssssssrrrrrrl##a#lmo####hmopql####moqs",
"###########################################################################ssssrssse###elno####hmoqrl####moqsssssssssssssrrrsri####lmoqssrrr####hmoqssssssssssssssssssssrp####hmoqssssssrp####hmoqsssssssssssssssrssse###elmoqss#######hlmnpqssssssssssssssrrrsri####lmoqo###enmf###emoqssssssssssssssssssrp####hmoqsfa######aaorssssssssssssssssssrssse###elmoh###########fpqsssssssssssssssrrrsri####lmoqsssrsrb##aflmnprsssssssssssssssssrp####hmoqsfa########flmnprssssssssssssssrssse###elmoea##aloqoe####mnpr",
"###########################################################################sssssssh##a#hmmo#a##hmopsl#a##mnprssssssssssssssrsn###aflmoqrsssr####hmoqrssssssssssssssssssssb###blnopsssssssb###blnopssssssssssssssssssh##a#hmnoqss#####aehmmnpsssssssssssssssssrsn###aflmoqf###imnf#a#emoqrssssssssssssssssssb###blnopsb#########anrssssssssssssssssssssh##a#hmno#####a##a####hpqssssssssssssssssssn####flmoqrssssi####llnorrssssssssssssssssssb###blmoqsrha#####aeimnoqssssssssssssssssssh####hmnoh#####ff######lnpq",
"###########################################################################ssssssl####emmnp###ahmoqsl####lnpqsssssssssssssssob###ailnpqsssss##a#hmoqssssssssssssssssssssf###ahlnoqssssssf###ahlnoqsssssssssssssssssl####emmnpsss##a#####amprssssssssssssssssssob###ailnon###hmmof###emoqssssssssssssssssssf###ahlnorsfllhhea####hpqssssssssssssssssssl####emmnp##a##hlmiaa###opqssssssssssssssssob###bilnpqsssssb###flmnprssssssssssssssssssf###ahlnpqslb########alnprsssssssssssssssssl##a#emmnpsb#########a#almoq",
"###########################################################################sssssl#a##bllnor####hmopsl####lmopssssssssssssssob##a#ilmoprsssss####hnoprssssssssssssssssssfa###fmmnqrsssssfa###fmmnqrssssssssssssssssl#a##bllnorsssronlf####epqsssssssssssssssssob##a#ilmopb###beefb###befqrssssssssssssssssfa###fmmnqrssrpnnmla###aoprssssssssssssssssl#a##bllnor####fllmmh####hoprssssssssssssssob##a#ilmoprrsssi##a#llnorrsssssssssssssssssfa###fmmnprl###afhe####anqsssssssssssssssssl####bmlnoqroe######f###elnoq",
"###########################################################################ssssl####bimnopre###fmorsh##ablmoqsssssssssssssob####hlmnpqrssssra###hmoqsssssssssssssssssqh####fmlnoqssssrh####fmlnoqssssssssssssssssl####almmoprsssrpnmnh####lpqsssssssssssssssob####hlmnpr####a##########pqrsssssssssssssqh####fmlnoqsssrqpoooha###noqsssssssssssssssl####almmopr####hlmnno###ahnoqsssssssssssssob####hlmnpqssssrb###flmnprssssssssssssssssqh####flmnoqs####hmlmh####hpqsssssssssssssssl##a#aimmoprrrpmffehle###hmnps",
"###########################################################################sssha###bllnnpqsfa##emoqrfa##elnorsssssssssssslba##ahmmmpprssssss###ahmopssssssssssssssssoe####flmmoprsssoe####flmmoprsssssssssssssssha###bllmopqssssrqpooo####hopsssssssssssssslba##ahmmnoqr##a######a##a##opqrsssssssssssoe####flmmoprsssrrqqppl####mnprsssssssssssssha###bllmopqse###hlnpqq####hnoqsssssssssssslba###ilmnoqrssssi####llnorssssssssssssssssoe####fmlnoprl#a##mmmnoe##afoprsssssssssssssha###almmopqssrqponmmh####imops",
"###########################################################################ssf####flmmoprssl####lopp####hmnprsssssssssssl####blmmmoprsssssss####hmoqsssssssssssssssob###ahmmmopqsssob####ilmmopqsssssssssssssssf####flmmopqssossrrqqqm###ahnoqssssssssssssl####blmmmoprsfffeeeefb###aeennpqssssssssssob###ahmmmopqsssssrsrssf###elnpqssssssssssssf####flmmopqssha##amoprl##a#imoqsssssssssssl####amlmmoprssssob##aflmnprsssssssssssssssob###ahlmmoorsl####imnppf###enoqssssssssssssf####flmmnpqssssrqpopi#a##flmors",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sfa####eeffffhsssb###emnf##aalnoqsssssssssssl#a###eeeffffssssssss#a##hmopssssssssssssssob####afeefffnssob####beeefffnssssssssssssssfa####eeefffhsslbhlssrib####mmoqsssssssssssl#a###eeeffffssspnnmnmne###elmnopqsssssssssob####afeefffnsslfmossnf#a##hlnoqsssssssssssfa####eeefffirso####emqmb###blnoqssssssssssl#a###eeeffffsssssh####llnpqrssssssssssssssob#a##bfeefffnsn####emopl####hmoqsssssssssssfa####eeffffirsssssole####bllnoqs",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################h####a#######hsssl#a#####a##hlnoqsssssssssrm#############qrrsssss###ahmoqssssssssssssss###a#########lqr####a########lqrssssssssssrh####a##a####hssf#a########aflnoqsssssssssrm#############rqrqpooooofa##emmooqssssssssss###a#########lqsh##########blmnpssssssssssrh####a##a####fqrri###########ilnoqssssssssrm#############rqrrp##a#flmnprsssssssssssssss#############lrre####afe####almoqsssssssssrh####a#######fqrsl########bimmoprs",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################f############fpqrrf####a###flmnprssssssssssl####a########porrssss####hmoqrsssssssssssss#############ipq##a######a###ipprssssssssssf############fprb########a#fllnosssssssssssl####a########opprqqppqpf###emopqrrsssssssss#############ipqe######a##fllnoqsssssssssssf############fpqrqf###a##a##hmmnprsssssssssl####a########opqrh####llnoqrsssssssssssssss#a#######a###ippob########aallnpqssssssssssf############fpqrl#######eimmopqss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################f##a###a##a##fnorsrhb####bhlmnorsssssssssssl#a#####a##a##nnpqsssra###hmoqssssssssssssss###a##a##a##ahnp######a#####ahnpqsssssssssqh###a#####a##fnonf#a##a##ehmlnoprssssssssssl#a#####a##a##nnpqrsssssfa##emnqrsssssssssss###a##a##a##ahnphb##a###ehlmmoprssssssssssqh###a#####a##fnoqrpib#####blmmnoqssssssssssl#a####a###a##nnoo#a##flmnprssssssssssssssss###a##a#####ahnorphaa#####fimmoprssssssssssf##a###a##a##fnprl#a###filmnnpqsss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ssonllllllllmmnorsrrolhhilmmnoprssssssssssssronlllllllllmlnoqssssqonmlnoqrssssssssssssssonmlllllllmlmnoqonmlllllllmlmnoqssssssssssrqonllllllllmmnorrplhhhillmmnnpqssssssssssssronlllllllllmmnoqsssssssronmnorrssssssssssssonmlllllllmlmnorrpihhhmllmnopqssssssssssssrqonllllllllmmnorrrpolhihmlmmmoprsssssssssssronlllllllllmlnpprpommmnorrsssssssssssssssssonlllllllmllmnpprpolhihlmmmmopqsssssssssssssonllllllllmlnoqolihmllmmnopqssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################srpnnmmmmmmmmmnpqssrpoonmnnnopqssssssssssssrqpnnmmmmmmmmmnnprssssronnmnorssssssssssssssrpnmmmmmmmmmmmooqpnmmmmmmmmmmnnpqsssssssssssrpnnmmmmmmmmmnpqrponnnmmnnnoqqssssssssssssrqpnnmmmmmmmmmmnprssssssrqpnnnpqssssssssssssrpnmmmmmmmmmmnnpqrponnnmmnnopqssssssssssssssrpnnmmmmmmmmmnpqssrpoonmmmnnopqsssssssssssrqpnnmmmmmmmmmnnorrponmnoprsssssssssssssssssrpnnmmmmmmmmnmoorrqpoonnnnmnopqsssssssssssssrpnnmmmmmmmmnnorrqponmmnnopqsssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################srqooooooooooopqrrssrqppoooqqrssssssssssssssrqoooooooooooopprssssrroooprrrsssssssssssssrqpooooooooooopqrqpooooooooooopprsssssssssssrqpoooooooooopprrqppooooooqqsssssssssssssssrqoooooooooooopprrssssssrqoopprssssssssssssrqpooooooooooopqrrrpoooooppqrsssssssssssssssrqpoooooooooopqrsssrqpooooppqrsssssssssssssrqooooooooooooprrrqpooopqssssssssssssssssssrqpoooooooooooorrrsrqpooonpopqrsssssssssssssrqpooooooooooprrsrpooooopqrrsssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################srrrqrppqpqpqqqrsssssrrqqqrrssssssssssssssssrrrqqqpqpqqqpqqrssssssrrrrqrsssssssssssssssrrrprpppqpqpqqqrrrrprppqpqqpqprrssssssssssssrrrprpprpqqqqrrsssrqqpppqrrssssssssssssssssrrrrprppqqqpqqqrssssssssrrrqrrsssssssssssssrrrprpppqpqpqprrrssrrqqqqqrrssssssssssssssssrrqrpprpqqqprqrrssssrrrrqqrrrssssssssssssssrrrqrppqpqqqqqqrssrqqqrrsssssssssssssssssssrrrpqpqpqpqppqrrsssrrrrqqqqqrsssssssssssssssrrrprppppqqqqqrsssrrqqqrrsrssssss",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss########################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss########################################################################################################################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ssolhfhfinrsssssssssnhffhnssssssssssssssssssssliffhhlssssssssssssnlllosss##ssssssssssssssssssssssssssssssolossssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssnlssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################oe########forssssrpf###a##eorsssssssssssssssh########bmrssssssshe####lqrs##ss#fssssssssssssssssf###fsssssl#lrrssssssf#fse#fsssssssssssssssse##lssssssssssssssss##lo##lsssssssssssssssssf#ssssssssssssssssssl#lssssssf#qqssssi##fsssssssssssssssssslb##msssssssssssssssrph##fossssssonsssssl#bsl#lssssssssssssssss###bhosssssssssssss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################o##a#######bpqsssse########bpqsssssssssssssse########a#mqrssoiba#####ipqr##ss#fqpqsssssssssssssh#limpprssl#loprsssssh#bp##fppqsssssssssssss#f#fpprsssssssssssss##hl##loqrssssssssssssssh#ppqsssssssssssssssl#lpqrsssfapoqsssf#faoprsssssssssssssssbblhqpqsssssssssssssse#ihaepqssss#fsrsssl##hl#lpqrsssssssssssss#elh#eprsssssssssss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sb##fee#a###hpqssh####ee####hpqsssssssssssssh##effa####eoqrsn####a##ahnpq##ssafnb##ls#fb#lsssssf#ihlnf#epl#f#aorsssrebbie#fml##bol#h#sssssn#h#anfeb#hsfeefsssso#eehe#hnh##fseesebssssssf#o#fsf#s#fb#lssssssl#if#ql#lf#nnpsssbbf#lh#ls#fsl#bbfsssss#bmnnnf#eol#f#eosssrn#hpnh#lne#hf##fpqsrm#eeh#inh#blsbbsebsssss#fnmh#lnb#hssh#bsss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################shhpmmml##a#foprs#a##hmlh####mpqssssssssssssmhnnmmme####norss###e####hnoq##ss#fnmib#p#epe#pqrssf##ahham#hi#hi#hpqsss#ffeeb#lnmhafl#bfppqssi#le#le#nh#mf#ehrprsl#i#ef#fmmmf#lhap#hpprsssf#n#fpf#q#epe#pqrsssl#ie#ol#lf#nnorso#fhahhblp#fo#ho#fppqssl##blham#hl#hn#hpqssl#lnmhaheboop#fnnoqsl#hafahh#mh#nh#p#hppqss#fnmhaheehamhalnppq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ssronnnof###enoqi###blmnnb###hoprssssssssssssrponnni####mnprsfhmn###ahmoq##ss#flaab#n#fnf#noqsrh#nmnf###fhahm#enorss#ffeff#mh#e#fh#innnpssf####hf#niahf#onnoqsl#i#ei#elf#eahm#f#nnopssrh#n#fnf#o#fnf#noqsssl#if#oh#if#nmorrm##a#fh#in#hh#io#fnopsssnh#ff###fh#in#fnoqsn#hmoh#l#eonn#fmmoqsl#ifbahf#ph#ii#f#lnopss#fmnh#l###ahf#oonoq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sssqpppnb###hmoqf###emmnpf###enorssssssssssssrpppppf###elnpqsspon####hnop##hl#hhahe#m#fme#mnorsf#nmmh#mlmhahi#hnnpsn#hh#hf#lf#n#ehahmmopss#ehhaee#mf#lf#mmnopsh#lf#m#el#fh#hneabnnnpsllbbn#eme#n#fme#mnornlf#le#lh#hf#mmprrf#lhb#hahl#fl#hl#emnprsllh#fh#mlmhbhi#fnnpssb#hhaenballo#elmoqsl#hl##hh#lh#ln#eannnpss#ehh#fnbemlmh#hmnoq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ssrlllhb##ablnorb###hmnpql###anoqsssssssssssssmllie####ilnoqsrqpo##a#hmoq#ab#enlbae#l#fmf#nmprsf#nmnme##lh#f#ennnpsl#ii#ihahh#bbfhahmnoqsn#hombbe#a#fnf#mmnpssf#oe#me#mf#eahmh#hmmoqsh#binh#be#m#emf#nmorna#hnlb#faif#mmorsbbnmf#ie#befmf#b#fmnpsse##hnlb##lh#b#emmnpssoe##hnnhaafph#fnosrlainbahmf#bhnmf#fmmorss###ahpnha#amleabopr####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sss#######hmmnoq##a#hmoprl#a##mnqsssssssssssssf#####aellmnqsssrrq####hmop##sqommnnmmmmnmnnnmorsspnmorpnmmoonmnnmoqrsrommnnnnnnnmmmnnnopsssrommnne#mmnnmnnmprsssqnmnmnnmmnmmmmf#lmnorssronmnomnnmnnmnonmprrrpomnnnnnnmnnmprsspnmnnmmnmnnmlnhahmnprssronmmnnmmi#hnmnmnqssrpnmnnnnonmoppnmorsrpomnommnnnnnnoommmorssspmmnnmoommmnonmnoq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sss#####abhmmops####hmorsl####mnprsssssssssssrh#####aflmnpqssssss####hmoq##sponnoonnmnonnpnopsssponprqpnnnoonnnnoqssqonoononnonnnnnnnoqssssoonpof#mmmnnonnpsssspononnonnpnnnh#lnmnpsssqpnnooonnnnonnonnprrqpnnnoonnnnnnnpsssponopnnonnnnbaafmlnpsssqonnnoonni#immnnpqssrqonnnnooonnooonoqssqonoonnopnnnoppnmopsssrpnmnnnoponnoponnoq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sss##a#####ampqs####hmoprl####lnpqssssssssssssf#a######hpprssssss##a#hnop##sqpppqqpooppppqppqsssrpprssqpppqppppprssssqppppppppqpopppprrssssqppqqpommnppqpqqssssrppqppqppqppppqonnoqsssrppppqpppppppqrpqqsssqppprqpppppppqsssqppqqppppppppponnmoprssqppppsqppppnmnopqsssssqpopprqqppqrppqrssrqqqppppppppprqqpprssssqpooppqrppppqqpppq####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sssronlf####eors###ahmorsl####lmoqsssssssssssssqonhb###ampqssssss####hmoq##ssrrrsrsssssrssssssssssssssssrrssrrrrssssssrrrrrrssrrrrssssssssssrssrrponpqsssssssssssssssssssrrsrqonopsssssssrsssrrrrssrssssssssrrsssrrrssssssssssssssssrrrrrponnnprssssrrrsssrrqqpnoqrssssssrsrssssrsrrrrrssssssssssrssssssssrsssssssssrsssssssrsrsrrss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sssrpnmnha###lpqe###fmopsha##elmoqrssssssssssssrpnmlb###hnprsssss#a##hmop##sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssrqpprsssssssssssssssssssssssssqpqrsssssssssssssssssssssssssssssssssssssssssssssssssssssssqppppqrssssssssssssrrqprrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sssrqpooo###ahoqfa##emorsf###elnpqsssssssssssssrqpoof###enpqsssss###ahmoq##sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssrrrsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss####################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ossrrqqqm####hnpl####lopo####hmnprssssssssssossrrrqqb###emoqsssss####hmop###############################################################################################################################################################################################################################################################################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################lbhlsrrib###almopb###emof#a#blmoqrssssssssss#florrne###ahmoqsssss#a##hmoq##ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssslnssssssssssssslnssssssssssssssssssssssssssnosssssssssssssssssssssssssssssssssssssssssssssssssss#####cgkkgccccjkcccjkkjccjkkjccccdkjcckkkkgcgkkjcgkkkkkccjkkgccgkkjcccc....cdgcccdggdc##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################fa##########hlmorl##########hmnoqssssssssssl###########elnoqrssss###ahmop##s##lo##lsssssssssssssssssssl####fssssssssssssssssssf#sl#lo#fsssssssss#frqsssssf####l#frqsssssssssssssss####lssss#fsrssssssh##brssssssnosssssssslb##nsssssssssssssssss#####dkkkkdccgkkccgkjjkgdkjjkgcccjkjcdkjjjddkkjkgdjjjkkcjkjkkddkkjkgccc....cjkcccgkjkd##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################b########a#fllnpqrf#a######flmnprssssssssssha#########eilnoqsssss####hmoq##s##hl##ipqrssssssssssssssssole#impprsssssssssssssssm#lhahl#lpprssssss#fopqssssnl#ein#fopqssssssssssssss#elinpqsrnoppqsssrnafilopqsssl#lrrssssssbblhopqsssssssssssssss#####gkddkgcjkkkccgkdckjgjcckjccdkkjcgkgcccgkdcjdcccgkdcjkcgkgjkdcjjcdg....ckjgccgjcjg##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################nfa##a###billnopqsqhb##a#bhmmnoqsssssssssssphb##a##aahlmnoprsssss#a##hmoq##o#ebhe#hnne#eos#fb#lssssssssrf#nme#ql#lsf#eosssssssn#hfffhalnf#eosh#b#fnnpsssssq#fmn#ea#lq#fsf#ssssssss#ehim#fbl#fooqssssl#fnmnh##fs###ipqsssss#bmnnf#ql#lfee#fssssss#####jkcckjcjgjkcccccdkjcccgkjccjjkjcgkkkjcjkdgdccccjjccgkgjkdjkccjkcjk....gjgjccgkjkd##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################srplhhhimlmmnnpqssrqolhhilmmmoprsssssssssssrqpmihhhllmmnnpqssssssqonlmmoq##l#iaef#fmebqbep#epe#pqrssssssf#mmf#ol#lh#n#hpqsssssqafahbf#nh#m#hm#ho#fmnpssssss#emm#emb#oafqf#ppqsssss####n##fm#fnopsssssf##ennmf#il#innprssssl##blf#ol#lf#oh#lpqsss#####jkcckjcccjkcccccjkdccjkjccdkdkjcjkjkkdjkkkkdccdkgccckkkjcgkjgkkcdg....jkkkccgjgdc##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################srponnmmmmnnppqssssrpoonmmnnoprsssssssssssssrqonnnnmmnnoprsssssssronnmnpq##l#i#ei#el#foe#n#fnf#nopssssssf#nmf#ohaif###fnoqsssssef#m#fbnf###fhain#fmnprsssss#fmm#fmf#n#fnf#onpsssss#fnmm#fnn#fnnqrssssrlf#hf#e#hi#hmnpqsssssnh#ff#nhaif#ni#hoprss#####jkcckjcccjkccccgkjcccgjkgckjckjccdcdkjjkjgkjccjkcccjkgjkdckkkkkccc....jdckdcgjccc##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################ssqppoooooppprssssssrpppoopprrsssssssssssssssrrppoooooprrsssssssrrrpooprr##h#lf#m#embbnaen#fmf#mhhrssssrh#nmf#mh#if#mlmmflsssssfbam#bemf#mlmi#hm#emfirsssss#fnn#fme#m#eme#nhhrssss#fmln#fmm#fmelrsssshlf#lafhbhhahlhhqssssllh#ff#mhahf#nhbhifoss#####jkcckjcccjkcccgkkdcccccjkgkjjkkgcccckjjkccjkcckjccckjcckjccgdjkcgj...............##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss################sssrqqpqpqqrssssssssssrqqqqrrssssssssssssssssssrqqpqqrrsssssssssssrrprqrr##fane#me#mle#elm#fme#nahpqrssrf#nmnb#h#hme##hl#lqqsssl#fme#hmle##hnh#aefhalqqssss#fmn#fnf#nhaae#mbhpqrss#fmmo#fmm#fi#lprssnb#bhne#e#hne#ibhpqrsse#ahmla#f#if#mhaihaoqq#####gkddkgcccjkccdkkdccgjccjkgkkkkkjjjcdkjgkdcjkcckjccckjcdkjdjdckjcjk...............##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss###########################################################################################spnnnmnnmmonmnnnnnnol#mooqsssspnnopnmnnmnnmnhepopqssspnlmommnonnnnonnmnhboooqsssrpmnpommonnnmnnl#mooqsssonnpqonnpohbooossssqonmnnmmmmnnl#mooqsssqonmmmnnnnmnnnonbhoop#####dkkkkdcccjkccjkjjjggkjjkjcccckjcjkjkkddkkjkjcgkgcccjkjkkddkkjkgccc...............##################################################################################################",
"#####ssssssssssssssssssssssssssssssssssssssssssssssssssssss###########################################################################################sqononnonooonnnponnonlnnopssssponpqonnonnonnlnnnoqsssqonnonnoponnoopnnnlmnnpqsssspnoppononnoonnmlnnoqrsspnoprpnopplmonoqsssponnoonnnnoomlnnoqrssqonnooonnnnnnnpohonnp#####cgkkgccccjkcckkkkkjcjkkjccccckjcdjkkgccgkkjdcgkgcccdjkkgccgkkjcccc...............##################################################################################################",
"######################################################################################################################################################sqpppppqpppqppppqppqppooorssssqpprrqppppqqppppooprsssrqppqpppqqpopqqpppopooprssssqpprppprppqppoppooorsssrppqrqppqpppnopssssppoppqppopprppoooqsssrpoppqpppppqppprqpooq########################################################################################################################################################################################",
"######################################################################################################################################################ssrsssssssssrsrsssssrqppqrsssssrsrssrsrrsrsrqqppqssssssssssssssssssssrrrqpppsssssssssssssssssssrqppqrsssssrsssrrssrqppqrssssrrsrsrssrsrrqpppssssssrrsssrrsrsssssrpppq########################################################################################################################################################################################",
"........................................................................##############################################################################sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss########################################################################################################################################################################################",
".....######################################################................cccccggcccccccccddccccccccdggccccccccggggggdccccccccccddccccccccccccddccccccccccggdcccccccggggcdgdcccccccdgdcccccccccccdggcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
".....######################################################................cccjkkkkdcccccccjjcccccccjkkkkccccccgkkkkkkgcccccccccdkjcccccccjkkkkkjccccccccgkkkkgcccccgkkkkkkkdcccccdjkkkjcccccccccjkkkkdcccccccccccccccccdccccccccccccdjccccccgjjjccccccggdddddcccccccccccjcccccccccccgdccccccdggggccccdgcccccdccccccgjjgccccccccgjjgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................ccjkgcdkjccccccjkjccccccjkgcdkgcccccgkccckkdcccccccccjkjccccccckjggdcccccccccgkjdcjkcccccgkggcdkgccccccjkdcdkgcccccccjkgcdjkdcccccddcccccccjkkkkjccccccdgjkgcccccjkkkkkcccccgkkkkkjccccccccccjkcccccccjjjkkgcccccjkkkkgccccckkkkkkkccccckkkkkkcccccgkkkkkjcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cgkgcccdkdccccjkjjcccccdkdcccjjcccccgkccjkdcccccccccjkjjccccccckgcccccccccccdkjccccccccccdkdccjkdcccccckgccgkdccccccdkgcccgkgccccckkcccccckkkkkkkjccccdjkkkccccdkkkkkkkjccccgkkkkkdcccccccccjkkccccccckkkkkdccccjkkkkkcccccdkkkkkkgccccgkkgjkkgcccckkkkkkkgccddccccccccccdjjgccccccccccdjdcccccccccccgjjdcccccccccdjjgcccccccccccdjjccccccccjjjjjjgcccccccccdjgcccccccccccccccccccccccdjjgccccccccccgjjgcccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cjjccccckgccccddjjcccccdjcccckjccccccccjkkkdcccccccgkdjjccccccgkgjkkkgccccccjkcdjkkjcccccccccdkjccccccckgjkkkgccccccgkccccjkjccccckkcccccjkkkkkkkkgccccdkkkcccccgkkdjkkjccccgjgkkjcccccccccjkkkccccccdkkjgjgcccgkkjccgcccccgkjkkkjcccccjkkcgkkgcccgkkjcjkkjcckkcccccccccgkkkkjccccccccgkkgcccccccccdkkkkkdcccccccjkkkkkccccccccccjkkccccccccjkkkkkgccccccccdkkjcccccccckkkkkkkjccccccdkkkkjccccccccjkkkkjccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................ckgccccckgccccccjjcccccccccdkkdcccccccjkjjkkccccccdkgcjjccccccgkkjggjkdccccdkggkkgjkdccccccccjkdcccccccgkkjgjkjcccccdkgcgjkkjcccccdcccccdkkkjddjkkjccccdkkkccccccdjcjkkjccccdcckkjccccccccjkkkkccccccgkkjgcccccjkkdggdcccccgdcjkkgcccccdkkkkkjccccgkkjdjkkkcckkccccccccdkkdcjkdccccccckkkgcccccccccjkjcdkjcccccccgjdcjkgccccccccgkkkccccccccjjccccccccccccckkjcccccccccjjjjjkkdccccccjkgcjkcccccccgkjcdjkgccdgcccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................gkdccccdkdccccccjjccccccccgkkdccccccccddccdkgccccdkgccjjgjccccgkgcccckgccccgkdkkdccjjcccccccckjcccccccdkjdcccgkccccccgkkkjdjjcccccccccccgkkkcccdkkkccccckkkccccccccckkkgccccccgkkkjccccccgkjgkkcgccccjkkkkjcccckkkkkkkgccccccdkkkccccccdkkkkkjccccdkkkkkkkkccdcccccccccgkgccdkjcccccccdgkgcccccccccddccdkjcccccccccccjkgcccccccdkkjkccccccccjkkkkjccccccccjkgcccccccccccccckkgcccccccjkdcjkcccccccjkcccdkjccjkgccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................gkcccccjkcccccccjjcccccccjkjccccccccccccccckgcccckkkkkkkjjccccccccccckgccccgkkkdcccjjcccccccgkdccccccckjcccccjjccccccccgdcdkgcccccjjccccgkkkcccgkkkccccckkkccccccccgkkjccccccccdjkkgccccgkkjjkkkkccccdcgkkkgccckkkkkkkkccccccjkkgcccccckkkkkkkjccccgkkkkkkkccccccccccccjkcccckjccccccccgkgccccccccccccdkkdccccccccdjkkkccccccccjkgjkcccccccckkkjjkgccccccckkkkjdccccccccccjkjccccccccgkkjkjcccccccjkdccdkjccgjdccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................gkccccdkjcccccccjjccccccgkgcccccccccjjccccgkdccccjjjggjjccccccdgccccgkcccccdkkdcccgkgccccccckjcccccccgkdccccjkdcccccjjccccjkdccccckkccccdkkkjdgkkkjccccckkkdccccccckkkjjgccccggcgkkjcccgkkkkkkkkkccccgccjkkgccckkkgckkkdccccgkkkccccccgkkjcdkkkdccccgddjkkjccjjccccccccjkcccckjccccccccgkgcccccccccccjkkgcccccccccdkkkjcccccccjkjcjkcccccccckkdccjkccccccdkkjjkkcccccccccckkdccccccccdkkkkjcccccccdkkjjkkgcccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................dkgccgkkccccccccjjcccccdkjcccdkcccccjjcccgkjccccccccccjjccccccjkdccgkgccccccjkdccgkjcccccccgkgcccccccdkgccgkkgccccccjkdccgkgccccccjgcccccjkkkkkkkkgccccckkkdccccccjkkkkkdccccjjgkkkgcccjjjjgjkkjjdccckjjkkkgcccjkkjdkkkcccdjkkkjccccccgkkjdgkkkccccckjjkkkdcckkccccccccjkcccckjccccccccgkgcccccccccckkjdccccccccccccdkkdcccccdkkkkkkkdccccccddcccjkccccccgkgccgkgccccccccgkjcccccccccjkgdjkgcccccccdjkkkkdccdgcccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cjkjkkjdccccccccjjcccccgkkkkkkkcccccdkjjkkjcccccccccccjjccccccdkkjkkgcccccccckkjkkjccccccccjkcccccccccjkkkkjdcccccccdkkjkkjcccccccccccccccjkkkkkkgcccccckkkgcccccgkkkkkkccccgkkkkkjcccccccccgkkgccccdkkkkkkccccgkkkkkkjccccgkkkgccccccckkkkkkkjccccgkkkkkgcccjgccccccccgkdccgkgccccccccgkgcccccccccgkjcccccccccccddccgkgcccccdjjjjkkjdcccccccccccjkccccccgkgccgkgccccccccjkdccccccccckjccckjccccccccccgkjcccjkdccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................ccgjgdccccccccccddcccccdgggggggccccccdjjgdccccccccccccddccccccccgjgdccccccccccgjgdcccccccccdgccccccccccgggdccccccccccdgjjdcccccccccccccccccgjjjgcccccccgkkkjcccccjjjjjjkdccdjkkkkjdccccccccdkkkkgcccgkkkkjdcccccjkkkkjcccccccgkdcccccccdjkkkkjcccccjkkkjdccccccccccccccdkjddkkdcccccccdjkjdccccccccjkggggcccccccckkdcjkdccccccccccjkcccccccckjccjkjccccccdkjddjkdcccccccdkjcccccccccckkdcgkjccccccccdjkkdcccgkdccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccggddgcccccccccccddcccccgggccccccccccggddgdcccdcdgdccccccccdggdcccccccccddcccccccccdggdccccccgccccccccccccccccccccjkkkkjcccccccckkkkkccccccccjkkkkkjcccccccjkkkkjcccccccccccjkccccccccjkkkkkdcccccccjkkkkjccccccccjkgccccccccccjkkkkkdccccccckkkjdcccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjjdcccccccccdgggdccccccccdgggggdccccccccdjjgccccccccccccgjcccccccccgjjgccccccccccgjjdcccccccccgjccccccccccccdjjjdccccccccjjdcccccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................cccccccccccccccccccccccccccccccccccccccccccdccccccddccccccccgcccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccdgcccdjjccccgdddcccccccgcccccccgccccdggcccgcccccccdjjdccccgjgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
".....cccccccccccccccccccccccccccccccccccccccccccccccccccccc................ccgkkdccccjgccccjkjccccjkkkgccccccjdcccgjkkjcccccjkkgcccjkkkkcccckkkccccccjkjccccccccccccccccddccccccccccccccccccccccccccccccccccccccccccdjkkgccccgkgccdkkkjcccjkkkdcccccgkccccjkkjcccjkkjcccjkkkjccckkkjcccgkkkgcccccccccccccccccccccccccccccccccccccccccccccccccccccccdjjdccccccccjdccccccccgjdcccccccggdcccccccccjjccccccgjgjgcccccccdjdccccccgggdgdccccccggccccccccgjgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...cckjkjcccckgcccgkjkgccckjjkgcccccgkdcccjkjjgccccgkjjjccckkjkjcccjkgkgccccjkjkgcccccccccccccccjgccccgjjjjcccccccccccccccccccccccccccccccccjkkkkdccjkkcccjkkkkcccjkkjccccccjkccccjkkjccdkkkjcccjkkkgccgkjjkccckkkkjccdcccccccccccccccccccccccccccccccccccccccccccccccccccckkkkdccccccjkdcccccccjkkkdcccccjkkkgcccccccdkkcccccckkkkkcccccccjkdcccccjkkkkkjcccccjkkjccccccjkkkgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjjcckdccjkgcccjgcgjccckcdjccccccjkccccjgcccccccjjccgccckdcjgcccjgdjgcccckdcjjcccjgcccccccccdjjccccggcgjccccccccccccccccccccccccccccccccgkkkkkjccckkcccgkgkkcccjgkjcccccgkkccccjkgjccjkgdgccckkkkdccgkgjkccdkjgkkcckcccccccccccccccccccccccccccccccccccccccccccccccccccjkggkjcccccgkkdccccccjkggkgcccccjjgkjcccccccjkkcccccckjdgdccccccgkjccccccdjjjkkgccccgkggkdccccdkjckkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckgccjgccjkgccckdcgjcccgcjjcccccgjkccccjggjdcccdkccdccccgcckdcccjdckdcccgjccjkccckjcccccccccjjjdcccgjkjcccccccccccccccccccccccccccccccccjkjcjkjccckkccccgckkccccgkjccccckkkcccckkgcccjkggcccdddkjcccdkkkjccdkjgkkdckccccccccccccccccccccccccccccccccccccccccccccccccccckjccjkcccccdjkdccccccdgcckgccccccccjjccccccgkkkcccccckjjjdcccccckjccccccccccdkjcccccjkcckgccccgkccgkdcccccjjccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckcccjgcccjgcccgccjjccccgkkjccccjgjdcccjkkkkcccgjckkjcccccgkccccjjkkjcccgjcckkcccjgcccccccccjggjcccggcccccccccccccccccccccccccccccccccccjkgcdkkccckkcccccdkjccccjkkdcccjkjkddcdkkkgcckkkkjccccgkgcccckkkjccdkkkkkdccccccccccccccccccccccccccccccccccccccccccccccccccccckgccjkccccccdkdcccccccccjkgccccccgjkjccccccjjjkcccccckkkkkcccccgkjjgccccccccjkccccccgkjjkdccccgkccdkdcccccjkccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkcccjgcccjgcccccjkdcccckjgkcccgkcjccccjkcckdccjjjkjkcccccjjccccjkjgkgccdkgjkjcccccccccccccggccjdccggcccccccccccccccccccccccccccccccccccjkgcdkkccckkcccccjkjcccccjkjccdkjjkkdcccjkjcckkkkkdccckkdcccjkkkkgccjkkkkcccccccccccccccccccccccccccccccccccccccccccccccccccccckgccjkccccccgkdccccccccjkjcccccccjkkdcccccgkggkcccccdkjcgkdccccjkkkkgccccccckjccccccckkkjcccccdkjgjkdcccccdgccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjccckdcccjgccccgkgcccccdcckdccjgckkgccjgccjgccjjkcckdcccckgcccckgccjgcccjkkgjcccccccccccccgcccddccdgcccccccccccccccccccccccccccccccccccjkkdjkjccckkccccckkjgccdddkjccjkkkkkdcdcckkcckkdjkdccdkkcccckkcjkjcccggkkccjccccccccccccccccccccccccccccccccccccccccccccccccccckgccjkccccccgkdcccccccjkjccccccccdgkjccccckkjkkjcccccjdcdkgccccjkddkjccccccgkgccccccgkjjkgcccccjkkkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjccdkccccjgcccckjcccccdccckdcdkkkkkgccccccjgccjkgcckdcccdkccccgkccckgccccdcgjcccjgcccccccccccccccccccccccccccccccccccccccccccccccccccccgkkkkkgccckkdcccgkkkgccgjjkjcdjjgjkjgcgjjkjccjkgjkdcdjkjcccckkgjkgccgjjkgcckccccccccccccccccccccccccccccccccccccccccccccccccccckjccjjccccccgkdccccccdkjcccccccccccjkccccckkkkkjccccccccdkgccccjjccjjccccccjkcccccccjkcckjccccccggkjccccccggccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjccjjccccjgcccgkcccccdkccdkccdjjgkccccgccckdccgkccdkccccgjccccjjccgkcccjjccjjccckgccccccccccccccccccccccccccccccccccccccccccccccccccccccjkkkjcccckkdcccjkkkgcckkkkdcccccjkdccgkkkjccjkkkkccdjkgccccjkkkkdccjkkkcccgcccccccccccccccccccccccccccccccccccccccccccccccccccjkcckjccccccgkdccccccgkdcdcccccckgcjkccccccccjkcccccdjccjkdccccjkcckjcccccckjcccccccjjcckjcccccccgkgccccccjkccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkcckgccccjgcccjjcdjccdkccjjcccccckdccckgcjkcccgkccjjccccjjccccjjcgkjcccgjcdkdcccjgcccccccccccccccccccccccccccccccccccccccccccccccccccccccjjjccccdkkgcccjjjjgcdkkkjcccccdkkjccjkkjcccckkkgccccjgccccdkkkjcccjkjgcccccccccccccccccccccccccccccccccccccccccccccccccccccccgkjkkdcccccgkkkdcccccjkkkkgccccckkjkjccccccccjkcccccdkjjkjcccccgkjjkgcccccgkgcccccccjkjjkgcccccgjkjcccccccgjccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckjkjcccccjjccckkkkkccckjjkdcccccckdcccjkjkgccccjjkkdcccckgccccgkjkjccccdkjkjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccggddcccccccdcccggccccccdgdgccddgccccccggccccccdccccccggccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjkkgccccccgkkjccccccgkjjkgcccccgkkjcccccccccgjccccccjkkkdccccccjkkjccccccgkcccccccccjkkjcccccckkjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkjccccccjgcccjjjjjcccgkkgcccccccjdccccjkgcccccdkkdcccccjdcccccjkjccccccjkjcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccddcccccccccggccccccccdccccccccccddcccccccggcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdggdccccccccccccccccccccccccccccccccccccccccddccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjdcccccccccccccccccccccdkkkkjccccccccccccccccccccccccccccccccccccccgkkjcccccccccccccccccccccdkkkdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjjjdccccccccccccjkgcccccccccccccccccccccjkkkkkkccccccccccdkkdcccccccccccccggcccccccgkkkkgcccccccjggjjdcccccccjkjkjcccccccccjjjdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkkkkkdcccccccccdjkkcccccccccdjkkdccccccccgjjcgkkjccccccccckkkgccccccccdjjjkkkccccccckkjdkkccccccdkkkkkgccccccdkjckjcccccccckkkkkgcccddccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjkkjjkkdcccccccckkkkcccccccccjkkkkccccccccccgjgkkjccccccccdkkkgccccccccgkkkkkjccccccgkkgggjccccccgkkjkkdccccccgkkgkjcccccccgkkjjkkccckkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkddkkjccccccccjjkkccccccccdkjdkkdcccccccccjkkkkdccccccccjkdkjccccccccgkkggjdccccccjkkkkkgcccccccjdckkcccccccdkkkkgcccccccjkkcgkkdcckkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkccjkkdccccccccgkkcccccccccgdckkgcccccccccgkjkkkdccccccdkgckjccccccccgkjjjjcccccccjkkjjkkdccccccccgkjcccccccgkkkkkdccccccjkkgjkkgccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkdcjkkgccccccccgkkcccccccccccgkkdcccccccdgdccjkkjccccccjkgdkkggccccccjkkkkkjccccccjkkcckkjccccccccjkjccccccdkkdjkkjccccccjkkkkkkdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkgcjkkjccccccccgkjccccccccccjkkjcccccccckkkgdkkkdccccccjkjkkkkkccccccgkjgjkkdcccccdkkgckkjcccccccdkkgccccccjkjcckkjcccccccjkjjkkcccjjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjkkjcjkkjcccccdkjkkkjkdcccccgkkkjcccccccccjkkkkkkgccccccdkkkkkkkkccccccjjgcgkkgccccccjkkjkkjcccccccgkkgccccccjkkkkkkgccccccdgddkkjccckkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkkkjkkkdcccccdkkkkkkkgcccccjkkkjjjdcccccccjkkkjdcccccccdkjggkkgcccccccjkkjkkkgcccccccgkkkkgcccccccjkkgccccccdkkkkjdccccccgkkkkkkdcccjgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkkkkkjcccccccgddggjkdcccccjkkkkkkkcccccccccdccccccccccccccdkkkccccccccjkkkkkccccccccccggdccccccccjkjdcccccccccccccccccccdkkkkjdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdgjjgccccccccccccccccccccccccggjkjccccccccccccccccccccccccdjggcccccccccdjjjdcccccccccccccccccccccgdccccccccccccccccccccccdjjdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgjgccccccccccccccccccccccccdgccccccccccccccggcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccjdccccccccccccckkkgcccccccgccccccccccccccckkgccccccccccccgkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjkjcccccccgkdcccccdgcccccgkjkkccccccjkdcccccccjjccccjkkjccccjjkjccccjjkdccccdkkdcccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkjcccccdkkcccccckkgcccccjcgkgccccckkdccccckkkkcccckjdkcccckkkjcccckgkgccccjkkjccckccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkjjkdccccjkkcccccgkkjccccccjkkdccccdkkdccccdkkkjcccckjjgcccckjkgcccckkkdcccckjgkdccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkgdkgccccgjkcccccjjjkcccccdkkkcccccjjjgccccdkggccccdkkkjccccdckgccccjkkdcccdkgdkdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkgckjcccccjkcccccdcjkccccccjjkjcccckdjgccccdkjkgcccdkjjkdccccgkdcccdkkkjcccdkkjkdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkjckkcccccjkccccccdkjccccdjdckkcccckgkkjcccgkkkjcccckgckgccccjkccccjkckjcccckkkkdccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgkjckkccccdjjdccccdkkgccccgkjjkjcccdkkkkkcccdjcjkcccckkgkjccccjkcccckkdkjccccdgjkccckccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkkdkkcccgkkkkgcccjkjcccccdkkkkccccgkkkkgcccgkcjkccccgkkkgcccckkccccjkkkgcccdjgkjcccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjkkkjcccgkkkkgccdkkkkjccccgkjcccccdjckkccccdkkkkcccccgkkdcccckkccccgkjgccccgkkkgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdkkkgccccccdjdcccjjkkkccccccccccccccckkdccccgkkjccccccccccccckgccccccccccccdkkjcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdgdccccccccccccccccjjcccccccccccccccgdccccccdgccccccccccccccdccccccccccccccgdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
};

View file

@ -0,0 +1,72 @@
*** fastCalClock.c Thu Jul 1 10:08:07 1999
--- wmCalClock.c Thu Jul 1 09:38:53 1999
***************
*** 272,278 ****
int GotFirstClick2, GotDoubleClick2;
int GotFirstClick3, GotDoubleClick3;
int DblClkDelay;
- int HasExecute = 0; /* controls perf optimization */
char ExecuteCommand[1024];
--- 272,277 ----
***************
*** 451,457 ****
* to catch expose events, etc...
*
*/
! if ( HasExecute == 0 || n>10){
n = 0;
--- 450,456 ----
* to catch expose events, etc...
*
*/
! if (n>10){
n = 0;
***************
*** 722,734 ****
* Redraw and wait for next update
*/
RedrawWindow();
! if( HasExecute == 1) {
! usleep(DELAY);
! } else if( ShowSeconds == 1) {
! usleep( 200000L);
! } else {
! usleep( 500000L);
! }
}
--- 721,727 ----
* Redraw and wait for next update
*/
RedrawWindow();
! usleep(DELAY);
}
***************
*** 817,823 ****
exit(-1);
}
strcpy(ExecuteCommand, argv[++i]);
- HasExecute = 1;
} else if (!strcmp(argv[i], "-g")){
--- 810,815 ----
***************
*** 975,981 ****
char Command[512];
- if( HasExecute == 0) return; /* no command specified. Ignore clicks. */
DblClkDelay = 0;
if ((xev->button == Button1) && (xev->type == ButtonPress)){
if (GotFirstClick1) GotDoubleClick1 = 1;
--- 967,972 ----

View file

@ -0,0 +1,354 @@
/*
* xutils.c - A collection of X-windows utilties for creating WindowMAker
* DockApps.
*
* This file contains alot of the lower-level X windows routines. Origins with wmppp
* (by Martijn Pieterse (pieterse@xs4all.nl)), but its been hacked up quite a bit
* and passed on from one new DockApp to the next.
*
*
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program (see the file COPYING); if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA
*
*
*
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include "xutils.h"
/*
* X11 Variables
*/
int x_fd;
XSizeHints mysizehints;
XWMHints mywmhints;
Pixel back_pix, fore_pix;
char *Geometry = "";
GC NormalGC;
XpmIcon wmgen;
Pixmap pixmask;
/*
* Colors for wmCalClock
*/
extern char TimeColor[30];
extern char BackgroundColor[30];
/*
* flush_expose
*/
static int flush_expose(Window w) {
XEvent dummy;
int i=0;
while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
i++;
return i;
}
/*
* RedrawWindow
* RedrawWindowXY
*/
void RedrawWindow(void) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
}
void RedrawWindowXY(int x, int y) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
}
/*
* copyXPMArea
* copyXBMArea
*/
void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
/*
* initXwindow
*/
void initXwindow(int argc, char *argv[]){
int i;
char *display_name = NULL;
for (i=1; argv[i]; ++i) {
if (!strcmp(argv[i], "-display")) display_name = argv[i+1];
}
if (!(display = XOpenDisplay(display_name))) {
fprintf(stderr, "%s: can't open display %s\n",
argv[0], XDisplayName(display_name));
exit(1);
}
screen = DefaultScreen(display);
Root = RootWindow(display, screen);
DisplayDepth = DefaultDepth(display, screen);
x_fd = XConnectionNumber(display);
}
/*
* openXwindow
*/
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits,
int pixmask_width, int pixmask_height) {
unsigned int borderwidth = 1;
XClassHint classHint;
char *wname = argv[0];
XTextProperty name;
XGCValues gcv;
unsigned long gcm;
int dummy=0, red, grn, blu;
XpmColorSymbol cols[10]={ {"Back", NULL, 0},
{"Color1", NULL, 0},
{"Color2", NULL, 0},
{"Color3", NULL, 0},
{"Color4", NULL, 0},
{"Color5", NULL, 0},
{"Color6", NULL, 0},
{"Color7", NULL, 0},
{"Color8", NULL, 0},
{"Color9", NULL, 0}};
/*
* Create Pixmap
*/
cols[0].pixel = getColor(BackgroundColor, 1.0000, &red, &grn, &blu);
cols[1].pixel = getBlendedColor(TimeColor, 0.1522, red, grn, blu);
cols[2].pixel = getBlendedColor(TimeColor, 0.2602, red, grn, blu);
cols[3].pixel = getBlendedColor(TimeColor, 0.3761, red, grn, blu);
cols[4].pixel = getBlendedColor(TimeColor, 0.4841, red, grn, blu);
cols[5].pixel = getBlendedColor(TimeColor, 0.5922, red, grn, blu);
cols[6].pixel = getBlendedColor(TimeColor, 0.6980, red, grn, blu);
cols[7].pixel = getBlendedColor(TimeColor, 0.7961, red, grn, blu);
cols[8].pixel = getBlendedColor(TimeColor, 0.8941, red, grn, blu);
cols[9].pixel = getBlendedColor(TimeColor, 1.0000, red, grn, blu);
wmgen.attributes.numsymbols = 10;
wmgen.attributes.colorsymbols = cols;
wmgen.attributes.exactColors = False;
wmgen.attributes.closeness = 40000;
wmgen.attributes.valuemask = XpmReturnPixels | XpmReturnExtensions | XpmColorSymbols
| XpmExactColors | XpmCloseness | XpmSize;
if (XpmCreatePixmapFromData(display, Root, pixmap_bytes,
&(wmgen.pixmap), &(wmgen.mask), &(wmgen.attributes)) != XpmSuccess){
fprintf(stderr, "Not enough free colorcells.\n");
exit(1);
}
/*
* Create a window
*/
mysizehints.flags = USSize | USPosition;
mysizehints.x = 0;
mysizehints.y = 0;
back_pix = getColor("white", 1.0, &red, &grn, &blu);
fore_pix = getColor("black", 1.0, &red, &grn, &blu);
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
mysizehints.width = 64;
mysizehints.height = 64;
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
/*
* Activate hints
*/
XSetWMNormalHints(display, win, &mysizehints);
classHint.res_name = wname;
classHint.res_class = wname;
XSetClassHint(display, win, &classHint);
/*
* Set up the xevents that you want the relevent windows to inherit
* Currently, its seems that setting KeyPress events here has no
* effect. I.e. for some you will need to Grab the focus and then return
* it after you are done...
*/
XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
| KeyPressMask | KeyReleaseMask);
XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
| KeyPressMask | KeyReleaseMask);
if (XStringListToTextProperty(&wname, 1, &name) == 0) {
fprintf(stderr, "%s: can't allocate window name\n", wname);
exit(1);
}
XSetWMName(display, win, &name);
/*
* Create Graphics Context (GC) for drawing
*/
gcm = GCForeground | GCBackground | GCGraphicsExposures;
gcv.foreground = fore_pix;
gcv.background = back_pix;
gcv.graphics_exposures = 0;
NormalGC = XCreateGC(display, Root, gcm, &gcv);
pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height);
XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
mywmhints.initial_state = WithdrawnState;
mywmhints.icon_window = iconwin;
mywmhints.icon_x = mysizehints.x;
mywmhints.icon_y = mysizehints.y;
mywmhints.window_group = win;
mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(display, win, &mywmhints);
XSetCommand(display, win, argv, argc);
XMapWindow(display, win);
}
unsigned long getColor(char *ColorName, float fac, int *red, int *grn, int *blu) {
XColor Color;
XWindowAttributes Attributes;
XGetWindowAttributes(display, Root, &Attributes);
Color.pixel = 0;
XParseColor(display, Attributes.colormap, ColorName, &Color);
Color.red = (unsigned short)(fac*(Color.red-24) + 24);
Color.blue = (unsigned short)(fac*(Color.blue-24) + 24);
Color.green = (unsigned short)(fac*(Color.green-24) + 24);
Color.flags = DoRed | DoGreen | DoBlue;
XAllocColor(display, Attributes.colormap, &Color);
*red = Color.red;
*grn = Color.green;
*blu = Color.blue;
return Color.pixel;
}
unsigned long getBlendedColor(char *ColorName, float fac, int red, int grn, int blu) {
XColor Color;
XWindowAttributes Attributes;
XGetWindowAttributes(display, Root, &Attributes);
Color.pixel = 0;
XParseColor(display, Attributes.colormap, ColorName, &Color);
Color.red = (unsigned short)(fac*(Color.red-red) + red);
Color.blue = (unsigned short)(fac*(Color.blue-grn) + grn);
Color.green = (unsigned short)(fac*(Color.green-blu) + blu);
Color.flags = DoRed | DoGreen | DoBlue;
XAllocColor(display, Attributes.colormap, &Color);
return Color.pixel;
}

View file

@ -0,0 +1,48 @@
#ifndef WMGENERAL_H_INCLUDED
#define WMGENERAL_H_INCLUDED
/*
* Typedefs
*/
typedef struct {
Pixmap pixmap;
Pixmap mask;
XpmAttributes attributes;
} XpmIcon;
/*
* Global variable
*/
Display *display;
Window Root;
Window iconwin, win;
int screen;
int DisplayDepth;
/*
* Function Prototypes
*/
void AddMouseRegion(int, int, int, int, int);
int CheckMouseRegion(int, int);
void openXwindow(int, char **, char **, char *, int, int);
void initXwindow(int, char **);
void RedrawWindow(void);
void RedrawWindowXY(int, int);
void copyXPMArea(int, int, int, int, int, int);
void copyXBMArea(int, int, int, int, int, int);
void setMaskXY(int, int);
unsigned long getColor(char *, float, int *, int *, int *);
unsigned long getBlendedColor(char *, float, int, int, int);
void RedrawWindow(void);
#endif

25
wmCalClock-1.25/TODO Normal file
View file

@ -0,0 +1,25 @@
TODO List
---------
- Add in a few more fonts... Graphite would be nice! Or EagleFeather
(its a Frank Lloyd Wright inspired font)?
- Allow fonts to be added externally via some sort of config file...
- Add alarm clock mode?
- graphical Moon-Phase Icon in Calendar section.
- Day numbers in Calendar section. This is something that I would really like myself!
- Allow Changing of fonts/colors for the main Calendar section.
- Foreign language support...
- Add indicators for Greenwich, sidereal, local sideareal time displays (right now
you dont really know what it is displaying just by looking at it)...

339
wmSMPmon-3.1/COPYING Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

26
wmSMPmon-3.1/Changelog Normal file
View file

@ -0,0 +1,26 @@
3.1
- Fixed bug where wmSMPmon would crash if no swap is enabled/present
on the system (thanks to John Schmerge for finding this!)
- Added INSTALL file (thanks to Paul Johnson for reminding me)
3.0
- Improved processing of command line options - unknown options and
missing parameters are now dealt with
- wmSMPmon now properly supports single CPU machines! On a single CPU
machine, the CPU load bar is drawn wider and only one graph style is
supported.
- man page improved and edited Makefile so man page will get installed as well
2.9.2
- Separated OS dependent code from rest of program to improve portability
2.9.1
- Adapted wmSMPmon to kernel 2.6, using code from top and
procps. kernels 2.2, 2.4 and 2.6 are now supported.

20
wmSMPmon-3.1/GREETINGS Normal file
View file

@ -0,0 +1,20 @@
Un grand merci à Ben Jarvis[ankou] <bjarvis@d.umn.edu> (wmlm) à qui j'ai
"emprunté" une grande partie du code et à
Martijn Pieterse <pieterse@xs4all.nl>, qui à permis de développer si
facilement tant de DockApps.
Aussi merci à:
- Phir <phir@gcu-squad.org>
- Izar Tarandach
- Alain Schroeder
Also, thanks to the authors/contributors of top/procps:
- James C. Warner <warnerjc@worldnet.att.net>
- Michael K. Johnson <johnsonm@redhat.com>
- Albert D. Cahalan, <albert@users.sf.net>
- Fabian Frederick
Without their code, sysinfo-linux.c would have been a lot more difficult.
Thomas Ribbrock <emgaron@gmx.net>, November 2004

11
wmSMPmon-3.1/INSTALL Normal file
View file

@ -0,0 +1,11 @@
Installation of wmSMPmon is very simple:
- cd wmSMPmon
- The default location wmSMPmon gets installed in is /usr/local/bin
(executable) and /usr/local/share/man (man page). If you'd like to
change that, you need to edit "Makefile" - both paths are defined
right at the top. The should be no need to change anything else.
- Run "make" followed by "make install". This will build and install
wmSMPmon.
That's all! :-)

40
wmSMPmon-3.1/LISEZ-MOI Normal file
View file

@ -0,0 +1,40 @@
All further changes are documented in the file "Changelog"!
Thomas Ribbrock <emgaron@ribbrock.org>, March 2005
wmSMPmon 2.2
Sert à monitorer les charges CPU d'un système bi-processeurs, ainsi que
la RAM et le SWAP utilisés.
Nouveauté 1.3 : Prise en compte du taux de rafraichissement à la ligne
de commande.
Nouveauté 1.4 : Divers bugfixes. Réécriture partielle du système de
lecture des données pour une petite économie de CPU.
Nouveauté 1.5 : Nouvelles optimisations par PhiR. <phir@gcu-squad.org>
Nouveauté 2.0 : Nouvelle interface, apparition d'un graphique qui peut
avoir trois aspects différents.
Nouveauté 2.1 : Correction de quelques bugs et mise en place d'un switch
"-smp-fake" qui permet de tester wmSMPmon sur un machine mono-processeur, ainsi
que d'un autre switch "-no-swap" qui permet de désactiver le monitoring du swap.
Nouveauté 2.2 : Nettoyage permettant la compilation sur plus
d'architectures.
Pour compiler :
# make
Pour executer :
# ./wmSMPmon
Pour installer (en tant que root) :
# make install
Par RedSeb <red_seb@yahoo.com>, 1999-2000.
http://goupil.linuxfr.org

View file

@ -0,0 +1,33 @@
#(c)1999-2003 redseb
# Adapted for wmSMPmon 2.9.x and higher: Thomas Ribbrock
# Change the following two to determine installation location
BINDIR=/usr/local/bin/
MANDIR=/usr/local/share/man/
SRC = general.c sysinfo-linux.c ../wmgeneral/wmgeneral.c wmSMPmon.c
EXE = wmSMPmon
MAN = wmSMPmon.1
OBJ = $(SRC:.c=.o)
INSTALL = /usr/bin/install
INSTALLEXEFLAGS = -m 755 -s
INSTALLMANFLAGS = -m 644
CC = gcc
CFLAGS = -Wall -O2 -g
LIB = -L/usr/X11R6/lib -lXpm -lXext -lX11
all: $(OBJ)
$(CC) -o $(EXE) $(OBJ) $(LIB)
$(OBJ): %.o : %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -rf $(EXE)
rm -rf *.o
rm -rf ../wmgeneral/*.o
install:
$(INSTALL) $(INSTALLEXEFLAGS) $(EXE) $(BINDIR)
$(INSTALL) -d $(MANDIR)/man1
$(INSTALL) $(INSTALLMANFLAGS) $(MAN) $(MANDIR)/man1

View file

@ -0,0 +1,78 @@
/*######################################################################
# #
# This file contains some general utility functions for wmSMPmon. #
# #
# All of them were taken from the program 'top' from the procps #
# suite. #
# With thanks to the author of top: #
# James C. Warner <warnerjc@worldnet.att.net> #
# #
# This file is placed under the conditions of the GNU Library #
# General Public License, version 2, or any later version. #
# See file COPYING for information on distribution conditions. #
# #
######################################################################*/
# include "standards.h"
# include "general.h"
/*
* The usual program end --
* called only by functions in this section. */
void bye_bye (int eno, const char *str)
{
fflush(stdout);
if (str) {
if (eno) perror(str);
else {
fputs(str, stderr);
eno = 1;
}
}
exit(eno);
}
/*
* This routine simply formats whatever the caller wants and
* returns a pointer to the resulting 'const char' string... */
const char *fmtmk (const char *fmts, ...)
{
static char buf[BIGBUFSIZ]; /* with help stuff, our buffer */
va_list va; /* requirements exceed 1k */
va_start(va, fmts);
vsnprintf(buf, sizeof(buf), fmts, va);
va_end(va);
return (const char *)buf;
}
/*
* Standard error handler to normalize the look of all err o/p */
void std_err (const char *str)
{
static char buf[SMLBUFSIZ];
fflush(stdout);
/* we'll use our own buffer so callers can still use fmtmk()
* and, yes the leading tab is not the standard convention,
* but the standard is wrong -- OUR msg won't get lost in
* screen clutter, like so many others! */
snprintf(buf, sizeof(buf), "\t%s: %s\n", Myname, str);
/* not to worry, he'll change our exit code to 1 due to 'buf' */
bye_bye(0, buf);
}
/*
* Handle our own memory stuff without the risk of leaving the
* user's terminal in an ugly state should things go sour. */
void *alloc_c (unsigned numb)
{
void * p;
if (!numb) ++numb;
if (!(p = calloc(1, numb)))
std_err("failed memory allocate");
return p;
}

View file

@ -0,0 +1,14 @@
#ifndef WMSMP_GENERAL_H
#define WMSMP_GENERAL_H
/*###### Definitions for general utility functions #######################*/
void bye_bye (int eno, const char *str);
const char *fmtmk (const char *fmts, ...);
void std_err (const char *str);
void *alloc_c (unsigned numb);
#endif /* WMSMP_GENERAL_H */

View file

@ -0,0 +1,56 @@
/*######################################################################
# #
# This file contains the definitions of the functions that wmSMPmon #
# uses to determine CPU load, memory and swap information. #
# All functions should be implemented by any OS dependent module #
# that is added to wmSMPmon. See sysinfo-linux.c as an example. #
# #
# (c) 2004 Thomas Ribbrock <emgaron@gmx.net> #
# #
# This file is placed under the conditions of the GNU Library #
# General Public License, version 2, or any later version. #
# See file COPYING for information on distribution conditions. #
# #
######################################################################*/
#ifndef WMSMP_STANDARDS_H
#define WMSMP_STANDARDS_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <stdarg.h>
/*###### Valeurs de test ################################################*/
#define VRAI 1
#define FAUX 0
#define OK 0
#define ERREUR -1
/*###### Buffer Sizes ###################################################*/
#define SMLBUFSIZ 256
#define BIGBUFSIZ 2048
/*###### Image Size Definitions #########################################*/
#define TAILLE_T 44 /* Width Graph */
#define HAUTEUR 31 /* Max. height of CPU Load Bar+Graph */
/* Program name used in error messages */
char *Myname;
/* NumCPUs_DoInit returns the number of CPUs present in the system and
performs any initialization necessary for the sysinfo-XXX module */
unsigned int NumCpus_DoInit(void);
/* Get_CPU_Load returns an array of CPU loads, one for each CPU, scaled
to HAUTEUR. The array is defined and allocated by the main program
and passed to the function as '*load'. The number of CPUs present
is given in 'Cpu_tot' */
unsigned int *Get_CPU_Load(unsigned int *load, unsigned int Cpu_tot);
/* return current memory/swap usage on a scale from 0-100 */
unsigned int Get_Memory(void);
unsigned int Get_Swap(void);
#endif /* WMSMP_STANDARDS_H */

View file

@ -0,0 +1,365 @@
/*######################################################################
# #
# This file contains all functions necessary to provide system #
# information on a Linux 2.2-2.6 system. #
# All routines were taken from/based on code from top and/or procps. #
# #
# With thanks to the original authors: #
# - James C. Warner <warnerjc@worldnet.att.net> #
# - Michael K. Johnson <johnsonm@redhat.com> #
# - Albert D. Cahalan, <albert@users.sf.net> #
# - Fabian Frederick #
# #
# This file is placed under the conditions of the GNU Library #
# General Public License, version 2, or any later version. #
# See file COPYING for information on distribution conditions. #
# #
######################################################################*/
#include "sysinfo-linux.h" /* include self to verify prototypes */
#include "general.h"
#include "standards.h"
#define BAD_OPEN_MESSAGE \
"Error: /proc must be mounted\n" \
" To mount /proc at boot you need an /etc/fstab line like:\n" \
" /proc /proc proc defaults\n" \
" In the meantime, mount /proc /proc -t proc\n"
#define MEMINFO_FILE "/proc/meminfo"
static int meminfo_fd = -1;
static char buf[1024];
/* assume no IO-wait stats (default kernel 2.4.x),
overridden if linux 2.5.x or 2.6.x */
static const char *States_fmts = STATES_line2x4;
/* This macro opens filename only if necessary and seeks to 0 so
* that successive calls to the functions are more efficient.
* It also reads the current contents of the file into the global buf.
*/
#define FILE_TO_BUF(filename, fd) do{ \
static int local_n; \
if (fd == -1 && (fd = open(filename, O_RDONLY)) == -1) { \
fprintf(stderr, BAD_OPEN_MESSAGE); \
fflush(NULL); \
_exit(102); \
} \
lseek(fd, 0L, SEEK_SET); \
if ((local_n = read(fd, buf, sizeof buf - 1)) < 0) { \
perror(filename); \
fflush(NULL); \
_exit(103); \
} \
buf[local_n] = '\0'; \
}while(0)
#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z)
/***********************************************/
/* get number of CPUs - max. 255 are supported */
/* also, perform some initialisation */
/* code taken from top and procps */
/***********************************************/
unsigned int NumCpus_DoInit(void)
{
long smp_num_cpus;
int linux_version_code;
static struct utsname uts;
int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */
if (uname(&uts) == -1) /* failure implies impending death */
exit(1);
if (sscanf(uts.release, "%d.%d.%d", &x, &y, &z) < 3)
fprintf(stderr, /* *very* unlikely to happen by accident */
"Non-standard uts for running kernel:\n"
"release %s=%d.%d.%d gives version code %d\n",
uts.release, x, y, z, LINUX_VERSION(x,y,z));
linux_version_code = LINUX_VERSION(x, y, z);
if (linux_version_code > LINUX_VERSION(2, 5, 41))
States_fmts = STATES_line2x5;
if (linux_version_code >= LINUX_VERSION(2, 6, 0)) // grrr... only
// some 2.6.0-testX :-(
States_fmts = STATES_line2x6;
smp_num_cpus = sysconf(_SC_NPROCESSORS_CONF); // or _SC_NPROCESSORS_ONLN
if (smp_num_cpus < 1)
{
smp_num_cpus = 1; /* SPARC glibc is buggy */
}
if (smp_num_cpus > 255)
{
/* we don't support more than 255 CPUs (well, in fact no more
than two ate the moment... */
smp_num_cpus = 255;
}
return (int)smp_num_cpus;
}
/***********************************************************************/
/*
* Copyright 1999 by Albert Cahalan; all rights reserved.
* This file may be used subject to the terms and conditions of the
* GNU Library General Public License Version 2, or any later version
* at your option, as published by the Free Software Foundation.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*/
typedef struct mem_table_struct {
const char *name; /* memory type name */
unsigned long *slot; /* slot in return struct */
} mem_table_struct;
static int compare_mem_table_structs(const void *a, const void *b){
return strcmp(((const mem_table_struct*)a)->name,((const mem_table_struct*)b)->name);
}
/* example data, following junk, with comments added:
*
* MemTotal: 61768 kB old
* MemFree: 1436 kB old
* MemShared: 0 kB old (now always zero; not calculated)
* Buffers: 1312 kB old
* Cached: 20932 kB old
* Active: 12464 kB new
* Inact_dirty: 7772 kB new
* Inact_clean: 2008 kB new
* Inact_target: 0 kB new
* Inact_laundry: 0 kB new, and might be missing too
* HighTotal: 0 kB
* HighFree: 0 kB
* LowTotal: 61768 kB
* LowFree: 1436 kB
* SwapTotal: 122580 kB old
* SwapFree: 60352 kB old
* Inactive: 20420 kB 2.5.41+
* Dirty: 0 kB 2.5.41+
* Writeback: 0 kB 2.5.41+
* Mapped: 9792 kB 2.5.41+
* Slab: 4564 kB 2.5.41+
* Committed_AS: 8440 kB 2.5.41+
* PageTables: 304 kB 2.5.41+
* ReverseMaps: 5738 2.5.41+
* SwapCached: 0 kB 2.5.??+
* HugePages_Total: 220 2.5.??+
* HugePages_Free: 138 2.5.??+
* Hugepagesize: 4096 kB 2.5.??+
*/
/* obsolete */
unsigned long kb_main_shared;
/* old but still kicking -- the important stuff */
unsigned long kb_main_buffers;
unsigned long kb_main_cached;
unsigned long kb_main_free;
unsigned long kb_main_total;
unsigned long kb_swap_free;
unsigned long kb_swap_total;
/* recently introduced */
unsigned long kb_high_free;
unsigned long kb_high_total;
unsigned long kb_low_free;
unsigned long kb_low_total;
/* 2.4.xx era */
unsigned long kb_active;
unsigned long kb_inact_laundry;
unsigned long kb_inact_dirty;
unsigned long kb_inact_clean;
unsigned long kb_inact_target;
unsigned long kb_swap_cached; /* late 2.4 only */
/* derived values */
unsigned long kb_swap_used;
unsigned long kb_main_used;
/* 2.5.41+ */
unsigned long kb_writeback;
unsigned long kb_slab;
unsigned long nr_reversemaps;
unsigned long kb_committed_as;
unsigned long kb_dirty;
unsigned long kb_inactive;
unsigned long kb_mapped;
unsigned long kb_pagetables;
static void meminfo(void){
char namebuf[16]; /* big enough to hold any row name */
mem_table_struct findme = { namebuf, NULL};
mem_table_struct *found;
char *head;
char *tail;
static const mem_table_struct mem_table[] = {
{"Active", &kb_active}, // important
{"Buffers", &kb_main_buffers}, // important
{"Cached", &kb_main_cached}, // important
{"Committed_AS", &kb_committed_as},
{"Dirty", &kb_dirty}, // kB version of vmstat nr_dirty
{"HighFree", &kb_high_free},
{"HighTotal", &kb_high_total},
{"Inact_clean", &kb_inact_clean},
{"Inact_dirty", &kb_inact_dirty},
{"Inact_laundry",&kb_inact_laundry},
{"Inact_target", &kb_inact_target},
{"Inactive", &kb_inactive}, // important
{"LowFree", &kb_low_free},
{"LowTotal", &kb_low_total},
{"Mapped", &kb_mapped}, // kB version of vmstat nr_mapped
{"MemFree", &kb_main_free}, // important
{"MemShared", &kb_main_shared}, // important
{"MemTotal", &kb_main_total}, // important
{"PageTables", &kb_pagetables}, // kB version of vmstat
// nr_page_table_pages
{"ReverseMaps", &nr_reversemaps}, // same as vmstat
// nr_page_table_pages
{"Slab", &kb_slab}, // kB version of vmstat nr_slab
{"SwapCached", &kb_swap_cached},
{"SwapFree", &kb_swap_free}, // important
{"SwapTotal", &kb_swap_total}, // important
{"Writeback", &kb_writeback}, // kB version of vmstat
// nr_writeback
};
const int mem_table_count = sizeof(mem_table)/sizeof(mem_table_struct);
FILE_TO_BUF(MEMINFO_FILE,meminfo_fd);
kb_inactive = ~0UL;
head = buf;
for(;;){
tail = strchr(head, ':');
if(!tail) break;
*tail = '\0';
if(strlen(head) >= sizeof(namebuf)){
head = tail+1;
goto nextline;
}
strcpy(namebuf,head);
found = bsearch(&findme, mem_table, mem_table_count,
sizeof(mem_table_struct), compare_mem_table_structs
);
head = tail+1;
if(!found) goto nextline;
*(found->slot) = strtoul(head,&tail,10);
nextline:
tail = strchr(head, '\n');
if(!tail) break;
head = tail+1;
}
if(!kb_low_total){ /* low==main except with large-memory support */
kb_low_total = kb_main_total;
kb_low_free = kb_main_free;
}
if(kb_inactive==~0UL){
kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry;
}
kb_swap_used = kb_swap_total - kb_swap_free;
kb_main_used = kb_main_total - kb_main_free;
}
/*************************************************************************/
/*
* This guy's modeled on libproc's 'five_cpu_numbers' function except
* we preserve all cpu data in our CPU_t array which is organized
* as follows:
* cpus[0] thru cpus[n] == tics for each separate cpu
* cpus[Cpu_tot] == tics from the 1st /proc/stat line */
static CPU_t *cpus_refresh (CPU_t *cpus, unsigned int Cpu_tot)
{
static FILE *fp = NULL;
int i;
// enough for a /proc/stat CPU line (not the intr line)
char buf[SMLBUFSIZ];
/* by opening this file once, we'll avoid the hit on minor page faults
(sorry Linux, but you'll have to close it for us) */
if (!fp) {
if (!(fp = fopen("/proc/stat", "r")))
std_err(fmtmk("Failed /proc/stat open: %s", strerror(errno)));
/* note: we allocate one more CPU_t than Cpu_tot so that the
last slot can hold tics representing the /proc/stat cpu
summary (the first line read) -- that slot supports our
View_CPUSUM toggle */
cpus = alloc_c((1 + Cpu_tot) * sizeof(CPU_t));
}
rewind(fp);
fflush(fp);
// first value the last slot with the cpu summary line
if (!fgets(buf, sizeof(buf), fp)) std_err("failed /proc/stat read");
cpus[Cpu_tot].x = 0; // FIXME: can't tell by kernel version number
cpus[Cpu_tot].y = 0; // FIXME: can't tell by kernel version number
if (4 > sscanf(buf, CPU_FMTS_JUST1, &cpus[Cpu_tot].u, &cpus[Cpu_tot].n, &cpus[Cpu_tot].s, &cpus[Cpu_tot].i, &cpus[Cpu_tot].w, &cpus[Cpu_tot].x, &cpus[Cpu_tot].y))
std_err("failed /proc/stat read");
// and just in case we're 2.2.xx compiled without SMP support...
if (1 == Cpu_tot)
{
/* do it "manually", otherwise we overwrite charge and total */
cpus[0].u = cpus[1].u;
cpus[0].n = cpus[1].n;
cpus[0].s = cpus[1].s;
cpus[0].i = cpus[1].i;
cpus[0].w = cpus[1].w;
cpus[0].x = cpus[1].x;
cpus[0].y = cpus[1].y;
}
// now value each separate cpu's tics
for (i = 0; 1 < Cpu_tot && i < Cpu_tot; i++) {
if (!fgets(buf, sizeof(buf), fp)) std_err("failed /proc/stat read");
cpus[i].x = 0; // FIXME: can't tell by kernel version number
cpus[i].y = 0; // FIXME: can't tell by kernel version number
if (4 > sscanf(buf, CPU_FMTS_MULTI, &cpus[i].u, &cpus[i].n, &cpus[i].s, &cpus[i].i, &cpus[i].w, &cpus[i].x, &cpus[i].y))
std_err("failed /proc/stat read");
}
return cpus;
}
unsigned int *Get_CPU_Load(unsigned int *load, unsigned int Cpu_tot)
{
static CPU_t *smpcpu = NULL;
unsigned int j;
register unsigned long charge, total = 0 ;
smpcpu = cpus_refresh(smpcpu, Cpu_tot);
for(j = 0 ; j < Cpu_tot ; j ++)
{
charge = smpcpu[j].u+smpcpu[j].s+smpcpu[j].n;
total = charge + smpcpu[j].i;
/* scale cpu to a maximum of HAUTEUR */
load[j] = ((HAUTEUR * (charge - smpcpu[j].charge)) / (total - smpcpu[j].total + 0.001)) + 1 ;
smpcpu[j].total = total ;
smpcpu[j].charge = charge ;
}
return load;
}
unsigned int Get_Memory(void)
{
meminfo();
return (kb_main_used - kb_main_cached) / (kb_main_total / 100) ;
/* should be between 0 and 100 now */
}
unsigned int Get_Swap(void)
{
/* returns swap usage as value between 0 and 100 OR 999 if no swap
* present */
meminfo();
return ( kb_swap_total == 0 ? 999 : kb_swap_used / (kb_swap_total / 100) );
}

View file

@ -0,0 +1,33 @@
#ifndef LINUX_SYSINFO_H
#define LINUX_SYSINFO_H
#include <string.h>
#include <fcntl.h>
#include <sys/utsname.h>
/* These are the possible fscanf formats used in /proc/stat
reads during history processing.
( 5th number only for Linux 2.5.41 and above ) */
#define CPU_FMTS_JUST1 "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu"
#define CPU_FMTS_MULTI "cpu%*d %Lu %Lu %Lu %Lu %Lu %Lu %Lu"
/* Summary Lines specially formatted string(s) -- see 'show_special' for syntax details + other cautions. */
#define STATES_line2x4 "%s\03" \
" %#5.1f%% \02user,\03 %#5.1f%% \02system,\03 %#5.1f%% \02nice,\03 %#5.1f%% \02idle\03\n"
#define STATES_line2x5 "%s\03" \
" %#5.1f%% \02user,\03 %#5.1f%% \02system,\03 %#5.1f%% \02nice,\03 %#5.1f%% \02idle,\03 %#5.1f%% \02IO-wait\03\n"
#define STATES_line2x6 "%s\03" \
" %#4.1f%% \02us,\03 %#4.1f%% \02sy,\03 %#4.1f%% \02ni,\03 %#4.1f%% \02id,\03 %#4.1f%% \02wa,\03 %#4.1f%% \02hi,\03 %#4.1f%% \02si\03\n"
/* These typedefs attempt to ensure consistent 'ticks' handling */
typedef unsigned long long TIC_t;
/* This structure stores a frame's cpu tics used in history
calculations. It exists primarily for SMP support but serves
all environments. */
typedef struct CPU_t {
TIC_t u, n, s, i, w, x, y; // as represented in /proc/stat
TIC_t charge, total;
} CPU_t;
#endif /* SYSINFO_H */

View file

@ -0,0 +1,51 @@
.TH WMSMPMON 1
.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
.\" other parms are allowed: see man(7), man(1)
.SH NAME
wmSMPmon \- Window Maker System Monitor
.SH SYNOPSIS
.B wmSMPmon
.I "[options]"
.SH "DESCRIPTION"
.B wmSMPmon
is a Window Maker dock application that displays the following
information about the system:
.TP
- Current CPU utilization of up to two CPUs
.TP
- Up to two minutes history of CPU utilization
.TP
- Current memory usage
.TP
- Current swap usage
.PP
On dual CPU systems,
.B wmSMPmon
has three different styles for the utilization graph. To toggle between them
just click into the graph.
.SH OPTIONS
All options start with one dash.
.TP
.B \-h
Show summary of options.
.TP
.B \-r REFRESH_RATE
Set the refresh rate of the graph in microseconds. The default is 250000
(a quarter of a second).
.TP
.B \-g GRAPH_STYLE
Start using graph style #[1-3] (only on dual CPU systems). Style 1
shows the utiliziation in one graph, while 2 and 3 are split in two
little graphs. Style 2 shows the two graphs on top of each
other. Style 3 uses a mirror like type. The default style is 1, which
is also the style used on single CPU systems.
.TP
.B \-no-swap
Do not monitor swap.
.SH "SEE ALSO"
wmaker(1x)
.SH AUTHOR
This manual page was originally written by Alain Schroeder
<alain@debian.org> and adapted for wmSMPmon 3 by Thomas Ribbrock
<emgaron@gmx.net>

View file

@ -0,0 +1,353 @@
/***************************************************************************
wmSMPmon III - Window Maker system monitor
VERSION : 3.1
DATE : 2005-11-06
ORIGINAL AUTHORS : redseb <redseb@goupilfr.org> and
PhiR <phir@gcu-squad.org>
CONTRIBUTORS : Alain Schröder <alain@parkautomat.net>
CURRENT MAINTAINER: Thomas Ribbrock <emgaron@gmx.net>
****************************************************************************
This file is placed under the conditions of the GNU Library
General Public License, version 2, or any later version.
See file COPYING for information on distribution conditions.
***************************************************************************/
#include <string.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include "../wmgeneral/wmgeneral.h"
#include "wmSMPmon_master.xpm"
#include "wmSMPmon_mask.xbm"
#include "general.h"
#include "standards.h"
#include "sysinfo-linux.h"
#define VERSION "3.1"
/*###### Dividers for redraw-loops ######################################*/
#define DIV1 6
#define DIV2 10
/*###### Messages #######################################################*/
#define MSG_NO_SWAP "No swap mode : Swap is not monitored.\n"
/*###### Funcition definitions ##########################################*/
void usage(int cpus, const char *str);
/*###### MAIN PROGRAM ###################################################*/
int main(int argc, char **argv)
{
XEvent Event ;
unsigned int t0[TAILLE_T], /* history for CPU 0 -> Graph */
t1[TAILLE_T], /* history for CPU 1 -> Graph */
tm[TAILLE_T], /* history for CPU 0+1 -> Graph */
c1 = 6,
c2 = 9,
etat = 1,
lecture = 1,
delay = 250000,
delta = 0,
load = 0,
load0o = 0,
load1o = 0,
no_swap = FAUX,
draw_graph = FAUX,
NumCPUs, /* number of CPUs */
i = 0, /* counter */
mem = 0, /* current memory/swap scaled to 0-100 */
prec_mem = 0, /* memory from previous round */
prec_swap = 0, /* swap from previous round */
load_width = 3; /* width of load bar: 3 for SMP, 8 for UP */
unsigned long load0t=0, load1t=0 ;
unsigned int *CPU_Load; /* CPU load per CPU array */
/********** Initialisation **********/
NumCPUs = NumCpus_DoInit();
CPU_Load = alloc_c((NumCPUs) * sizeof(int));
if(NumCPUs == 1)
{
load_width = 8;
}
else
{
load_width = 3;
}
Myname = strrchr(argv[0], '/');
if (Myname) ++Myname; else Myname = argv[0];
/* process command line args */
i = 1; /* skip program name (i=0) */
while(argc > i)
{
if(!strncmp(argv[i], "-r", 2))
{
i ++ ;
if(i == argc)
{
/* parameter missing! */
usage(NumCPUs, "no refresh rate given when using -r!");
}
else
{
delay = atol(argv[i]) ;
}
i ++ ;
continue;
}
if(!strncmp(argv[i], "-h", 2))
{
usage(NumCPUs, NULL) ;
}
if(!strncmp(argv[i], "-g", 2) && NumCPUs > 1)
{
/* we only support this on SMP systems */
i ++ ;
if(i == argc)
{
/* parameter missing! */
usage(NumCPUs, "no graph style given when using -g!");
}
else
{
etat = atoi(argv[i]) ;
}
if(1 > etat || etat > 3)
usage(NumCPUs, "Unknown graph style") ;
i ++ ;
continue;
}
if(!strncmp(argv[i], "-no-swap", 8))
{
puts(MSG_NO_SWAP) ;
no_swap = VRAI ;
i ++ ;
continue;
}
/* if we get here, we found an illegal option */
usage(NumCPUs, "Illegal option!");
}
/* open initial window */
if(NumCPUs == 1)
{
/* we only have a single CPU - change the mask accordingly
NOTE: The for loop was derived from the differences between
wmSMPmon_mask.xbm and wmSMPmon_mask-single.xbm.
wmSMPmon_mask-single.xbm as such is NOT used in this
program! */
for (i = 33; i <= 289; i = i+8)
{
wmSMPmon_mask_bits[i] = 0xDF;
}
}
openXwindow(argc,argv,wmSMPmon_master_xpm,wmSMPmon_mask_bits,wmSMPmon_mask_width,wmSMPmon_mask_height) ;
if(NumCPUs >= 2)
{
/* we have two CPUs -> draw separator between CPU load bars */
copyXPMArea(12, 4, 2, HAUTEUR + 2, 7, 4) ;
}
delay = delay / 2 ;
for(i = 0 ; i < TAILLE_T ; i ++)
t0[i] = 0 ;
for(i = 0 ; i < TAILLE_T ; i ++)
t1[i] = 0 ;
for(i = 0 ; i < TAILLE_T ; i ++)
tm[i] = 0 ;
/* -no-swap option was given */
if(no_swap)
copyXPMArea(60, 63, 60, 10, 6, 50) ;
/* MAIN LOOP */
while(VRAI)
{
if(lecture)
{
CPU_Load = Get_CPU_Load(CPU_Load, NumCPUs);
load = CPU_Load[0];
load0t = load0t + load ;
if(load != load0o)
{
/* redraw only if cpu load changed */
delta = HAUTEUR - load ;
copyXPMArea(108, 0, load_width, HAUTEUR, 4, 5) ;
copyXPMArea(108, delta + 32, load_width, load, 4, 5 + delta) ;
load0o = load;
}
if(NumCPUs >= 2)
{
/* we have two CPUs -> do CPU 1 */
/* FIXME: What about more CPUs? */
load = CPU_Load[1];
if(load != load1o)
{
/* redraw only if cpu load changed */
delta = HAUTEUR - load ;
copyXPMArea(108, 0, 3, HAUTEUR, 9, 5) ;
copyXPMArea(108, delta + 32, 3, load, 9, 5 + delta) ;
load1o = load;
}
}
/* we have to set load1t in any case to get the correct
graph below. With only one CPU, 'load' will still be
CPU_Load[0], on a SMP system, it will be CPU_Load[1]. */
load1t = load1t + load ;
if(c1 > DIV1)
{
mem = Get_Memory();
if(mem != prec_mem)
{
/* redraw only if mem changed */
copyXPMArea(30, 63, 30, 8, 29, 39) ;
copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39) ;
prec_mem = mem ;
}
if(!no_swap)
{
mem = Get_Swap();
if(mem != prec_swap)
{
/* redraw if there was a change */
if(mem == 999)
{
/* swap is disabled => show "none" */
copyXPMArea(60, 63, 60, 10, 6, 50);
}
else
{
/* draw swap usage */
copyXPMArea(30, 63, 30, 8, 29, 50) ;
copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50) ;
}
prec_swap = mem ;
}
}
c1 = 0;
}
if(c2 > DIV2)
draw_graph = VRAI ;
if(draw_graph)
{
for(i = 1 ; i < TAILLE_T ; i ++)
{
t0[i - 1] = t0[i] ;
t1[i - 1] = t1[i] ;
tm[i - 1] = tm[i] ;
}
if((t0[TAILLE_T - 1] = load0t / c2) > HAUTEUR)
t0[TAILLE_T - 1] = HAUTEUR ;
if((t1[TAILLE_T - 1] = load1t / c2) > HAUTEUR)
t1[TAILLE_T - 1] = HAUTEUR ;
if((tm[TAILLE_T - 1] = (load0t + load1t) / (2 * c2)) > HAUTEUR)
tm[TAILLE_T - 1] = HAUTEUR ;
load0t = 0 ;
load1t = 0 ;
/* draw graph */
switch(etat)
{
case 1 :
copyXPMArea(64, 32, TAILLE_T, HAUTEUR, 15, 5) ;
for(i = 0 ; i < TAILLE_T ; i ++)
copyXPMArea(116, 0, 1, tm[i], 15 + i, HAUTEUR + 5 - tm[i]) ;
break ;
case 2 :
copyXPMArea(64, 0, TAILLE_T, HAUTEUR, 15, 5) ;
for(i = 0 ; i < TAILLE_T ; i ++)
copyXPMArea(116, 0, 1, t0[i]/2, 15 + i, HAUTEUR/2 + 5 - t0[i]/2) ;
for(i = 0 ; i < TAILLE_T ; i ++)
copyXPMArea(116, 0, 1, t1[i]/2, 15 + i, HAUTEUR/2 + 21 - t1[i]/2) ;
break ;
case 3 :
copyXPMArea(64, 0, TAILLE_T, HAUTEUR, 15, 5) ;
for(i = 0 ; i < TAILLE_T ; i ++)
copyXPMArea(116, 0, 1, t0[i]/2, 15 + i, HAUTEUR/2 + 5 - t0[i]/2) ;
for(i = 0 ; i < TAILLE_T ; i ++)
copyXPMArea(117, (HAUTEUR - t1[i])/2, 1, t1[i]/2, 15 + i, HAUTEUR/2 + 6) ;
break ;
}
c2 = 0 ;
draw_graph = FAUX ;
}
c1 ++ ;
c2 ++ ;
}
lecture = 1 - lecture ;
RedrawWindow() ;
if(NumCPUs >= 2 && XCheckMaskEvent(display, ButtonPressMask, &Event))
{
/* changing graph style not supported on single CPU systems */
if(Event.type == ButtonPress)
{
if((etat ++) >= 3)
etat = 1 ;
draw_graph = VRAI ;
lecture = VRAI ;
}
}
usleep(delay);
}
}
/*###### Usage Message ##################################################*/
void usage(int cpus, const char *str)
{
fflush(stdout);
if (str)
{
fprintf(stderr, "\nERROR: %s\n", str);
}
fputs("\nwmSMPmon "VERSION" - display system load (", stderr);
if(cpus == 1)
{
fputs("uniprocessor system)\n\n", stderr);
}
else
{
fputs("(multiprocessor system)\n\n", stderr);
}
fputs("Options : -h this help screen.\n"
" -r RATE refresh rate (in microseconds, default 250000).\n", stderr);
if(cpus > 1)
{
fputs(" -g STYLE graph style (try 2 or 3, default is 1).\n", stderr);
}
fputs(" -no-swap don't monitore swap size.\n\n"
"<redseb@goupilfr.org> http://goupilfr.org\n"
"<phir@gcu-squad.org> http://gcu-squad.org\n"
"<emgaron@gmx.net> http://www.ribbrock.org\n",
stderr) ;
exit(OK) ;
}

View file

@ -0,0 +1,46 @@
#define wmSMPmon_mask_width 64
#define wmSMPmon_mask_height 63
static unsigned char wmSMPmon_mask_single_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View file

@ -0,0 +1,46 @@
#define wmSMPmon_mask_width 64
#define wmSMPmon_mask_height 63
static char wmSMPmon_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f,
0xf0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xf3,
0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View file

@ -0,0 +1,143 @@
/* XPM */
static char * wmSMPmon_master_xpm[] = {
"118 71 69 1",
" c #00000000FFFF",
". c #202020202020",
"X c #60601B1B0000",
"o c #000049494141",
"O c #2020B6B6AEAE",
"+ c #5F5F1D1D0000",
"@ c #00007D7D7171",
"# c #5D5D1E1E0000",
"$ c #5B5B1F1F0000",
"% c #000000000000",
"& c #595920200000",
"* c #C7C7C7C7C7C7",
"= c #575721210000",
"- c #555522220000",
"; c #535323230000",
": c #515124240000",
"> c #4F4F25250000",
", c #4D4D26260000",
"< c #4C4C27270000",
"1 c #4A4A28280000",
"2 c #484829290000",
"3 c #46462A2A0000",
"4 c #44442B2B0000",
"5 c #42422D2D0000",
"6 c #40402E2E0000",
"7 c #3E3E2F2F0000",
"8 c #3C3C30300000",
"9 c #3B3B31310000",
"0 c #393932320000",
"q c #373733330000",
"w c #353534340000",
"e c #333335350000",
"r c #313136360000",
"t c #2F2F37370000",
"y c #2D2D38380000",
"u c #2B2B39390000",
"i c #29293A3A0000",
"p c #C7C72F2F0000",
"a c #C2C234340000",
"s c #BDBD39390000",
"d c #B8B83E3E0000",
"f c #B3B342420000",
"g c #AFAF47470000",
"h c #AAAA4C4C0000",
"j c #27273B3B0000",
"k c #A5A551510000",
"l c #A0A055550000",
"z c #9C9C5A5A0000",
"x c #97975F5F0000",
"c c #929264640000",
"v c #8D8D68680000",
"b c #89896D6D0000",
"n c #848472720000",
"m c #7F7F77770000",
"M c #7A7A7B7B0000",
"N c #757580800000",
"B c #717185850000",
"V c #6C6C89890000",
"C c #67678E8E0000",
"Z c #626293930000",
"A c #5E5E98980000",
"S c #59599C9C0000",
"D c #5454A1A10000",
"F c #4F4FA6A60000",
"G c #4B4BABAB0000",
"H c #4646AFAF0000",
"J c #4141B4B40000",
"K c #3737BEBE0000",
"L c #3C3CB9B90000",
" ............................................XXXXXXXXoO",
" ............................................++++++++@O",
" ............................................########OO",
" ............................................$$$$$$$$OO",
" %%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ............................................&&&&&&&&OO",
" XXXXXXXX* %............................................* ............................................========OO",
" ++++++++* %............................................* ............................................--------OO",
" ########* %............................................* ............................................;;;;;;;;OO",
" $$$$$$$$* %............................................* ............................................::::::::OO",
" &&&&&&&&* %............................................* ............................................>>>>>>>>OO",
" ========* %............................................* ............................................,,,,,,,,OO",
" --------* %............................................* ............................................<<<<<<<<OO",
" ;;;;;;;;* %............................................* ............................................11111111OO",
" ::::::::* %............................................* ............................................22222222O@",
" >>>>>>>>* %............................................* ............................................33333333Oo",
" ,,,,,,,,* %............................................* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@44444444O ",
" <<<<<<<<* %............................................* ............................................55555555O ",
" 11111111* %............................................* ............................................66666666O ",
" 22222222* %............................................* ............................................77777777O ",
" 33333333* %............................................* ............................................88888888O ",
" 44444444* %............................................* ............................................99999999O ",
" 55555555* %............................................* ............................................00000000O ",
" 66666666* %............................................* ............................................qqqqqqqqO ",
" 77777777* %............................................* ............................................wwwwwwwwO ",
" 88888888* %............................................* ............................................eeeeeeeeO ",
" 99999999* %............................................* ............................................rrrrrrrrO ",
" 00000000* %............................................* ............................................ttttttttO ",
" qqqqqqqq* %............................................* ............................................yyyyyyyyO ",
" wwwwwwww* %............................................* ............................................uuuuuuuuO ",
" eeeeeeee* %............................................* ............................................iiiiiiiiO ",
" rrrrrrrr* %............................................* ............................................iiiiiiiiO ",
" tttttttt* %............................................* ",
" yyyyyyyy* %............................................* ............................................pppppppp ",
" uuuuuuuu* %............................................* ............................................aaaaaaaa ",
" uuuuuuuu* %............................................* ............................................ssssssss ",
" iiiiiiii* %............................................* ............................................dddddddd ",
" ********* ********************************************** ............................................ffffffff ",
" ............................................gggggggg ",
" %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ............................................hhhhhhhh ",
" %.OoooO.@OOO@.OoooO..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................kkkkkkkk ",
" %.OO.OO.O...o.OO.OO..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................llllllll ",
" %.O.O.O.O...o.O.O.O..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................zzzzzzzz ",
" %.@ooo@.@OOO@.@ooo@..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................xxxxxxxx ",
" %.O...O.O...o.O...O..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................cccccccc ",
" %.O...O.O...o.O...O..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................vvvvvvvv ",
" %.@ooo@.@OOO@.@ooo@..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................bbbbbbbb ",
" %....................* %jiuytrewq0987654321<,>:;-=&$#+* ............................................nnnnnnnn ",
" ********************** ******************************** ............................................mmmmmmmm ",
" ............................................MMMMMMMM ",
" %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ............................................NNNNNNNN ",
" %.@OOO@.@ooo@.@OOO@..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................BBBBBBBB ",
" %.O...o.O...O.O...O..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................VVVVVVVV ",
" %.O...o.O...O.O...O..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................CCCCCCCC ",
" %.@OOO@.@ooo@.@OOO@..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................ZZZZZZZZ ",
" %.o...O.O.O.O.O...o..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................AAAAAAAA ",
" %.o...O.OO.OO.O...o..* %jiuytrewq0987654321<,>:;-=&$#+* ............................................SSSSSSSS ",
" %.@OOO@.OoooO.@ooo...* %jiuytrewq0987654321<,>:;-=&$#+* ............................................DDDDDDDD ",
" %....................* %jiuytrewq0987654321<,>:;-=&$#+* ............................................FFFFFFFF ",
" ********************** ******************************** ............................................GGGGGGGG ",
" ............................................HHHHHHHH ",
" ............................................JJJJJJJJ ",
" ............................................KKKKKKKK ",
" ............................................KKKKKKKK ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+@OOO@.@ooo@.@OOO@..* %jiuOooo@q@OOO@5Oooo@,@OOOO&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+O...o.O...O.O...O..* %jiuOOreOqO987O5OO21O,O:;-o&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+O...o.O...O.O...O..* %jiuOtOeOqO987O5O3O1O,O:;-o&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+@OOO@.@ooo@.@OOO@..* %jiuOooOOqOoooO5OooOO,OOOOo&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+o...O.O.O.O.O...o..* %jiuOtreOqO987O5O321O,O:;-o&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+o...O.OO.OO.O...o..* %jiuOtreOqO987O5O321O,O:;-o&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+@OOO@.OoooO.@ooo...* %jiu@oooOq@OOO@5@oooO,@OOOO&$#+* ",
"KLJHGFDSAZCVBNMmnbvcxzlkhgfdsajiuytrewq0987654321<,>:;-=&$#+...................* %jiuytrewq0987654321<,>:;-=&$#+* "};

View file

@ -0,0 +1,493 @@
/*
Best viewed with vim5, using ts=4
wmgeneral was taken from wmppp.
It has a lot of routines which most of the wm* programs use.
------------------------------------------------------------
Author: Martijn Pieterse (pieterse@xs4all.nl)
---
CHANGES:
---
14/09/1998 (Dave Clark, clarkd@skyia.com)
* Updated createXBMfromXPM routine
* Now supports >256 colors
11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* Removed a bug from parse_rcfile. You could
not use "start" in a command if a label was
also start.
* Changed the needed geometry string.
We don't use window size, and don't support
negative positions.
03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* Added parse_rcfile2
02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* Added -geometry support (untested)
28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* Added createXBMfromXPM routine
* Saves a lot of work with changing xpm's.
02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon
* debugged the parse_rc file.
30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
* Ripped similar code from all the wm* programs,
and put them in a single file.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include "wmgeneral.h"
/*****************/
/* X11 Variables */
/*****************/
Window Root;
int screen;
int x_fd;
int d_depth;
XSizeHints mysizehints;
XWMHints mywmhints;
Pixel back_pix, fore_pix;
char *Geometry = "";
Window iconwin, win;
GC NormalGC;
XpmIcon wmgen;
Pixmap pixmask;
/*****************/
/* Mouse Regions */
/*****************/
typedef struct {
int enable;
int top;
int bottom;
int left;
int right;
} MOUSE_REGION;
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
/***********************/
/* Function Prototypes */
/***********************/
static void GetXPM(XpmIcon *, char **);
static Pixel GetColor(char *);
void RedrawWindow(void);
void AddMouseRegion(int, int, int, int, int);
int CheckMouseRegion(int, int);
/*****************************************************************************\
|* parse_rcfile *|
\*****************************************************************************/
void parse_rcfile(const char *filename, rckeys *keys) {
char *p,*q;
char temp[128];
char *tokens = " :\t\n";
FILE *fp;
int i,key;
fp = fopen(filename, "r");
if (fp) {
while (fgets(temp, 128, fp)) {
key = 0;
q = strdup(temp);
q = strtok(q, tokens);
while (key >= 0 && keys[key].label) {
if ((!strcmp(q, keys[key].label))) {
p = strstr(temp, keys[key].label);
p += strlen(keys[key].label);
p += strspn(p, tokens);
if ((i = strcspn(p, "#\n"))) p[i] = 0;
free(*keys[key].var);
*keys[key].var = strdup(p);
key = -1;
} else key++;
}
free(q);
}
fclose(fp);
}
}
/***************************************************************************\
|* parse_rcfile2 *|
\***************************************************************************/
void parse_rcfile2(const char *filename, rckeys2 *keys) {
char *p;
char temp[128];
char *tokens = " :\t\n";
FILE *fp;
int i,key;
char *family = NULL;
fp = fopen(filename, "r");
if (fp) {
while (fgets(temp, 128, fp)) {
key = 0;
while (key >= 0 && keys[key].label) {
if ((p = strstr(temp, keys[key].label))) {
p += strlen(keys[key].label);
p += strspn(p, tokens);
if ((i = strcspn(p, "#\n"))) p[i] = 0;
free(*keys[key].var);
*keys[key].var = strdup(p);
key = -1;
} else key++;
}
}
fclose(fp);
}
free(family);
}
/***************************************************************************\
|* GetXPM *|
\***************************************************************************/
static void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) {
XWindowAttributes attributes;
int err;
/* For the colormap */
XGetWindowAttributes(display, Root, &attributes);
wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, &(wmgen->pixmap),
&(wmgen->mask), &(wmgen->attributes));
if (err != XpmSuccess) {
fprintf(stderr, "Not enough free colorcells.\n");
exit(1);
}
}
/***************************************************************************\
|* GetColor *|
\***************************************************************************/
static Pixel GetColor(char *name) {
XColor color;
XWindowAttributes attributes;
XGetWindowAttributes(display, Root, &attributes);
color.pixel = 0;
if (!XParseColor(display, attributes.colormap, name, &color)) {
fprintf(stderr, "wm.app: can't parse %s.\n", name);
} else if (!XAllocColor(display, attributes.colormap, &color)) {
fprintf(stderr, "wm.app: can't allocate %s.\n", name);
}
return color.pixel;
}
/***************************************************************************\
|* flush_expose *|
\***************************************************************************/
static int flush_expose(Window w) {
XEvent dummy;
int i=0;
while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
i++;
return i;
}
/***************************************************************************\
|* RedrawWindow *|
\***************************************************************************/
void RedrawWindow(void) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC,
0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC,
0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0);
}
/***************************************************************************\
|* RedrawWindowXY *|
\***************************************************************************/
void RedrawWindowXY(int x, int y) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC,
x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC,
x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0);
}
/***************************************************************************\
|* AddMouseRegion *|
\***************************************************************************/
void AddMouseRegion(int index, int left, int top, int right, int bottom) {
if (index < MAX_MOUSE_REGION) {
mouse_region[index].enable = 1;
mouse_region[index].top = top;
mouse_region[index].left = left;
mouse_region[index].bottom = bottom;
mouse_region[index].right = right;
}
}
/***************************************************************************\
|* CheckMouseRegion *|
\***************************************************************************/
int CheckMouseRegion(int x, int y) {
int i;
int found;
found = 0;
for (i=0; i<MAX_MOUSE_REGION && !found; i++) {
if (mouse_region[i].enable &&
x <= mouse_region[i].right &&
x >= mouse_region[i].left &&
y <= mouse_region[i].bottom &&
y >= mouse_region[i].top)
found = 1;
}
if (!found) return -1;
return (i-1);
}
/***************************************************************************\
|* createXBMfromXPM *|
\***************************************************************************/
void createXBMfromXPM(char *xbm, char **xpm, int sx, int sy) {
int i,j,k;
int width, height, numcol, depth;
int zero=0;
unsigned char bwrite;
int bcount;
int curpixel;
sscanf(*xpm, "%d %d %d %d", &width, &height, &numcol, &depth);
for (k=0; k!=depth; k++)
{
zero <<=8;
zero |= xpm[1][k];
}
for (i=numcol+1; i < numcol+sy+1; i++) {
bcount = 0;
bwrite = 0;
for (j=0; j<sx*depth; j+=depth) {
bwrite >>= 1;
curpixel=0;
for (k=0; k!=depth; k++)
{
curpixel <<=8;
curpixel |= xpm[i][j+k];
}
if ( curpixel != zero ) {
bwrite += 128;
}
bcount++;
if (bcount == 8) {
*xbm = bwrite;
xbm++;
bcount = 0;
bwrite = 0;
}
}
}
}
/***************************************************************************\
|* copyXPMArea *|
|* *|
|* copies pixel area from master XPM to application window *|
|* *|
|* x,y: first corner of area to be copied from master XPM *|
|* sx,sy: second corner of area to be copied from master XPM *|
|* dx,dy: first corner of target area *|
\***************************************************************************/
void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
/***************************************************************************\
|* copyXBMArea *|
|* *|
|* copies pixel area from XBM to master XPM?!?!? *|
|* *|
|* x,y: first corner of area to be copied from XBM *|
|* sx,sy: width and height of area to be copied from XBM *|
|* dx,dy: first corner of target area *|
\***************************************************************************/
void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
/***************************************************************************\
|* setMaskXY *|
\***************************************************************************/
void setMaskXY(int x, int y) {
XShapeCombineMask(display, win, ShapeBounding, x, y, pixmask, ShapeSet);
XShapeCombineMask(display, iconwin, ShapeBounding, x, y, pixmask, ShapeSet);
}
/***************************************************************************\
|* openXwindow *|
\***************************************************************************/
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) {
unsigned int borderwidth = 1;
XClassHint classHint;
char *display_name = NULL;
char *wname = argv[0];
XTextProperty name;
XGCValues gcv;
unsigned long gcm;
char *geometry = NULL;
int dummy=0;
int i, wx, wy;
for (i=1; argv[i]; i++) {
if (!strcmp(argv[i], "-display")) {
display_name = argv[i+1];
i++;
}
if (!strcmp(argv[i], "-geometry")) {
geometry = argv[i+1];
i++;
}
}
if (!(display = XOpenDisplay(display_name))) {
fprintf(stderr, "%s: can't open display %s\n",
wname, XDisplayName(display_name));
exit(1);
}
screen = DefaultScreen(display);
Root = RootWindow(display, screen);
d_depth = DefaultDepth(display, screen);
x_fd = XConnectionNumber(display);
/* Convert XPM to XImage */
GetXPM(&wmgen, pixmap_bytes);
/* Create a window to hold the stuff */
mysizehints.flags = USSize | USPosition;
mysizehints.x = 0;
mysizehints.y = 0;
back_pix = GetColor("white");
fore_pix = GetColor("black");
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
mysizehints.width = 64;
mysizehints.height = 64;
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
/* Activate hints */
XSetWMNormalHints(display, win, &mysizehints);
classHint.res_name = wname;
classHint.res_class = wname;
XSetClassHint(display, win, &classHint);
XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask);
if (XStringListToTextProperty(&wname, 1, &name) == 0) {
fprintf(stderr, "%s: can't allocate window name\n", wname);
exit(1);
}
XSetWMName(display, win, &name);
/* Create GC for drawing */
gcm = GCForeground | GCBackground | GCGraphicsExposures;
gcv.foreground = fore_pix;
gcv.background = back_pix;
gcv.graphics_exposures = 0;
NormalGC = XCreateGC(display, Root, gcm, &gcv);
/* ONLYSHAPE ON */
pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height);
XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
/* ONLYSHAPE OFF */
mywmhints.initial_state = WithdrawnState;
mywmhints.icon_window = iconwin;
mywmhints.icon_x = mysizehints.x;
mywmhints.icon_y = mysizehints.y;
mywmhints.window_group = win;
mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(display, win, &mywmhints);
XSetCommand(display, win, argv, argc);
XMapWindow(display, win);
if (geometry) {
if (sscanf(geometry, "+%d+%d", &wx, &wy) != 2) {
fprintf(stderr, "Bad geometry string.\n");
exit(1);
}
XMoveWindow(display, win, wx, wy);
}
}

View file

@ -0,0 +1,59 @@
#ifndef WMGENERAL_H_INCLUDED
#define WMGENERAL_H_INCLUDED
/***********/
/* Defines */
/***********/
#define MAX_MOUSE_REGION (16)
/************/
/* Typedefs */
/************/
typedef struct _rckeys rckeys;
struct _rckeys {
const char *label;
char **var;
};
typedef struct _rckeys2 rckeys2;
struct _rckeys2 {
const char *family;
const char *label;
char **var;
};
typedef struct {
Pixmap pixmap;
Pixmap mask;
XpmAttributes attributes;
} XpmIcon;
/*******************/
/* Global variable */
/*******************/
Display *display;
/***********************/
/* Function Prototypes */
/***********************/
void AddMouseRegion(int index, int left, int top, int right, int bottom);
int CheckMouseRegion(int x, int y);
void openXwindow(int argc, char *argv[], char **, char *, int, int);
void RedrawWindow(void);
void RedrawWindowXY(int x, int y);
void createXBMfromXPM(char *, char **, int, int);
void copyXPMArea(int, int, int, int, int, int);
void copyXBMArea(int, int, int, int, int, int);
void setMaskXY(int, int);
void parse_rcfile(const char *, rckeys *);
#endif

9
wmWeather-1.31/BUGS Normal file
View file

@ -0,0 +1,9 @@
Please send bug reports to mghenderson@lanl.gov
Ones I know about;
The wind speed is decoded only when it is listed in units of KT or MPS for the time being.
The Station code needs to be 4 characters. This is a bug because some stations have
numbers as well, and while not standard METAR, some stations have 5 characters.

108
wmWeather-1.31/CHANGES Normal file
View file

@ -0,0 +1,108 @@
wmWeather changes.
Version Description
-------------------------------------------------------------------------
1.31 - released May 4, 1999.
fixed some conversion bugs in wind speed..
1.30 - released April 13, 1999.
Fixed a bug whereby the App would crash when trying to gain input
focus under non-WindowMaker WMs (focus is now grabbed by
`PointerRoot' not `iconwin').
Added StationID and `time-of-last-update' labels. To do this I needed
to shrink the fonts down and scrunch them together a bit more.
Added new command line option to change their color;
-tc <color>
Added code to properly decode wind speed when in MPS.
Fixed bug in beaufort wind speed calcs.
1.29 - released March 13, 1999.
Reorganized wmgeneral.c and renamed it xutils.c (wmgeneral.h
-> xutils.h as well ). Also moved it into the same directory as wmWeather.
Now, the openXwindow is split into 2 parts. You first need to call
initXwindow(argc, argv). This allows us to check the display depth
before we commit to a particular pixmap (this will be useful in my
other DockApps to dynamically set appropriate pixmaps based on depth).
Got rid of alot of the other routines that I never use.
Added 4 more command line option to set the colors of the text:
-bc <color> for setting the BackGround color.
-lc <color> for setting the Label color.
-dc <color> for setting the Data color.
-wgc <color> for setting the Wind Gust color.
Also cleaned up the pixmap to minimize the number of colors used.
Changed metric toggle to work with a key press (any key).
Added double click support. Now double clicking does the following:
Double Mouse Left: pops up the fully decoded METAR file
in xmessage.
Double Mouse Middle: Currently undefined.
Double Mouse Right: Forces a new update (i.e. download.)
1.28 - released March 9, 1999.
Changed -celsius (-c) option to -metric (-m). Naming makes more
sense that way...
Added -W option to display WindChill instead of DewPoint.
Since Windchill is not always available, we only show it if its
available. If its not, we paste up DewPoint as default.
Also added -mps option to display wind speed in units of
meters/second (when in -metric mode).
1.27 - released March 8, 1999.
fixed bug in speed calculation when wind is gusting.
1.26 - released February 24, 1999.
Added -delay option.
1.25 - released February 16, 1999.
Added Wind speeds on the 'Beaufort scale'
Thanks to Paul Martin <pm@zetnet.net> for this addition.
1.24 - released February 12, 1999.
Added --passive-ftp option to wget...
1.23 - released February 2, 1999.
Few more bug fixes...
Added support for different Pressure units...
1.22 - released February 1, 1999.
Fixed minor bug in direction abbreviations. Added a bit more to man
page.
1.21 - released January 29, 1999.
Fixed a problem in the perl script. Made the file paths absolute.
1.2 - released January 29, 1999.
Added Wind speed line. Ended up decoding the Raw METAR line.
Fixed a few bugs...
Changed location of files from /tmp to ~/.wmWeatherReports
Changed units of pressure and wind speed to mmHg and km/h
when Celsius is set. (Really should change the flag to -metric).
1.1 - Released Jan. 25, 1999.
Bug fixes.
Added Degrees F/C support...
Added a bit more info on where to find info on METAR/TAF
system...
1.0 - Initial release.
Released Jan. 19, 1999.

339
wmWeather-1.31/COPYING Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

27
wmWeather-1.31/HINTS Normal file
View file

@ -0,0 +1,27 @@
Hints for wmWeather
WindowMaker.
------------
In WindowMaker simply drag and drop the wmWeather App on
the WindowMaker Dock or Clip.
Afterstep.
---------
Afterstep users put the following in their .steprc
"Wharf wmWeather - MaxSwallow "wmWeather" wmWeather &".
Note: AfterStep's Wharf has a problem with pixmaps that are
larger than 60x60 pixels. Please tell the AfterStep authors
to fix this, this is not our fault, but a Wharf problem!
Other window managers.
----------------------
wmWeather shows as a 64x64 shaped icon on your desktop under other
window managers.

29
wmWeather-1.31/INSTALL Normal file
View file

@ -0,0 +1,29 @@
Installation instructions for wmWeather.
Requirements
-------------------------------------------------------------------------------
wmWeather requires the Xpm library (which should be available on most machines
with XFree86 installed). And it requires that the GNU wget utility be installed
as well. wget is a utility that allows you to grab stuff like html files and
images diretly off the www without using a graphical browser. (Also, you
obviously need to be connected to internet in a way that wget will work.)
You also need to have Perl installed.
On FreeBSD systems you may need to use gmake instead of make.
Installation
-------------------------------------------------------------------------------
1) gunzip wmWeather-1.29.tar.gz
1) tar -xvf wmWeather-1.29.tar
2) cd wmWeather-1.29/Src/
3) make clean
4) make
5) make install (must be root)
6) wmWeather & (or 'wmWeather -h' for help, or 'man wmWeather' for the man page)
7) You need to set the location of perl correctly in GrabWeather if your perl
is located in a place other than /usr/bin/

212
wmWeather-1.31/Src/GrabWeather Executable file
View file

@ -0,0 +1,212 @@
#!/usr/bin/perl
#
# Grabs the latest local weather conditions from the National Weather Service (NWS).
# Uses the decoded METAR reports.
#
# Need to give the 4-character METAR station code on the Command Line. E.g.;
#
# GrabWeather KLAM
#
require "ctime.pl";
#
# Change to users home directory. We used to dump into /tmp
# but using home dir instead avoids multiple users interfering
# with one another. (Yeah, we could "unique-ize" the filenames, but
# this is easier for now...)
#
$home = (getpwuid($<))[7];
$ok = chdir() || chdir($home);
#
# Check to see if .wmWeatherReports exists.
# If not, make it and move to it.
#
if ( !(-e ".wmWeatherReports") ){
mkdir(".wmWeatherReports", 0775);
}
chdir(".wmWeatherReports");
$StationID = $ARGV[0];
$HTMLFileName = "$StationID.TXT";
$URL = "ftp://weather.noaa.gov/data/observations/metar/decoded/$HTMLFileName";
$DataFileName = "$StationID.dat";
#
# I think some of these wget command line options may cause problems
# for some people? Dont know why... (Perhaps they have a ~/.wgetrc file
# that overrides command line options?).
#
$GrabCmd = "wget --proxy=off --passive-ftp --tries 0 -q -O $home/.wmWeatherReports/$StationID.TXT $URL";
system "$GrabCmd";
#
# Parse HTML File.
#
$Temp = -999.0;
$Chill = -999.0;
$DewPnt = -999.0;
$Pressure = -999.0;
$Hum = -999.0;
$Flag = 0;
open(TmpFile, "$HTMLFileName");
while (<TmpFile>){
chop;
if ($Flag == 0) { $StationInfo = $_; };
if ($Flag == 1) { $UpdateTime = $_; };
if ($_ =~ /^Sky conditions:/ ){ $SkyConditions = $_; $SkyConditions =~ s/Sky conditions: (.*)/\1/; }
if ($_ =~ /^Temperature:/ ){ $Temp = $_; $Temp =~ s/Temperature:\s*(\-{0,1}[0-9.]{1,}).*/\1/; }
if ($_ =~ /^Windchill:/ ){ $Chill = $_; $Chill =~ s/Windchill:\s*(\-{0,1}[0-9.]{1,}).*/\1/; }
if ($_ =~ /^Dew Point:/ ){ $DewPnt = $_; $DewPnt =~ s/Dew Point:\s*(\-{0,1}[0-9.]{1,}).*/\1/; }
if ($_ =~ /^Pressure \(.*\):/ ){ $Pressure = $_; $Pressure =~ s/Pressure \(.*\):\s*([0-9.]{2,}).*/\1/; }
if ($_ =~ /^Relative Humidity:/ ){ $Hum = $_; $Hum =~ s/Relative Humidity:\s*(\d{1,})\%.*/\1/; }
if ($_ =~ /^ob: / ){ $CodedMETAR = $_; $CodedMETAR =~ s/ob: (.*)/\1/; }
++$Flag;
}
close(TmpFile);
#
# Isolate the Wind groups out of the coded METAR report.
# There may be two groups - the normal one and a variability set.
#
$WindGroup = $CodedMETAR;
$WindGroup =~ s/ RMK\s.*$//;
$VarWindGroup = $WindGroup;
if ($WindGroup =~ /.*\s\w{3}\d{2,3}KT\s\d{3}V\d{3}\s.*/ ) {
$VarWindGroup =~ s/.*\s\w{3}\d{2,3}KT\s(\d{3}V\d{3})\s.*/\1/;
$VarFlag = 1;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}MPS\s\d{3}V\d{3}\s.*/ ) {
$VarWindGroup =~ s/.*\s\w{3}\d{2,3}MPS\s(\d{3}V\d{3})\s.*/\1/;
$VarFlag = 1;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}G\d{2,3}KT\s(\d{2,3}V\d{2,3})\s.*/ ) {
$VarWindGroup =~ s/.*\s\w{3}\d{2,3}G\d{2,3}KT\s(\d{2,3}V\d{2,3})\s.*/\1/;
$VarFlag = 1;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}G\d{2,3}MPS\s(\d{2,3}V\d{2,3})\s.*/ ) {
$VarWindGroup =~ s/.*\s\w{3}\d{2,3}G\d{2,3}MPS\s(\d{2,3}V\d{2,3})\s.*/\1/;
$VarFlag = 1;
} else {
$VarWindGroup = "";
$VarFlag = 0;
}
$Direction1 = $VarWindGroup; $Direction1 =~ s/(\d{3})V\d{3}/\1/;
$Direction2 = $VarWindGroup; $Direction2 =~ s/\d{3}V(\d{3})/\1/;
$GustFlag = 0;
if ($WindGroup =~ /.*\s\w{3}\d{2,3}KT\s.*/ ) {
$WindGroup =~ s/.*\s(\w{3}\d{2,3}KT)\s.*/\1/;
$Direction = $WindGroup; $Direction =~ s/(\w{3})\d{2,3}KT/\1/;
$Speed = $WindGroup; $Speed =~ s/\w{3}(\d{2,3})KT/\1/;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}MPS\s.*/ ) {
$WindGroup =~ s/.*\s(\w{3}\d{2,3}MPS)\s.*/\1/;
$Direction = $WindGroup; $Direction =~ s/(\w{3})\d{2,3}MPS/\1/;
$Speed = $WindGroup; $Speed =~ s/\w{3}(\d{2,3})MPS/\1/;
$Speed *= 1.942;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}G\d{2,3}KT\s.*/ ) {
$WindGroup =~ s/.*\s(\w{3}\d{2,3}G\d{2,3}KT)\s.*/\1/;
$Direction = $WindGroup; $Direction =~ s/(\w{3})\d{2,3}G\d{2,3}KT/\1/;
$Speed1 = $WindGroup; $Speed1 =~ s/\w{3}(\d{2,3})G\d{2,3}KT/\1/;
$Speed2 = $WindGroup; $Speed2 =~ s/\w{3}\d{2,3}G(\d{2,3})KT/\1/;
$GustFlag = 1;
} elsif ($WindGroup =~ /.*\s\w{3}\d{2,3}G\d{2,3}MPS\s.*/ ) {
$WindGroup =~ s/.*\s(\w{3}\d{2,3}G\d{2,3}MPS)\s.*/\1/;
$Direction = $WindGroup; $Direction =~ s/(\w{3})\d{2,3}G\d{2,3}MPS/\1/;
$Speed1 = $WindGroup; $Speed1 =~ s/\w{3}(\d{2,3})G\d{2,3}MPS/\1/;
$Speed2 = $WindGroup; $Speed2 =~ s/\w{3}\d{2,3}G(\d{2,3})MPS/\1/;
$Speed1 *= 1.942; $Speed2 *= 1.942;
$GustFlag = 1;
} else {
$WindGroup = "";
}
#
# Get the Time out of the coded Metar Report.
#
$UniversalTime = $CodedMETAR;
if ($UniversalTime =~ /$StationID \d{1,2}\d{2}\d{2}Z/ ){
$UniversalTime =~ s/$StationID (\d{1,2})(\d{2})(\d{2})Z .*/\2:\3/;
} else {
$UniversalTime = "99:99";
}
#
# Write out the stuff we need to the Data File. This is the file that will
# be read by wmWeather.
#
if ($Flag > 0){
open(TmpFile, ">$DataFileName");
print TmpFile "$StationInfo\n";
print TmpFile "$UpdateTime\n";
print TmpFile "$SkyConditions\n";
print TmpFile "$UniversalTime\n";
print TmpFile "$Temp\n";
print TmpFile "$DewPnt\n";
print TmpFile "$Chill\n";
print TmpFile "$Pressure\n";
print TmpFile "$Hum\n";
if ($Direction eq "" ){
print TmpFile "-9999\n";
} elsif ($Direction =~ /VRB/ ){
print TmpFile "999\n";
} elsif ($VarFlag) {
$Direction += 0;
print TmpFile "-$Direction\n";
} else {
$Direction += 0;
print TmpFile "$Direction\n";
}
if ($WindGroup eq "" ) {
print TmpFile "-9999\n";
} elsif ($GustFlag) {
$AvgSpeed = ($Speed1 + $Speed2)/2.0;
$AvgSpeed *= 1.15155;
print TmpFile "-$AvgSpeed\n";
} else {
$Speed += 0;
$Speed *= 1.15155;
print TmpFile "$Speed\n";
}
close(TmpFile);
}

View file

@ -0,0 +1,34 @@
CC = gcc
CFLAGS = -O2 -Wall
INCDIR = -I/usr/X11R6/include/X11 -I/usr/X11R6/include
DESTDIR= /usr/X11R6
LIBDIR = -L/usr/X11R6/lib
# for linux
LIBS = -lXpm -lX11 -lXext
# for Solaris
# LIBS = -lXpm -lX11 -lXext -lsocket
OBJS = wmWeather.o \
xutils.o
.c.o:
$(CC) $(CFLAGS) -D$(shell echo `uname -s`) -c $< -o $*.o $(INCDIR)
all: wmWeather.o wmWeather
wmWeather.o: wmWeather_master.xpm wmWeather_mask.xbm
wmWeather: $(OBJS)
$(CC) $(CFLAGS) $(SYSTEM) -o wmWeather $^ $(INCDIR) $(LIBDIR) $(LIBS)
clean:
for i in $(OBJS) ; do \
rm -f $$i; \
done
rm -f wmWeather
install:: wmWeather
install -c -s -m 0755 wmWeather $(DESTDIR)/bin
install -c -m 0755 GrabWeather $(DESTDIR)/bin
install -c -m 0644 wmWeather.1 $(DESTDIR)/man/man1

View file

@ -0,0 +1,94 @@
.TH WMWEATHER 1.1 "19 January 1999"
.SH NAME
WMWEATHER \- Dockable Weather Monitor
.SH SYNOPSIS
.B wmWeather -station <4-char station ID> [-h] [-display <Display>] [-metric] [-kPa] [-hPa] [-mmHg] [-beaufort] [-mps] [-delay <Time in Minutes>] [-bc <color>] [-tc <color>] [-lc <color>] [-dc <color>] [-wgc <color>]
.SH DESCRIPTION
.PP
wmWeather monitors local weather conditions (temperature, Dew Point, Pressure,
Humidity and Wind direction and speed). The user needs to specify a
4-character `METAR station identifier code'. (The standardized METAR station
designations and current weather reports are designed for use by the aviation
community. Since most major cities have at least one airport, there is usually
one or more METAR stations in a given city.) You (obviously) need to be
connected to the internet and you also need to have wget installed (most linux
systems should have it already). wmWeather will then attempt to download the
latest METAR report for the station of your choice (from the National Weather
Sevice run by NOAA).
.PP
You can toggles back and forth between imperial and metric units. I.e. between
(degrees Fareheight, inches of Mercury, and miles per hour) and (degrees
Celsius, millimeters of Mercury, and kilometers per hour). Any key press will
do this.
.PP
Also, a left double click will bring up the fully decoded METAR report up in
xmessage. And a right double click will force an immediate update (i.e.
wmWeather will attempt to grab the weather information).
.PP
When the wind speed turns red, this means that the wind is gusty and the listed
value is an average only. Similarly, a red direction indicates a variable wind
direction and the value given is the average direction.
.PP
To find out more about the METAR/TAF system and to find the METAR code for your
location, look at http://www.nws.noaa.gov/oso/oso1/oso12/metar.htm for NOAA's
"National Weather Service METAR/TAF Information" page. To determine what your
station ID is use the lookup utility at:
http://www.nws.noaa.gov/oso/siteloc.shtml.
.SH OPTIONS
.TP
.B \-h
Display list of command-line options.
.TP
.B \-display <display>
Use an alternate X Display.
.TP
.B \-station <4-char station ID> (or \-s <4-char station ID>)
This option tells wmWeather which METAR station to show data for.
.TP
.B \-metric (or \-m)
Display temperatures in degrees Celsius.
.TP
.B \-kPa
When toggled to Celsius, display pressure in units of kPa.
.TP
.B \-hPa
When toggled to Celsius, display pressure in units of hPa (i.e. milliBars).
.TP
.B \-mmHg
When toggled to Celsius, display pressure in units of millimeters of Mercury. (This is
the default for Celsius when no other units are specified).
.TP
.B \-beaufort
When toggled to Celsius, display wind speeds on the "beaufort scale".
.TP
.B \-mps
When toggled to metric display, show windspeed in units of meters/second.
.TP
.B \-delay <Time in Minutes>
Override time (in minutes) between updates (default is 15 minutes). (Times are approximate.)
.TP
.B \-lc <color>
Set the color of the labels. (E.g. -lc red or -lc salmon or -lc #4523ff).
.TP
.B \-bc <color>
Set the background color. (#8e8e69 is LCD-ish).
.TP
.B \-dc <color>
Set the color of the data entries.
.TP
.B \-tc <color>
Set the color of the station ID/update time header.
.TP
.B \-wgc <color>
Set the gusty-wind/variable-direction color. The wind speed indicator will turn
this color when the wind speed is gusty. (The value shown in this case is the
average speed). Similarly, the wind direction indicator with change to this
color when the wind direction is variable. (The value shown in this case is the
average direction).
.SH BUGS
Let me know if/when you find any.
.SH NOTES
Requires that a (fairly recent) version of wget be installed on your machine.
You can download wget from "http://sunsite.auc.dk/wget/".
.SH AUTHOR
Michael G. Henderson <mghenderson@lanl.gov>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,38 @@
#define wmWeather_mask_width 64
#define wmWeather_mask_height 64
static char wmWeather_mask_bits[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,162 @@
/* XPM */
static char *wmWeather_master[] = {
/* width height num_colors chars_per_pixel */
" 134 148 7 1",
/* colors */
". c #000000",
"# c #181818 s BackColor",
"a c #79bdbf s LabelColor",
"b c #ff0000 s WindGustColor",
"d c #ffbf50 s DataColor",
"c c #6455ff s StationTimeColor",
"e c #d0d0d0",
/* pixels */
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................................................................",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................................................................",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................................................................",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................................................................",
"aaaa........................................................aaa...#ddd#########dd########.............................................",
"aaaa.######################################################eaaa...d###d#########d########.............................................",
"aaaa.######################################################eaaa...d######ddd####d###dd#d#.............................................",
"aaaa.######################################################eaaa...d#########d###d###d#d#d.............................................",
"aaaa.######################################################eaaa...d######dddd###d###d#d#d.............................................",
"aaaa.######################################################eaaa...d###d#d###d###d###d#d#d.............................................",
"aaaa.######################################################eaaa...#ddd###dddd##ddd##d###d.............................................",
"aaaa.######################################################eaaa.......................................................................",
"aaaa.######################################################eaaa.......................................................................",
"aaaa.#aaa##################################################eaaa.......................................................................",
"aaaa.##a###################################################eaaa.......................................................................",
"aaaa.##a###a#a##aaa##a#####################################eaaa.......................................................................",
"aaaa.##a###aaaa#a##a#######################################eaaa...##b#####b####bbb##bbbbb####b##bbbbb###bb##bbbbb##bbb###bbb######....",
"aaaa.##a###a##a#a##a#a#####################################eaaa...#b#b###bb###b###b#####b###bb##b######b########b#b###b#b###b#####....",
"aaaa.##a###a##a#aaa########################################eaaa...b###b#b#b#######b####b###b#b##b#bb##b########b##b###b#b##bb#####....",
"aaaa.###########a##########################################eaaa...b###b###b#####bb####bb##b##b##bb##b#b#bb#####b###bbb###bb#b#####....",
"aaaa.######################################################eaaa...b###b###b####b########b#bbbbb#####b#bb##b###b###b###b#####b#####....",
"aaaa.######################################################eaaa...#b#b####b###b#####b###b####b##b###b#b###b##b####b###b####b####b#....",
"aaaa.######################################################eaaa...##b###bbbbb#bbbbb##bbb#####b###bbb###bbb###b#####bbb###bb####bbb....",
"aaaa.#aaa##################################################eaaa...##############################################################b#....",
"aaaa.#a##a#################################################eaaa.......................................................................",
"aaaa.#a##a##aa##a##a#a#####################################eaaa...##d#####d####ddd##ddddd####d##ddddd###dd##ddddd##ddd###ddd######....",
"aaaa.#a##a#a#aa#a##a#######################################eaaa...#d#d###dd###d###d#####d###dd##d######d########d#d###d#d###d#####....",
"aaaa.#a##a#aa###aaaa#a#####################################eaaa...d###d#d#d#######d####d###d#d##d#dd##d########d##d###d#d##dd#####....",
"aaaa.#aaa###aa##aaaa#######################################eaaa...d###d###d#####dd####dd##d##d##dd##d#d#dd#####d###ddd###dd#d#####....",
"aaaa.######################################################eaaa...d###d###d####d########d#ddddd#####d#dd##d###d###d###d#####d#####....",
"aaaa.######################################################eaaa...#d#d####d###d#####d###d####d##d###d#d###d##d####d###d####d####d#....",
"aaaa.######################################################eaaa...##d###ddddd#ddddd##ddd#####d###ddd###ddd###d#####ddd###dd####ddd....",
"aaaa.#aaa##################################################eaaa...##############################################################d#....",
"aaaa.#a##a#################################################eaaa...############################################........................",
"aaaa.#a##a#aaa###aaa#a#####################################eaaa...#######d####################################........................",
"aaaa.#aaa##a##a#aa#########################################eaaa...######d#d#dddd##dd############d##d######d###........................",
"aaaa.#a####a######aa#a#####################################eaaa...#######d##d####d##d###########d##d######d##d........................",
"aaaa.#a####a####aaa########################################eaaa...##########ddd##d####d#d##d#d##dddd##ddd###d#........................",
"aaaa.######################################################eaaa...dddd######d####d####dddd#dddd#d##d#d##d##d##........................",
"aaaa.######################################################eaaa...##########d####d##d#d##d#d##d#d##d##dd##d##d........................",
"aaaa.######################################################eaaa...##########d#####dd##d##d#d##d#d##d#d#######d........................",
"aaaa.#a##a#################################################eaaa...####################################ddd#####........................",
"aaaa.#a##a#################################################eaaa.......................................................................",
"aaaa.#aaaa#a##a#a#a##a#####################################eaaa...d##d#d##d##dd##dddd#d##d#ddd##ddd#..................................",
"aaaa.#a##a#a##a#aaaa#######################################eaaa...dd#d#d##d#d##d#d####d##d#d##d#d##d..................................",
"aaaa.#a##a#a##a#a##a#a#####################################eaaa...dd#d#d##d##d###ddd##d##d#d##d#ddd#..................................",
"aaaa.#a##a##aaa#a##a#######################################eaaa...d#dd#dddd###d##d####d##d#ddd##d##d..................................",
"aaaa.######################################################eaaa...d#dd#dddd#d##d#d#####dd##d#d##d##d..................................",
"aaaa.######################################################eaaa...d##d#d##d##dd##dddd##dd##d##d#ddd#..................................",
"aaaa.######################################################eaaa.......................................................................",
"aaaa.#a##a#########a#######################################eaaa...b##b#b##b##bb##bbbb#b##b#bbb##bbb#..................................",
"aaaa.#a##a#########a#######################################eaaa...bb#b#b##b#b##b#b####b##b#b##b#b##b..................................",
"aaaa.#a##a#aaa###aaa#a#####################################eaaa...bb#b#b##b##b###bbb##b##b#b##b#bbb#..................................",
"aaaa.#aaaa#a##a#a##a#######################################eaaa...b#bb#bbbb###b##b####b##b#bbb##b##b..................................",
"aaaa.#aaaa#a##a#a##a#a#####################################eaaa...b#bb#bbbb#b##b#b#####bb##b#b##b##b..................................",
"aaaa.#a##a#a##a##aaa#######################################eaaa...b##b#b##b##bb##bbbb##bb##b##b#bbb#..................................",
"aaaa.######################################################eaaa.......................................................................",
"aaaa.######################################################eaaa...#d####d####dd##dddd###d##dddd##dd##dddd##dd###dd#######d#########...",
"aaaa.######################################################eaaa...d#d##dd###d##d####d##dd##d####d#######d#d##d#d##d######d##d######...",
"aaaaeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaa...d#d###d######d##dd##d#d##ddd##ddd####d###dd##d##d########d#######...",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...d#d###d#####d#####d#dddd####d#d##d###d##d##d##ddd#######d###ddd##...",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...d#d###d####d###d##d###d##d##d#d##d##d###d##d####d##dd##d##d######...",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#d###ddd##dddd##dd####d###dd###dd###d####dd###dd###dd#####d######...",
"......................................................................................................................................",
"..................................................................#b####b####bb##bbbb###b##bbbb##bb##bbbb##bb###bb#######b#########...",
"..................................................................b#b##bb###b##b####b##bb##b####b#######b#b##b#b##b######b##b######...",
"..................................................................b#b###b######b##bb##b#b##bbb##bbb####b###bb##b##b########b#######...",
"..................................................................b#b###b#####b#####b#bbbb####b#b##b###b##b##b##bbb#######b###bbb##...",
"..................................................................b#b###b####b###b##b###b##b##b#b##b##b###b##b####b##bb##b##b######...",
".....######################################################.......#b###bbb##bbbb##bb####b###bb###bb###b####bb###bb###bb#####b######...",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....#aaa##################################################...........................................................................",
".....##a###################################################...........................................................................",
".....##a###a#a##aaa##a#####################################...........................................................................",
".....##a###aaaa#a##a#######################################...........................................................................",
".....##a###a##a#a##a#a#####################################...........................................................................",
".....##a###a##a#aaa########################################...........................................................................",
".....###########a##########################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################.......#################...................................................",
".....#aaa##################################################.......######a##a##aa###...................................................",
".....#a##a#################################################.......######a##a#a##a##...................................................",
".....#a##a##aa##a##a#a#####################################.......######a##a#a####a...................................................",
".....#a##a#a#aa#a##a#######################################.......######aaaa#a#####...................................................",
".....#a##a#aa###aaaa#a#####################################.......######aaaa#a##a#a...................................................",
".....#aaa###aa##aaaa#######################################.......######a##a##aa###...................................................",
".....######################################################.......#################...................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....#aaa##################################################...........................................................................",
".....#a##a#################################################...........................................................................",
".....#a##a#aaa###aaa#a#####################################...........................................................................",
".....#aaa##a##a#aa#########################################...........................................................................",
".....#a####a######aa#a#####################################...........................................................................",
".....#a####a####aaa########################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....#a##a#################################################...........................................................................",
".....#a##a#################################################...........................................................................",
".....#aaaa#a##a#a#a##a#####################################...........................................................................",
".....#a##a#a##a#aaaa#######################################...........................................................................",
".....#a##a#a##a#a##a#a#####################################...........................................................................",
".....#a##a##aaa#a##a#######################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
".....#a##a#########a#######################################...........................................................................",
".....#a##a#########a#######################################...........................................................................",
".....#a##a#aaa###aaa#a#####################################...........................................................................",
".....#aaaa#a##a#a##a#######################################...........................................................................",
".....#aaaa#a##a#a##a#a#####################################...........................................................................",
".....#a##a#a##a##aaa#######################################...........................................................................",
".....######################################################...........................................................................",
".....######################################################...........................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"..#cc##ccc###cc##ccc##cccc#cccc##cc##c##c#ccc#####c#c##c#c####c##c#c##c##cc##ccc###cc##ccc###cc##ccc##c##c#c##c#c##c#c##c#c#c##cccc...",
"..c##c#c##c#c##c#c##c#c####c####c##c#c##c##c######c#c#c##c####cccc#cc#c#c##c#c##c#c##c#c##c#c##c##c###c##c#c##c#c##c#c##c#c#c#####c...",
"..c##c#ccc##c####c##c#ccc##ccc##c####cccc##c######c#cc###c####cccc#cc#c#c##c#c##c#c##c#c##c##c####c###c##c#c##c#c##c##cc##c#c####c#...",
"..cccc#c##c#c####c##c#c####c####c#cc#c##c##c######c#cc###c####c##c#c#cc#c##c#ccc##c##c#ccc####c###c###c##c#c##c#cccc##cc###c####c##...",
"..c##c#c##c#c##c#c##c#c####c####c##c#c##c##c###c##c#c#c##c####c##c#c#cc#c##c#c####cc#c#c#c##c##c##c###c##c##cc##cccc#c##c##c###c###...",
"..c##c#ccc###cc##ccc##cccc#c#####ccc#c##c#ccc###cc##c##c#cccc#c##c#c##c##cc##c#####cc##c##c##cc###c####cc###cc##c##c#c##c##c###cccc...",
"......................................................................................................................................",
"..#c####c####cc##cccc###c##cccc##cc##cccc##cc###cc#####...............................................................................",
"..c#c##cc###c##c####c##cc##c####c#######c#c##c#c##c##c#...............................................................................",
"..c#c###c######c##cc##c#c##ccc##ccc####c###cc##c##c####...............................................................................",
"..c#c###c#####c#####c#cccc####c#c##c###c##c##c##ccc####...............................................................................",
"..c#c###c####c###c##c###c##c##c#c##c##c###c##c####c##c#...............................................................................",
"..#c###ccc##cccc##cc####c###cc###cc###c####cc###cc#####...............................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................",
"......................................................................................................................................"
};

313
wmWeather-1.31/Src/xutils.c Normal file
View file

@ -0,0 +1,313 @@
/*
* xutils.c - A collection of X-windows utilties for creating WindowMAker
* DockApps.
*
* This file contains alot of the lower-level X windows routines. Origins with wmppp
* (by Martijn Pieterse (pieterse@xs4all.nl)), but its been hacked up quite a bit
* and passed on from one new DockApp to the next.
*
*
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program (see the file COPYING); if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA
*
*
*
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include "xutils.h"
/*
* X11 Variables
*/
int x_fd;
XSizeHints mysizehints;
XWMHints mywmhints;
Pixel back_pix, fore_pix;
char *Geometry = "";
GC NormalGC;
XpmIcon wmgen;
Pixmap pixmask;
/*
* flush_expose
*/
static int flush_expose(Window w) {
XEvent dummy;
int i=0;
while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
i++;
return i;
}
/*
* RedrawWindow
* RedrawWindowXY
*/
void RedrawWindow(void) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
}
void RedrawWindowXY(int x, int y) {
flush_expose(iconwin);
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
flush_expose(win);
XCopyArea(display, wmgen.pixmap, win, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
}
/*
* copyXPMArea
* copyXBMArea
*/
void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
}
/*
* initXwindow
*/
void initXwindow(int argc, char *argv[]){
int i;
char *display_name = NULL;
for (i=1; argv[i]; ++i) {
if (!strcmp(argv[i], "-display")) display_name = argv[i+1];
}
if (!(display = XOpenDisplay(display_name))) {
fprintf(stderr, "%s: can't open display %s\n",
argv[0], XDisplayName(display_name));
exit(1);
}
screen = DefaultScreen(display);
Root = RootWindow(display, screen);
DisplayDepth = DefaultDepth(display, screen);
x_fd = XConnectionNumber(display);
}
/*
* openXwindow
*/
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits,
int pixmask_width, int pixmask_height, char *BackColor, char *LabelColor,
char *WindGustColor, char *DataColor, char *StationTimeColor) {
unsigned int borderwidth = 1;
XClassHint classHint;
char *wname = argv[0];
XTextProperty name;
XGCValues gcv;
unsigned long gcm;
int dummy=0;
XpmColorSymbol cols[5]={ {"BackColor", NULL, 0},
{"LabelColor", NULL, 0},
{"DataColor", NULL, 0},
{"WindGustColor", NULL, 0},
{"StationTimeColor", NULL, 0} };
/*
* Create Pixmap
*/
cols[0].pixel = getColor(BackColor, 1.0);
cols[1].pixel = getColor(LabelColor, 1.0);
cols[2].pixel = getColor(DataColor, 1.0);
cols[3].pixel = getColor(WindGustColor, 1.0);
cols[4].pixel = getColor(StationTimeColor, 1.0);
wmgen.attributes.numsymbols = 5;
wmgen.attributes.colorsymbols = cols;
wmgen.attributes.exactColors = False;
wmgen.attributes.closeness = 40000;
wmgen.attributes.valuemask = XpmReturnPixels | XpmReturnExtensions | XpmColorSymbols
| XpmExactColors | XpmCloseness | XpmSize;
if (XpmCreatePixmapFromData(display, Root, pixmap_bytes,
&(wmgen.pixmap), &(wmgen.mask), &(wmgen.attributes)) != XpmSuccess){
fprintf(stderr, "Not enough free colorcells.\n");
exit(1);
}
/*
* Create a window
*/
mysizehints.flags = USSize | USPosition;
mysizehints.x = 0;
mysizehints.y = 0;
back_pix = getColor("white", 1.0);
fore_pix = getColor("black", 1.0);
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
mysizehints.width = 64;
mysizehints.height = 64;
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
/*
* Activate hints
*/
XSetWMNormalHints(display, win, &mysizehints);
classHint.res_name = wname;
classHint.res_class = wname;
XSetClassHint(display, win, &classHint);
/*
* Set up the xevents that you want the relevent windows to inherit
* Currently, its seems that setting KeyPress events here has no
* effect. I.e. for some you will need to Grab the focus and then return
* it after you are done...
*/
XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
| KeyPressMask | KeyReleaseMask);
XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
| KeyPressMask | KeyReleaseMask);
if (XStringListToTextProperty(&wname, 1, &name) == 0) {
fprintf(stderr, "%s: can't allocate window name\n", wname);
exit(1);
}
XSetWMName(display, win, &name);
/*
* Create Graphics Context (GC) for drawing
*/
gcm = GCForeground | GCBackground | GCGraphicsExposures;
gcv.foreground = fore_pix;
gcv.background = back_pix;
gcv.graphics_exposures = 0;
NormalGC = XCreateGC(display, Root, gcm, &gcv);
pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height);
XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
mywmhints.initial_state = WithdrawnState;
mywmhints.icon_window = iconwin;
mywmhints.icon_x = mysizehints.x;
mywmhints.icon_y = mysizehints.y;
mywmhints.window_group = win;
mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(display, win, &mywmhints);
XSetCommand(display, win, argv, argc);
XMapWindow(display, win);
}
unsigned long getColor(char *ColorName, float fac) {
XColor Color;
XWindowAttributes Attributes;
XGetWindowAttributes(display, Root, &Attributes);
Color.pixel = 0;
XParseColor(display, Attributes.colormap, ColorName, &Color);
Color.red = (unsigned short)(Color.red/fac);
Color.blue = (unsigned short)(Color.blue/fac);
Color.green = (unsigned short)(Color.green/fac);
Color.flags = DoRed | DoGreen | DoBlue;
XAllocColor(display, Attributes.colormap, &Color);
return Color.pixel;
}

View file

@ -0,0 +1,47 @@
#ifndef WMGENERAL_H_INCLUDED
#define WMGENERAL_H_INCLUDED
/*
* Typedefs
*/
typedef struct {
Pixmap pixmap;
Pixmap mask;
XpmAttributes attributes;
} XpmIcon;
/*
* Global variable
*/
Display *display;
Window Root;
Window iconwin, win;
int screen;
int DisplayDepth;
/*
* Function Prototypes
*/
void AddMouseRegion(int, int, int, int, int);
int CheckMouseRegion(int, int);
void openXwindow(int, char **, char **, char *, int, int, char *, char *, char *, char *,char *);
void initXwindow(int, char **);
void RedrawWindow(void);
void RedrawWindowXY(int, int);
void copyXPMArea(int, int, int, int, int, int);
void copyXBMArea(int, int, int, int, int, int);
void setMaskXY(int, int);
unsigned long getColor(char *, float);
void RedrawWindow(void);
#endif

15
wmacpi-1.34/AUTHORS Normal file
View file

@ -0,0 +1,15 @@
timecop
timecop@japan.co.jp
all the code
Daniel Pittman <daniel@rimspace.net>
sent some suggestions and a patch for a broken APM implementations.
version 1.1 includes his patch in a modified form
Michael G. Henderson <mghenderson@lanl.gov>
some weird dude who generated a lot of random noise about my dockapp and
forced me to change the name to wmacpi. general asshole.
portions of master.xpm that i was too lazy to draw (the plug and battery
icons) came from wmapm-2 by jedgar. the numbers were copied off some other
dockapp, too. the button was drawn by ME. PHEAR YES PHEAR IT.

2
wmacpi-1.34/COPYING Normal file
View file

@ -0,0 +1,2 @@
#include <GNU_GPL_v2>

85
wmacpi-1.34/ChangeLog Normal file
View file

@ -0,0 +1,85 @@
2002 Feb 17 1.34
Updated ACPI statistics gathering code for the latest ACPI patch from
Intel. Now uses/checks for subsystem version 20020214+. Redone the version
check a little bit.
2001 Apr 29 1.33
Little fix to ACPI version check so that I don't have to make a new
version each time a new kernel comes out
2001 Mar 24 1.32
Split ACPI and APM portions in different source files
Added power_init() function - handles checking subsystem presence,
version, etc. Enumerates batteries in ACPI implementation
ACPI: Beginnings of multiple battery support - not fully implemented
ACPI: Get the battery ID from /proc/acpi/battery instead of hard-coding
it in - also helps with multi battery stuff
Added some stupid command line help
Added -c option to set critical battery alarm level. Defaults to
10 percent, and added -b option to make noise when this critical level
is reached
APM: Updated for critical alarm stuff
Made a 20 color "low" quality pixmap for machines running 8bit displays
Updated README with some stuff, made separate INSTALL file
2001 Mar 13 1.31
Update for intel ACPI release version 20010313
Minor updates for new /proc layout
2001 Mar 07 1.3
Update for intel ACPI release verion 20010302
Proc format changed a little bit, so updates were necessary.
Added a check for specific acpi subsystem version - since each
new version seems to have a new interface, better be safe than
sorry :)
As usual, please test and report to me.
This ONLY works with linux acpica 20010302. Download this version from
http://developer.intel.com/technology/iapc/acpi/downloads.htm - it's a
patch against 2.4.2
2001 Feb 28 1.21
Finally read through the ACPI specification. Hah, they had all my
questions answered :) Thus,
Confirmed remaining percentage formula (correct)
Now calculate "time remaining" according to the spec formula
Removed "battery load" hack since we now have "time remaining"
Fixed bug in display_percentage (10% didn't display right)
Released version 1.21
2001 Feb 23 1.2
Added support for ACPI. This is very untested, and not very clean.
This has been tested on machines with only ONE battery, and only
with kernel 2.4.2 (that's where ACPI started to work for me)
Added some hackery to do with ACPI. Check README.
Released 1.2
2001 Jan 16 1.1
Fixed all the stuff so that wmapm works as advertised:
Fixed dumb bug where after charging was done new message didn't scroll.
Added support for fucked APM bioses that display stuff wrong. (See
README to learn how to enable it. Obviously, it's disabled by default)
Reorganized apminfo structure and got rid of redundancy.
Reorganized acquire_apm_info. All APM data is processed there.
Fixed display_state to do the Right Thing.
Fixed red blinking button to actually blink on critical battery, and
to stop when it isn't critical anymore. I don't think it ever worked
right in 1.0.
Created ChangeLog.
Updated README.
Released 1.1.

10
wmacpi-1.34/INSTALL Normal file
View file

@ -0,0 +1,10 @@
to install:
* vi Makefile
* change what you want, according to instructions, save Makefile
* make
* copy wmacpi somewhere useful
* dance
* <somewhere useful>/wmacpi &
* phear
(if it doesn't work, skip the phear step)

25
wmacpi-1.34/Makefile Normal file
View file

@ -0,0 +1,25 @@
# set options. pick one, acpi or apm. comment out the other one. don't
# uncomment both, bad things will happen :)
OPT = -O3 -DACPI
#OPT = -O3 -DAPM
# uncomment this to make wmacpi use less system colors (looks uglier too)
#OPT += -DLOW_COLOR
# debugging options (don't bother with these)
#OPT = -pg -g -DPRO -DACPI
CC = gcc
CFLAGS = $(OPT) -Wall -ansi -I/usr/X11R6/include
LDFLAGS = $(OPT) -L/usr/X11R6/lib -lX11 -lXpm -lXext
SRCS = wmacpi.c libapm.c libacpi.c
OBJS = wmacpi.o libapm.o libacpi.o
all: wmacpi
wmacpi: $(OBJS)
clean:
rm -f *.o *~ wmacpi trace *.out *.bb *.bbg

64
wmacpi-1.34/README Normal file
View file

@ -0,0 +1,64 @@
For install instructions, see "INSTALL" file.
Usage:
+-------------+
|battery graph| <- visual percentage battery remaining
|[:][=] [100%]| <- [:] - on AC (blink when charging) [=] - on battery
|[00:00] [///]| <- [00:00] time remaining [///] timer mode switch
|status area| <- messages scroll here
+-------------+
see wmacpi -h for some command line switches
Timer mode, available only when "on-battery", keeps track how long your laptop
has been away from AC power. Clicking the button toggles between timer and
standard "time remaining" mode.
******************************************************************************
Implementation of "ACPI" mode:
As far as I know, there aren't any tools available right now to process battery
statistics provided in /proc/power by ACPI stuff in 2.4.x kernels. This is my
attempt to have a usable dockapp battery monitor for ACPI laptop systems.
Since version 1.32 I've added some code to detect multiple batteries. However
it's not fully implemented yet, and while it will detect and enumerate
batteries, the statistics reported are for the first found battery.
* Your battery is "Control Method" type
* Your ACPI BIOS is supported by current version of ACPI in kernel
2.4.17 + intel patches
* You applied acpi subsystem patch version 20020214 (from intel.com)
If you are using kernels or ACPI version older than 2.4.17, keep using
wmacpi 1.32. This version is only for the latest ACPI code.
To use ACPI support, just follow "INSTALL" instructions. Makefile has been
updated to include -DACPI. If you don't have ACPI, you don't need this version
of wmacpi. Information below only applies to APM systems, without ACPI support.
Implementation of "APM" mode
This works on all machines that have a standard non-borked APM implementation.
For people with broken APM implementations, I added some stuff, which was
sent to me by Daniel Pittman <daniel@rimspace.net>, to compensate for some
of the stupidity. If you see dumb behaviour from wmapm, consider editing
wmapm.c and uncomment one, or both, of these lines (on lines 19 and 20):
#define RETARDED_APM if your bios thinks the battery is charging all the time
when it's on AC power. What this will do is stop "charging" process as soon
as the battery reaches 100%.
#define STUPID_APM if your bios shows -1 minutes remaining when AC is plugged
in, or when battery is charging.
If your bios is even dumber than this, and you come up with another special
case that needs to be handled, feel free to #ifdef it under <badword>_APM and
send me a diff -u. I will include it in the next version. Any of these
changes would have to go into acquire_apm_info. Note, I changed format of
apminfo structure to get rid of redundancy - now there is only one power state
variable, which keeps track whether we are on AC, charging, battery, etc.
Note, all the *_APM stuff is untested - my laptop has a working BIOS :) If you
test this and it doesn't work as advertised, go ahead and send me a fix.
-timecop

206
wmacpi-1.34/libacpi.c Normal file
View file

@ -0,0 +1,206 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include "wmacpi.h"
#define MAXBATT 8
#ifdef ACPI
#ifdef PRO
extern char *state[];
#endif
extern APMInfo *apminfo;
static char batteries[MAXBATT][128];
static char battinfo[MAXBATT][128];
int batt_count;
/* temp buffer */
char buf[512];
/* local proto */
int acpi_get_design_cap(int battery);
/* see if we have ACPI support and check version */
int power_init(void)
{
FILE *acpi;
char buf[4096];
DIR *battdir;
struct dirent *batt;
char *name;
int acpi_ver = 0;
if (!(acpi = fopen("/proc/acpi/info", "r"))) {
fprintf(stderr, "This system does not support ACPI\n");
return 1;
}
/* okay, now see if we got the right version */
fread(buf, 4096, 1, acpi);
acpi_ver = strtol(buf + 25, NULL, 10);
eprint(1, "ACPI version detected: %d\n", acpi_ver);
if (acpi_ver < 20020214) {
fprintf(stderr, "This version requires ACPI subsystem version 20020214\n");
fclose(acpi);
return 1;
}
/* yep, all good */
fclose(acpi);
/* now enumerate batteries */
batt_count = 0;
battdir = opendir("/proc/acpi/battery");
if (battdir == NULL) {
fprintf(stderr, "No batteries or ACPI not supported\n");
return 1;
}
while ((batt = readdir(battdir))) {
name = batt->d_name;
/* skip . and .. */
if (!strncmp(".", name, 1) || !strncmp("..", name, 2))
continue;
sprintf(batteries[batt_count], "/proc/acpi/battery/%s/state", name);
sprintf(battinfo[batt_count], "/proc/acpi/battery/%s/info", name);
eprint(1, "battery detected at %s\n", batteries[batt_count]);
batt_count++;
}
closedir(battdir);
/* tell user some info */
eprint(1, "%d batteries detected\n", batt_count);
fprintf(stderr, "wmacpi: found %d batter%s\n", batt_count,
(batt_count == 1) ? "y" : "ies");
return 0;
}
int acpi_get_design_cap(int battery)
{
FILE *acpi;
char *ptr;
int design_cap;
if (battery > MAXBATT)
return -1;
if (!(acpi = fopen(battinfo[battery], "r")))
return -1;
fread(buf, 512, 1, acpi);
fclose(acpi);
if ((ptr = strstr(buf, "last full capacity"))) {
ptr += 25;
sscanf(ptr, "%d", &design_cap);
eprint(1, "last full capacity: %d\n", design_cap);
} else {
/* hack. if there isnt any info on last capacity, we are
* screwed, but let's not come back here again */
design_cap = -1;
eprint(1, "Cannot retrieve design capacity!");
}
return design_cap;
}
void acquire_info(void)
{
FILE *acpi;
char *ptr;
char stat;
static int dcap = 0xdeadbeef;
int percent = 100; /* battery percentage */
int ptemp, rate, rtime = 0;
if (dcap == 0xdeadbeef) {
/* get from first battery for now */
dcap = acpi_get_design_cap(0);
}
if (!(acpi = fopen(batteries[0], "r")))
return;
eprint(1, "opened acpi file successfully");
fread(buf, 512, 1, acpi);
fclose(acpi);
/* This section of the code will calculate "percentage remaining"
* using battery capacity, and the following formula (acpi spec 3.9.2):
* percentage = (current_capacity / last_full_capacity) * 100; */
if ((ptr = strstr(buf, "remaining capacity"))) {
ptr += 25;
sscanf(ptr, "%d", &ptemp);
eprint(1, "capacity: %d\n", ptemp);
percent = (float)((float)ptemp / (float)dcap) * 100;
eprint(1, "percent: %d\n", percent);
}
apminfo->percentage = percent;
/* this section of code will calculate "time remaining"
* using battery remaining capacity, and battery "rate" (3.9.3) */
if ((ptr = strstr(buf, "present rate"))) {
ptr += 25;
sscanf(ptr, "%d", &rate);
eprint(1, "rate: %d\n", rate);
if (rate <= 0)
rate = 0;
/* time remaining in minutes */
rtime = ((float)((float)ptemp / (float)rate)) * 60;
if (rtime <= 0)
rtime = 0;
eprint(1, "time rem: %d\n", rtime);
}
apminfo->rtime = rtime;
if ((ptr = strstr(buf, "charging state"))) {
/* found battery discharging. This is used to determine if
* we are on AC power or not. Notice check for "ch" later on */
stat = *(ptr + 25);
if (stat == 'o' || stat == 'u') /* "ok" | "unknown" : charged, on ac power */
apminfo->power = POWER;
else
/* we set this, and later on use percentage
* value to determine high/med/low */
apminfo->power = HIGH;
/* but if we are on power, we might be charging too. Check. */
if ((ptr = strstr(buf, "charging state"))) {
/* found battery charging line. We will change power state
* if we are on power, and charging. */
stat = *(ptr + 25);
/* this is seriously stupid - but we catch "critical" */
if (stat == 'c' && (*(ptr + 26) == 'h'))
apminfo->power = CHARGING;
}
}
/* we are not on power, and not charging. So, it would make sense
* to check if battery is "critical low", and calculate interesting
* things like battery HIGH/LOW, and maybe battery usage LOAD
* This will be replaced with some code to allow setting user-specified
* low / critical alarms */
if ((apminfo->power != POWER) && (apminfo->power != CHARGING)) {
eprint(1, "entering battery status check");
if ((ptr = strstr(buf, "capacity state"))) {
stat = *(ptr + 25);
/* only check "c" here because we already caught "CHarging" earlier
* and also look into crit_level */
if (stat == 'c' || (apminfo->percentage <= apminfo->crit_level)) {
/* nothing else to do here - critical battery. get out */
eprint(1, "Received critical battery status");
apminfo->power = CRIT;
}
}
}
process_plugin_timer();
eprint(1, "current state: %s (%d)", state[apminfo->power], apminfo->power);
}
#endif /* ACPI */

91
wmacpi-1.34/libapm.c Normal file
View file

@ -0,0 +1,91 @@
#include <stdio.h>
#include "wmacpi.h"
#ifdef APM
#ifdef PRO
extern char *state[];
#endif
extern APMInfo *apminfo;
extern int crit_level;
int power_init(void)
{
FILE *apm;
if (!(apm = fopen("/proc/apm", "r"))) {
fprintf(stderr, "This system does not support APM\n");
return 1;
}
fclose(apm);
return 0;
}
void acquire_info(void)
{
FILE *apm;
char buf[256];
char min[10];
int ac_line, batt, percent, rtime;
#ifdef PRO
/* testing */
if (!(apm = fopen("apm", "r")))
return;
#else
if (!(apm = fopen("/proc/apm", "r")))
return;
#endif
fgets(buf, 255, apm);
sscanf(buf, "%*s %*s %*s %x %x %*s %d%% %d %s",
&ac_line, &batt, &percent, &rtime, min);
eprint(0, "%02x %02x, %03d%%, %d", ac_line, batt, percent, rtime);
apminfo->percentage = percent;
apminfo->rtime = rtime;
switch (ac_line) {
case 0: /* on battery. calculate status. handle charging under AC */
switch (batt) {
case 0:
apminfo->power = HIGH;
break;
case 1:
apminfo->power = LOW;
break;
case 2:
apminfo->power = CRIT;
break;
}
/* check user-defined critical alarm */
if (apminfo->percentage <= apminfo->crit_level)
apminfo->power = CRIT;
break;
case 1: /* on AC power. Check if battery is being charged */
#ifdef RETARDED_APM
/* this is incase your battery is "charging" all the fucking time,
* even when it's actually done charging */
if ((batt == 3) && (percent != 100))
#else
if (batt == 3)
#endif
apminfo->power = CHARGING;
else
apminfo->power = POWER;
break;
#ifdef STUPID_APM
/* treatment for GAY apm bioses that show wrong time
* remaining when AC is plugged in */
apminfo->rtime = 0;
#endif
}
fclose(apm);
process_plugin_timer();
eprint(1, "current state: %s (%d)", state[apminfo->power], apminfo->power);
}
#endif /* APM */

207
wmacpi-1.34/master.xpm Normal file
View file

@ -0,0 +1,207 @@
/* XPM */
static char * master_xpm[] = {
"157 88 116 2",
" c None",
". c #000000",
"+ c #FF0000",
"@ c #FF0900",
"# c #FF1200",
"$ c #FF1C00",
"% c #202020",
"& c #FF2F00",
"* c #FF3800",
"= c #FF4200",
"- c #FF4B00",
"; c #FF5E00",
"> c #FF6700",
", c #FF7100",
"' c #FF7A00",
") c #FF8D00",
"! c #FF9700",
"~ c #FFA000",
"{ c #FFA900",
"] c #FFBC00",
"^ c #FFC600",
"/ c #FFCF00",
"( c #FFD900",
"_ c #FFEC00",
": c #FFF500",
"< c #FFFF00",
"[ c #F5FF00",
"} c #E2FF00",
"| c #D9FF00",
"1 c #CFFF00",
"2 c #C6FF00",
"3 c #B3FF00",
"4 c #AAFF00",
"5 c #A0FF00",
"6 c #97FF00",
"7 c #84FF00",
"8 c #7AFF00",
"9 c #71FF00",
"0 c #67FF00",
"a c #54FF00",
"b c #4BFF00",
"c c #42FF00",
"d c #38FF00",
"e c #25FF00",
"f c #1CFF00",
"g c #12FF00",
"h c #09FF00",
"i c #400000",
"j c #400300",
"k c #400500",
"l c #400700",
"m c #400C00",
"n c #400E00",
"o c #401100",
"p c #401300",
"q c #401800",
"r c #401A00",
"s c #401D00",
"t c #401F00",
"u c #402400",
"v c #402600",
"w c #402800",
"x c #402B00",
"y c #402F00",
"z c #403200",
"A c #403400",
"B c #403700",
"C c #403B00",
"D c #403E00",
"E c #404000",
"F c #3E4000",
"G c #394000",
"H c #374000",
"I c #344000",
"J c #324000",
"K c #2D4000",
"L c #2B4000",
"M c #284000",
"N c #264000",
"O c #214000",
"P c #1F4000",
"Q c #1D4000",
"R c #1A4000",
"S c #154000",
"T c #134000",
"U c #114000",
"V c #0E4000",
"W c #0A4000",
"X c #074000",
"Y c #054000",
"Z c #034000",
"` c #C7C7C7",
" . c #303030",
".. c #20B2AE",
"+. c #004941",
"@. c #188A86",
"#. c #DAF5B2",
"$. c #355600",
"%. c #FEFFFF",
"&. c #AAAFA9",
"*. c #315900",
"=. c #D0D2D1",
"-. c #FDFEF6",
";. c #FF2D00",
">. c #DA0710",
",. c #F3FFF9",
"'. c #A5F812",
"). c #A7ACB2",
"!. c #4F5354",
"~. c #87F91F",
"{. c #94F625",
"]. c #C0C6BC",
"^. c #22B2AE",
"/. c #027E72",
"(. c #034A40",
"_. c #107D79",
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . . . . .% . . . .% . . . .% . . . .% . . . .% . . . .% . . . .% . . . .% . . . .% . . . .% . . . . ",
" . % % % % % % ..........% % % % ....................% % ` . % % % % % +.+.+.% % % +.+.+.% % % ..% % % % % ` . ",
" . % % % % % ..% % % % ......% % ..% % % % % % % % ..% % ` . % % +.% +.% % % +.% +.% % % +.% ..% ..% ..% % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % % % % % ..% % % % ..% % % % ..% % % % % % % % ....% ` . % % +.% +.% % % +.% +.% % % +.% % ..% ..% % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % % % ......% % % % ..% % % % ..% % % % % % % % ....% ` . % % % % % +.+.+.% % % +.+.+.% % % % ..% % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % % ..% % ..% % % % ......% % ..% % % % % % % % ....% ` . % % +.% +.% % % +.% +.% % % +.% % ..% ..% % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % ..% % % % ..........% % % % ..% % % % % % % % ..% % ` . % % +.% +.% % % +.% +.% % % +.% ..% ..% ..% % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % ..% % % % % % % % % % % % % ....................% % ` . % % % % % +.+.+.% % % +.+.+.% % % % % ..% % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z ",
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . % % ......% % % +.+.+.@.% @.......@.% @.......@.% @.+.+.+.@.% @.......@.% @.......@.% @.......@.% @.......@.% @.......@.% % ..% % % % % % % ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ` . % ..% % % ..% +.% % % ..% +.% % % ..% +.% % % ..% ..% % % ..% ..% % % +.% ..% % % +.% +.% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% % ..% ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . #.$.$.. %.%.%.%.%.%.%.%.%.&.% ` . % ..% % % ..% +.% % % ..% +.% % % ..% +.% % % ..% ..% % % ..% ..% % % +.% ..% % % +.% +.% % % ..% ..% % % ..% ..% % % ..% % ..% ..% % % @.% ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . $.*.*.. %.=.=.=.=.=.=.=.=.&.% ` . % @.+.+.+.@.% % +.+.+.@.% @.......@.% % ......@.% @.......@.% @.......@.% @.......@.% % +.+.+.@.% @.......@.% @.......@.% % % ..% % % % % % ",
" . % % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % ` . $.*.*.. %.=.=.=.=.=.=.=.=.&.% ` . % ..% % % ..% +.% % % ..% ..% % % +.% +.% % % ..% +.% % % ..% +.% % % ..% ..% % % ..% +.% % % ..% ..% % % ..% +.% % % ..% % ..% ..% % % % % ",
" . % % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ` . . . . . %.=.=.=.=.=.=.=.=.&.% ` . % ..% % % ..% +.% % % ..% ..% % % +.% +.% % % ..% +.% % % ..% +.% % % ..% ..% % % ..% +.% % % ..% ..% % % ..% +.% % % ..% ..% ..% ..% % ..% -.;.;. ",
" . % % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ` . %.%.%.%.%.=.=.=.=.=.=.=.=.&.% ` . % % ......% % % +.+.+.@.% @.......@.% @.......@.% % +.+.+.@.% @.......@.% @.......@.% % +.+.+.@.% @.......@.% @.......@.% % % % ..% % % @.% ;.;.;. ",
" . % % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ;.;.>. ",
" . % % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . ",
" . % % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % . . . . . . . . . . . . . . . . ` . . . . . . . . . . . . . . . . ` ",
" . % % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % % % % ..........% % % % ....................% % % @.% % ......% % % ......% % % ..% % % % . ,.'.'.. ).).).).).).).).).!.% ` . #.$.$.. %.%.%.%.%.%.%.%.%.&.% ` ",
" . % % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % % % ..% % % % ......% % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% . '.~.{.. ).].].].].].].].].!.% ` . $.*.*.. %.=.=.=.=.=.=.=.=.&.% ` ",
" . % % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % % % ..% % % % ..% % % % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % . '.{.{.. ).].].].].].].].].!.% ` . $.*.*.. %.=.=.=.=.=.=.=.=.&.% ` ",
" . % % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % % ......% % % % ..% % % % ..% % % % % % % % ....% % @.% @.+.+.+.@.% @.+.+.+.@.% % % ..% % % . . . . . ).].].].].].].].].!.% ` . . . . . %.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` . % % ..% % ..% % % % ......% % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % . ).).).).).].].].].].].].].!.% ` . %.%.%.%.%.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . %.&.&.&.&.&.&.&.&.&.&.&.&.&.% ` . % ..% % % % ..........% % % % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . . . . . . . . . . . . . . . % ` . % ..% % % % % % % % % % % % % ....................% % % @.% % ......% % % ......% % % % % ..% % . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % +.+.+.+.+.% % % % +.+.+.+.+.+.+.+.+.+.% % % % % % +.+.+.% % % +.+.+.% % % +.% % % % . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % +.% % % % +.+.+.% % +.% % % % % % % % +.% % % +.% +.% % % +.% +.% % % +.% +.% +.% +.% . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % +.% % % % +.% % % % +.% % % % % % % % +.+.% % +.% +.% % % +.% +.% % % +.% % +.% +.% % . ).].].].].].].].].].].].].!.% ` . %.=.=.=.=.=.=.=.=.=.=.=.=.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % +.+.+.% % % % +.% % % % +.% % % % % % % % +.+.% % % % % +.+.+.% % % +.+.+.% % % % +.% % % . ).!.!.!.!.!.!.!.!.!.!.!.!.!.% ` . %.&.&.&.&.&.&.&.&.&.&.&.&.&.% ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % +.% % +.% % % % +.+.+.% % +.% % % % % % % % +.+.% % +.% +.% % % +.% +.% % % +.% % +.% +.% % . . . . . . . . . . . . . . . % ` . . . . . . . . . . . . . . . % ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % +.% % % % +.+.+.+.+.% % % % +.% % % % % % % % +.% % % +.% +.% % % +.% +.% % % +.% +.% +.% +.% ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % +.% % % % % % % % % % % % % +.+.+.+.+.+.+.+.+.+.% % % % % % +.+.+.% % % +.+.+.% % % % % +.% % ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % ^.^.^.% % % % % % /.% /.^.^.^./.% /.^.^.^./.% /.% % % /.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% % % % % % % % % % % % % % % % % % % ",
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % ^.% % % ^.% % % % % ^.% % % % % ^.% % % % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % % % % % % % ^.% ^.% % % ^.% ^.% % % ^.% % % % % % % % % % % % % % % % % % % ",
" . % ^.% % % ^.% % % % % ^.% % % % % ^.% % % % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % % % % % % % ^.% ^.% % % ^.% ^.% % % ^.% % % % % % % % % % % % % % % % % % % ",
" . % /.% % % /.% % % % % /.% /.^.^.^./.% % ^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% % % % % /.% (.^.^.^.(.% /.^.^.^./.% /.^.^.^./.% % % % % % % % % % % % % ",
" . % ^.% % % ^.% % % % % ^.% ^.% % % % % % % % % ^.% % % % % ^.% % % % % ^.% ^.% % % ^.% % % % % ^.% ^.% % % ^.% % % % % ^.% % % % % % % % % % % % % % % % % % % ",
" . % ^.% % % ^.% % % % % ^.% ^.% % % % % % % % % ^.% % % % % ^.% % % % % ^.% ^.% % % ^.% % % % % ^.% ^.% % % ^.% % % % % ^.% % % % % % % % % % % % % % % % % % % ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % ^.^.^.% % % % % % ^.% /.^.^.^./.% /.^.^.^./.% % % % % /.% /.^.^.^./.% /.^.^.^./.% % % % % /.% /.^.^.^./.% /.^.^.^./.% % % % % % % % % % % % % % % % % ^.% ",
" % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
"% (.^.^.^.(.% /.^.^.^.% % /.^.^.^./.% /.^.^.^.% % /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.% % % /.% % % /.% % % % % % % /.% /.% % % /.% /.% % % % % ^.% % % ^.% /.^.^.^.% % /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.^.^.^./.% /.% % % /.% /.% % % /.% /.% % % /.% /.% % % /.% /.% % % /.% /.^.^.^./.% ",
"% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % ^.% ^.% % % % % ^.% % % % % ^.% % % % % ^.% % % ^.% % % ^.% % % % % % % ^.% ^.% % % ^.% ^.% % % % % ^.^.% ^.^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % % % % % ^.% % % ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% % % % % ^.% ",
"% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % ^.% ^.% % % % % ^.% % % % % ^.% % % % % ^.% % % ^.% % % ^.% % % % % % % ^.% ^.% % ^.(.% ^.% % % % % ^.% ^.% ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % % % % % ^.% % % ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% (.^.% ^.(.% ^.% % % ^.% % % % ^.(.% ",
"% /.^.^.^./.% /.^.^.^.% % /.% % % % % /.% % % /.% /.^.^.^.% % /.^.^.^.% % /.(.^.^./.% /.^.^.^./.% % % /.% % % % % % % /.% /.^.^.(.% % /.% % % % % /.% % % /.% /.% % % /.% /.% % % /.% /.^.^.^./.% /.^.% % /.% /.^.^.^.% % /.^.^.^./.% % % /.% % % /.% % % /.% /.% % % /.% /.% % % /.% % (.^.(.% % /.^.^.^./.% % (.^.(.% % ",
"% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % ^.% ^.% % % % % ^.% % % % % ^.% % % ^.% ^.% % % ^.% % % ^.% % % % % % % ^.% ^.% % ^.(.% ^.% % % % % ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% ^.% ^.% ^.% % % ^.% % % % % ^.% % % ^.% % % ^.% % % ^.% ^.% % % ^.% ^.% ^.% ^.% (.^.% ^.(.% % % % % ^.% (.^.% % % % ",
"% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % ^.% ^.% % % % % ^.% % % % % ^.% % % ^.% ^.% % % ^.% % % ^.% % % % % % % ^.% ^.% % % ^.% ^.% % % % % ^.% % % ^.% ^.% % % ^.% ^.% % % ^.% ^.% % % % % ^.% % ^.^.% ^.% % % ^.% % % % % ^.% % % ^.% % % ^.% % % ^.% ^.% % % ^.% ^.^.% ^.^.% ^.% % % ^.% % % % % ^.% ^.% % % % % ",
"% /.% % % /.% /.^.^.^.% % /.^.^.^./.% ^.^.^.^.% % /.^.^.^./.% ^.% % % % % /.^.^.^./.% /.% % % /.% % % ^.% % % /.^.^.^./.% /.% % % /.% /.^.^.^.(.% /.% % % /.% ^.% % % ^.% /.^.^.^./.% /.% % % % % /.^.^.^./.% /.% % % /.% /.^.^.^./.% % % /.% % % (.^.^.^.^.% % ^.^.^.% % ^.% % % ^.% /.% % % ^.% /.^.^.^./.% /.^.^.^./.% ",
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
"% % ........% % % +.+.+.+._.% _.........@.% _........._.% _.+.+.+.+._.% _........._.% _.........@.% _........._.% _.........@.% _.........@.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % % ^.+.+.+.^.% ",
"% ..% % % % ..% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% ..% % % % +.% ..% % % % +.% +.% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ^.% ^.% ^.+.% ",
"% ..% % % % ..% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% ..% % % % +.% ..% % % % +.% +.% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % +.^.% ^.% +.% ",
"% ..% % % % ..% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% ..% % % % +.% ..% % % % +.% +.% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % +.% ^.% ^.+.% ",
"% ..% % % % ..% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% ..% % % % +.% ..% % % % +.% +.% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % +.^.% ^.% ^.% ",
"% _.+.+.+.+._.% % +.+.+.+._.% _........._.% _........._.% _........._.% _........._.% _........._.% % +.+.+.+._.% _........._.% _........._.% % % % % % _.+.+.+.+._.% _.+.+.+.+._.% % % % % _.+.+.+.+._.% _.+.+.+.+._.% % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % ^.+.+.+.^.% % ",
"% ..% % % % ..% +.% % % % ..% ..% % % % +.% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % +.% % % % +.% ",
"% ..% % % % ..% +.% % % % ..% ..% % % % +.% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % % % % +.% % % % +.% +.% % % % +.% % ^.^.^.^.^.+.% ",
"% ..% % % % ..% +.% % % % ..% ..% % % % +.% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ^.% % % ^.^.% ",
"% ..% % % % ..% +.% % % % ..% ..% % % % +.% +.% % % % ..% +.% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% ..% % % % ..% +.% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % +.% % % % +.% +.% % % % +.% % +.% % +.% % % % +.% +.% % % % +.% % ^.% % % ^.^.% ",
"% % ........% % % +.+.+.+._.% _........._.% _........._.% % +.+.+.+._.% _........._.% _........._.% % +.+.+.+._.% _........._.% _........._.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % +.+.+.+.% % % +.+.+.+.% % % % % % % +.+.+.+.% % % +.+.+.+.% % % ^.^.^.^.^.% % ",
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "};

111
wmacpi-1.34/master_low.xpm Normal file
View file

@ -0,0 +1,111 @@
/* XPM */
static char * master_xpm[] = {
"157 88 20 1",
" c None",
". c #000000",
"+ c #FF0000",
"@ c #202020",
"# c #FFF500",
"$ c #09FF00",
"% c #400000",
"& c #403B00",
"* c #034000",
"= c #AAAFA9",
"- c #20B2AE",
"; c #004941",
"> c #188A86",
", c #D0D2D1",
"' c #FEFFFF",
") c #4F5354",
"! c #22B2AE",
"~ c #027E72",
"{ c #034A40",
"] c #107D79",
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" ........................................................ . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" .%%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@****= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" ======================================================== . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" ............................. ......................... . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@= .@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" .@@@@@@-----@@@@----------@@= .@@@@@;;;@@@;;;@@@-@@@@@= . ",
" .@@@@@-@@@@---@@-@@@@@@@@-@@= .@@;@;@@@;@;@@@;@-@-@-@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@@@@@-@@@@-@@@@-@@@@@@@@--@= .@@;@;@@@;@;@@@;@@-@-@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@@@---@@@@-@@@@-@@@@@@@@--@= .@@@@@;;;@@@;;;@@@@-@@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@@-@@-@@@@---@@-@@@@@@@@--@= .@@;@;@@@;@;@@@;@@-@-@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@-@@@@-----@@@@-@@@@@@@@-@@= .@@;@;@@@;@;@@@;@-@-@-@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@-@@@@@@@@@@@@@----------@@= .@@@@@;;;@@@;;;@@@@@-@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@= .@@@@@@@@@@@@@@@@@@@@@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@= .@@@@@@@@@@@@@@@@@@@@@@@= . %%%%@%%%%@%%%%@&&&&@&&&&@&&&&@&&&&@****@****@****@**** ",
" ============================= ========================= . ",
" . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
" . @@---@@@;;;>@>--->@>--->@>;;;>@>--->@>--->@>--->@>--->@>--->@@-@@@@@@@ ",
" ..................................... ................= . @-@@@-@;@@@-@;@@@-@;@@@-@-@@@-@-@@@;@-@@@;@;@@@-@-@@@-@-@@@-@-@-@-@@-@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= .,**.'''''''''=@= . @-@@@-@;@@@-@;@@@-@;@@@-@-@@@-@-@@@;@-@@@;@;@@@-@-@@@-@-@@@-@@-@-@@@>@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= .***.',,,,,,,,=@= . @>;;;>@@;;;>@>--->@@--->@>--->@>--->@>--->@@;;;>@>--->@>--->@@@-@@@@@@ ",
" .@@@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@@= .***.',,,,,,,,=@= . @-@@@-@;@@@-@-@@@;@;@@@-@;@@@-@;@@@-@-@@@-@;@@@-@-@@@-@;@@@-@@-@-@@@@@ ",
" .@@;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@@= .....',,,,,,,,=@= . @-@@@-@;@@@-@-@@@;@;@@@-@;@@@-@;@@@-@-@@@-@;@@@-@-@@@-@;@@@-@-@-@-@@-@ ,++ ",
" .@@;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@@= .''''',,,,,,,,=@= . @@---@@@;;;>@>--->@>--->@@;;;>@>--->@>--->@@;;;>@>--->@>--->@@@@-@@@>@ +++ ",
" .@@;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +++ ",
" .@@;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . ",
" .@@@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@@= .',,,,,,,,,,,,=@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ................= ................= ",
" .@@;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . @@@@@@-----@@@ @----------@@ @>@@---@@@---@@@-@@@@ .,$$.))))))))))@= .,**.'''''''''=@= ",
" .@@;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . @@@@@-@@@@---@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ .$$$.),,,,,,,,=@= .***.',,,,,,,,=@= ",
" .@@;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . @@@@@-@@@@-@@@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ .$$$.),,,,,,,,=@= .***.',,,,,,,,=@= ",
" .@@;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@@= .',,,,,,,,,,,,=@= . @@@---@@@@-@@@ @-@@@@@@@@--@ @>@>;;;>@>;;;>@@@-@@@ .....),,,,,,,,=@= .....',,,,,,,,=@= ",
" .@@@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@@= .',,,,,,,,,,,,=@= . @@-@@-@@@@---@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ .))))),,,,,,,,=@= .''''',,,,,,,,=@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= .'=============@= . @-@@@@-----@@@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= ...............@= . @-@@@@@@@@@@@@ @----------@@ @>@@---@@@---@@@@@-@@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" ===================================== ================= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" . .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" ........................................................ . @@@@@@;;;;;@@@ @;;;;;;;;;;@@ @@@@;;;@@@;;;@@@;@@@@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@;@@@@;;;@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@;@@@@;@@@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ .),,,,,,,,,,,,=@= .',,,,,,,,,,,,=@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@;;;@@@@;@@@ @;@@@@@@@@;;@ @@@@;;;@@@;;;@@@@;@@@ .)=============@= .'=============@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@;@@;@@@@;;;@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ ...............@= ...............@= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @;@@@@;;;;;@@@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ ================= ================= ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @;@@@@@@@@@@@@ @;;;;;;;;;;@@ @@@@;;;@@@;;;@@@@@;@@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ ",
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@!!!@@@@@@~@~!!!~@~!!!~@~@@@~@~!!!~@~!!!~@~!!!~@~!!!~@~!!!~@@@@@@@@@@@@@ @@@@@@ ",
" ======================================================== . @!@@@!@@@@@!@@@@@!@@@@@!@!@@@!@!@@@@@!@@@@@@@@@!@!@@@!@!@@@!@@@@@@@@@@@@@ @@@@@@ ",
" . @!@@@!@@@@@!@@@@@!@@@@@!@!@@@!@!@@@@@!@@@@@@@@@!@!@@@!@!@@@!@@@@@@@@@@@@@ @@@@@@ ",
" . @~@@@~@@@@@~@~!!!~@@!!!~@~!!!~@~!!!~@~!!!~@@@@@~@{!!!{@~!!!~@~!!!~@@@@@@@ @@@@@@ ",
" . @!@@@!@@@@@!@!@@@@@@@@@!@@@@@!@@@@@!@!@@@!@@@@@!@!@@@!@@@@@!@@@@@@@@@@@@@ @@@@@@ ",
" . @!@@@!@@@@@!@!@@@@@@@@@!@@@@@!@@@@@!@!@@@!@@@@@!@!@@@!@@@@@!@@@@@@@@@@@@@ @@@@@@ ",
"................................................................. @@!!!@@@@@@!@~!!!~@~!!!~@@@@@~@~!!!~@~!!!~@@@@@~@~!!!~@~!!!~@@@@@@@@@@@@@ @@@@!@ ",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@{!!!{@~!!!@@~!!!~@~!!!@@~!!!~@~!!!~@~!!!~@~@@@~@@@~@@@@@@@~@~@@@~@~@@@@@!@@@!@~!!!@@~!!!~@~!!!~@~!!!~@~!!!~@~!!!~@~!!!~@~@@@~@~@@@~@~@@@~@~@@@~@~@@@~@~!!!~@",
"@!@@@!@!@@@!@!@@@@@!@@@!@!@@@@@!@@@@@!@@@@@!@@@!@@@!@@@@@@@!@!@@@!@!@@@@@!!@!!@!@@@!@!@@@!@!@@@!@!@@@!@!@@@!@!@@@@@@@!@@@!@@@!@!@@@!@!@@@!@!@@@!@!@@@!@@@@@!@",
"@!@@@!@!@@@!@!@@@@@!@@@!@!@@@@@!@@@@@!@@@@@!@@@!@@@!@@@@@@@!@!@@!{@!@@@@@!@!@!@!@@@!@!@@@!@!@@@!@!@@@!@!@@@!@!@@@@@@@!@@@!@@@!@!@@@!@!@@@!@{!@!{@!@@@!@@@@!{@",
"@~!!!~@~!!!@@~@@@@@~@@@~@~!!!@@~!!!@@~{!!~@~!!!~@@@~@@@@@@@~@~!!{@@~@@@@@~@@@~@~@@@~@~@@@~@~!!!~@~!@@~@~!!!@@~!!!~@@@~@@@~@@@~@~@@@~@~@@@~@@{!{@@~!!!~@@{!{@@",
"@!@@@!@!@@@!@!@@@@@!@@@!@!@@@@@!@@@@@!@@@!@!@@@!@@@!@@@@@@@!@!@@!{@!@@@@@!@@@!@!@@@!@!@@@!@!@@@@@!@!@!@!@@@!@@@@@!@@@!@@@!@@@!@!@@@!@!@!@!@{!@!{@@@@@!@{!@@@@",
"@!@@@!@!@@@!@!@@@@@!@@@!@!@@@@@!@@@@@!@@@!@!@@@!@@@!@@@@@@@!@!@@@!@!@@@@@!@@@!@!@@@!@!@@@!@!@@@@@!@@!!@!@@@!@@@@@!@@@!@@@!@@@!@!@@@!@!!@!!@!@@@!@@@@@!@!@@@@@",
"@~@@@~@~!!!@@~!!!~@!!!!@@~!!!~@!@@@@@~!!!~@~@@@~@@@!@@@~!!!~@~@@@~@~!!!{@~@@@~@!@@@!@~!!!~@~@@@@@~!!!~@~@@@~@~!!!~@@@~@@@{!!!!@@!!!@@!@@@!@~@@@!@~!!!~@~!!!~@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@",
"@@----@@@;;;;]@]---->@]----]@];;;;]@]----]@]---->@]----]@]---->@]---->@@@@@ @@----@@@----@@@@@@@----@@@----@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @@!;;;!@",
"@-@@@@-@;@@@@-@;@@@@-@;@@@@-@-@@@@-@-@@@@;@-@@@@;@;@@@@-@-@@@@-@-@@@@-@@-@@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @!@!@!;@",
"@-@@@@-@;@@@@-@;@@@@-@;@@@@-@-@@@@-@-@@@@;@-@@@@;@;@@@@-@-@@@@-@-@@@@-@@-@@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @;!@!@;@",
"@-@@@@-@;@@@@-@;@@@@-@;@@@@-@-@@@@-@-@@@@;@-@@@@;@;@@@@-@-@@@@-@-@@@@-@@@@@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @;@!@!;@",
"@-@@@@-@;@@@@-@;@@@@-@;@@@@-@-@@@@-@-@@@@;@-@@@@;@;@@@@-@-@@@@-@-@@@@-@@@@@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @;!@!@!@",
"@];;;;]@@;;;;]@]----]@]----]@]----]@]----]@]----]@@;;;;]@]----]@]----]@@@@@ @];;;;]@];;;;]@@@@@];;;;]@];;;;]@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @!;;;!@@",
"@-@@@@-@;@@@@-@-@@@@;@;@@@@-@;@@@@-@;@@@@-@-@@@@-@;@@@@-@-@@@@-@;@@@@-@@@@@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @;@@@@;@",
"@-@@@@-@;@@@@-@-@@@@;@;@@@@-@;@@@@-@;@@@@-@-@@@@-@;@@@@-@-@@@@-@;@@@@-@@@@@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @!!!!!;@",
"@-@@@@-@;@@@@-@-@@@@;@;@@@@-@;@@@@-@;@@@@-@-@@@@-@;@@@@-@-@@@@-@;@@@@-@@-@@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @!@@@!!@",
"@-@@@@-@;@@@@-@-@@@@;@;@@@@-@;@@@@-@;@@@@-@-@@@@-@;@@@@-@-@@@@-@;@@@@-@@-@@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @!@@@!!@",
"@@----@@@;;;;]@]----]@]----]@@;;;;]@]----]@]----]@@;;;;]@]----]@]----]@@@@@ @@----@@@----@@@@@@@----@@@----@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @!!!!!@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@"};

634
wmacpi-1.34/wmacpi.c Normal file
View file

@ -0,0 +1,634 @@
/* apm/acpi dockapp - phear it 1.34
* Copyright (C) 2000, 2001, 2002 timecop@japan.co.jp
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* #define RETARDED_APM */
/* #define STUPID_APM */
/* see README if you need to #define these or not. No user serviceable
* parts below */
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <getopt.h>
#include <unistd.h>
#include <time.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/shape.h>
#include <X11/xpm.h>
#include "wmacpi.h"
#if defined(ACPI) && defined(APM)
# error Cannot compile with ACPI and APM compiled in. Please select only one.
#endif
/* main pixmap */
#ifdef LOW_COLOR
#include "master_low.xpm"
#else
#include "master.xpm"
#endif
typedef struct {
Display *display; /* X11 display struct */
int screen; /* current screen */
Window root; /* root window */
Window win; /* one window */
Window iconwin; /* another one */
Pixmap pixmap; /* UI pixmap, window pixmap */
Pixmap mask; /* mask pixmap for shape */
GC gc; /* main drawing GC */
Pixmap text; /* pixmap for text scroller */
int tw; /* text width inside text pixmap */
int update; /* need to redraw? */
int pressed; /* is the button pressed? */
DspMode dspmode; /* time remaining or battery timer */
Mode blink; /* should we blink the LED? (critical battery) */
} Dockapp;
/* for debug printing */
#ifdef PRO
char *state[] = { "AC", "Charging", "High", "Low", "Crit" };
#endif
/* globals */
Dockapp *dockapp;
APMInfo *apminfo;
int count = 0; /* global timer variable */
int noisy_critical = 0; /* ring xbell annoyingly if critical? */
/* proto for local stuff */
static void new_window(char *name);
static int open_display(char *display);
static void redraw_window(void);
static void render_text(char *string);
static void scroll_text(int x, int y, int width, int tw, int reset);
static void display_percentage(int percent);
static void display_state(void);
static void display_time(int minutes);
static void blink_button(Mode mode);
#define copy_xpm_area(x, y, w, h, dx, dy) \
{ \
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->pixmap, \
dockapp->gc, x, y, w, h, dx, dy); \
dockapp->update = 1; \
}
static void redraw_window(void)
{
if (dockapp->update) {
eprint(1, "redrawing window");
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->iconwin,
dockapp->gc, 0, 0, 64, 64, 0, 0);
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->win,
dockapp->gc, 0, 0, 64, 64, 0, 0);
dockapp->update = 0;
}
}
static void new_window(char *name)
{
XpmAttributes attr;
Pixel fg, bg;
XGCValues gcval;
XSizeHints sizehints;
XClassHint classhint;
XWMHints wmhints;
dockapp->screen = DefaultScreen(dockapp->display);
dockapp->root = DefaultRootWindow(dockapp->display);
sizehints.flags = USSize;
sizehints.width = 64;
sizehints.height = 64;
fg = BlackPixel(dockapp->display, dockapp->screen);
bg = WhitePixel(dockapp->display, dockapp->screen);
dockapp->win = XCreateSimpleWindow(dockapp->display, dockapp->root,
0, 0, sizehints.width,
sizehints.height, 1, fg, bg);
dockapp->iconwin =
XCreateSimpleWindow(dockapp->display, dockapp->win, 0, 0,
sizehints.width, sizehints.height, 1, fg, bg);
XSetWMNormalHints(dockapp->display, dockapp->win, &sizehints);
classhint.res_name = name;
classhint.res_class = name;
XSetClassHint(dockapp->display, dockapp->win, &classhint);
XSelectInput(dockapp->display, dockapp->win,
ExposureMask | ButtonPressMask | ButtonReleaseMask |
StructureNotifyMask);
XSelectInput(dockapp->display, dockapp->iconwin,
ExposureMask | ButtonPressMask | ButtonReleaseMask |
StructureNotifyMask);
XStoreName(dockapp->display, dockapp->win, name);
XSetIconName(dockapp->display, dockapp->win, name);
gcval.foreground = fg;
gcval.background = bg;
gcval.graphics_exposures = False;
dockapp->gc =
XCreateGC(dockapp->display, dockapp->win,
GCForeground | GCBackground | GCGraphicsExposures,
&gcval);
attr.exactColors = 0;
attr.alloc_close_colors = 1;
attr.closeness = 1L << 15;
attr.valuemask = XpmExactColors | XpmAllocCloseColors | XpmCloseness;
if (XpmCreatePixmapFromData(dockapp->display, dockapp->win,
master_xpm, &dockapp->pixmap,
&dockapp->mask, &attr) != XpmSuccess) {
fprintf(stderr, "FATAL: Not enough colors for main pixmap!\n");
exit(1);
}
/* text area is 318x7, or 53 characters long */
dockapp->text = XCreatePixmap(dockapp->display, dockapp->win, 318, 7,
DefaultDepth(dockapp->display,
dockapp->screen));
if (!dockapp->text) {
fprintf(stderr, "FATAL: Cannot create text scroll pixmap!\n");
exit(1);
}
XShapeCombineMask(dockapp->display, dockapp->win, ShapeBounding, 0, 0,
dockapp->mask, ShapeSet);
XShapeCombineMask(dockapp->display, dockapp->iconwin, ShapeBounding, 0,
0, dockapp->mask, ShapeSet);
wmhints.initial_state = WithdrawnState;
wmhints.flags = StateHint;
wmhints.icon_window = dockapp->iconwin;
wmhints.icon_x = sizehints.x;
wmhints.icon_y = sizehints.y;
wmhints.window_group = dockapp->win;
wmhints.flags =
StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
XSetWMHints(dockapp->display, dockapp->win, &wmhints);
XMapWindow(dockapp->display, dockapp->win);
}
static void render_text(char *string)
{
int i, c, k;
if (strlen(string) > 53)
return;
eprint(1, "rendering: %s", string);
/* prepare the text area by clearing it */
for (i = 0; i < 54; i++) {
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, 133, 57, 6, 8, i * 6, 0);
}
k = 0;
for (i = 0; string[i]; i++) {
c = toupper(string[i]);
if (c >= 'A' && c <= 'Z') { /* letter */
c = c - 'A';
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, c * 6, 67, 6, 7, k, 0);
} else if (c >= '0' && c <= '9') { /* number */
c = c - '0';
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, c * 6 + 66, 58, 6, 7, k, 0);
} else if (c == '.') {
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, 140, 58, 6, 7, k, 0);
} else if (c == '-') {
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, 126, 58, 6, 7, k, 0);
}
k += 6;
}
dockapp->tw = k; /* length of text segment */
/* re-scroll the message */
scroll_text(6, 50, 52, dockapp->tw, 1);
/* reset the scroll repeat counter */
count = 0;
}
static int open_display(char *display)
{
dockapp->display = XOpenDisplay(display);
if (!dockapp->display) {
fprintf(stderr, "Unable to open display '%s'\n", display);
return 1;
}
return 0;
}
static void scroll_text(int x, int y, int width, int tw, int reset)
{
static int pos, first, stop;
if (reset) {
pos = 0;
first = 0;
stop = 0;
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
dockapp->gc, 0, 0, width, 7, x, y);
}
if (stop) {
return;
}
if ((first == 0) && pos == 0) {
pos = width;
first = 1;
}
if (pos == (0 - tw - 2)) {
first = 1;
pos = width;
stop = 1;
return;
}
pos -= 2;
eprint(0, "scrolling");
if (pos > 0) {
copy_xpm_area(66, 9, pos, 7, x, y); /* clear */
XCopyArea(dockapp->display, dockapp->text, dockapp->pixmap,
dockapp->gc, 0, 0, width - pos, 7, x + pos, y);
} else { /* don't need to clear, already in text */
XCopyArea(dockapp->display, dockapp->text, dockapp->pixmap,
dockapp->gc, abs(pos), 0, width, 7, x, y);
}
dockapp->update = 1;
}
static void display_percentage(int percent)
{
static int op = -1, obar;
unsigned int bar;
eprint(1, "received: %d\n", percent);
if (op == percent)
return;
if (percent < 0)
percent = 0;
if (percent > 100)
percent = 100;
if (percent < 100) { /* 0 - 99 */
copy_xpm_area(95, 48, 8, 7, 37, 17);
if (percent >= 10)
copy_xpm_area((percent / 10) * 6 + 67, 28, 5, 7, 40, 17);
copy_xpm_area((percent % 10) * 6 + 67, 28, 5, 7, 46, 17);
} else
copy_xpm_area(95, 37, 21, 9, 37, 16); /* 100% */
op = percent;
bar = percent / 1.8518;
if (bar == obar)
return;
copy_xpm_area(66, 0, bar, 8, 5, 5);
if (bar < 54)
copy_xpm_area(66 + bar, 18, 54 - bar, 8, bar + 5, 5);
obar = bar;
}
static void display_time(int minutes)
{
static int ohour = -1, omin = -1;
static int counter;
int hour, min, tmp;
if (minutes == -1) { /* error - blink 00:00 */
counter++;
if (counter == 5) {
copy_xpm_area(80, 76, 31, 11, 7, 32);
} else if (counter == 10) {
copy_xpm_area(114, 76, 31, 11, 7, 32);
}
if (counter > 10)
counter = 0;
ohour = omin = -1;
return;
}
/* render time on the display */
hour = minutes / 60;
min = minutes % 60;
if (hour == ohour && min == omin)
return;
eprint(0, "redrawing time");
tmp = hour / 10;
copy_xpm_area(tmp * 7 + 1, 76, 6, 11, 7, 32);
tmp = hour % 10;
copy_xpm_area(tmp * 7 + 1, 76, 6, 11, 14, 32);
tmp = min / 10;
copy_xpm_area(tmp * 7 + 1, 76, 6, 11, 25, 32);
tmp = min % 10;
copy_xpm_area(tmp * 7 + 1, 76, 6, 11, 32, 32);
copy_xpm_area(71, 76, 3, 11, 21, 32);
ohour = hour;
omin = min;
}
static void display_state(void)
{
static int dopower;
static int docharging;
static int dobattery;
static int docritical;
static int counter;
switch (apminfo->power) {
case POWER:
eprint(0, "selected ac power case");
if (!dopower) {
dopower = 1;
docharging = 0;
dobattery = 0;
dockapp->blink = OFF;
copy_xpm_area(67, 38, 12, 7, 6, 17);
copy_xpm_area(82, 48, 11, 7, 20, 17);
render_text("On AC power");
}
break;
case CHARGING:
eprint(0, "selected charging case");
counter++;
if (counter == 10) {
copy_xpm_area(67, 38, 12, 7, 6, 17);
} else if (counter == 20) {
copy_xpm_area(67, 48, 12, 7, 6, 17);
}
if (counter > 20)
counter = 0;
if (!docharging) {
render_text("Battery is charging");
/* get rid of battery symbol */
copy_xpm_area(82, 48, 12, 7, 20, 17);
/* housekeeping */
dockapp->blink = OFF;
docharging = 1;
dopower = 0;
dobattery = 0;
}
break;
case HIGH:
case LOW:
case CRIT:
eprint(0, "selected battery case");
if (!dobattery) {
render_text("On Battery");
/* display battery symbol */
copy_xpm_area(82, 38, 12, 7, 20, 17);
/* get rid of AC power symbol */
copy_xpm_area(67, 48, 12, 7, 6, 17);
dobattery = 1;
dopower = 0;
docharging = 0;
}
if (apminfo->power == CRIT) {
dockapp->blink = BLINK;
if (!docritical) {
render_text("Battery Critical Low");
docritical = 1;
}
} else {
if (docritical) {
render_text("On Battery");
docritical = 0;
}
dockapp->blink = OFF;
}
break;
}
}
static void blink_button(Mode mode)
{
static int counter;
static int clear;
if ((mode == OFF) && !clear) {
eprint(0, "we are off");
copy_xpm_area(136, 38, 3, 3, 44, 30);
clear = 1;
return;
}
if (mode != BLINK)
return;
counter++;
if (counter == 5) {
copy_xpm_area(137, 33, 3, 3, 44, 30);
clear = 0;
} else if (counter == 10) {
copy_xpm_area(136, 38, 3, 3, 44, 30);
clear = 0;
/* make some noise */
if (noisy_critical)
XBell(dockapp->display, 100);
}
if (counter > 10)
counter = 0;
}
int main(int argc, char **argv)
{
char *display = NULL;
char ch;
int update = 0;
dockapp = calloc(1, sizeof(Dockapp));
apminfo = calloc(1, sizeof(APMInfo));
dockapp->blink = OFF;
apminfo->crit_level = 10;
/* see if whatever we want to use is supported */
if (power_init()) {
/* power_init functions handle printing error messages */
exit(1);
}
/* parse command-line options */
while ((ch = getopt(argc, argv, "bd:c:h")) != EOF) {
switch (ch) {
case 'b':
noisy_critical = 1;
break;
case 'c':
if (optarg) {
apminfo->crit_level = atoi(optarg);
if ((apminfo->crit_level < 0) || (apminfo->crit_level > 100)) {
fprintf(stderr, "Please use values between 0 and 100%%\n");
apminfo->crit_level = 10;
fprintf(stderr, "Using default value of 10%%\n");
}
}
break;
case 'd':
if (optarg)
display = strdup(optarg);
break;
case 'h':
printf("wmacpi - help\t\t[timecop@japan.co.jp]\n\n"
"-d display\t\tdisplay on remote display <display>\n"
"-b\t\t\tmake noise when battery is critical low (beep)\n"
"-c value\t\tset critical low alarm at <value> percent\n"
"\t\t\t(default: 10 percent)\n"
"-h\t\t\tdisplay this help\n");
return 0;
break;
}
}
/* open local or command-line specified display */
if (open_display(display))
exit(1);
/* make new dockapp window */
new_window("apm");
/* get initial statistics */
acquire_info();
dockapp->dspmode = REMAIN;
/* main loop */
while (1) {
XEvent event;
while (XPending(dockapp->display)) {
eprint(0, "X11 activity");
XNextEvent(dockapp->display, &event);
switch (event.type) {
case Expose:
/* update */
dockapp->update = 1;
while (XCheckTypedEvent(dockapp->display, Expose, &event));
redraw_window();
break;
case DestroyNotify:
XCloseDisplay(dockapp->display);
exit(0);
break;
case ButtonPress:
/* press event */
if (event.xbutton.x >= 44 && event.xbutton.x <= 57 &&
event.xbutton.y >= 30 && event.xbutton.y <= 43) {
eprint(0, "inside button!");
dockapp->pressed = 1;
copy_xpm_area(118, 38, 15, 15, 44, 30);
}
break;
case ButtonRelease:
/* release event */
if (event.xbutton.x >= 44 && event.xbutton.x <= 57 &&
event.xbutton.y >= 30 && event.xbutton.y <= 43 &&
dockapp->pressed) {
/* handle button press */
eprint(0, "release still inside button!");
dockapp->pressed = 0;
copy_xpm_area(136, 38, 15, 15, 44, 30);
if ((apminfo->power != POWER) && (apminfo->power != CHARGING)) {
dockapp->dspmode = !dockapp->dspmode;
eprint(1, "Mode: %d", dockapp->dspmode);
}
/* end button press handler */
}
if (dockapp->pressed) {
copy_xpm_area(136, 38, 15, 15, 44, 30);
dockapp->pressed = 0;
}
break;
}
}
if (update++ == 30) {
eprint(1, "polling apm");
acquire_info();
update = 0;
}
if (count++ == 256) {
scroll_text(6, 50, 52, dockapp->tw, 1);
count = 0;
}
/* it's okay to test here because display_time will not draw anything
* unless there is a change. Also if we switched power states from
* battery to charging/etc, we need to exit from "timer" mode */
if (dockapp->dspmode == REMAIN || apminfo->power == POWER || apminfo->power == CHARGING) {
display_time(apminfo->rtime);
} else {
display_time((time(NULL) - apminfo->timer) / 60);
}
display_state();
blink_button(dockapp->blink);
display_percentage(apminfo->percentage);
scroll_text(6, 50, 52, dockapp->tw, 0);
/* redraw_window, if anything changed - determined inside
* redraw_window. */
redraw_window();
usleep(100000);
}
return 0;
}
/* this handles enabling "on-battery" timer. It only needs to happen once
* for each unplug event. Functions from libapm and libacpi call this to
* start the timer */
void process_plugin_timer(void)
{
static int timer;
if ((apminfo->power != POWER) && (apminfo->power != CHARGING) && !timer) {
eprint(1, "not AC and not charging, and timer is not started");
eprint(1, "starting battery timer");
apminfo->timer = time(NULL);
timer = 1;
}
if (((apminfo->power == POWER) || (apminfo->power == CHARGING)) && timer) {
eprint(1, "disabling battery timer");
timer = 0;
}
}

52
wmacpi-1.34/wmacpi.h Normal file
View file

@ -0,0 +1,52 @@
#ifndef _WMACPI_H_
#define _WMACPI_H_
#ifdef PRO
#define eprint(level, fmt, arg...) \
switch (level) { \
case 0: \
break; \
case 1: \
fprintf(stderr, __FUNCTION__": " fmt, ##arg); \
fprintf(stderr, "\n"); \
break; \
}
#else
#define eprint(level, fmt, arg...) \
do { } while (0)
#endif
typedef enum {
REMAIN,
TIMER
} DspMode;
typedef enum {
BLINK,
OFF
} Mode;
typedef enum {
POWER, /* on AC, Battery charged */
CHARGING, /* on AC, Charging */
HIGH, /* on Battery, HIGH */
LOW, /* on Battery, LOW */
CRIT /* on Battery, CRIT */
} State;
typedef struct {
State power; /* power state: Battery levels or AC */
int percentage; /* battery percentage (-1 if no battery) */
int rtime; /* remaining time */
int timer; /* how long been on battery? */
int crit_level; /* anything below this is critical low */
} APMInfo;
/* detect plugin events */
void process_plugin_timer(void);
/* check if apm/acpi is enabled, etc */
int power_init(void);
/* fill APMInfo with data */
void acquire_info(void);
#endif /* _WMACPI_H_ */

13
wmacpiload-0.1.2/AUTHORS Normal file
View file

@ -0,0 +1,13 @@
Main Hacker:
Anthony Peacock <bratag44@hotmail.com>
Main Author:
Thomas Nemeth <tnemeth@free.fr>
Based largely on work on WMMemMon, WMCPULoad and WMMemLoad done by:
Seiichi SATO <ssato@sh.rim.or.jp>
Mark Staggs <me@markstaggs.net>
And also on wmapm by :
Chris D. Faulhaber <jedgar@speck.ml.org>
Michael G. Henderson <mghenderson@lanl.gov>

340
wmacpiload-0.1.2/COPYING Normal file
View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -0,0 +1,4 @@
2003-28-03
Changed currcap and remain to be floating cars rather than int in order to
fix a divide by zero problem.

0
wmacpiload-0.1.2/INSTALL Normal file
View file

363
wmacpiload-0.1.2/Makefile Normal file
View file

@ -0,0 +1,363 @@
# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = .
top_srcdir = .
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
sbindir = ${exec_prefix}/sbin
libexecdir = ${exec_prefix}/libexec
datadir = ${prefix}/share
sysconfdir = ${prefix}/etc
sharedstatedir = ${prefix}/com
localstatedir = ${prefix}/var
libdir = ${exec_prefix}/lib
infodir = ${prefix}/info
mandir = ${prefix}/man
includedir = ${prefix}/include
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/wmapmload
pkglibdir = $(libdir)/wmapmload
pkgincludedir = $(includedir)/wmapmload
top_builddir = .
ACLOCAL = aclocal
AUTOCONF = autoconf
AUTOMAKE = automake
AUTOHEADER = autoheader
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_SCRIPT = ${INSTALL}
transform = s,x,x,
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias =
host_triplet = i686-pc-linux-gnu
AWK = gawk
CC = gcc
DFLAGS =
HEADER_SEARCH_PATH = -I/usr/X11R6/include -I/usr/local/include
LIBRARY_SEARCH_PATH = -L/usr/X11R6/lib -L/usr/local/lib
LIBS =
LN_S = ln -s
MAKEINFO = makeinfo
OS = linux
PACKAGE = wmapmload
SETGID_FLAGS =
VERSION = 0.3.2
XCFLAGS = -I/usr/X11R6/include
XLFLAGS = -L/usr/X11R6/lib
XLIBS = -lX11 -lXext -lXpm
X_EXTRA_LIBS =
X_LIBRARY_PATH = /usr/X11R6/lib
SUBDIRS = src doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in NEWS THANKS TODO acinclude.m4 aclocal.m4 \
config.guess config.h.in config.sub configure configure.ac install-sh \
missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.ac acinclude.m4
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure.ac $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
config.h: stamp-h
@if test ! -f $@; then \
rm -f stamp-h; \
$(MAKE) stamp-h; \
else :; fi
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
$(SHELL) ./config.status
@echo timestamp > stamp-h 2> /dev/null
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/stamp-h.in; \
$(MAKE) $(srcdir)/stamp-h.in; \
else :; fi
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOHEADER)
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
mostlyclean-hdr:
clean-hdr:
distclean-hdr:
-rm -f config.h
maintainer-clean-hdr:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@banner="$(distdir).tar.gz is ready for distribution"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
for subdir in $(SUBDIRS); do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
fi; \
done
info-am:
info: info-recursive
dvi-am:
dvi: dvi-recursive
check-am: all-am
check: check-recursive
installcheck-am:
installcheck: installcheck-recursive
all-recursive-am: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
install-exec-am:
install-exec: install-exec-recursive
install-data-am:
install-data: install-data-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-recursive
uninstall-am:
uninstall: uninstall-recursive
all-am: Makefile config.h
all-redirect: all-recursive-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
mostlyclean: mostlyclean-recursive
clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
clean: clean-recursive
distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
distclean: distclean-recursive
-rm -f config.status
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-recursive
-rm -f config.status
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
install-data-recursive uninstall-data-recursive install-exec-recursive \
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
all-recursive check-recursive installcheck-recursive info-recursive \
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
install-exec-am install-exec install-data-am install-data install-am \
install uninstall-am uninstall all-redirect all-am all installdirs-am \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View file

@ -0,0 +1,2 @@
SUBDIRS = src doc

View file

@ -0,0 +1,363 @@
# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AWK = @AWK@
CC = @CC@
DFLAGS = @DFLAGS@
HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@
LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@
LIBS = @LIBS@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
OS = @OS@
PACKAGE = @PACKAGE@
SETGID_FLAGS = @SETGID_FLAGS@
VERSION = @VERSION@
XCFLAGS = @XCFLAGS@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
SUBDIRS = src doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in NEWS THANKS TODO acinclude.m4 aclocal.m4 \
config.guess config.h.in config.sub configure configure.ac install-sh \
missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.ac acinclude.m4
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure.ac $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
config.h: stamp-h
@if test ! -f $@; then \
rm -f stamp-h; \
$(MAKE) stamp-h; \
else :; fi
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
$(SHELL) ./config.status
@echo timestamp > stamp-h 2> /dev/null
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/stamp-h.in; \
$(MAKE) $(srcdir)/stamp-h.in; \
else :; fi
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOHEADER)
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
mostlyclean-hdr:
clean-hdr:
distclean-hdr:
-rm -f config.h
maintainer-clean-hdr:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@banner="$(distdir).tar.gz is ready for distribution"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
for subdir in $(SUBDIRS); do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
fi; \
done
info-am:
info: info-recursive
dvi-am:
dvi: dvi-recursive
check-am: all-am
check: check-recursive
installcheck-am:
installcheck: installcheck-recursive
all-recursive-am: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
install-exec-am:
install-exec: install-exec-recursive
install-data-am:
install-data: install-data-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-recursive
uninstall-am:
uninstall: uninstall-recursive
all-am: Makefile config.h
all-redirect: all-recursive-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
mostlyclean: mostlyclean-recursive
clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
clean: clean-recursive
distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
distclean: distclean-recursive
-rm -f config.status
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-recursive
-rm -f config.status
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
install-data-recursive uninstall-data-recursive install-exec-recursive \
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
all-recursive check-recursive installcheck-recursive info-recursive \
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
install-exec-am install-exec install-data-am install-data install-am \
install uninstall-am uninstall all-redirect all-am all installdirs-am \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

0
wmacpiload-0.1.2/NEWS Normal file
View file

4
wmacpiload-0.1.2/README Normal file
View file

@ -0,0 +1,4 @@
I can make no guarantee about this codes functionality on systems other than Linux - I do not
have other OSes to test upon (least ways ones that I regularly boot into). Also keep in mind that
some systems dont support suspend etc in ACPI - as usual the risk is yours. Thats about all I can offer
in the way of advice - feel free to email me <bratag44@hotmail.com> with suggestions etc.

8
wmacpiload-0.1.2/THANKS Normal file
View file

@ -0,0 +1,8 @@
Thomas Nemeth for creating wmapmload on which this is based
For creating WMMemMon and WMCPULoad for which this is based:
Seiichi SATO <ssato@sh.rim.or.jp>
For creating WMMemLoad for which this is based:
Mark Staggs <me@markstaggs.net>
For wmapm for which this is based:
Chris D. Faulhaber <jedgar@speck.ml.org>
Michael G. Henderson <mghenderson@lanl.gov>

3
wmacpiload-0.1.2/TODO Normal file
View file

@ -0,0 +1,3 @@
* other OS support(help!)
* optimize drawing-routines (MIT-SHM)
* Non-GNU make fixes

View file

@ -0,0 +1,27 @@
#!/bin/sh
# $Id: acinclude.m4,v 1.3 1999/07/24 22:01:51 daeron Exp $
dnl
dnl DA_CHECK_LIB(NAME, FUNCTION, EXTRALIBS)
dnl
AC_DEFUN(DA_CHECK_LIB,
[
LDFLAGS_old="$LDFLAGS"
LDFLAGS="$LDFLAGS $lib_search_path"
AC_CHECK_LIB([$1],[$2],yes=yes,no=no,[$3])
LDFLAGS="$LDFLAGS_old"
])
dnl
dnl DA_CHECK_HEADER(NAME)
dnl
AC_DEFUN(DA_CHECK_HEADER,
[
CPPFLAGS_old="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $inc_search_path"
AC_CHECK_HEADER([$1])
CPPFLAGS="$CPPFLAGS_old"
])

155
wmacpiload-0.1.2/aclocal.m4 vendored Normal file
View file

@ -0,0 +1,155 @@
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
#!/bin/sh
# $Id: acinclude.m4,v 1.3 1999/07/24 22:01:51 daeron Exp $
dnl
dnl DA_CHECK_LIB(NAME, FUNCTION, EXTRALIBS)
dnl
AC_DEFUN(DA_CHECK_LIB,
[
LDFLAGS_old="$LDFLAGS"
LDFLAGS="$LDFLAGS $lib_search_path"
AC_CHECK_LIB([$1],[$2],yes=yes,no=no,[$3])
LDFLAGS="$LDFLAGS_old"
])
dnl
dnl DA_CHECK_HEADER(NAME)
dnl
AC_DEFUN(DA_CHECK_HEADER,
[
CPPFLAGS_old="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $inc_search_path"
AC_CHECK_HEADER([$1])
CPPFLAGS="$CPPFLAGS_old"
])
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
# serial 1
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
dnl test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
#
# Check to make sure that the build environment is sane.
#
AC_DEFUN(AM_SANITY_CHECK,
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftestfile
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
dnl This file resides in the same directory as the config header
dnl that is generated. We must strip everything past the first ":",
dnl and everything past the last "/".
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
<<am_indx=1
for am_file in <<$1>>; do
case " <<$>>CONFIG_HEADERS " in
*" <<$>>am_file "*<<)>>
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
;;
esac
am_indx=`expr "<<$>>am_indx" + 1`
done<<>>dnl>>)
changequote([,]))])

1320
wmacpiload-0.1.2/config.guess vendored Executable file

File diff suppressed because it is too large Load diff

101
wmacpiload-0.1.2/config.h Normal file
View file

@ -0,0 +1,101 @@
/* config.h. Generated by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* use debug code */
/* #undef DEBUG */
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if your system has a working `malloc' function. */
#define HAVE_MALLOC 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `select' function. */
#define HAVE_SELECT 1
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strtoul' function. */
#define HAVE_STRTOUL 1
/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* use '--ignore-buffers' option */
#define IGNORE_BUFFERS 1
/* use '--ignore-cached' option */
#define IGNORE_CACHED 1
/* use '--ignore-wired' option */
/* #undef IGNORE_WIRED */
/* Name of package */
#define PACKAGE "wmapmload"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "tnemeth@free.fr"
/* Define to the full name of this package. */
#define PACKAGE_NAME "wmapmload"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "wmapmload 0.3.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "wmapmload"
/* Define to the version of this package. */
#define PACKAGE_VERSION "0.3.2"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Version number of package */
#define VERSION "0.3.2"
/* Define to 1 if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `unsigned' if <sys/types.h> does not define. */
/* #undef size_t */

View file

@ -0,0 +1,100 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* use debug code */
#undef DEBUG
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if your system has a working `malloc' function. */
#undef HAVE_MALLOC
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `select' function. */
#undef HAVE_SELECT
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL
/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the `uname' function. */
#undef HAVE_UNAME
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* use '--ignore-buffers' option */
#undef IGNORE_BUFFERS
/* use '--ignore-cached' option */
#undef IGNORE_CACHED
/* use '--ignore-wired' option */
#undef IGNORE_WIRED
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Version number of package */
#undef VERSION
/* Define to 1 if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t

532
wmacpiload-0.1.2/config.log Normal file
View file

@ -0,0 +1,532 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by wmapmload configure 0.3.2, which was
generated by GNU Autoconf 2.53. Invocation command line was
$ ./configure
## --------- ##
## Platform. ##
## --------- ##
hostname = sleet
uname -m = i686
uname -r = 2.4.21-0.11mdkcustom
uname -s = Linux
uname -v = #2 Sat Mar 22 01:01:25 EST 2003
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = i686
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /sbin
PATH: /usr/sbin
PATH: /bin
PATH: /usr/bin
PATH: /usr/X11R6/bin
PATH: /usr/local/bin
PATH: /usr/local/sbin
## ----------- ##
## Core tests. ##
## ----------- ##
configure:1251: checking build system type
configure:1269: result: i686-pc-linux-gnu
configure:1277: checking host system type
configure:1291: result: i686-pc-linux-gnu
configure:1299: checking target system type
configure:1313: result: i686-pc-linux-gnu
configure:1339: checking for a BSD-compatible install
configure:1393: result: /usr/bin/install -c
configure:1404: checking whether build environment is sane
configure:1447: result: yes
configure:1462: checking whether make sets ${MAKE}
configure:1482: result: yes
configure:1514: checking for working aclocal
configure:1521: result: found
configure:1529: checking for working autoconf
configure:1536: result: found
configure:1544: checking for working automake
configure:1551: result: found
configure:1559: checking for working autoheader
configure:1566: result: found
configure:1574: checking for working makeinfo
configure:1581: result: found
configure:1602: checking for gawk
configure:1618: found /bin/gawk
configure:1628: result: gawk
configure:1684: checking for gcc
configure:1700: found /usr/bin/gcc
configure:1710: result: gcc
configure:1954: checking for C compiler version
configure:1957: gcc --version </dev/null >&5
gcc (GCC) 3.2.2 (Mandrake Linux 9.1 3.2.2-2mdk)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:1960: $? = 0
configure:1962: gcc -v </dev/null >&5
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2.2/specs
Configured with: ../configure --prefix=/usr --libdir=/usr/lib --with-slibdir=/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --enable-long-long --enable-__cxa_atexit --enable-languages=c,c++,ada,f77,objc,java --host=i586-mandrake-linux-gnu --with-system-zlib
Thread model: posix
gcc version 3.2.2 (Mandrake Linux 9.1 3.2.2-2mdk)
configure:1965: $? = 0
configure:1967: gcc -V </dev/null >&5
gcc: argument to `-V' is missing
configure:1970: $? = 1
configure:1996: checking for C compiler default output
configure:1999: gcc conftest.c >&5
configure:2002: $? = 0
configure:2035: result: a.out
configure:2040: checking whether the C compiler works
configure:2046: ./a.out
configure:2049: $? = 0
configure:2064: result: yes
configure:2071: checking whether we are cross compiling
configure:2073: result: no
configure:2076: checking for suffix of executables
configure:2078: gcc -o conftest conftest.c >&5
configure:2081: $? = 0
configure:2103: result:
configure:2109: checking for suffix of object files
configure:2133: gcc -c conftest.c >&5
configure:2136: $? = 0
configure:2155: result: o
configure:2159: checking whether we are using the GNU C compiler
configure:2186: gcc -c conftest.c >&5
configure:2189: $? = 0
configure:2192: test -s conftest.o
configure:2195: $? = 0
configure:2207: result: yes
configure:2213: checking whether gcc accepts -g
configure:2237: gcc -c -g conftest.c >&5
configure:2240: $? = 0
configure:2243: test -s conftest.o
configure:2246: $? = 0
configure:2256: result: yes
configure:2283: gcc -c -g -O2 conftest.c >&5
conftest.c:2: parse error before "me"
configure:2286: $? = 1
configure: failed program was:
#ifndef __cplusplus
choke me
#endif
configure:2408: checking for a BSD-compatible install
configure:2462: result: /usr/bin/install -c
configure:2473: checking whether ln -s works
configure:2477: result: yes
configure:2507: checking how to run the C preprocessor
configure:2533: gcc -E conftest.c
configure:2539: $? = 0
configure:2566: gcc -E conftest.c
configure:2562:28: ac_nonexistent.h: No such file or directory
configure:2572: $? = 1
configure: failed program was:
#line 2561 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
configure:2609: result: gcc -E
configure:2624: gcc -E conftest.c
configure:2630: $? = 0
configure:2657: gcc -E conftest.c
configure:2653:28: ac_nonexistent.h: No such file or directory
configure:2663: $? = 1
configure: failed program was:
#line 2652 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
configure:2703: checking for X
configure:2919: result: libraries /usr/X11R6/lib, headers /usr/X11R6/include
configure:3076: gcc -o conftest -g -O2 conftest.c -L/usr/X11R6/lib -lX11 >&5
configure:3079: $? = 0
configure:3082: test -s conftest
configure:3085: $? = 0
configure:3223: checking for gethostbyname
configure:3266: gcc -o conftest -g -O2 conftest.c >&5
configure:3269: $? = 0
configure:3272: test -s conftest
configure:3275: $? = 0
configure:3285: result: yes
configure:3418: checking for connect
configure:3461: gcc -o conftest -g -O2 conftest.c >&5
configure:3464: $? = 0
configure:3467: test -s conftest
configure:3470: $? = 0
configure:3480: result: yes
configure:3546: checking for remove
configure:3589: gcc -o conftest -g -O2 conftest.c >&5
configure:3592: $? = 0
configure:3595: test -s conftest
configure:3598: $? = 0
configure:3608: result: yes
configure:3674: checking for shmat
configure:3717: gcc -o conftest -g -O2 conftest.c >&5
configure:3720: $? = 0
configure:3723: test -s conftest
configure:3726: $? = 0
configure:3736: result: yes
configure:3811: checking for IceConnectionNumber in -lICE
configure:3844: gcc -o conftest -g -O2 -L/usr/X11R6/lib conftest.c -lICE >&5
configure:3847: $? = 0
configure:3850: test -s conftest
configure:3853: $? = 0
configure:3864: result: yes
configure:3888: checking for XShapeCombineMask in -lXext
configure:3921: gcc -o conftest -g -O2 conftest.c -lXext -L/usr/X11R6/lib -lX11 >&5
configure:3924: $? = 0
configure:3927: test -s conftest
configure:3930: $? = 0
configure:3941: result: yes
configure:3951: checking for XpmCreatePixmapFromData in -lXpm
configure:3984: gcc -o conftest -g -O2 conftest.c -lXpm -L/usr/X11R6/lib -lX11 >&5
configure:3987: $? = 0
configure:3990: test -s conftest
configure:3993: $? = 0
configure:4004: result: yes
configure:4105: checking for ANSI C header files
configure:4119: gcc -E conftest.c
configure:4125: $? = 0
configure:4210: gcc -o conftest -g -O2 conftest.c >&5
configure:4213: $? = 0
configure:4215: ./conftest
configure:4218: $? = 0
configure:4232: result: yes
configure:4256: checking for sys/types.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for sys/stat.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for stdlib.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for string.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for memory.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for strings.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for inttypes.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for stdint.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4256: checking for unistd.h
configure:4269: gcc -c -g -O2 conftest.c >&5
configure:4272: $? = 0
configure:4275: test -s conftest.o
configure:4278: $? = 0
configure:4288: result: yes
configure:4322: checking fcntl.h usability
configure:4331: gcc -c -g -O2 conftest.c >&5
configure:4334: $? = 0
configure:4337: test -s conftest.o
configure:4340: $? = 0
configure:4349: result: yes
configure:4353: checking fcntl.h presence
configure:4360: gcc -E conftest.c
configure:4366: $? = 0
configure:4384: result: yes
configure:4402: checking for fcntl.h
configure:4409: result: yes
configure:4313: checking for memory.h
configure:4318: result: yes
configure:4322: checking stddef.h usability
configure:4331: gcc -c -g -O2 conftest.c >&5
configure:4334: $? = 0
configure:4337: test -s conftest.o
configure:4340: $? = 0
configure:4349: result: yes
configure:4353: checking stddef.h presence
configure:4360: gcc -E conftest.c
configure:4366: $? = 0
configure:4384: result: yes
configure:4402: checking for stddef.h
configure:4409: result: yes
configure:4313: checking for stdlib.h
configure:4318: result: yes
configure:4313: checking for string.h
configure:4318: result: yes
configure:4313: checking for strings.h
configure:4318: result: yes
configure:4322: checking sys/param.h usability
configure:4331: gcc -c -g -O2 conftest.c >&5
configure:4334: $? = 0
configure:4337: test -s conftest.o
configure:4340: $? = 0
configure:4349: result: yes
configure:4353: checking sys/param.h presence
configure:4360: gcc -E conftest.c
configure:4366: $? = 0
configure:4384: result: yes
configure:4402: checking for sys/param.h
configure:4409: result: yes
configure:4322: checking sys/time.h usability
configure:4331: gcc -c -g -O2 conftest.c >&5
configure:4334: $? = 0
configure:4337: test -s conftest.o
configure:4340: $? = 0
configure:4349: result: yes
configure:4353: checking sys/time.h presence
configure:4360: gcc -E conftest.c
configure:4366: $? = 0
configure:4384: result: yes
configure:4402: checking for sys/time.h
configure:4409: result: yes
configure:4313: checking for unistd.h
configure:4318: result: yes
configure:4423: checking for gcc option to accept ANSI C
configure:4486: gcc -c -g -O2 conftest.c >&5
configure:4489: $? = 0
configure:4492: test -s conftest.o
configure:4495: $? = 0
configure:4512: result: none needed
configure:4520: checking for an ANSI C-conforming const
configure:4590: gcc -c -g -O2 conftest.c >&5
configure:4593: $? = 0
configure:4596: test -s conftest.o
configure:4599: $? = 0
configure:4609: result: yes
configure:4619: checking for size_t
configure:4646: gcc -c -g -O2 conftest.c >&5
configure:4649: $? = 0
configure:4652: test -s conftest.o
configure:4655: $? = 0
configure:4665: result: yes
configure:4677: checking whether time.h and sys/time.h may both be included
configure:4705: gcc -c -g -O2 conftest.c >&5
configure:4708: $? = 0
configure:4711: test -s conftest.o
configure:4714: $? = 0
configure:4724: result: yes
configure:4740: checking for stdlib.h
configure:4745: result: yes
configure:4849: checking for working malloc
configure:4881: gcc -o conftest -g -O2 conftest.c >&5
configure:4884: $? = 0
configure:4886: ./conftest
configure:4889: $? = 0
configure:4902: result: yes
configure:4918: checking for select
configure:4961: gcc -o conftest -g -O2 conftest.c >&5
configure:4964: $? = 0
configure:4967: test -s conftest
configure:4970: $? = 0
configure:4980: result: yes
configure:4918: checking for strtoul
configure:4961: gcc -o conftest -g -O2 conftest.c >&5
configure:4964: $? = 0
configure:4967: test -s conftest
configure:4970: $? = 0
configure:4980: result: yes
configure:4918: checking for uname
configure:4961: gcc -o conftest -g -O2 conftest.c >&5
configure:4964: $? = 0
configure:4967: test -s conftest
configure:4970: $? = 0
configure:4980: result: yes
configure:5073: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by wmapmload config.status 0.3.2, which was
generated by GNU Autoconf 2.53. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on sleet
config.status:615: creating Makefile
config.status:615: creating src/Makefile
config.status:615: creating doc/Makefile
config.status:719: creating config.h
config.status:858: config.h is unchanged
config.status:953: executing default-1 commands
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=i686-pc-linux-gnu
ac_cv_build_alias=i686-pc-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_c_const=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_exeext=
ac_cv_func_connect=yes
ac_cv_func_gethostbyname=yes
ac_cv_func_malloc_works=yes
ac_cv_func_remove=yes
ac_cv_func_select=yes
ac_cv_func_shmat=yes
ac_cv_func_strtoul=yes
ac_cv_func_uname=yes
ac_cv_have_x='have_x=yes ac_x_includes=/usr/X11R6/include ac_x_libraries=/usr/X11R6/lib'
ac_cv_header_fcntl_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stddef_h=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_param_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_time_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_time=yes
ac_cv_header_unistd_h=yes
ac_cv_host=i686-pc-linux-gnu
ac_cv_host_alias=i686-pc-linux-gnu
ac_cv_lib_ICE_IceConnectionNumber=yes
ac_cv_lib_Xext_XShapeCombineMask=yes
ac_cv_lib_Xpm_XpmCreatePixmapFromData=yes
ac_cv_objext=o
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=
ac_cv_prog_make_make_set=yes
ac_cv_target=i686-pc-linux-gnu
ac_cv_target_alias=i686-pc-linux-gnu
ac_cv_type_size_t=yes
## ----------- ##
## confdefs.h. ##
## ----------- ##
#define PACKAGE_NAME "wmapmload"
#define PACKAGE_TARNAME "wmapmload"
#define PACKAGE_VERSION "0.3.2"
#define PACKAGE_STRING "wmapmload 0.3.2"
#define PACKAGE_BUGREPORT "tnemeth@free.fr"
#define PACKAGE "wmapmload"
#define VERSION "0.3.2"
#define IGNORE_BUFFERS 1
#define IGNORE_CACHED 1
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_FCNTL_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STDDEF_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_STRINGS_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_UNISTD_H 1
#define TIME_WITH_SYS_TIME 1
#define HAVE_STDLIB_H 1
#define HAVE_MALLOC 1
#define HAVE_SELECT 1
#define HAVE_STRTOUL 1
#define HAVE_UNAME 1
configure: exit 0
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by wmapmload config.status 0.3.2, which was
generated by GNU Autoconf 2.53. Invocation command line was
CONFIG_FILES = src/Makefile
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on sleet
config.status:615: creating src/Makefile
config.status:953: executing default-1 commands
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by wmapmload config.status 0.3.2, which was
generated by GNU Autoconf 2.53. Invocation command line was
CONFIG_FILES = doc/Makefile
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on sleet
config.status:615: creating doc/Makefile
config.status:953: executing default-1 commands

960
wmacpiload-0.1.2/config.status Executable file
View file

@ -0,0 +1,960 @@
#! /bin/sh
# Generated by configure.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
debug=false
SHELL=${CONFIG_SHELL-/bin/sh}
## --------------------- ##
## M4sh Initialization. ##
## --------------------- ##
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
# NLS nuisances.
# Support unset when possible.
if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
fi
(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
{ $as_unset LANG || test "${LANG+set}" != set; } ||
{ LANG=C; export LANG; }
(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
{ $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
{ LC_ALL=C; export LC_ALL; }
(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
{ $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
{ LC_TIME=C; export LC_TIME; }
(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
{ $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
{ LC_CTYPE=C; export LC_CTYPE; }
(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
{ $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
{ LANGUAGE=C; export LANGUAGE; }
(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
{ $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
{ LC_COLLATE=C; export LC_COLLATE; }
(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
{ $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
{ LC_NUMERIC=C; export LC_NUMERIC; }
(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
{ $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
{ LC_MESSAGES=C; export LC_MESSAGES; }
# Name of the executable.
as_me=`(basename "$0") 2>/dev/null ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)$' \| \
. : '\(.\)' 2>/dev/null ||
echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
/^X\/\(\/\/\)$/{ s//\1/; q; }
/^X\/\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
# PATH needs CR, and LINENO needs CR and PATH.
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
echo "#! /bin/sh" >conftest.sh
echo "exit 0" >>conftest.sh
chmod +x conftest.sh
if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then
PATH_SEPARATOR=';'
else
PATH_SEPARATOR=:
fi
rm -f conftest.sh
fi
as_lineno_1=$LINENO
as_lineno_2=$LINENO
as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
test "x$as_lineno_1" != "x$as_lineno_2" &&
test "x$as_lineno_3" = "x$as_lineno_2" || {
# Find who we are. Look in the path if we contain no path at all
# relative or not.
case $0 in
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
{ { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
{ (exit 1); exit 1; }; }
fi
case $CONFIG_SHELL in
'')
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for as_base in sh bash ksh sh5; do
case $as_dir in
/*)
if ("$as_dir/$as_base" -c '
as_lineno_1=$LINENO
as_lineno_2=$LINENO
as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
test "x$as_lineno_1" != "x$as_lineno_2" &&
test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
CONFIG_SHELL=$as_dir/$as_base
export CONFIG_SHELL
exec "$CONFIG_SHELL" "$0" ${1+"$@"}
fi;;
esac
done
done
;;
esac
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO
# uniformly replaced by the line number. The first 'sed' inserts a
# line-number line before each line; the second 'sed' does the real
# work. The second script uses 'N' to pair each line-number line
# with the numbered line, and appends trailing '-' during
# substitution so that $LINENO is not a special case at line end.
# (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
# second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
sed '=' <$as_myself |
sed '
N
s,$,-,
: loop
s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
t loop
s,-$,,
s,^['$as_cr_digits']*\n,,
' >$as_me.lineno &&
chmod +x $as_me.lineno ||
{ { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensible to this).
. ./$as_me.lineno
# Exit status is that of the last command.
exit
}
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
*c*,-n*) ECHO_N= ECHO_C='
' ECHO_T=' ' ;;
*c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac
if expr a : '\(a\)' >/dev/null 2>&1; then
as_expr=expr
else
as_expr=false
fi
rm -f conf$$ conf$$.exe conf$$.file
echo >conf$$.file
if ln -s conf$$.file conf$$ 2>/dev/null; then
# We could just check for DJGPP; but this test a) works b) is more generic
# and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
if test -f conf$$.exe; then
# Don't use ln at all; we don't have any links
as_ln_s='cp -p'
else
as_ln_s='ln -s'
fi
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.file
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
# IFS
# We need space, tab and new line, in precisely that order.
as_nl='
'
IFS=" $as_nl"
# CDPATH.
$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
exec 6>&1
# Open the log real soon, to keep \$[0] and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. Logging --version etc. is OK.
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by wmapmload $as_me 0.3.2, which was
generated by GNU Autoconf 2.53. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
_CSEOF
echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
echo >&5
config_files=" Makefile src/Makefile doc/Makefile"
config_headers=" config.h"
config_commands=" default-1"
ac_cs_usage="\
\`$as_me' instantiates files from templates according to the
current configuration.
Usage: $0 [OPTIONS] [FILE]...
-h, --help print this help, then exit
-V, --version print version number, then exit
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
--header=FILE[:TEMPLATE]
instantiate the configuration header FILE
Configuration files:
$config_files
Configuration headers:
$config_headers
Configuration commands:
$config_commands
Report bugs to <bug-autoconf@gnu.org>."
ac_cs_version="\
wmapmload config.status 0.3.2
configured by ./configure, generated by GNU Autoconf 2.53,
with options \"\"
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=.
INSTALL="/usr/bin/install -c"
# If no file are specified by the user, then we need to provide default
# value. By we need to know if files were specified by the user.
ac_need_defaults=:
while test $# != 0
do
case $1 in
--*=*)
ac_option=`expr "x$1" : 'x\([^=]*\)='`
ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
shift
set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
shift
;;
-*);;
*) # This is not an option, so the user has probably given explicit
# arguments.
ac_need_defaults=false;;
esac
case $1 in
# Handling of the options.
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
echo "running /bin/sh ./configure " " --no-create --no-recursion"
exec /bin/sh ./configure --no-create --no-recursion ;;
--version | --vers* | -V )
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
{ { echo "$as_me:$LINENO: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
{ (exit 1); exit 1; }; };;
--help | --hel | -h )
echo "$ac_cs_usage"; exit 0 ;;
--debug | --d* | -d )
debug=: ;;
--file | --fil | --fi | --f )
shift
CONFIG_FILES="$CONFIG_FILES $1"
ac_need_defaults=false;;
--header | --heade | --head | --hea )
shift
CONFIG_HEADERS="$CONFIG_HEADERS $1"
ac_need_defaults=false;;
# This is an error.
-*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
{ (exit 1); exit 1; }; } ;;
*) ac_config_targets="$ac_config_targets $1" ;;
esac
shift
done
#
# INIT-COMMANDS section.
#
for ac_config_target in $ac_config_targets
do
case "$ac_config_target" in
# Handling of arguments.
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
done
# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used. Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
# Create a temporary directory, and hook for its removal unless debugging.
$debug ||
{
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
trap '{ (exit 1); exit 1; }' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
: ${TMPDIR=/tmp}
{
tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
test -n "$tmp" && test -d "$tmp"
} ||
{
tmp=$TMPDIR/cs$$-$RANDOM
(umask 077 && mkdir $tmp)
} ||
{
echo "$me: cannot create a temporary directory in $TMPDIR" >&2
{ (exit 1); exit 1; }
}
#
# CONFIG_FILES section.
#
# No need to generate the scripts if there are no CONFIG_FILES.
# This happens for instance when ./config.status config.h
if test -n "$CONFIG_FILES"; then
# Protect against being on the right side of a sed subst in config.status.
sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
s,@SHELL@,/bin/sh,;t t
s,@PATH_SEPARATOR@,:,;t t
s,@PACKAGE_NAME@,wmapmload,;t t
s,@PACKAGE_TARNAME@,wmapmload,;t t
s,@PACKAGE_VERSION@,0.3.2,;t t
s,@PACKAGE_STRING@,wmapmload 0.3.2,;t t
s,@PACKAGE_BUGREPORT@,tnemeth@free.fr,;t t
s,@exec_prefix@,${prefix},;t t
s,@prefix@,/usr/local,;t t
s,@program_transform_name@,s,x,x,,;t t
s,@bindir@,${exec_prefix}/bin,;t t
s,@sbindir@,${exec_prefix}/sbin,;t t
s,@libexecdir@,${exec_prefix}/libexec,;t t
s,@datadir@,${prefix}/share,;t t
s,@sysconfdir@,${prefix}/etc,;t t
s,@sharedstatedir@,${prefix}/com,;t t
s,@localstatedir@,${prefix}/var,;t t
s,@libdir@,${exec_prefix}/lib,;t t
s,@includedir@,${prefix}/include,;t t
s,@oldincludedir@,/usr/include,;t t
s,@infodir@,${prefix}/info,;t t
s,@mandir@,${prefix}/man,;t t
s,@build_alias@,,;t t
s,@host_alias@,,;t t
s,@target_alias@,,;t t
s,@DEFS@,-DHAVE_CONFIG_H,;t t
s,@ECHO_C@,,;t t
s,@ECHO_N@,-n,;t t
s,@ECHO_T@,,;t t
s,@LIBS@,,;t t
s,@build@,i686-pc-linux-gnu,;t t
s,@build_cpu@,i686,;t t
s,@build_vendor@,pc,;t t
s,@build_os@,linux-gnu,;t t
s,@host@,i686-pc-linux-gnu,;t t
s,@host_cpu@,i686,;t t
s,@host_vendor@,pc,;t t
s,@host_os@,linux-gnu,;t t
s,@target@,i686-pc-linux-gnu,;t t
s,@target_cpu@,i686,;t t
s,@target_vendor@,pc,;t t
s,@target_os@,linux-gnu,;t t
s,@INSTALL_PROGRAM@,${INSTALL},;t t
s,@INSTALL_SCRIPT@,${INSTALL},;t t
s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
s,@PACKAGE@,wmapmload,;t t
s,@VERSION@,0.3.2,;t t
s,@ACLOCAL@,aclocal,;t t
s,@AUTOCONF@,autoconf,;t t
s,@AUTOMAKE@,automake,;t t
s,@AUTOHEADER@,autoheader,;t t
s,@MAKEINFO@,makeinfo,;t t
s,@SET_MAKE@,,;t t
s,@AWK@,gawk,;t t
s,@CC@,gcc,;t t
s,@CFLAGS@,-g -O2,;t t
s,@LDFLAGS@,,;t t
s,@CPPFLAGS@,,;t t
s,@ac_ct_CC@,gcc,;t t
s,@EXEEXT@,,;t t
s,@OBJEXT@,o,;t t
s,@LN_S@,ln -s,;t t
s,@CPP@,gcc -E,;t t
s,@X_CFLAGS@, -I/usr/X11R6/include,;t t
s,@X_PRE_LIBS@, -lSM -lICE,;t t
s,@X_LIBS@, -L/usr/X11R6/lib,;t t
s,@X_EXTRA_LIBS@,,;t t
s,@X_LIBRARY_PATH@,/usr/X11R6/lib,;t t
s,@XCFLAGS@, -I/usr/X11R6/include,;t t
s,@XLFLAGS@, -L/usr/X11R6/lib,;t t
s,@XLIBS@,-lX11 -lXext -lXpm,;t t
s,@DFLAGS@,,;t t
s,@OS@,linux,;t t
s,@SETGID_FLAGS@,,;t t
s,@LIBRARY_SEARCH_PATH@, -L/usr/X11R6/lib -L/usr/local/lib,;t t
s,@HEADER_SEARCH_PATH@, -I/usr/X11R6/include -I/usr/local/include,;t t
CEOF
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_lines=48
ac_sed_frag=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_lines # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
else
sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
fi
if test ! -s $tmp/subs.frag; then
ac_more_lines=false
else
# The purpose of the label and of the branching condition is to
# speed up the sed processing (if there are no `@' at all, there
# is no need to browse any of the substitutions).
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_lines`
fi
done
if test -z "$ac_sed_cmds"; then
ac_sed_cmds=cat
fi
fi # test -n "$CONFIG_FILES"
for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
cat >$tmp/stdin
ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
# Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ case "$ac_dir" in
[\\/]* | ?:[\\/]* ) as_incr_dir=;;
*) as_incr_dir=.;;
esac
as_dummy="$ac_dir"
for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
case $as_mkdir_dir in
# Skip DOS drivespec
?:) as_incr_dir=$as_mkdir_dir ;;
*)
as_incr_dir=$as_incr_dir/$as_mkdir_dir
test -d "$as_incr_dir" ||
mkdir "$as_incr_dir" ||
{ { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
done; }
ac_builddir=.
if test "$ac_dir" != .; then
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A "../" for each directory in $ac_dir_suffix.
ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
else
ac_dir_suffix= ac_top_builddir=
fi
case $srcdir in
.) # No --srcdir option. We are building in place.
ac_srcdir=.
if test -z "$ac_top_builddir"; then
ac_top_srcdir=.
else
ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
fi ;;
[\\/]* | ?:[\\/]* ) # Absolute path.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir ;;
*) # Relative path.
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# absolute.
ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
case $INSTALL in
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
esac
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
if test x"$ac_file" = x-; then
configure_input=
else
configure_input="$ac_file. "
fi
configure_input=$configure_input"Generated from `echo $ac_file_in |
sed 's,.*/,,'` by configure."
# First look for the input files in the build tree, otherwise in the
# src tree.
ac_file_inputs=`IFS=:
for f in $ac_file_in; do
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
*) # Relative
if test -f "$f"; then
# Build tree
echo $f
elif test -f "$srcdir/$f"; then
# Source tree
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
esac
done` || { (exit 1); exit 1; }
sed "/^[ ]*VPATH[ ]*=/{
s/:*\$(srcdir):*/:/;
s/:*\${srcdir}:*/:/;
s/:*@srcdir@:*/:/;
s/^\([^=]*=[ ]*\):*/\1/;
s/:*$//;
s/^[^=]*=[ ]*$//;
}
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s,@configure_input@,$configure_input,;t t
s,@srcdir@,$ac_srcdir,;t t
s,@abs_srcdir@,$ac_abs_srcdir,;t t
s,@top_srcdir@,$ac_top_srcdir,;t t
s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
s,@builddir@,$ac_builddir,;t t
s,@abs_builddir@,$ac_abs_builddir,;t t
s,@top_builddir@,$ac_top_builddir,;t t
s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
s,@INSTALL@,$ac_INSTALL,;t t
" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
rm -f $tmp/stdin
if test x"$ac_file" != x-; then
mv $tmp/out $ac_file
else
cat $tmp/out
rm -f $tmp/out
fi
done
#
# CONFIG_HEADER section.
#
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
ac_dB='[ ].*$,\1#\2'
ac_dC=' '
ac_dD=',;t'
# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
ac_uB='$,\1#\2define\3'
ac_uC=' '
ac_uD=',;t'
for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
cat >$tmp/stdin
ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
# src tree.
ac_file_inputs=`IFS=:
for f in $ac_file_in; do
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
*) # Relative
if test -f "$f"; then
# Build tree
echo $f
elif test -f "$srcdir/$f"; then
# Source tree
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
esac
done` || { (exit 1); exit 1; }
# Remove the trailing spaces.
sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
# Handle all the #define templates only if necessary.
if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then
# If there are no defines, we may have an empty if/fi
:
cat >$tmp/defines.sed <<CEOF
/^[ ]*#[ ]*define/!b
t clr
: clr
${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}"wmapmload"${ac_dD}
${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}"wmapmload"${ac_dD}
${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}"0.3.2"${ac_dD}
${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}"wmapmload 0.3.2"${ac_dD}
${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}"tnemeth@free.fr"${ac_dD}
${ac_dA}PACKAGE${ac_dB}PACKAGE${ac_dC}"wmapmload"${ac_dD}
${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"0.3.2"${ac_dD}
${ac_dA}IGNORE_BUFFERS${ac_dB}IGNORE_BUFFERS${ac_dC}1${ac_dD}
${ac_dA}IGNORE_CACHED${ac_dB}IGNORE_CACHED${ac_dC}1${ac_dD}
${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STDDEF_H${ac_dB}HAVE_STDDEF_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_SYS_PARAM_H${ac_dB}HAVE_SYS_PARAM_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_SYS_TIME_H${ac_dB}HAVE_SYS_TIME_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD}
${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
${ac_dA}HAVE_MALLOC${ac_dB}HAVE_MALLOC${ac_dC}1${ac_dD}
${ac_dA}HAVE_SELECT${ac_dB}HAVE_SELECT${ac_dC}1${ac_dD}
${ac_dA}HAVE_STRTOUL${ac_dB}HAVE_STRTOUL${ac_dC}1${ac_dD}
${ac_dA}HAVE_UNAME${ac_dB}HAVE_UNAME${ac_dC}1${ac_dD}
CEOF
sed -f $tmp/defines.sed $tmp/in >$tmp/out
rm -f $tmp/in
mv $tmp/out $tmp/in
fi # egrep
# Handle all the #undef templates
cat >$tmp/undefs.sed <<CEOF
/^[ ]*#[ ]*undef/!b
t clr
: clr
${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}"wmapmload"${ac_uD}
${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}"wmapmload"${ac_uD}
${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}"0.3.2"${ac_uD}
${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}"wmapmload 0.3.2"${ac_uD}
${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}"tnemeth@free.fr"${ac_uD}
${ac_uA}PACKAGE${ac_uB}PACKAGE${ac_uC}"wmapmload"${ac_uD}
${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"0.3.2"${ac_uD}
${ac_uA}IGNORE_BUFFERS${ac_uB}IGNORE_BUFFERS${ac_uC}1${ac_uD}
${ac_uA}IGNORE_CACHED${ac_uB}IGNORE_CACHED${ac_uC}1${ac_uD}
${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STDDEF_H${ac_uB}HAVE_STDDEF_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_SYS_PARAM_H${ac_uB}HAVE_SYS_PARAM_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_SYS_TIME_H${ac_uB}HAVE_SYS_TIME_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD}
${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
${ac_uA}HAVE_MALLOC${ac_uB}HAVE_MALLOC${ac_uC}1${ac_uD}
${ac_uA}HAVE_SELECT${ac_uB}HAVE_SELECT${ac_uC}1${ac_uD}
${ac_uA}HAVE_STRTOUL${ac_uB}HAVE_STRTOUL${ac_uC}1${ac_uD}
${ac_uA}HAVE_UNAME${ac_uB}HAVE_UNAME${ac_uC}1${ac_uD}
s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
CEOF
sed -f $tmp/undefs.sed $tmp/in >$tmp/out
rm -f $tmp/in
mv $tmp/out $tmp/in
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
if test x"$ac_file" = x-; then
echo "/* Generated by configure. */" >$tmp/config.h
else
echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
fi
cat $tmp/in >>$tmp/config.h
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
{ echo "$as_me:$LINENO: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ case "$ac_dir" in
[\\/]* | ?:[\\/]* ) as_incr_dir=;;
*) as_incr_dir=.;;
esac
as_dummy="$ac_dir"
for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
case $as_mkdir_dir in
# Skip DOS drivespec
?:) as_incr_dir=$as_mkdir_dir ;;
*)
as_incr_dir=$as_incr_dir/$as_mkdir_dir
test -d "$as_incr_dir" ||
mkdir "$as_incr_dir" ||
{ { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
done; }
rm -f $ac_file
mv $tmp/config.h $ac_file
fi
else
cat $tmp/config.h
rm -f $tmp/config.h
fi
done
#
# CONFIG_COMMANDS section.
#
for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_dest" : 'X\(//\)[^/]' \| \
X"$ac_dest" : 'X\(//\)$' \| \
X"$ac_dest" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_dest" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
ac_builddir=.
if test "$ac_dir" != .; then
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A "../" for each directory in $ac_dir_suffix.
ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
else
ac_dir_suffix= ac_top_builddir=
fi
case $srcdir in
.) # No --srcdir option. We are building in place.
ac_srcdir=.
if test -z "$ac_top_builddir"; then
ac_top_srcdir=.
else
ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
fi ;;
[\\/]* | ?:[\\/]* ) # Absolute path.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir ;;
*) # Relative path.
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# absolute.
ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
{ echo "$as_me:$LINENO: executing $ac_dest commands" >&5
echo "$as_me: executing $ac_dest commands" >&6;}
case $ac_dest in
default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;;
esac
done
{ (exit 0); exit 0; }

1443
wmacpiload-0.1.2/config.sub vendored Executable file

File diff suppressed because it is too large Load diff

6112
wmacpiload-0.1.2/configure vendored Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,163 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
dnl AC_INIT(src/main.c)
dnl AM_INIT_AUTOMAKE(wmapmload, 0.3.2)
AC_INIT(wmapmload, 0.3.2, tnemeth@free.fr)
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERSION)
AC_CONFIG_SRCDIR(src/main.c)
AM_CONFIG_HEADER(config.h)
dnl Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
dnl
dnl Specify paths to look for libraries and headers
dnl ===============================================
AC_ARG_WITH(libs-from,
[ --with-libs-from pass compiler flags to look for libraries],
[lib_search_path="$withval $lib_search_path"])
AC_ARG_WITH(incs-from,
[ --with-incs-from pass compiler flags to look for header files],
[inc_search_path="$withval $inc_search_path"])
dnl ===========================================
dnl Stuff that uses X
dnl ===========================================
AC_PATH_XTRA
X_LIBRARY_PATH=$x_libraries
XCFLAGS="$X_CFLAGS"
XLFLAGS="$X_LIBS"
XLIBS="-lX11 $X_EXTRA_LIBS"
lib_search_path="$lib_search_path $XLFLAGS -L/usr/local/lib"
inc_search_path="$inc_search_path $XCFLAGS -I/usr/local/include"
AC_SUBST(X_LIBRARY_PATH)
dnl Shape extension
dnl ===============
AC_CHECK_LIB(Xext, XShapeCombineMask, [XLIBS="$XLIBS -lXext"],
[echo "The shape extension stuff could not be found in the X client libraries"
exit 1],
$X_LIBS $X_EXTRA_LIBS -lX11)
dnl XPM library
dnl ===========
AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [XLIBS="$XLIBS -lXpm"],
[echo "The libXpm library was not found, but is necessary to build this library"
exit 1],
$X_LIBS $X_EXTRA_LIBS -lX11)
AC_SUBST(XCFLAGS)
AC_SUBST(XLFLAGS)
AC_SUBST(XLIBS)
AC_SUBST(X_EXTRA_LIBS)
dnl ===============================================
dnl End of stuff that uses X
dnl ===============================================
dnl =========
dnl Debugging
dnl =========
AC_ARG_ENABLE(debug,
[ --enable-debug turn on debugging [default=on]],,enable_debug=no)
if test "$enable_debug" = yes; then
DFLAGS="-Wall -g -ansi -pedantic"
AC_DEFINE(DEBUG, 1, [use debug code])
fi
AC_SUBST(DFLAGS)
dnl ============
dnl Check for OS
dnl ============
ignore_buffers=no
ignore_cached=no
ignore_wired=no
case ${host_os} in
linux*)
OS=linux
ignore_buffers=yes
ignore_cached=yes
;;
freebsd*)
OS=freebsd
ignore_wired=yes
ignore_cached=yes
LIBS="$LIBS -lkvm"
SETGID_FLAGS="-g kmem -m 2755 -o root"
;;
openbsd*)
OS=openbsd
;;
solaris*)
OS=solaris
;;
*)
echo ""
echo "Sorry, ${host_os} is not supported yet"
echo ""
exit 1
;;
esac
AC_SUBST(OS)
AC_SUBST(SETGID_FLAGS)
AC_SUBST(LIBS)
if test "$ignore_buffers" = yes; then
AC_DEFINE(IGNORE_BUFFERS, 1, [use '--ignore-buffers' option])
fi
if test "$ignore_cached" = yes; then
AC_DEFINE(IGNORE_CACHED, 1, [use '--ignore-cached' option])
fi
if test "$ignore_wired" = yes; then
AC_DEFINE(IGNORE_WIRED, 1, [use '--ignore-wired' option])
fi
dnl =============================
dnl Checks for library functions.
dnl =============================
LIBRARY_SEARCH_PATH="$lib_search_path"
HEADER_SEARCH_PATH="$inc_search_path"
AC_SUBST(LIBRARY_SEARCH_PATH)
AC_SUBST(HEADER_SEARCH_PATH)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h memory.h stddef.h stdlib.h string.h strings.h sys/param.h sys/time.h unistd.h])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
dnl Checks for library functions.
AC_FUNC_MALLOC
AC_CHECK_FUNCS(select strtoul uname)
AC_CONFIG_FILES(Makefile \
src/Makefile \
doc/Makefile)
AC_OUTPUT

View file

@ -0,0 +1,228 @@
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = .
top_srcdir = ..
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
sbindir = ${exec_prefix}/sbin
libexecdir = ${exec_prefix}/libexec
datadir = ${prefix}/share
sysconfdir = ${prefix}/etc
sharedstatedir = ${prefix}/com
localstatedir = ${prefix}/var
libdir = ${exec_prefix}/lib
infodir = ${prefix}/info
mandir = ${prefix}/man
includedir = ${prefix}/include
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/wmapmload
pkglibdir = $(libdir)/wmapmload
pkgincludedir = $(includedir)/wmapmload
top_builddir = ..
ACLOCAL = aclocal
AUTOCONF = autoconf
AUTOMAKE = automake
AUTOHEADER = autoheader
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_SCRIPT = ${INSTALL}
transform = s,x,x,
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias =
host_triplet = i686-pc-linux-gnu
AWK = gawk
CC = gcc
DFLAGS =
HEADER_SEARCH_PATH = -I/usr/X11R6/include -I/usr/local/include
LIBRARY_SEARCH_PATH = -L/usr/X11R6/lib -L/usr/local/lib
LIBS =
LN_S = ln -s
MAKEINFO = makeinfo
OS = linux
PACKAGE = wmapmload
SETGID_FLAGS =
VERSION = 0.3.2
XCFLAGS = -I/usr/X11R6/include
XLFLAGS = -L/usr/X11R6/lib
XLIBS = -lX11 -lXext -lXpm
X_EXTRA_LIBS =
X_LIBRARY_PATH = /usr/X11R6/lib
man_MANS = wmacpiload.1
EXTRA_DIST = $(man_MANS)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
install-man1:
$(mkinstalldirs) $(DESTDIR)$(man1dir)
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
done
uninstall-man1:
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
rm -f $(DESTDIR)$(man1dir)/$$inst; \
done
install-man: $(MANS)
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-man1
uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = doc
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am
install-data-am: install-man
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-man
uninstall: uninstall-am
all-am: Makefile $(MANS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(mandir)/man1
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-generic clean-am
distclean: distclean-am
maintainer-clean-am: maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \
distdir info-am info dvi-am dvi check check-am installcheck-am \
installcheck install-exec-am install-exec install-data-am install-data \
install-am install uninstall-am uninstall all-redirect all-am all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View file

@ -0,0 +1,4 @@
man_MANS = wmacpiload.1
EXTRA_DIST = $(man_MANS)

View file

@ -0,0 +1,228 @@
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AWK = @AWK@
CC = @CC@
DFLAGS = @DFLAGS@
HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@
LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@
LIBS = @LIBS@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
OS = @OS@
PACKAGE = @PACKAGE@
SETGID_FLAGS = @SETGID_FLAGS@
VERSION = @VERSION@
XCFLAGS = @XCFLAGS@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
man_MANS = wmacpiload.1
EXTRA_DIST = $(man_MANS)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
install-man1:
$(mkinstalldirs) $(DESTDIR)$(man1dir)
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
done
uninstall-man1:
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
rm -f $(DESTDIR)$(man1dir)/$$inst; \
done
install-man: $(MANS)
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-man1
uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = doc
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am
install-data-am: install-man
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-man
uninstall: uninstall-am
all-am: Makefile $(MANS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(mandir)/man1
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-generic clean-am
distclean: distclean-am
maintainer-clean-am: maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \
distdir info-am info dvi-am dvi check check-am installcheck-am \
installcheck install-exec-am install-exec install-data-am install-data \
install-am install uninstall-am uninstall all-redirect all-am all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View file

@ -0,0 +1,95 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH WMACPILOAD 1 "March 26, 2003"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
wmacpiload \- A dockapp to monitor acpi battery status and cpu temp
.SH SYNOPSIS
.B wmapmload [options]
.SH DESCRIPTION
This manual page documents briefly the
.B wmapmload
command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBWMacpiLoad\fP is a program to monitor battery and cpu temp. It is a dockapp
that is supported by X window managers such as Window Maker, AfterStep, BlackBox, and
Enlightenment.
The CPU temperature is displayed in the top half. The battery load percentage
is in the bottom half in two manner : number and graphic. Next to percentage
number are the on-line/on-battery and on-charge status. It has an LCD
look-alike user interface.
The back-light may be turned on/off by clicking the mouse button 1 (left)
over the application. If battery status is below a critical level, an
alarm-mode will alert you by turning on and off back-light. This can be
stopped (and restarted) by clicking the mouse button 3 (right) over the
application. An application can be launched when alarm is on to notify
user that level is too low.
By clicking with mouse button 2 (middle), the computer can be put in
STANDBY (default) or SUSPEND mode (with CONTROL key).
.SH OPTIONS
This program follows the usual GNU command line syntax, with long options
starting with two dashes (`\-'). A summary of options is included below.
.TP
.B \-d, \-\-display <string>
Attempt to open a window on the named X display. In the absence of this option,
the display specified by the
.B DISPLAY
environment variable is used.
.TP
.B \-bl, \-\-backlight
turn on back-light
.TP
.B \-lc, \-\-light\-color <color>
back-light color (rgb:6E/C6/3B is default)
.TP
.B \-i, \-\-interval <number>
number of secs between updates (1 is default)
.TP
.B \-a, \-\-alarm <number>
low battery level when to raise alarm (20 is default)
.TP
.B \-h, \-\-help
show help text and exit
.TP
.B \-v, \-\-version
show program version and exit
.TP
.B \-w, \-\-windowed
run the application in windowed mode
.TP
.B \-bw, \-\-broken\-wm
activate broken window manager fix
.TP
.B \-n, \-\-notify <string>
command to launch each time there is alarm
.TP
.B \-s, \-\-suspend <string>
set command for acpi suspend
.TP
.B \-S, \-\-standby <string>
set command for acpi standby
.SH AUTHOR
WMACPILoad was assembled by Anthony Peacock <bratag44@hotmail.com> It is massively based on code by
Thomas Nemeth <tnemeth@free.fr>. It is largely based on WMMemMon and WMCPULoad by Seiichi
SATO <ssato@sh.rim.or.jp>, WMMemLoad by Mark Staggs <me@markstaggs.net> and wmapm by Chris D.
Faulhaber <jedgar@speck.ml.org> Michael G. Henderson <mghenderson@lanl.gov>.

Some files were not shown because too many files have changed in this diff Show more