From 231e8136533d761d4ba2c529dce6a3ea34be9d86 Mon Sep 17 00:00:00 2001
From: Gregory Tertyshny <gtertysh@e1r7p14.unit.ua>
Date: Mon, 20 Mar 2017 15:35:09 +0200
Subject: [PATCH] port to mac

---
 .gitignore                                    |    1 +
 Makefile                                      |    9 +-
 inc/fractol.h                                 |    6 +-
 minilibx/=README=                             |   41 -
 minilibx/Makefile                             |   22 -
 minilibx/Makefile.gen                         |   47 -
 minilibx/Makefile.mk                          |   47 -
 minilibx/configure                            |   94 -
 minilibx/libmlx_Linux.a                       |  Bin 102576 -> 0 bytes
 minilibx/mlx_clear_window.c                   |   21 -
 minilibx/mlx_destroy_image.c                  |   31 -
 minilibx/mlx_destroy_window.c                 |   38 -
 minilibx/mlx_expose_hook.c                    |   22 -
 minilibx/mlx_flush_event.c                    |   25 -
 minilibx/mlx_get_color_value.c                |   33 -
 minilibx/mlx_get_data_addr.c                  |   23 -
 minilibx/mlx_hook.c                           |   40 -
 minilibx/mlx_init.c                           |   91 -
 minilibx/mlx_int.h                            |  124 -
 minilibx/mlx_int_anti_resize_win.c            |   28 -
 minilibx/mlx_int_do_nothing.c                 |   16 -
 minilibx/mlx_int_get_visual.c                 |   39 -
 minilibx/mlx_int_param_event.c                |  100 -
 minilibx/mlx_int_set_win_event_mask.c         |   34 -
 minilibx/mlx_int_wait_first_expose.c          |   23 -
 minilibx/mlx_key_hook.c                       |   22 -
 minilibx/mlx_lib_xpm.c                        |   96 -
 minilibx/mlx_loop.c                           |   38 -
 minilibx/mlx_loop_hook.c                      |   21 -
 minilibx/mlx_mouse_hook.c                     |   22 -
 minilibx/mlx_new_image.c                      |  155 -
 minilibx/mlx_new_window.c                     |   61 -
 minilibx/mlx_pixel_put.c                      |   26 -
 minilibx/mlx_put_image_to_window.c            |   37 -
 minilibx/mlx_string_put.c                     |   26 -
 minilibx/mlx_xpm.c.ok                         |  310 --
 minilibx/rgb2c.pl                             |   38 -
 minilibx/test/Makefile.gen                    |   26 -
 minilibx/test/Makefile.mk                     |   24 -
 minilibx/test/main.c                          |  284 --
 minilibx/test/new_win.c                       |   31 -
 minilibx/test/open.xpm                        | 1439 -------
 minilibx/test/open24.xpm                      |  230 --
 minilibx/test/open30.xpm                      | 1439 -------
 minilibx_macos/Makefile                       |   20 +
 minilibx_macos/_README_                       |   29 +
 minilibx_macos/font.c                         | 3525 +++++++++++++++++
 minilibx_macos/font.xcf                       |  Bin 0 -> 52570 bytes
 {minilibx => minilibx_macos}/man/man1         |    0
 {minilibx => minilibx_macos}/man/man3/mlx.1   |   36 +-
 .../man/man3/mlx_loop.1                       |   14 +-
 .../man/man3/mlx_new_image.1                  |    6 +-
 .../man/man3/mlx_new_window.1                 |    2 +-
 .../man/man3/mlx_pixel_put.1                  |    2 +-
 {minilibx => minilibx_macos}/mlx.h            |   27 +-
 minilibx_macos/mlx_init_loop.m                |  184 +
 minilibx_macos/mlx_int.h                      |  102 +
 .../mlx_int_str_to_wordtab.c                  |   16 +-
 minilibx_macos/mlx_new_image.m                |  190 +
 minilibx_macos/mlx_new_window.h               |   56 +
 minilibx_macos/mlx_new_window.m               |  760 ++++
 {minilibx => minilibx_macos}/mlx_rgb.c        |    1 -
 minilibx_macos/mlx_shaders.c                  |  236 ++
 {minilibx => minilibx_macos}/mlx_xpm.c        |  103 +-
 src/hooks.c                                   |    4 +-
 src/main.c                                    |    8 +-
 66 files changed, 5245 insertions(+), 5356 deletions(-)
 delete mode 100644 minilibx/=README=
 delete mode 100644 minilibx/Makefile
 delete mode 100644 minilibx/Makefile.gen
 delete mode 100644 minilibx/Makefile.mk
 delete mode 100755 minilibx/configure
 delete mode 100644 minilibx/libmlx_Linux.a
 delete mode 100644 minilibx/mlx_clear_window.c
 delete mode 100644 minilibx/mlx_destroy_image.c
 delete mode 100644 minilibx/mlx_destroy_window.c
 delete mode 100644 minilibx/mlx_expose_hook.c
 delete mode 100644 minilibx/mlx_flush_event.c
 delete mode 100644 minilibx/mlx_get_color_value.c
 delete mode 100644 minilibx/mlx_get_data_addr.c
 delete mode 100644 minilibx/mlx_hook.c
 delete mode 100644 minilibx/mlx_init.c
 delete mode 100644 minilibx/mlx_int.h
 delete mode 100644 minilibx/mlx_int_anti_resize_win.c
 delete mode 100644 minilibx/mlx_int_do_nothing.c
 delete mode 100644 minilibx/mlx_int_get_visual.c
 delete mode 100644 minilibx/mlx_int_param_event.c
 delete mode 100644 minilibx/mlx_int_set_win_event_mask.c
 delete mode 100644 minilibx/mlx_int_wait_first_expose.c
 delete mode 100644 minilibx/mlx_key_hook.c
 delete mode 100644 minilibx/mlx_lib_xpm.c
 delete mode 100644 minilibx/mlx_loop.c
 delete mode 100644 minilibx/mlx_loop_hook.c
 delete mode 100644 minilibx/mlx_mouse_hook.c
 delete mode 100644 minilibx/mlx_new_image.c
 delete mode 100644 minilibx/mlx_new_window.c
 delete mode 100644 minilibx/mlx_pixel_put.c
 delete mode 100644 minilibx/mlx_put_image_to_window.c
 delete mode 100644 minilibx/mlx_string_put.c
 delete mode 100644 minilibx/mlx_xpm.c.ok
 delete mode 100755 minilibx/rgb2c.pl
 delete mode 100644 minilibx/test/Makefile.gen
 delete mode 100644 minilibx/test/Makefile.mk
 delete mode 100644 minilibx/test/main.c
 delete mode 100644 minilibx/test/new_win.c
 delete mode 100644 minilibx/test/open.xpm
 delete mode 100644 minilibx/test/open24.xpm
 delete mode 100644 minilibx/test/open30.xpm
 create mode 100644 minilibx_macos/Makefile
 create mode 100644 minilibx_macos/_README_
 create mode 100644 minilibx_macos/font.c
 create mode 100644 minilibx_macos/font.xcf
 rename {minilibx => minilibx_macos}/man/man1 (100%)
 rename {minilibx => minilibx_macos}/man/man3/mlx.1 (65%)
 rename {minilibx => minilibx_macos}/man/man3/mlx_loop.1 (86%)
 rename {minilibx => minilibx_macos}/man/man3/mlx_new_image.1 (96%)
 rename {minilibx => minilibx_macos}/man/man3/mlx_new_window.1 (96%)
 rename {minilibx => minilibx_macos}/man/man3/mlx_pixel_put.1 (97%)
 rename {minilibx => minilibx_macos}/mlx.h (75%)
 create mode 100644 minilibx_macos/mlx_init_loop.m
 create mode 100644 minilibx_macos/mlx_int.h
 rename {minilibx => minilibx_macos}/mlx_int_str_to_wordtab.c (86%)
 create mode 100644 minilibx_macos/mlx_new_image.m
 create mode 100644 minilibx_macos/mlx_new_window.h
 create mode 100644 minilibx_macos/mlx_new_window.m
 rename {minilibx => minilibx_macos}/mlx_rgb.c (99%)
 create mode 100644 minilibx_macos/mlx_shaders.c
 rename {minilibx => minilibx_macos}/mlx_xpm.c (73%)

diff --git a/.gitignore b/.gitignore
index cf25723..71f0bcc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 *.swp
 cmake-build-debug
 .idea
+._*
diff --git a/Makefile b/Makefile
index d7e4c0a..53bae0e 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@
 #    By: gtertysh <marvin@42.fr>                    +#+  +:+       +#+         #
 #                                                 +#+#+#+#+#+   +#+            #
 #    Created: 2016/12/14 16:54:48 by gtertysh          #+#    #+#              #
-#    Updated: 2016/12/23 19:59:53 by gtertysh         ###   ########.fr        #
+#    Updated: 2017/03/20 15:31:33 by gtertysh         ###   ########.fr        #
 #                                                                              #
 # **************************************************************************** #
 
@@ -33,7 +33,7 @@ MLX =				libmlx.a
 SRC_DIR =			./src/
 OBJ_DIR =			./obj/
 LIBFT_DIR =			./libft/
-MLX_DIR =			./minilibx/
+MLX_DIR =			./minilibx_macos/
 
 # src and obj files
 
@@ -59,8 +59,7 @@ INC =				-I $(LIBFT_DIR)includes/ \
 # valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes program arguments
 
 LIBFT_FLAGS =		-lft -L $(LIBFT_DIR)
-MLX_FLAGS =			-lmlx -lXext -lX11 -L $(MLX_DIR)
-OTHER_FLAGS =		-lm
+MLX_FLAGS =			-lmlx -framework OpenGL -framework AppKit -L $(MLX_DIR)
 CC_FLAGS =			-Werror -Wextra -Wall -O3
 DEBUG = 			-g
 OPT = 				-O3
@@ -83,7 +82,7 @@ $(NAME): $(LIBFT_DIR)$(LIBFT) $(MLX_DIR)$(MLX) $(OBJ)
 
 $(OBJ_DIR)%.o: $(SRC_DIR)%.c $(FRACTOL_INC)$(FRACTOL_HEADER)
 	@echo "$(CYAN)Compiling object files: $(BLUE)$@$(NORMAL)"
-	@$(CC) $(FLAGS) $(INC) -c $< -o $@  
+	@$(CC) $(CC_FLAGS) $(INC) -c $< -o $@  
 
 $(LIBFT_DIR)$(LIBFT):
 	@echo "$(CYAN)Compiling libft library...$(NORMAL)"
diff --git a/inc/fractol.h b/inc/fractol.h
index 13ae89d..4c0b6e1 100644
--- a/inc/fractol.h
+++ b/inc/fractol.h
@@ -6,7 +6,7 @@
 /*   By: gtertysh <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2017/03/16 20:59:04 by gtertysh          #+#    #+#             */
-/*   Updated: 2017/03/16 21:09:30 by gtertysh         ###   ########.fr       */
+/*   Updated: 2017/03/20 15:32:52 by gtertysh         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -18,8 +18,8 @@
 # include <math.h>
 # include <fcntl.h>
 
-# define HEIGHT			700
-# define WIDTH			1300
+# define HEIGHT			1200
+# define WIDTH			2500
 # define COLOR1			0
 # define COLOR2			16777215
 # define INIT_X			30
diff --git a/minilibx/=README= b/minilibx/=README=
deleted file mode 100644
index 65d5429..0000000
--- a/minilibx/=README=
+++ /dev/null
@@ -1,41 +0,0 @@
-
-This is the MinilibX, a simple X-Window (X11R6) programming API
-in C, designed for students, suitable for X-beginners.
-
-
-Contents
-
- - source code in C to create the mlx library
- - man pages (in man/ directory)
- - a test program (in test/ directory) is built
-   with the library
- - a public include file mlx.h
- - a tiny configure script to generate an appropriate Makefile.gen
-
-
-Requirements
-
- - MinilibX only support TrueColor visual type (8,15,16,24 or 32 bits depth)
- - gcc
- - X11 include files
- - XShm extension must be present
-
-
-Compile MinilibX
-
- - run ./configure or make
-   both will make a few tests, create Makefile.gen
-   and then automatically run make on this generated Makefile.gen .
-   libmlx.a and libmlx_$(HOSTTYPE).a are created.
-   test/mlx-test binary is also created.
-
-
-Install MinilibX
-
- - no installation script is provided. You may want to install
-     - libmlx.a and/or libmlx_$(HOSTTYPE).a in /usr/X11/lib or /usr/local/lib
-     - mlx.h in /usr/X11/include or /usr/local/include
-     - man/man3/mlx*.1 in /usr/X11/man/man3 or /usr/local/man/man3
-
-
- Olivier CROUZET - 2014-01-06 -
diff --git a/minilibx/Makefile b/minilibx/Makefile
deleted file mode 100644
index d334105..0000000
--- a/minilibx/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-##
-## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
-## 
-## Made by Olivier Crouzet
-## Login   <ol@epitech.net>
-## 
-## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
-## Last update Tue May 15 15:44:41 2007 Olivier Crouzet
-##
-
-## Please use configure script
-
-
-all	: do_configure
-
-do_configure	:
-	./configure > /dev/null 2>&1
-
-clean	:
-	./configure clean > /dev/null 2>&1
-
-re	: clean all
diff --git a/minilibx/Makefile.gen b/minilibx/Makefile.gen
deleted file mode 100644
index 58ce77e..0000000
--- a/minilibx/Makefile.gen
+++ /dev/null
@@ -1,47 +0,0 @@
-INC=/usr/include
-HT=Linux
-DOCP=do_cp
-##
-## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
-## 
-## Made by Olivier Crouzet
-## Login   <ol@epitech.net>
-## 
-## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
-## Last update Tue May 15 15:41:20 2007 Olivier Crouzet
-##
-
-## Please use configure script
-
-
-
-CC	= gcc
-
-NAME	= libmlx.a
-
-SRC	= mlx_init.c mlx_new_window.c mlx_pixel_put.c mlx_loop.c \
-	mlx_mouse_hook.c mlx_key_hook.c mlx_expose_hook.c mlx_loop_hook.c \
-	mlx_int_anti_resize_win.c mlx_int_do_nothing.c \
-	mlx_int_wait_first_expose.c mlx_int_get_visual.c \
-	mlx_flush_event.c mlx_string_put.c \
-	mlx_new_image.c mlx_get_data_addr.c \
-	mlx_put_image_to_window.c mlx_get_color_value.c mlx_clear_window.c \
-	mlx_xpm.c mlx_int_str_to_wordtab.c mlx_destroy_window.c \
-	mlx_int_param_event.c mlx_int_set_win_event_mask.c mlx_hook.c \
-	mlx_rgb.c mlx_destroy_image.c
-
-OBJ	=$(SRC:.c=.o)
-CFLAGS	= -O3 -I$(INC)
-
-all	: $(NAME) $(DOCP)
-
-$(NAME)	: $(OBJ)
-	ar -r $(NAME) $(OBJ)
-	ranlib $(NAME)
-
-do_cp	:
-	cp $(NAME) libmlx_$(HT).a
-
-
-clean	:
-	rm -f $(OBJ) $(NAME) *~ core *.core
diff --git a/minilibx/Makefile.mk b/minilibx/Makefile.mk
deleted file mode 100644
index f05fd6c..0000000
--- a/minilibx/Makefile.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## Makefile for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
-## 
-## Made by Olivier Crouzet
-## Login   <ol@epitech.net>
-## 
-## Started on  Tue Oct  5 15:56:43 2004 Olivier Crouzet
-## Last update Tue May 15 15:41:20 2007 Olivier Crouzet
-##
-
-## Please use configure script
-
-
-INC	=%%%%
-HT	=%%%%
-DOCP	=%%%%
-
-CC	= gcc
-
-NAME	= libmlx.a
-
-SRC	= mlx_init.c mlx_new_window.c mlx_pixel_put.c mlx_loop.c \
-	mlx_mouse_hook.c mlx_key_hook.c mlx_expose_hook.c mlx_loop_hook.c \
-	mlx_int_anti_resize_win.c mlx_int_do_nothing.c \
-	mlx_int_wait_first_expose.c mlx_int_get_visual.c \
-	mlx_flush_event.c mlx_string_put.c \
-	mlx_new_image.c mlx_get_data_addr.c \
-	mlx_put_image_to_window.c mlx_get_color_value.c mlx_clear_window.c \
-	mlx_xpm.c mlx_int_str_to_wordtab.c mlx_destroy_window.c \
-	mlx_int_param_event.c mlx_int_set_win_event_mask.c mlx_hook.c \
-	mlx_rgb.c mlx_destroy_image.c
-
-OBJ	=$(SRC:.c=.o)
-CFLAGS	= -O3 -I$(INC)
-
-all	: $(NAME) $(DOCP)
-
-$(NAME)	: $(OBJ)
-	ar -r $(NAME) $(OBJ)
-	ranlib $(NAME)
-
-do_cp	:
-	cp $(NAME) libmlx_$(HT).a
-
-
-clean	:
-	rm -f $(OBJ) $(NAME) *~ core *.core
diff --git a/minilibx/configure b/minilibx/configure
deleted file mode 100755
index 2f9b0be..0000000
--- a/minilibx/configure
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-
-
-if [ -n "$1" -a "$1" = "--help" ] ; then
-	echo "Usage : $0\n Auto-configure and make MinilibX"
-	exit
-fi
-
-
-conf_inc=NO
-
-for inc in \
-    /usr/X11/include          \
-    /usr/X11R6/include        \
-    /usr/X11R5/include        \
-    /usr/X11R4/include        \
-                              \
-    /usr/include/X11          \
-    /usr/include/X11R6        \
-    /usr/include/X11R5        \
-    /usr/include/X11R4        \
-                              \
-    /usr/local/X11/include    \
-    /usr/local/X11R6/include  \
-    /usr/local/X11R5/include  \
-    /usr/local/X11R4/include  \
-                              \
-    /usr/local/include/X11    \
-    /usr/local/include/X11R6  \
-    /usr/local/include/X11R5  \
-    /usr/local/include/X11R4  \
-                              \
-    /usr/X386/include         \
-    /usr/x386/include         \
-    /usr/XFree86/include/X11  \
-                              \
-    /usr/include              \
-    /usr/local/include        \
-    /usr/athena/include       \
-    /usr/local/x11r5/include  \
-    /usr/lpp/Xamples/include  \
-                              \
-    /usr/openwin/include      \
-    /usr/openwin/share/include
- do
-	if [ -f "$inc/X11/Xlib.h" -a -f "$inc/X11/extensions/XShm.h" ]; then
-		conf_inc=$inc
-		break
-	fi
- done
-
-
-if [ "$conf_inc" = "NO" ]; then
-	echo "Can't find a suitable X11 include directory."
-	exit
-else
-	echo "X11 include dir : $conf_inc"
-fi
-
-if [ -z "$HOSTTYPE" ]; then
-    conf_ht=`uname -s`
-else
-    conf_ht=$HOSTTYPE
-fi
-
-if [ -z "$conf_ht" ]; then
-    conf_docp=""
-else
-    conf_docp="do_cp"
-    echo "lib_$conf_ht generation"
-fi
-
-
-/bin/echo "INC=$conf_inc" > Makefile.gen
-/bin/echo "HT=$conf_ht" >> Makefile.gen
-/bin/echo "DOCP=$conf_docp" >> Makefile.gen
-cat Makefile.mk | grep -v %%%% >> Makefile.gen
-
-/bin/echo "INC=$conf_inc" > test/Makefile.gen
-/bin/echo "HT=$conf_ht" >> test/Makefile.gen
-/bin/echo "DOCP=$conf_docp" >> test/Makefile.gen
-cat test/Makefile.mk | grep -v %%%% >> test/Makefile.gen
-
-
-if [ -n "$1" -a "$1" = "clean" ] ; then
-    echo "Now make it clean."
-    make -f Makefile.gen clean
-    (cd test ; make -f Makefile.gen clean)
-    exit
-fi
-
-echo "Now make it."
-make -f Makefile.gen all
-(cd test ; make -f Makefile.gen all )
diff --git a/minilibx/libmlx_Linux.a b/minilibx/libmlx_Linux.a
deleted file mode 100644
index dfe9c9e805bdbc4588b847071b5a2eeb7b8cbd99..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 102576
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
O+suX5pzGuZZvP+Y&a@Z+

diff --git a/minilibx/mlx_clear_window.c b/minilibx/mlx_clear_window.c
deleted file mode 100644
index f621090..0000000
--- a/minilibx/mlx_clear_window.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-** mlx_clear_window.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Sep  7 19:46:15 2000 Charlie Root
-** Last update Tue Sep 25 17:11:19 2001 Charlie Root
-*/
-
-
-
-#include	"mlx_int.h"
-
-
-int		mlx_clear_window(t_xvar *xvar,t_win_list *win)
-{
-  XClearWindow(xvar->display,win->window);
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_destroy_image.c b/minilibx/mlx_destroy_image.c
deleted file mode 100644
index afd4d1a..0000000
--- a/minilibx/mlx_destroy_image.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-** mlx_destroy_image.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Mar 12 10:25:15 2002 Charlie Root
-** Last update Tue May 15 16:45:54 2007 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-
-int	mlx_destroy_image(t_xvar *xvar, t_img *img)
-{
-  if (img->type == MLX_TYPE_SHM_PIXMAP ||
-      img->type == MLX_TYPE_SHM)
-    {
-      XShmDetach(xvar->display, &(img->shm));
-      shmdt(img->shm.shmaddr);
-      /* shmctl IPC_RMID already done */
-    }
-  XDestroyImage(img->image);  /* For image & shm-image. Also free img->data */
-  XFreePixmap(xvar->display, img->pix);
-  if (img->gc)
-    XFreeGC(xvar->display, img->gc);
-  free(img);
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_destroy_window.c b/minilibx/mlx_destroy_window.c
deleted file mode 100644
index 464790c..0000000
--- a/minilibx/mlx_destroy_window.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-** mlx_destroy_window.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Mar 12 10:25:15 2002 Charlie Root
-** Last update Tue May 15 16:46:08 2007 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-
-int	mlx_destroy_window(t_xvar *xvar,t_win_list *win)
-{
-  t_win_list	*w;
-  t_win_list	*prev;
-  t_win_list	first;
-
-  first.next = xvar->win_list;
-  prev = &first;
-  w = prev->next;
-  while (w)
-    {
-      if (w==win)
-	prev->next = w->next;
-      else
-	prev = w;
-      w = w->next;
-    }
-  xvar->win_list = first.next;
-  XDestroyWindow(xvar->display,win->window);
-  XFreeGC(xvar->display,win->gc);
-  free(win);
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_expose_hook.c b/minilibx/mlx_expose_hook.c
deleted file mode 100644
index b00b675..0000000
--- a/minilibx/mlx_expose_hook.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-** mlx_expose_hook.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Feb 23 17:07:42 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int		mlx_expose_hook(t_win_list *win,int (*funct)(),void *param)
-{
-  win->hooks[Expose].hook = funct;
-  win->hooks[Expose].param = param;
-  win->hooks[Expose].mask = ExposureMask;
-}
diff --git a/minilibx/mlx_flush_event.c b/minilibx/mlx_flush_event.c
deleted file mode 100644
index 1e586ad..0000000
--- a/minilibx/mlx_flush_event.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-** mlx_flush_event.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Wed Aug  2 18:58:11 2000 Charlie Root
-** Last update Fri Feb 23 17:08:48 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int	mlx_flush_event(t_xvar *xvar)
-{
-  XEvent	ev;
-
-  while (XPending(xvar->display))
-  {
-     XNextEvent(xvar->display,&ev);
-  }
-}
diff --git a/minilibx/mlx_get_color_value.c b/minilibx/mlx_get_color_value.c
deleted file mode 100644
index b620970..0000000
--- a/minilibx/mlx_get_color_value.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-** mlx_get_color_value.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
-** Last update Thu Oct  4 15:04:13 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-int             mlx_get_color_value(t_xvar *xvar,int color)
-{
-  return(mlx_int_get_good_color(xvar,color));
-}
-
-int		mlx_int_get_good_color(t_xvar *xvar,int color)
-{
-  XColor	xc;
-
-  if (xvar->depth>=24)
-    return (color);
-  xc.red = (color>>8)&0xFF00;
-  xc.green = color&0xFF00;
-  xc.blue = (color<<8)&0xFF00;
-  xc.pixel = ((xc.red>>(16-xvar->decrgb[1]))<<xvar->decrgb[0])+
-    ((xc.green>>(16-xvar->decrgb[3]))<<xvar->decrgb[2])+
-    ((xc.blue>>(16-xvar->decrgb[5]))<<xvar->decrgb[4]);
-  return (xc.pixel);
-}
diff --git a/minilibx/mlx_get_data_addr.c b/minilibx/mlx_get_data_addr.c
deleted file mode 100644
index 45e7a85..0000000
--- a/minilibx/mlx_get_data_addr.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-** mlx_get_data_addr.c for MiniLibX in raytraceur
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Aug 14 15:45:57 2000 Charlie Root
-** Last update Thu Sep 27 19:05:25 2001 Charlie Root
-*/
-
-
-
-#include	"mlx_int.h"
-
-
-char	*mlx_get_data_addr(t_img *img,int *bits_per_pixel,
-			   int *size_line,int *endian)
-{
-  *bits_per_pixel = img->bpp;
-  *size_line = img->size_line;
-  *endian = img->image->byte_order;
-  return (img->data);
-}
diff --git a/minilibx/mlx_hook.c b/minilibx/mlx_hook.c
deleted file mode 100644
index 98e509a..0000000
--- a/minilibx/mlx_hook.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-** mlx_hook.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Jan 28 17:05:28 2005 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int	mlx_hook(t_win_list *win, int x_event, int x_mask, 
-		 int (*funct)(),void *param)
-{
-  win->hooks[x_event].hook = funct;
-  win->hooks[x_event].param = param;
-  win->hooks[x_event].mask = x_mask;
-}
-
-
-int	mlx_do_key_autorepeatoff(t_xvar *xvar)
-{
-  XAutoRepeatOff(xvar->display);
-}
-
-int	mlx_do_key_autorepeaton(t_xvar *xvar)
-{
-  XAutoRepeatOn(xvar->display);
-}
-
-
-int	mlx_do_sync(t_xvar *xvar)
-{
-  XSync(xvar->display, False);
-}
diff --git a/minilibx/mlx_init.c b/minilibx/mlx_init.c
deleted file mode 100644
index 7a8db8f..0000000
--- a/minilibx/mlx_init.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-** mlx_init.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Jul 31 16:52:42 2000 Charlie Root
-** Last update Fri Jan 28 17:05:09 2005 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-void		*mlx_init()
-{
-  t_xvar	*xvar;
-  
-  if (!(xvar = malloc(sizeof(*xvar))) || (xvar->display = XOpenDisplay(""))==0)
-    return ((void *)0);
-  xvar->screen = DefaultScreen(xvar->display);
-  xvar->root = DefaultRootWindow(xvar->display);
-  xvar->cmap = DefaultColormap(xvar->display,xvar->screen);
-  xvar->depth = DefaultDepth(xvar->display,xvar->screen);
-  if (mlx_int_get_visual(xvar)==-1)
-    {
-      printf(ERR_NO_TRUECOLOR);
-      exit(1);
-    }
-  xvar->win_list = 0;
-  xvar->loop_hook = 0;
-  xvar->loop_param = (void *)0;
-  xvar->do_flush = 1;
-  mlx_int_deal_shm(xvar);
-  if (xvar->private_cmap)
-    xvar->cmap = XCreateColormap(xvar->display,xvar->root,
-				 xvar->visual,AllocNone);
-  mlx_int_rgb_conversion(xvar);
-  return (xvar);
-}
-
-
-/*
-** pshm_format of -1 :  Not XYBitmap|XYPixmap|ZPixmap
-** alpha libX need a check of the DISPLAY env var, or shm is allowed
-** in remote Xserver connections.
-*/
-
-int	mlx_int_deal_shm(t_xvar *xvar)
-{
-  int	use_pshm;
-  int	bidon;
-  char	*dpy;
-  char	buff[33];
-
-  xvar->use_xshm = XShmQueryVersion(xvar->display,&bidon,&bidon,&(use_pshm));
-  if (xvar->use_xshm && use_pshm)
-    xvar->pshm_format = XShmPixmapFormat(xvar->display);
-  else
-    xvar->pshm_format = -1;
-  gethostname(buff,32);
-  dpy = getenv(ENV_DISPLAY);
-  if (dpy && strlen(dpy) && *dpy!=':' && strncmp(dpy,buff,strlen(buff)) &&
-      strncmp(dpy,LOCALHOST,strlen(LOCALHOST)) )
-    {
-      xvar->pshm_format = -1;
-      xvar->use_xshm = 0;
-    }
-}
-
-/*
-** TrueColor Visual is needed to have *_mask correctly set
-*/
-
-int	mlx_int_rgb_conversion(t_xvar *xvar)
-{
-  bzero(xvar->decrgb,sizeof(int)*6);
-  while (!(xvar->visual->red_mask&1))
-    { xvar->visual->red_mask >>= 1; xvar->decrgb[0] ++; }
-  while (xvar->visual->red_mask&1)
-    { xvar->visual->red_mask >>= 1; xvar->decrgb[1] ++; }
-  while (!(xvar->visual->green_mask&1))
-    { xvar->visual->green_mask >>= 1; xvar->decrgb[2] ++; }
-  while (xvar->visual->green_mask&1)
-    { xvar->visual->green_mask >>= 1; xvar->decrgb[3] ++; }
-  while (!(xvar->visual->blue_mask&1))
-    { xvar->visual->blue_mask >>= 1; xvar->decrgb[4] ++; }
-  while (xvar->visual->blue_mask&1)
-    { xvar->visual->blue_mask >>= 1; xvar->decrgb[5] ++; }
-}
diff --git a/minilibx/mlx_int.h b/minilibx/mlx_int.h
deleted file mode 100644
index 5749664..0000000
--- a/minilibx/mlx_int.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-** mlx_int.h for mlx in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Jul 31 16:45:48 2000 Charlie Root
-** Last update Wed May 25 16:44:16 2011 Olivier Crouzet
-*/
-
-
-
-/*
-** Internal settings for MiniLibX
-*/
-
-
-#include	<stdlib.h>
-#include	<stdio.h>
-#include	<string.h>
-#include        <unistd.h>
-#include        <fcntl.h>
-#include        <sys/mman.h>
-#include	<X11/Xlib.h>
-#include	<X11/Xutil.h>
-#include	<sys/ipc.h>
-#include	<sys/shm.h>
-#include	<X11/extensions/XShm.h>
-/* #include	<X11/xpm.h> */
-
-#define	MLX_TYPE_SHM_PIXMAP	3
-#define	MLX_TYPE_SHM		2
-#define	MLX_TYPE_XIMAGE		1
-
-#define	MLX_MAX_EVENT		LASTEvent
-
-
-#define	ENV_DISPLAY		"DISPLAY"
-#define	LOCALHOST		"localhost"
-#define	ERR_NO_TRUECOLOR	"MinilibX Error : No TrueColor Visual available.\n"
-#define	WARN_SHM_ATTACH		"MinilibX Warning : X server can't attach shared memory.\n"
-
-
-typedef	struct	s_xpm_col
-{
-  int		name;
-  int		col;
-} t_xpm_col;
-
-
-struct	s_col_name
-{
-  char	*name;
-  int	color;
-};
-
-typedef struct	s_event_list
-{
-  int		mask;
-  int		(*hook)();
-  void		*param;
-} t_event_list;
-
-
-typedef struct	s_win_list
-{
-  Window		window;
-  GC			gc;
-  struct s_win_list	*next;
-  int			(*mouse_hook)();
-  int			(*key_hook)();
-  int			(*expose_hook)();
-  void			*mouse_param;
-  void			*key_param;
-  void			*expose_param;
-  t_event_list		hooks[MLX_MAX_EVENT];
-} t_win_list;
-
-
-typedef struct	s_img
-{
-  XImage	*image;
-  Pixmap	pix;
-  GC		gc;
-  int		size_line;
-  int		bpp;
-  int		width;
-  int		height;
-  int		type;
-  int		format;
-  char		*data;
-  XShmSegmentInfo shm;
-} t_img;
-
-typedef struct	s_xvar
-{
-  Display	*display;
-  Window	root;
-  int		screen;
-  int		depth;
-  Visual	*visual;
-  Colormap	cmap;
-  int		private_cmap;
-  t_win_list	*win_list;
-  int		(*loop_hook)();
-  void		*loop_param;
-  int		use_xshm;
-  int		pshm_format;
-  int		do_flush;
-  int		decrgb[6];
-} t_xvar;
-
-
-int	mlx_int_do_nothing();
-int	mlx_int_get_good_color();
-int	mlx_int_find_in_pcm();
-int	mlx_int_anti_resize_win();
-int	mlx_int_wait_first_expose();
-int	mlx_int_rgb_conversion();
-int	mlx_int_deal_shm();
-void	*mlx_int_new_xshm_image();
-char    **mlx_int_str_to_wordtab();
-void	*mlx_new_image();
-int	shm_att_pb();
diff --git a/minilibx/mlx_int_anti_resize_win.c b/minilibx/mlx_int_anti_resize_win.c
deleted file mode 100644
index 2f20b44..0000000
--- a/minilibx/mlx_int_anti_resize_win.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-** mlx_int_anti_resize_win.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Aug  8 14:31:05 2000 Charlie Root
-** Last update Tue Sep 25 15:56:58 2001 Charlie Root
-*/
-
-#include	"mlx_int.h"
-
-
-int	mlx_int_anti_resize_win(t_xvar *xvar,Window win,int w,int h)
-{
-  XSizeHints    hints;
-  long		toto;
-  
-  XGetWMNormalHints(xvar->display,win,&hints,&toto);
-  hints.width = w;
-  hints.height = h;
-  hints.min_width = w;
-  hints.min_height = h;
-  hints.max_width = w;
-  hints.max_height = h;
-  hints.flags = PPosition | PSize | PMinSize | PMaxSize;
-  XSetWMNormalHints(xvar->display,win,&hints);
-}
diff --git a/minilibx/mlx_int_do_nothing.c b/minilibx/mlx_int_do_nothing.c
deleted file mode 100644
index 49524e4..0000000
--- a/minilibx/mlx_int_do_nothing.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-** mlx_int_do_nothing.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Aug  8 12:58:24 2000 Charlie Root
-** Last update Tue Sep 25 15:56:22 2001 Charlie Root
-*/
-
-
-
-int	mlx_int_do_nothing(void *param)
-{
-  
-}
diff --git a/minilibx/mlx_int_get_visual.c b/minilibx/mlx_int_get_visual.c
deleted file mode 100644
index 440a7ca..0000000
--- a/minilibx/mlx_int_get_visual.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-** mlx_int_get_visual.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Wed Oct  3 17:01:51 2001 Charlie Root
-** Last update Thu Oct  4 15:00:45 2001 Charlie Root
-*/
-
-
-
-#include	"mlx_int.h"
-
-
-/*
-** We need a private colormap for non-default Visual.
-*/
-
-
-int		mlx_int_get_visual(t_xvar *xvar)
-{
-  XVisualInfo	*vi;
-  XVisualInfo	template;
-  int		nb_item;
-
-  xvar->private_cmap = 0;
-  xvar->visual = DefaultVisual(xvar->display,xvar->screen);
-  if (xvar->visual->class == TrueColor)
-    return (0);
-  template.class = TrueColor;
-  template.depth = xvar->depth;
-  if (!(vi = XGetVisualInfo(xvar->display,VisualDepthMask|VisualClassMask,
-			    &template,&nb_item)) )
-    return (-1);
-  xvar->visual = vi->visual;
-  xvar->private_cmap = 1;
-  return (0);
-}
diff --git a/minilibx/mlx_int_param_event.c b/minilibx/mlx_int_param_event.c
deleted file mode 100644
index 8756a22..0000000
--- a/minilibx/mlx_int_param_event.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-** mlx_int_param_event.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
-** Last update Wed Oct  6 13:14:52 2004 Olivier Crouzet
-*/
-
-#include	"mlx_int.h"
-
-int	mlx_int_param_undef()
-{
-}
-
-int	mlx_int_param_KeyPress(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[KeyPress].hook(XkbKeycodeToKeysym(xvar->display,
-					       ev->xkey.keycode, 0, 0),
-			    win->hooks[KeyPress].param);
-}
-
-int	mlx_int_param_KeyRelease(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[KeyRelease].hook(XkbKeycodeToKeysym(xvar->display,
-						 ev->xkey.keycode, 0, 0),
-			      win->hooks[KeyRelease].param);
-}
-
-int	mlx_int_param_ButtonPress(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[ButtonPress].hook(ev->xbutton.button,ev->xbutton.x,ev->xbutton.y,
-			       win->hooks[ButtonPress].param);
-}
-
-int	mlx_int_param_ButtonRelease(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[ButtonRelease].hook(ev->xbutton.button,
-				 ev->xbutton.x, ev->xbutton.y,
-				 win->hooks[ButtonRelease].param);
-}
-
-int	mlx_int_param_MotionNotify(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[MotionNotify].hook(ev->xbutton.x,ev->xbutton.y,
-				win->hooks[MotionNotify].param);
-}
-
-int	mlx_int_param_Expose(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  if (!ev->xexpose.count)
-    win->hooks[Expose].hook(win->hooks[Expose].param);
-}
-
-
-int	mlx_int_param_generic(t_xvar *xvar, XEvent *ev, t_win_list *win)
-{
-  win->hooks[ev->type].hook(win->hooks[ev->type].param);
-}
-
-int	(*(mlx_int_param_event[]))() =
-{
-  mlx_int_param_undef,   /* 0 */
-  mlx_int_param_undef,
-  mlx_int_param_KeyPress,
-  mlx_int_param_KeyRelease,  /* 3 */
-  mlx_int_param_ButtonPress,
-  mlx_int_param_ButtonRelease,
-  mlx_int_param_MotionNotify,  /* 6 */
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_Expose,   /* 12 */
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic,
-  mlx_int_param_generic
-};
diff --git a/minilibx/mlx_int_set_win_event_mask.c b/minilibx/mlx_int_set_win_event_mask.c
deleted file mode 100644
index 55650cd..0000000
--- a/minilibx/mlx_int_set_win_event_mask.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-** mlx_int_set_win_event_mask.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Feb 23 17:07:42 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int	mlx_int_set_win_event_mask(t_xvar *xvar)
-{
-  t_win_list	*win;
-  int		mask;
-  int		i;
-  XSetWindowAttributes	xwa;
-
-  win = xvar->win_list;
-  while (win)
-    {
-      xwa.event_mask = 0;
-      i = MLX_MAX_EVENT;
-      while (i--)
-	xwa.event_mask |= win->hooks[i].mask;
-      XChangeWindowAttributes(xvar->display, win->window, CWEventMask, &xwa);
-      win = win->next;
-    }
-}
diff --git a/minilibx/mlx_int_wait_first_expose.c b/minilibx/mlx_int_wait_first_expose.c
deleted file mode 100644
index 0d549ee..0000000
--- a/minilibx/mlx_int_wait_first_expose.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-** mlx_int_wait_first_expose.c for minilibx in 
-** 
-** Made by olivier crouzet
-** Login   <ol@epita.fr>
-** 
-** Started on  Tue Oct 17 09:26:45 2000 olivier crouzet
-** Last update Fri Feb 23 17:27:10 2001 Charlie Root
-*/
-
-
-
-#include	"mlx_int.h"
-
-
-
-int	mlx_int_wait_first_expose(t_xvar *xvar,Window win)
-{
-  XEvent	ev;
-
-  XWindowEvent(xvar->display,win,ExposureMask,&ev);
-  XPutBackEvent(xvar->display,&ev);
-}
diff --git a/minilibx/mlx_key_hook.c b/minilibx/mlx_key_hook.c
deleted file mode 100644
index eea6484..0000000
--- a/minilibx/mlx_key_hook.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-** mlx_key_hook.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Feb 23 17:10:09 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int		mlx_key_hook(t_win_list *win,int (*funct)(),void *param)
-{
-  win->hooks[KeyRelease].hook = funct;
-  win->hooks[KeyRelease].param = param;
-  win->hooks[KeyRelease].mask = KeyReleaseMask;
-}
diff --git a/minilibx/mlx_lib_xpm.c b/minilibx/mlx_lib_xpm.c
deleted file mode 100644
index b8cf184..0000000
--- a/minilibx/mlx_lib_xpm.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-** mlx_xpm.c for minilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Fri Dec  8 11:07:24 2000 Charlie Root
-** Last update Thu Oct  4 16:00:22 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-void		*mlx_int_xpm_f_image(t_xvar *xvar,int *width,int *height,
-				     int (*xpm_func)(),void *param)
-{
-  XImage	*img1;
-  XImage	*img2;
-  t_img		*im2;
-  XpmAttributes	xpm_att;
-
-  xpm_att.visual = xvar->visual;
-  xpm_att.colormap = xvar->cmap;
-  xpm_att.depth = xvar->depth;
-  xpm_att.bitmap_format = ZPixmap;
-  xpm_att.valuemask = XpmDepth|XpmBitmapFormat|XpmVisual|XpmColormap;
-  if (xpm_func(xvar->display,param,&img1,&img2,&xpm_att))
-    return ((void *)0);
-  if (img2)
-    XDestroyImage(img2);
-
-  if (!(im2 = (void *)mlx_new_image(xvar,img1->width,img1->height)))
-    {
-      XDestroyImage(img1);
-      return ((void *)0);
-    }
-  *width = img1->width;
-  *height = img1->height;
-  if (mlx_int_egal_img(im2->image,img1))
-    {
-      bcopy(img1->data,im2->data,img1->height*img1->bytes_per_line);
-      XDestroyImage(img1);
-      return (im2);
-    }
-  if (im2->type==MLX_TYPE_SHM_PIXMAP)
-    {
-      XFreePixmap(xvar->display,im2->pix);
-      im2->pix = XCreatePixmap(xvar->display,xvar->root,
-			       *width,*height,xvar->depth);
-    }
-  if (im2->type>MLX_TYPE_XIMAGE)
-    {
-      XShmDetach(xvar->display,&(im2->shm));
-      shmdt(im2->data);
-    }
-  XDestroyImage(im2->image);
-  im2->image = img1;
-  im2->data = img1->data;
-  im2->type = MLX_TYPE_XIMAGE;
-  im2->size_line = img1->bytes_per_line;
-  im2->bpp = img1->bits_per_pixel;
-  return (im2);
-}
-
-
-int	mlx_int_egal_img(XImage *img1,XImage *img2)
-{
-  if (img1->width!=img2->width || img1->height!=img2->height ||
-      img1->xoffset!=img2->xoffset || img1->format!=img2->format ||
-      img1->byte_order!=img2->byte_order ||
-      img1->bitmap_unit!=img2->bitmap_unit ||
-      img1->bitmap_bit_order!=img2->bitmap_bit_order ||
-      img1->bitmap_pad!=img2->bitmap_pad || img1->depth!=img2->depth ||
-      img1->bytes_per_line!=img2->bytes_per_line ||
-      img1->bits_per_pixel!=img2->bits_per_pixel ||
-      img1->red_mask!=img2->red_mask || img1->green_mask!=img2->green_mask ||
-      img1->blue_mask!=img2->blue_mask )
-    return (0);
-  return (1);
-}
-
-
-void	*mlx_xpm_file_to_image(t_xvar *xvar,char *filename,
-			       int *width,int *height)
-{
-  return (mlx_int_xpm_f_image(xvar,width,height,XpmReadFileToImage,filename));
-}
-
-
-void	*mlx_xpm_to_image(t_xvar *xvar,char **data,int *width,int *height)
-{
-  return (mlx_int_xpm_f_image(xvar,width,height,XpmCreateImageFromData,(void *)data));
-}
diff --git a/minilibx/mlx_loop.c b/minilibx/mlx_loop.c
deleted file mode 100644
index 74af0a5..0000000
--- a/minilibx/mlx_loop.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-** mlx_loop.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Wed Aug  2 18:58:11 2000 Charlie Root
-** Last update Fri Sep 30 14:47:41 2005 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-extern int	(*(mlx_int_param_event[]))();
-
-
-int		mlx_loop(t_xvar *xvar)
-{
-  XEvent	ev;
-  t_win_list	*win;
-
-  mlx_int_set_win_event_mask(xvar);
-  xvar->do_flush = 0;
-  while (42)
-    {
-      while (!xvar->loop_hook || XPending(xvar->display))
-	{
-	  XNextEvent(xvar->display,&ev);
-	  win = xvar->win_list;
-	  while (win && (win->window!=ev.xany.window))
-	    win = win->next;
-	  if (win && ev.type < MLX_MAX_EVENT)
-	    if (win->hooks[ev.type].hook)
-	      mlx_int_param_event[ev.type](xvar, &ev, win);
-	}
-      xvar->loop_hook(xvar->loop_param);
-    }
-}
diff --git a/minilibx/mlx_loop_hook.c b/minilibx/mlx_loop_hook.c
deleted file mode 100644
index 1f8b9ed..0000000
--- a/minilibx/mlx_loop_hook.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-** mlx_loop_hook.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Feb 23 17:11:39 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int	mlx_loop_hook(t_xvar *xvar,int (*funct)(),void *param)
-{
-  xvar->loop_hook = funct;
-  xvar->loop_param = param;
-}
diff --git a/minilibx/mlx_mouse_hook.c b/minilibx/mlx_mouse_hook.c
deleted file mode 100644
index cb567ab..0000000
--- a/minilibx/mlx_mouse_hook.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-** mlx_mouse_hook.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Thu Aug  3 11:49:06 2000 Charlie Root
-** Last update Fri Feb 23 17:11:05 2001 Charlie Root
-*/
-
-
-#include	"mlx_int.h"
-
-
-
-
-int		mlx_mouse_hook(t_win_list *win,int (*funct)(),void *param)
-{
-  win->hooks[ButtonPress].hook = funct;
-  win->hooks[ButtonPress].param = param;
-  win->hooks[ButtonPress].mask = ButtonPressMask;
-}
diff --git a/minilibx/mlx_new_image.c b/minilibx/mlx_new_image.c
deleted file mode 100644
index 9967401..0000000
--- a/minilibx/mlx_new_image.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-** mlx_new_image.c for MiniLibX in raytraceur
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Aug 14 15:29:14 2000 Charlie Root
-** Last update Wed May 25 16:46:31 2011 Olivier Crouzet
-*/
-
-
-
-
-#include	"mlx_int.h"
-
-/*
-** To handle X errors
-*/
-
-#define	X_ShmAttach	1
-
-int	mlx_X_error;
-
-int	shm_att_pb(Display *d,XErrorEvent *ev)
-{
-  if (ev->request_code==146 && ev->minor_code==X_ShmAttach)
-    write(2,WARN_SHM_ATTACH,strlen(WARN_SHM_ATTACH));
-  mlx_X_error = 1;
-}
-
-
-/*
-**  Data malloc :  width+32 ( bitmap_pad=32 ),    *4 = *32 / 8bit
-*/
-
-
-void	*mlx_int_new_xshm_image(t_xvar *xvar,int width,int height,int format)
-{
-  t_img	*img;
-  int	(*save_handler)();
-
-  if (!(img = malloc(sizeof(*img))))
-    return ((void *)0);
-  bzero(img,sizeof(*img));
-  img->data = 0;
-  img->image = XShmCreateImage(xvar->display,xvar->visual,xvar->depth,
-			       format,img->data,&(img->shm),width,height);
-  if (!img->image)
-    {
-      free(img);
-      return ((void *)0);
-    }
-  img->width = width;
-  img->height = height;
-  img->size_line = img->image->bytes_per_line;
-  img->bpp = img->image->bits_per_pixel;
-  img->format = format;
-  img->shm.shmid = shmget(IPC_PRIVATE,(width+32)*height*4,IPC_CREAT|0777);
-  if (img->shm.shmid==-1)
-    {
-      XDestroyImage(img->image);
-      free(img);
-      return ((void *)0);
-    }
-  img->data = img->shm.shmaddr = img->image->data = shmat(img->shm.shmid,0,0);
-  if (img->data==(void *)-1)
-    {
-      shmctl(img->shm.shmid,IPC_RMID,0);
-      XDestroyImage(img->image);
-      free(img);
-      return ((void *)0);
-    }
-  img->shm.readOnly = False;
-  mlx_X_error = 0;
-  save_handler = XSetErrorHandler(shm_att_pb);
-  if (!XShmAttach(xvar->display,&(img->shm)) ||
-      0&XSync(xvar->display,False) || mlx_X_error)
-    {
-      XSetErrorHandler(save_handler);
-      shmdt(img->data);
-      shmctl(img->shm.shmid,IPC_RMID,0);
-      XDestroyImage(img->image);
-      free(img);
-      return ((void *)0);
-    }
-  XSetErrorHandler(save_handler);
-  shmctl(img->shm.shmid,IPC_RMID,0);
-  if (xvar->pshm_format==format)
-    {
-      img->pix = XShmCreatePixmap(xvar->display,xvar->root,img->shm.shmaddr,
-				  &(img->shm),width,height,xvar->depth);
-      img->type = MLX_TYPE_SHM_PIXMAP;
-    }
-  else
-    {
-      img->pix = XCreatePixmap(xvar->display,xvar->root,
-			       width,height,xvar->depth);
-      img->type = MLX_TYPE_SHM;
-    }
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-  return (img);
-}
-
-
-
-void	*mlx_int_new_image(t_xvar *xvar,int width, int height,int format)
-{
-  t_img	*img;
-
-  if (!(img = malloc(sizeof(*img))) ||
-      !(img->data = malloc((width+32)*height*4)))
-    return ((void *)0);
-  bzero(img->data,(width+32)*height*4);
-  img->image = XCreateImage(xvar->display,xvar->visual,xvar->depth,format,0,
-			    img->data,width,height,32,0);
-  if (!img->image)
-    {
-      free(img->data);
-      free(img);
-      return ((void *)0);
-    }
-  img->gc = 0;
-  img->size_line = img->image->bytes_per_line;
-  img->bpp = img->image->bits_per_pixel;
-  img->width = width;
-  img->height = height;
-  img->pix = XCreatePixmap(xvar->display,xvar->root,width,height,xvar->depth);
-  img->format = format;
-  img->type = MLX_TYPE_XIMAGE;
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-  return (img);
-}
-
-
-void	*mlx_new_image(t_xvar *xvar,int width, int height)
-{
-  t_img	*img;
-
-  if (xvar->use_xshm)
-    if (img = mlx_int_new_xshm_image(xvar,width,height,ZPixmap))
-      return (img);
-  return (mlx_int_new_image(xvar,width,height,ZPixmap));
-}
-
-void	*mlx_new_image2(t_xvar *xvar,int width, int height)
-{
-  t_img	*img;
-
-  if (xvar->use_xshm)
-    if (img = mlx_int_new_xshm_image(xvar,width,height,XYPixmap))
-      return (img);
-  return (mlx_int_new_image(xvar,width,height,XYPixmap));
-}
diff --git a/minilibx/mlx_new_window.c b/minilibx/mlx_new_window.c
deleted file mode 100644
index 2399cdc..0000000
--- a/minilibx/mlx_new_window.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-** mlx_new_window.c for MiniLibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Jul 31 17:29:02 2000 Charlie Root
-** Last update Thu Oct  4 15:44:43 2001 Charlie Root
-*/
-
-
-/*
-** We do not use White/BlackPixel macro, TrueColor Visual make sure
-** 0 is black & -1 is white
-**
-** With mlx_int_wait_first_expose, no flush is needed.
-*/
-
-#include	"mlx_int.h"
-
-
-void	*mlx_new_window(t_xvar *xvar,int size_x,int size_y,char *title)
-{
-  t_win_list		*new_win;
-  XSetWindowAttributes  xswa;
-  XGCValues		xgcv;
-
-  xswa.background_pixel = 0;
-  xswa.border_pixel = -1;
-  xswa.colormap = xvar->cmap;
-  /*
-  xswa.event_mask = ButtonPressMask | ButtonReleaseMask | ExposureMask |
-    KeyPressMask | KeyReleaseMask | StructureNotifyMask;
-  */
-  /* xswa.event_mask = ExposureMask; */
-  xswa.event_mask = 0xFFFFFF;  /* all events */
-  if (!(new_win = malloc(sizeof(*new_win))))
-    return ((void *)0);
-  new_win->window = XCreateWindow(xvar->display,xvar->root,0,0,size_x,size_y,
-				  0,CopyFromParent,InputOutput,xvar->visual,
-				  CWEventMask|CWBackPixel|CWBorderPixel|
-				  CWColormap,&xswa);
-  mlx_int_anti_resize_win(xvar,new_win->window,size_x,size_y);
-  XStoreName(xvar->display,new_win->window,title);
-  xgcv.foreground = -1;
-  xgcv.function = GXcopy;
-  xgcv.plane_mask = AllPlanes;
-  new_win->gc = XCreateGC(xvar->display,new_win->window,
-			  GCFunction|GCPlaneMask|GCForeground,&xgcv);
-  new_win->next = xvar->win_list;
-  xvar->win_list = new_win;
-  /*
-  new_win->mouse_hook = mlx_int_do_nothing;
-  new_win->key_hook = mlx_int_do_nothing;
-  new_win->expose_hook = mlx_int_do_nothing;
-  */
-  bzero(&(new_win->hooks), sizeof(new_win->hooks));
-  XMapRaised(xvar->display,new_win->window);
-  mlx_int_wait_first_expose(xvar,new_win->window);
-  return (new_win);
-}
diff --git a/minilibx/mlx_pixel_put.c b/minilibx/mlx_pixel_put.c
deleted file mode 100644
index c411f36..0000000
--- a/minilibx/mlx_pixel_put.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- ** mlx_pixel_put.c for MiniLibX in 
- ** 
- ** Made by Charlie Root
- ** Login   <ol@epitech.net>
- ** 
- ** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
-** Last update Tue Sep 25 17:09:49 2001 Charlie Root
- */
-
-
-#include	"mlx_int.h"
-
-
-
-int		mlx_pixel_put(t_xvar *xvar,t_win_list *win,
-			      int x,int y,int color)
-{
-   XGCValues	xgcv;
-   
-   xgcv.foreground = mlx_int_get_good_color(xvar,color);
-   XChangeGC(xvar->display,win->gc,GCForeground,&xgcv);
-   XDrawPoint(xvar->display,win->window,win->gc,x,y);
-   if (xvar->do_flush)
-     XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_put_image_to_window.c b/minilibx/mlx_put_image_to_window.c
deleted file mode 100644
index 86ba3f4..0000000
--- a/minilibx/mlx_put_image_to_window.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-** mlx_put_image_to_window.c for MiniLibX in raytraceur
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Mon Aug 14 15:55:49 2000 Charlie Root
-** Last update Sun Oct  2 09:53:00 2005 Olivier Crouzet
-*/
-
-
-
-#include	"mlx_int.h"
-
-
-int	mlx_put_image_to_window(t_xvar *xvar,t_win_list *win,t_img *img,
-				int x,int y)
-{
-  GC	gc;
-
-  gc = win->gc;
-  if (img->gc)
-    {
-      gc = img->gc;
-      XSetClipOrigin(xvar->display, gc, x, y);
-    }
-  if (img->type==MLX_TYPE_SHM)
-    XShmPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0,
-		 img->width,img->height,False);
-  if (img->type==MLX_TYPE_XIMAGE)
-    XPutImage(xvar->display,img->pix, win->gc, img->image,0,0,0,0,
-	      img->width,img->height);
-  XCopyArea(xvar->display,img->pix,win->window, gc,
-	    0,0,img->width,img->height,x,y);
-  if (xvar->do_flush)
-    XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_string_put.c b/minilibx/mlx_string_put.c
deleted file mode 100644
index 8492a09..0000000
--- a/minilibx/mlx_string_put.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- ** mlx_string_put.c for MiniLibX in 
- ** 
- ** Made by Charlie Root
- ** Login   <ol@epitech.net>
- ** 
- ** Started on  Mon Jul 31 19:01:33 2000 Charlie Root
-** Last update Tue Sep 25 17:11:47 2001 Charlie Root
- */
-
-
-#include	"mlx_int.h"
-
-
-
-int		mlx_string_put(t_xvar *xvar,t_win_list *win,
-			       int x,int y,int color,char *string)
-{
-   XGCValues	xgcv;
-   
-   xgcv.foreground = mlx_int_get_good_color(xvar,color);
-   XChangeGC(xvar->display,win->gc,GCForeground,&xgcv);
-   XDrawString(xvar->display,win->window,win->gc,x,y,string,strlen(string));
-   if (xvar->do_flush)
-     XFlush(xvar->display);
-}
diff --git a/minilibx/mlx_xpm.c.ok b/minilibx/mlx_xpm.c.ok
deleted file mode 100644
index 225ea3c..0000000
--- a/minilibx/mlx_xpm.c.ok
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
-** xpm-read.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Dec 11 15:25:27 2001 olivier crouzet
-** Last update Sat Oct  1 14:40:55 2005 Olivier Crouzet
-*/
-
-
-#include	"mlx_int.h"
-
-extern struct s_col_name mlx_col_name[];
-
-
-#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
-		  if (colors_direct) free(colors_direct); \
-                  if (img) {XDestroyImage(img->image); \
-                            XFreePixmap(xvar->display,img->pix);free(img);} \
-                  return ((void *)0);}
-
-
-
-
-char	*mlx_int_get_line(char *ptr,int *pos,int size)
-{
-  int	pos2;
-  int	pos3;
-  int	pos4;
-
-  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1)
-    return ((char *)0);
-  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1)
-    return ((char *)0);
-  *(ptr+*pos+pos2) = 0;
-  *(ptr+*pos+pos2+1+pos3) = 0;
-  pos4 = *pos+pos2+1;
-  *pos += pos2+pos3+2;
-  return (ptr+pos4);
-}
-
-
-
-char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
-{
-  static char	*copy = 0;
-  static int	len = 0;
-  int		len2;
-  char		*str;
-
-  str = xpm_data[(*pos)++];
-  if ((len2 = strlen(str))>len)
-    {
-      if (copy)
-	free(copy);
-      if (!(copy = malloc(len2+1)))
-	return ((char *)0);
-      len = len2;
-    }
-  /* strcpy(copy,str); */
-  strlcpy(copy, str, len2+1);
-  return (copy);
-}
-
-
-int	mlx_int_get_col_name(char *str,int size)
-{
-  int	result;
-
-  result = 0;
-  while (size--)
-    result = (result<<8)+*(str++);
-  return (result);
-}
-
-int	mlx_int_get_text_rgb(char *name)
-{
-  int	i;
-
-  if (*name == '#')
-    return (strtol(name+1,0,16));
-  i = 0;
-  while (mlx_col_name[i].name)
-    {
-      if (!strcasecmp(mlx_col_name[i].name, name))
-	return (mlx_col_name[i].color);
-      i ++;
-    }
-  return (0);
-}
-
-
-int	mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x)
-{
-  int	dec;
-
-  dec = opp;
-  while (dec--)
-    {
-      if (img->image->byte_order)
-	*(data+x*opp+dec) = col&0xFF;
-      else
-	*(data+x*opp+opp-dec-1) = col&0xFF;
-      col >>= 8;
-    }
-}
-
-
-void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
-{
-  int	pos;
-  char	*line;
-  char	**tab;
-  char	*data;
-  char	*clip_data;
-  int	nc;
-  int	opp;
-  int	cpp;
-  int	col;
-  int	rgb_col;
-  int	col_name;
-  int	method;
-  int	x;
-  int	i;
-  int	j;
-  t_img	*img;
-  t_xpm_col	*colors;
-  int		*colors_direct;
-  int	width;
-  int	height;
-  XImage	*clip_img;
-  XGCValues	xgcv;
-  Pixmap	clip_pix;
-
-  colors = 0;
-  colors_direct = 0;
-  img = 0;
-  tab = 0;
-  pos = 0;
-  if (!(line = f(info,&pos,info_size)) ||
-      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) ||
-      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) ||
-      !(cpp = atoi(tab[3])) )
-    RETURN;
-  free(tab);
-  tab = 0;
-
-  method = 0;
-  if (cpp<=2)
-    {
-      method = 1;
-      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int))))
-	RETURN;
-    }
-  else
-    if (!(colors = malloc(nc*sizeof(*colors))))
-      RETURN;
-
-  clip_data = 0;
-
-  i = nc;
-  while (i--)
-    {
-      if (!(line = f(info,&pos,info_size)) ||
-	  !(tab = mlx_int_str_to_wordtab(line+cpp)) )
-	RETURN;
-      j = 0;
-      while (tab[j] && strcmp(tab[j++],"c"));
-      if (!tab[j])
-	RETURN;
-      
-      if ((rgb_col = mlx_int_get_text_rgb(tab[j]))==-1)
-	{
-	  if (!(clip_data = malloc(4*width*height)) ||   /* ok, nice size .. */
-	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
-					1, XYPixmap, 0, clip_data,
-					width, height, 8, (width+7)/8)) )
-	    RETURN;
-	  memset(clip_data, 0xFF, 4*width*height);
-	}
-
-      if (method)
-	colors_direct[mlx_int_get_col_name(line,cpp)] =
-	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
-    else
-	{
-	  colors[i].name = mlx_int_get_col_name(line,cpp);
-	  colors[i].col = rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
-	}
-      free(tab);
-    }
-
-  if (!(img = mlx_new_image(xvar,width,height)))
-    RETURN;
-  opp = img->bpp/8;
-
-
-  i = height;
-  data = img->data;
-  while (i--)
-    {
-      if (!(line = f(info,&pos,info_size)))
-	RETURN;
-      x = 0;
-      while (x<width)
-	{
-	  col = 0;
-	  col_name = mlx_int_get_col_name(line+cpp*x,cpp);
-	  if (method)
-	    col = colors_direct[col_name];
-	  else
-	    {
-	      j = nc;
-	      while (j--)
-		if (colors[j].name==col_name)
-		  {
-		    col = colors[j].col;
-		    j = 0;
-		  }
-	    }
-	  if (col==-1)
-	    XPutPixel(clip_img, x, height-1-i, 0);
-	  else
-	    mlx_int_xpm_set_pixel(img, data, opp, col, x);
-	  x ++;
-	}
-      data += img->size_line;
-    }
-  if (clip_data)
-    {
-      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
-					   width, height, 1)) )
-	RETURN;
-      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv);
-      XPutImage(xvar->display, clip_pix, img->gc, clip_img,
-		0, 0, 0, 0, width, height);
-      XFreeGC(xvar->display, img->gc);
-      xgcv.clip_mask = clip_pix;
-      xgcv.function = GXcopy;
-      xgcv.plane_mask = AllPlanes;
-      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction|
-			  GCPlaneMask, &xgcv);
-      XSync(xvar->display, False);
-      XDestroyImage(clip_img);
-    }
-  if (colors)
-    free(colors);
-  if (colors_direct)
-    free(colors_direct);
-  return (img);
-}
-
-
-int	mlx_int_file_get_rid_comment(char *ptr, int size)
-{
-  int	com_begin;
-  int	com_end;
-
-  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1)
-    {
-      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2);
-      memset(ptr+com_begin,' ',com_end+4);
-    }
-  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1)
-    {
-      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2);
-      memset(ptr+com_begin,' ',com_end+3);
-    }
-}
-
-
-void	*mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height)
-{
-  int	fd;
-  int	size;
-  char	*ptr;
-  t_img	*img;
-
-  fd = -1;
-  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
-      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
-      (void *)MAP_FAILED)
-    {
-      if (fd>=0)
-	close(fd);
-      return ((void *)0);
-    }
-  mlx_int_file_get_rid_comment(ptr, size);
-  if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))
-    {
-      *width = img->width;
-      *height = img->height;
-    }
-  munmap(ptr,size);
-  close(fd);
-  return (img);
-}
-
-void	*mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height)
-{
-  t_img	*img;
-
-  if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line))
-    {
-      *width = img->width;
-      *height = img->height;
-    }
-  return (img);
-}
diff --git a/minilibx/rgb2c.pl b/minilibx/rgb2c.pl
deleted file mode 100755
index 9ef39a0..0000000
--- a/minilibx/rgb2c.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-#
-## rgb2c.pl for MiniLibX in /home/boulon/work/c/raytraceur/minilibx
-## 
-## Made by Olivier Crouzet
-## Login   <ol@epitech.net>
-## 
-## Started on  Tue Oct  5 16:33:46 2004 Olivier Crouzet
-## Last update Tue Oct  5 16:36:11 2004 Olivier Crouzet
-##
-
-
-#
-# Generate a .c file with encoded colors, from the XFree86 rgb.txt file.
-#
-
-open(RGB, "/usr/X11/lib/X11/rgb.txt");
-
-
-printf("/*\n** This is a generated file with rgb2c.pl and rgb.txt from\n");
-printf("** the XFree86 distribution.\n*/\n\n");
-printf("struct s_col_name mlx_col_name[] =\n{\n");
-
-while (<RGB>)
-{
-    @tab = split;
-    if ($tab[0] ne "!")
-    {
-	$color = $tab[3];
-	if ("$tab[4]" ne "")
-	{
-	    $color = "$tab[3] $tab[4]";
-	}
-	printf(" { \"%s\" , 0x%x },\n", $color, $tab[0]*65536+$tab[1]*256+$tab[2]);
-    }
-}
-
-printf(" { 0, 0 }\n};\n");
diff --git a/minilibx/test/Makefile.gen b/minilibx/test/Makefile.gen
deleted file mode 100644
index f3d0e9b..0000000
--- a/minilibx/test/Makefile.gen
+++ /dev/null
@@ -1,26 +0,0 @@
-INC=/usr/include
-HT=Linux
-DOCP=do_cp
-
-
-
-INCLIB=$(INC)/../lib
-
-CC=gcc
-
-CFLAGS= -I$(INC) -O3 -I..
-
-NAME= mlx-test
-SRC = main.c
-OBJ = $(SRC:.c=.o)
-
-all	:$(NAME)
-
-$(NAME)	:$(OBJ)
-	$(CC) -o $(NAME) $(OBJ) -L.. -lmlx -L$(INCLIB) -lXext -lX11 -lm
-
-clean	:
-	rm -f $(NAME) $(OBJ) *~ core *.core
-
-
-re	: clean all
diff --git a/minilibx/test/Makefile.mk b/minilibx/test/Makefile.mk
deleted file mode 100644
index 53275cc..0000000
--- a/minilibx/test/Makefile.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-INC=%%%%
-
-INCLIB=$(INC)/../lib
-
-CC=gcc
-
-CFLAGS= -I$(INC) -O3 -I..
-
-NAME= mlx-test
-SRC = main.c
-OBJ = $(SRC:.c=.o)
-
-all	:$(NAME)
-
-$(NAME)	:$(OBJ)
-	$(CC) -o $(NAME) $(OBJ) -L.. -lmlx -L$(INCLIB) -lXext -lX11 -lm
-
-clean	:
-	rm -f $(NAME) $(OBJ) *~ core *.core
-
-
-re	: clean all
diff --git a/minilibx/test/main.c b/minilibx/test/main.c
deleted file mode 100644
index ea132b4..0000000
--- a/minilibx/test/main.c
+++ /dev/null
@@ -1,284 +0,0 @@
-
-#include	"mlx.h"
-#include	"mlx_int.h"
-
-#define	WIN1_SX		242
-#define	WIN1_SY		242
-#define	IM1_SX		42
-#define	IM1_SY		42
-#define	IM3_SX		242
-#define	IM3_SY		242
-
-void	*mlx;
-void	*win1;
-void    *win2;
-void    *win3;
-void    *im1;
-void	*im2;
-void	*im3;
-void	*im4;
-int	bpp1;
-int	bpp2;
-int	bpp3;
-int	bpp4;
-int	sl1;
-int	sl2;
-int	sl3;
-int	sl4;
-int	endian1;
-int	endian2;
-int	endian3;
-int	endian4;
-char	*data1;
-char	*data2;
-char	*data3;
-char	*data4;
-int	xpm1_x;
-int	xpm1_y;
-
-int	local_endian;
-
-int	expose_win1(void *p)
-{
-  mlx_put_image_to_window(mlx,win1,im3,0,0);
-}
-
-int	expose_win2(void *p)
-{
-  mlx_put_image_to_window(mlx,win2,im4,0,0);
-  mlx_put_image_to_window(mlx,win2,im2,0,0);
-}
-
-int	key_win1(int key,void *p)
-{
-  printf("Key in Win1 : %d\n",key);
-  if (key==0xFF1B)
-    exit(0);
-}
-
-int	key_win2(int key,void *p)
-{
-  printf("Key in Win2 : %d\n",key);
-  if (key==0xFF1B)
-    exit(0);
-}
-
-int	key_win3(int key,void *p)
-{
-  printf("Key in Win3 : %d\n",key);
-  if (key==0xFF1B)
-    mlx_destroy_window(mlx,win3);
-}
-
-int	mouse_win1(int button,int x,int y, void *p)
-{
-  printf("Mouse in Win1, button %d at %dx%d.\n",button,x,y);
-}
-
-int	mouse_win2(int button,int x,int y, void *p)
-{
-  printf("Mouse in Win2, button %d at %dx%d.\n",button,x,y);
-}
-
-int	mouse_win3(int x,int y, void *p)
-{
-  printf("Mouse moving in Win3, at %dx%d.\n",x,y);
-}
-
-
-int	main()
-{
-  int	a;
-
-  printf("MinilibX Test Program\n");
-  a = 0x11223344;
-  if (((unsigned char *)&a)[0] == 0x11)
-    local_endian = 1;
-  else
-    local_endian = 0;
-  printf(" => Local Endian : %d\n",local_endian);
-
-  printf(" => Connection ...");
-  if (!(mlx = mlx_init()))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  printf("OK (use_xshm %d pshm_format %d)\n",((t_xvar *)mlx)->use_xshm,((t_xvar *)mlx)->pshm_format);
-
-  printf(" => Window1 %dx%d \"Title 1\" ...",WIN1_SX,WIN1_SY);
-  if (!(win1 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title1")))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  printf("OK\n");
-
-  printf(" => Colormap sans event ...");
-  color_map_1(win1,WIN1_SX,WIN1_SY);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => Clear Window ...");
-  mlx_clear_window(mlx,win1);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => Image1 ZPixmap %dx%d ...",IM1_SX,IM1_SY);
-  if (!(im1 = mlx_new_image(mlx,IM1_SX,IM1_SY)))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  data1 = mlx_get_data_addr(im1,&bpp1,&sl1,&endian1);
-  printf("OK (bpp1: %d, sizeline1: %d endian: %d type: %d)\n",bpp1,sl1,endian1,
-	 ((t_img *)im1)->type);
-
-  printf(" => Fill Image1 ...");
-  color_map_2(data1,bpp1,sl1,IM1_SX,IM1_SY,endian1, 1);
-  printf("OK (pixmap : %d)\n",(int)((t_img *)im1)->pix);
-
-  printf(" => Put Image1 ...");
-  mlx_put_image_to_window(mlx,win1,im1,20,20);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => Destroy Image1 ... ");
-  mlx_destroy_image(mlx, im1);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => Image3 ZPixmap %dx%d ...",IM3_SX,IM3_SY);
-  if (!(im3 = mlx_new_image(mlx,IM3_SX,IM3_SY)))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  data3 = mlx_get_data_addr(im3,&bpp3,&sl3,&endian3);
-  printf("OK (bpp3 %d, sizeline3 %d endian3 %d type %d)\n",bpp3,sl3,endian3,
-	 ((t_img *)im3)->type);
-
-  printf(" => Fill Image3 ...");
-  color_map_2(data3,bpp3,sl3,IM3_SX,IM3_SY,endian3, 1);
-  printf("OK (pixmap : %d)\n",(int)((t_img *)im3)->pix);
-
-  printf(" => Put Image3 ...");
-  mlx_put_image_to_window(mlx,win1,im3,20,20);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => String ...");
-  mlx_string_put(mlx,win1,5,WIN1_SY/2,0xFF99FF,"String output");
-  mlx_string_put(mlx,win1,15,WIN1_SY/2+20,0x00FFFF,"MinilibX test");
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => Xpm from file ...");
-  if (!(im2 = mlx_xpm_file_to_image(mlx,"open.xpm",&xpm1_x,&xpm1_y)))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  data2 = mlx_get_data_addr(im2,&bpp2,&sl2,&endian2);
-  printf("OK (xpm %dx%d)(img bpp2: %d, sizeline2: %d endian: %d type: %d)\n",
-	 xpm1_x,xpm1_y,bpp2,sl2,endian2,((t_img *)im2)->type);
-  sleep(2);
-
-  printf(" => Put xpm ...");
-  mlx_put_image_to_window(mlx,win1,im2,0,0);
-  mlx_put_image_to_window(mlx,win1,im2,100,100);
-  printf("OK\n");
-  sleep(2);
-
-  printf(" => 2nd window,");
-  win2 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title2");
-  if (!(im4 = mlx_new_image(mlx,IM3_SX, IM3_SY)))
-    {
-      printf(" !! KO !!\n");
-      exit(1);
-    }
-  data4 = mlx_get_data_addr(im4,&bpp4,&sl4,&endian4);
-  color_map_2(data4,bpp4,sl4,IM3_SX,IM3_SY,endian4, 2);
-
-  printf(" 3rd window, Installing hooks ...");
-  win3 = mlx_new_window(mlx,WIN1_SX,WIN1_SY,"Title3");
-  mlx_expose_hook(win1,expose_win1,0);
-  mlx_mouse_hook(win1,mouse_win1,0);
-  mlx_key_hook(win1,key_win1,0);
-  mlx_expose_hook(win2,expose_win2,0);
-  mlx_mouse_hook(win2,mouse_win2,0);
-  mlx_key_hook(win2,key_win2,0);
-  mlx_key_hook(win3,key_win3,0);
-
-  mlx_hook(win3, MotionNotify, PointerMotionMask, mouse_win3, 0);
-
-  printf("OK\nNow in Loop. Just play. Esc in 3 to destroy, 1&2 to quit.\n");
-  
-  mlx_loop(mlx);
-}
-
-
-int	color_map_1(void *win,int w,int h)
-{
-  int	x;
-  int	y;
-  int	color;
-
-  x = w;
-  while (x--)
-    {
-      y = h;
-      while (y--)
-        {
-          color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8);
-	  mlx_pixel_put(mlx,win,x,y,color);
-        }
-    }
-}
-
-
-int	color_map_2(unsigned char *data,int bpp,int sl,int w,int h,int endian, int type)
-{
-  int	x;
-  int	y;
-  int	opp;
-  int	dec;
-  int	color;
-  int	color2;
-  unsigned char *ptr;
-
-  opp = bpp/8;
-  printf("(opp : %d) ",opp);
-  y = h;
-  while (y--)
-    {
-      ptr = data+y*sl;
-      x = w;
-      while (x--)
-        {
-	  if (type==2)
-	    color = (y*255)/w+((((w-x)*255)/w)<<16)
-	      +(((y*255)/h)<<8);
-	  else
-	    color = (x*255)/w+((((w-x)*255)/w)<<16)+(((y*255)/h)<<8);
-          color2 = mlx_get_color_value(mlx,color);
-	  dec = opp;
-	  while (dec--)
-	    if (endian==local_endian)
-	      {
-		if (endian)
-		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[4-opp+dec];
-		else
-		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[dec];
-	      }
-	    else
-	      {
-		if (endian)
-		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[opp-1-dec];
-		else
-		  *(ptr+x*opp+dec) = ((unsigned char *)(&color2))[3-dec];
-	      }
-        }
-    }
-
-}
diff --git a/minilibx/test/new_win.c b/minilibx/test/new_win.c
deleted file mode 100644
index 62bed4b..0000000
--- a/minilibx/test/new_win.c
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-#include "mlx.h"
-
-
-void *mlx;
-void *win1;
-void *win2;
-
-
-
-int gere_mouse(int x,int y,int button,void*toto)
-{
-  printf("Mouse event - new win\n");
-  mlx_destroy_window(mlx,win1);
-  win1 = mlx_new_window(mlx,random()%500,random()%500,"new win");
-  mlx_mouse_hook(win1,gere_mouse,0);
-}
-
-
-int main()
-{
-  srandom(time(0));
-  mlx = mlx_init();
-  win1 = mlx_new_window(mlx,300,300,"win1");
-  win2 = mlx_new_window(mlx,600,600,"win2");
-  mlx_mouse_hook(win1,gere_mouse,0);
-  mlx_mouse_hook(win2,gere_mouse,0);
-  mlx_loop(mlx);
-}
diff --git a/minilibx/test/open.xpm b/minilibx/test/open.xpm
deleted file mode 100644
index 87be371..0000000
--- a/minilibx/test/open.xpm
+++ /dev/null
@@ -1,1439 +0,0 @@
-/* XPM */
-static char * open30_2_xpm[] = {
-"64 64 1372 2",
-"  	c None",
-". 	c #08090D",
-"+ 	c #1A1E23",
-"@ 	c #1F2124",
-"# 	c #060809",
-"$ 	c #1A1E21",
-"% 	c #4F606C",
-"& 	c #3D4145",
-"* 	c #868D93",
-"= 	c #454E56",
-"- 	c #627481",
-"; 	c #667C8A",
-"> 	c #2D3031",
-", 	c #D7E1E7",
-"' 	c #4D5157",
-") 	c #8997A5",
-"! 	c #282E31",
-"~ 	c #333B41",
-"{ 	c #A5C6DB",
-"] 	c #718C9B",
-"^ 	c #000000",
-"/ 	c #181B1F",
-"( 	c #262828",
-"_ 	c #D2DEE7",
-": 	c #B8C5D0",
-"< 	c #151719",
-"[ 	c #08090B",
-"} 	c #272B30",
-"| 	c #2D3037",
-"1 	c #26282C",
-"2 	c #1A1D1F",
-"3 	c #B1CADB",
-"4 	c #56646E",
-"5 	c #080809",
-"6 	c #080A0C",
-"7 	c #1E2126",
-"8 	c #98B7C9",
-"9 	c #A2CAE2",
-"0 	c #7FA1B5",
-"a 	c #06080A",
-"b 	c #252729",
-"c 	c #A7ADB2",
-"d 	c #272B2E",
-"e 	c #1E2023",
-"f 	c #C8D8E5",
-"g 	c #C9DDED",
-"h 	c #8996A3",
-"i 	c #6B7782",
-"j 	c #C7DFF0",
-"k 	c #CCE0F0",
-"l 	c #AFC1CF",
-"m 	c #47535B",
-"n 	c #B0D3E8",
-"o 	c #7E99A9",
-"p 	c #738493",
-"q 	c #97B4C7",
-"r 	c #53606A",
-"s 	c #6E8996",
-"t 	c #A1CBE3",
-"u 	c #9CC6DE",
-"v 	c #90B5CB",
-"w 	c #171D22",
-"x 	c #1E2629",
-"y 	c #020202",
-"z 	c #ABB3BA",
-"A 	c #BBC4C8",
-"B 	c #222323",
-"C 	c #141617",
-"D 	c #5D6164",
-"E 	c #ACB5BC",
-"F 	c #676D74",
-"G 	c #BDD4E5",
-"H 	c #B3D1E7",
-"I 	c #B0D1E7",
-"J 	c #728A99",
-"K 	c #94AEBF",
-"L 	c #B1D1E7",
-"M 	c #505C64",
-"N 	c #7B98A9",
-"O 	c #A1CBE0",
-"P 	c #99C3D9",
-"Q 	c #475863",
-"R 	c #A0C9DE",
-"S 	c #9CC6DA",
-"T 	c #9ECAE1",
-"U 	c #9CC5DD",
-"V 	c #9AC4DC",
-"W 	c #263137",
-"X 	c #3C4A55",
-"Y 	c #658190",
-"Z 	c #66686B",
-"` 	c #7D8085",
-" .	c #363839",
-"..	c #797E81",
-"+.	c #D2DBE1",
-"@.	c #DDE9F4",
-"#.	c #CADEEF",
-"$.	c #778593",
-"%.	c #AED0E5",
-"&.	c #9EC9DE",
-"*.	c #9EC8DF",
-"=.	c #9BC1D8",
-"-.	c #9EC8DE",
-";.	c #6B8596",
-">.	c #9BC5DC",
-",.	c #9BC6DF",
-"'.	c #9CC5DC",
-").	c #688595",
-"!.	c #6B8698",
-"~.	c #9CC4DC",
-"{.	c #9BC4DC",
-"].	c #9DC5DD",
-"^.	c #647D8C",
-"/.	c #485864",
-"(.	c #161A1D",
-"_.	c #36444C",
-":.	c #95BDD5",
-"<.	c #566E7E",
-"[.	c #A4AAAD",
-"}.	c #E9F2F7",
-"|.	c #DEEAF6",
-"1.	c #B5D4E9",
-"2.	c #A9CFE3",
-"3.	c #90B3C9",
-"4.	c #9FCAE1",
-"5.	c #9BC4DD",
-"6.	c #7490A2",
-"7.	c #99C2DB",
-"8.	c #81A5BA",
-"9.	c #9CC5DE",
-"0.	c #98C1DA",
-"a.	c #5F7889",
-"b.	c #96BFD8",
-"c.	c #44545F",
-"d.	c #565A5E",
-"e.	c #DFE6EC",
-"f.	c #E6EEF7",
-"g.	c #D6E4F2",
-"h.	c #BFD6E9",
-"i.	c #A9CCE3",
-"j.	c #9FC8DD",
-"k.	c #9DC6DD",
-"l.	c #9CC4DD",
-"m.	c #7D9FB0",
-"n.	c #98C0D6",
-"o.	c #9AC5DD",
-"p.	c #97BFD8",
-"q.	c #9BC5DF",
-"r.	c #2D3840",
-"s.	c #626567",
-"t.	c #E7ECF5",
-"u.	c #E1EAF5",
-"v.	c #CEE3F3",
-"w.	c #B7D6EA",
-"x.	c #A4CBE0",
-"y.	c #8AAFC5",
-"z.	c #647F90",
-"A.	c #648092",
-"B.	c #89B0C7",
-"C.	c #9CC6DF",
-"D.	c #5D7486",
-"E.	c #7B9BAF",
-"F.	c #84A8BF",
-"G.	c #9BC5DD",
-"H.	c #96BED5",
-"I.	c #4B5D69",
-"J.	c #9BC5DE",
-"K.	c #536B77",
-"L.	c #2E3B41",
-"M.	c #1B2124",
-"N.	c #3F4F58",
-"O.	c #4D5152",
-"P.	c #E7EEF3",
-"Q.	c #E2EAF5",
-"R.	c #CEE2F2",
-"S.	c #BAD5E9",
-"T.	c #9DC2D7",
-"U.	c #5C7281",
-"V.	c #232A31",
-"W.	c #08090A",
-"X.	c #121418",
-"Y.	c #131619",
-"Z.	c #131719",
-"`.	c #87ACC3",
-" +	c #7B9BAE",
-".+	c #87ADC3",
-"++	c #8FB5CB",
-"@+	c #678295",
-"#+	c #96C0D8",
-"$+	c #607787",
-"%+	c #6B8595",
-"&+	c #96C1DB",
-"*+	c #6A8595",
-"=+	c #35424A",
-"-+	c #7090A1",
-";+	c #15191C",
-">+	c #2D3033",
-",+	c #DDE5EB",
-"'+	c #D2E3F1",
-")+	c #BAD7EB",
-"!+	c #A9CFE5",
-"~+	c #272F35",
-"{+	c #1C2227",
-"]+	c #4F697B",
-"^+	c #6B8FA9",
-"/+	c #759CB6",
-"(+	c #7BA0BB",
-"_+	c #80A5BC",
-":+	c #88B0C8",
-"<+	c #96C3DB",
-"[+	c #8FB6CD",
-"}+	c #80A1B3",
-"|+	c #556876",
-"1+	c #96BFD7",
-"2+	c #566B77",
-"3+	c #93B8CD",
-"4+	c #637A8D",
-"5+	c #9DC6DE",
-"6+	c #8FB4CA",
-"7+	c #55697A",
-"8+	c #6F8F9F",
-"9+	c #91BDD5",
-"0+	c #283239",
-"a+	c #050406",
-"b+	c #767B80",
-"c+	c #BDC6CE",
-"d+	c #D4E5F3",
-"e+	c #C1D7EA",
-"f+	c #A7CDE4",
-"g+	c #9FC9DE",
-"h+	c #668596",
-"i+	c #6D90AA",
-"j+	c #5C7994",
-"k+	c #60849F",
-"l+	c #6286A1",
-"m+	c #688CA8",
-"n+	c #7298B2",
-"o+	c #82A8C2",
-"p+	c #8FBAD5",
-"q+	c #96C2DB",
-"r+	c #89ADC4",
-"s+	c #96BED6",
-"t+	c #99C2DA",
-"u+	c #6C899A",
-"v+	c #92BBD2",
-"w+	c #9AC4DD",
-"x+	c #5B717D",
-"y+	c #9EC6DE",
-"z+	c #8BB1C9",
-"A+	c #718EA0",
-"B+	c #94C3DB",
-"C+	c #536B78",
-"D+	c #3E505F",
-"E+	c #4E6373",
-"F+	c #2C333C",
-"G+	c #070708",
-"H+	c #040404",
-"I+	c #1A1C1E",
-"J+	c #202326",
-"K+	c #050606",
-"L+	c #23292E",
-"M+	c #A1C0D4",
-"N+	c #9FC9DD",
-"O+	c #97C2DB",
-"P+	c #80A8C1",
-"Q+	c #668AA6",
-"R+	c #4B5D72",
-"S+	c #4C647A",
-"T+	c #5F80A0",
-"U+	c #60859E",
-"V+	c #678AA6",
-"W+	c #739BB5",
-"X+	c #85AEC7",
-"Y+	c #92BDD7",
-"Z+	c #96BFD5",
-"`+	c #627B8A",
-" @	c #89B1C9",
-".@	c #2B353C",
-"+@	c #7597B2",
-"@@	c #779CB8",
-"#@	c #52697C",
-"$@	c #1D2328",
-"%@	c #445663",
-"&@	c #5E7A8D",
-"*@	c #252F37",
-"=@	c #090909",
-"-@	c #859BB2",
-";@	c #859DB8",
-">@	c #6E8396",
-",@	c #252C33",
-"'@	c #9CC4D7",
-")@	c #92C0D9",
-"!@	c #79A0BA",
-"~@	c #6487A3",
-"{@	c #566979",
-"]@	c #8CB0C2",
-"^@	c #51697C",
-"/@	c #60849D",
-"(@	c #6D8EAC",
-"_@	c #7BA0BC",
-":@	c #8AB4CE",
-"<@	c #95C2DB",
-"[@	c #9AC5DC",
-"}@	c #95C1DA",
-"|@	c #607B8C",
-"1@	c #597488",
-"2@	c #7EA6BF",
-"3@	c #597587",
-"4@	c #455664",
-"5@	c #668598",
-"6@	c #82A9C4",
-"7@	c #617F92",
-"8@	c #1A2328",
-"9@	c #2B3137",
-"0@	c #728FAC",
-"a@	c #51657B",
-"b@	c #6B8AA8",
-"c@	c #8EAEC7",
-"d@	c #A8C8E2",
-"e@	c #92BDD6",
-"f@	c #769DBA",
-"g@	c #526E87",
-"h@	c #7490A0",
-"i@	c #A6CDE4",
-"j@	c #97BFD4",
-"k@	c #55697D",
-"l@	c #6286A0",
-"m@	c #7399B3",
-"n@	c #84ACC5",
-"o@	c #92BFD9",
-"p@	c #99C4DC",
-"q@	c #94C0DA",
-"r@	c #4F6575",
-"s@	c #7DA5BF",
-"t@	c #7FA2BC",
-"u@	c #8FB6CE",
-"v@	c #95C3DB",
-"w@	c #8EB8D2",
-"x@	c #6A879D",
-"y@	c #111318",
-"z@	c #252A30",
-"A@	c #81868C",
-"B@	c #A5ABAD",
-"C@	c #70767C",
-"D@	c #38434F",
-"E@	c #637F9B",
-"F@	c #516980",
-"G@	c #799AB5",
-"H@	c #A5C3D9",
-"I@	c #93BDD6",
-"J@	c #779EBA",
-"K@	c #445A6B",
-"L@	c #93B5C9",
-"M@	c #B6D3E8",
-"N@	c #AECFE4",
-"O@	c #95BDD2",
-"P@	c #52687A",
-"Q@	c #6486A3",
-"R@	c #7092B0",
-"S@	c #90BCD6",
-"T@	c #97C4DC",
-"U@	c #A0C9E0",
-"V@	c #99C5DD",
-"W@	c #86AEC6",
-"X@	c #8FBAD4",
-"Y@	c #91BDD6",
-"Z@	c #7094AC",
-"`@	c #2A353E",
-" #	c #0B0E10",
-".#	c #888D90",
-"+#	c #787D82",
-"@#	c #465360",
-"##	c #56697F",
-"$#	c #A6CADD",
-"%#	c #5A7382",
-"&#	c #6C8CAA",
-"*#	c #A5BED3",
-"=#	c #A7CAE0",
-"-#	c #94C1DA",
-";#	c #7EA4BF",
-">#	c #415160",
-",#	c #9DC3D5",
-"'#	c #B3CFE1",
-")#	c #AAC3D4",
-"!#	c #A8CDE4",
-"~#	c #89ACBE",
-"{#	c #567088",
-"]#	c #6C91AC",
-"^#	c #81A7C2",
-"/#	c #96C4DC",
-"(#	c #85A9BD",
-"_#	c #708C9B",
-":#	c #5A6E7B",
-"<#	c #6C8695",
-"[#	c #97C3DB",
-"}#	c #8BB5CE",
-"|#	c #425461",
-"1#	c #63819E",
-"2#	c #415465",
-"3#	c #0B0D0E",
-"4#	c #607387",
-"5#	c #687D8C",
-"6#	c #B8D6E9",
-"7#	c #7893A2",
-"8#	c #576F85",
-"9#	c #A7BACF",
-"0#	c #B0CEE5",
-"a#	c #98C4DC",
-"b#	c #88B1CA",
-"c#	c #36444E",
-"d#	c #8FA0AD",
-"e#	c #73818D",
-"f#	c #596D81",
-"g#	c #B4D0E4",
-"h#	c #A3CDE2",
-"i#	c #658296",
-"j#	c #6A8DAB",
-"k#	c #7BA5C0",
-"l#	c #94BAD2",
-"m#	c #6D899B",
-"n#	c #99C3DC",
-"o#	c #8EB9D2",
-"p#	c #7AA0BA",
-"q#	c #6C8FAB",
-"r#	c #6484A1",
-"s#	c #1F252C",
-"t#	c #121619",
-"u#	c #7E96B0",
-"v#	c #7A8A96",
-"w#	c #BCD7EA",
-"x#	c #A0C5D9",
-"y#	c #3C4B57",
-"z#	c #A9BACD",
-"A#	c #BCD5E8",
-"B#	c #84A6BA",
-"C#	c #8EA1AE",
-"D#	c #CFD1D4",
-"E#	c #ECF6FA",
-"F#	c #ABB7C2",
-"G#	c #556F84",
-"H#	c #57626A",
-"I#	c #5C7078",
-"J#	c #6C8AA7",
-"K#	c #80A6C0",
-"L#	c #91B8D0",
-"M#	c #94BFD8",
-"N#	c #87B0CA",
-"O#	c #7CA2BB",
-"P#	c #7097AF",
-"Q#	c #495E6F",
-"R#	c #0C0E11",
-"S#	c #3A3F43",
-"T#	c #8AA3BB",
-"U#	c #778592",
-"V#	c #C0D8EB",
-"W#	c #B3D5E9",
-"X#	c #404A53",
-"Y#	c #B2C2D3",
-"Z#	c #96A1AC",
-"`#	c #9DB2C3",
-" $	c #AEBECE",
-".$	c #EDEFF3",
-"+$	c #F7FAFC",
-"@$	c #B6BFC7",
-"#$	c #556E85",
-"$$	c #121314",
-"%$	c #2B2E2F",
-"&$	c #555A5E",
-"*$	c #3B4C5B",
-"=$	c #6F8EA4",
-"-$	c #92BED8",
-";$	c #9DC7DF",
-">$	c #87ACC1",
-",$	c #546A78",
-"'$	c #516874",
-")$	c #4E6570",
-"!$	c #4D6271",
-"~$	c #4C6271",
-"{$	c #4E677A",
-"]$	c #38454E",
-"^$	c #6C7278",
-"/$	c #86A1B6",
-"($	c #5C656C",
-"_$	c #A4B0BA",
-":$	c #555D64",
-"<$	c #657178",
-"[$	c #A6B0B5",
-"}$	c #939CA1",
-"|$	c #D4E4F1",
-"1$	c #A0BACE",
-"2$	c #B9C7D7",
-"3$	c #F6F7F9",
-"4$	c #C6CED1",
-"5$	c #506A7C",
-"6$	c #060607",
-"7$	c #676A6B",
-"8$	c #91999F",
-"9$	c #7CA3BE",
-"0$	c #96BCD4",
-"a$	c #5B717E",
-"b$	c #4B5F6C",
-"c$	c #455864",
-"d$	c #5B717F",
-"e$	c #81A5B9",
-"f$	c #98C4DD",
-"g$	c #93BFD8",
-"h$	c #87B1CA",
-"i$	c #7BA1BC",
-"j$	c #5A7489",
-"k$	c #222A33",
-"l$	c #838A92",
-"m$	c #9DADBC",
-"n$	c #ECF0F5",
-"o$	c #F1F9FB",
-"p$	c #818A8D",
-"q$	c #4A5155",
-"r$	c #6A6F72",
-"s$	c #7E898F",
-"t$	c #E6F1F7",
-"u$	c #CADCED",
-"v$	c #A0B7CC",
-"w$	c #C6D1DF",
-"x$	c #AFB3B4",
-"y$	c #5F707D",
-"z$	c #CBCFD1",
-"A$	c #F4F5F6",
-"B$	c #66737F",
-"C$	c #87B2CB",
-"D$	c #90B7CD",
-"E$	c #596E7B",
-"F$	c #586F7E",
-"G$	c #8BB0C8",
-"H$	c #91BED6",
-"I$	c #83ADC7",
-"J$	c #6D8EA7",
-"K$	c #3F5161",
-"L$	c #2D3A45",
-"M$	c #1F2020",
-"N$	c #BDC5CC",
-"O$	c #E0EDF5",
-"P$	c #BBCAD8",
-"Q$	c #E1E4E7",
-"R$	c #5E6368",
-"S$	c #5B5F62",
-"T$	c #D9E7F3",
-"U$	c #A4C3D6",
-"V$	c #89A3B3",
-"W$	c #7B91A1",
-"X$	c #627990",
-"Y$	c #42505A",
-"Z$	c #CACCCE",
-"`$	c #F9F9F9",
-" %	c #FDFDFD",
-".%	c #BCBEC0",
-"+%	c #5C7689",
-"@%	c #8DB9D3",
-"#%	c #8FB5CC",
-"$%	c #536471",
-"%%	c #98C1D9",
-"&%	c #91BED7",
-"*%	c #81AAC5",
-"=%	c #597386",
-"-%	c #41535F",
-";%	c #6486A2",
-">%	c #4D667D",
-",%	c #070809",
-"'%	c #44484E",
-")%	c #BEC8D0",
-"!%	c #8096A6",
-"~%	c #516473",
-"{%	c #A9ACAF",
-"]%	c #8B8F91",
-"^%	c #A8B3BD",
-"/%	c #C5DAEB",
-"(%	c #9FC8E1",
-"_%	c #8FBCD6",
-":%	c #81A8C2",
-"<%	c #6C90AC",
-"[%	c #56728C",
-"}%	c #585B5F",
-"|%	c #CBCDCD",
-"1%	c #C1C3C6",
-"2%	c #4F565F",
-"3%	c #82ABC3",
-"4%	c #93BCD3",
-"5%	c #95BED7",
-"6%	c #8EB9D3",
-"7%	c #5B788B",
-"8%	c #627E91",
-"9%	c #7FA7C1",
-"0%	c #6C91AB",
-"a%	c #546F87",
-"b%	c #6F7376",
-"c%	c #D5E2EF",
-"d%	c #A9C4D8",
-"e%	c #81A1BA",
-"f%	c #333940",
-"g%	c #5F6B76",
-"h%	c #C0D5E8",
-"i%	c #AACCE2",
-"j%	c #8EB8D3",
-"k%	c #7FA5BF",
-"l%	c #7095B0",
-"m%	c #4E697E",
-"n%	c #07090A",
-"o%	c #0D0F10",
-"p%	c #7193A6",
-"q%	c #96C3DC",
-"r%	c #8EBCD7",
-"s%	c #91BDD7",
-"t%	c #8FBBD6",
-"u%	c #7699AD",
-"v%	c #4D626F",
-"w%	c #252D33",
-"x%	c #101215",
-"y%	c #0C0D0E",
-"z%	c #0A0C0E",
-"A%	c #06090A",
-"B%	c #7F8488",
-"C%	c #D7E3F1",
-"D%	c #B6D0E4",
-"E%	c #A3C2D7",
-"F%	c #596872",
-"G%	c #A9BED0",
-"H%	c #B4D0E5",
-"I%	c #9EC8DC",
-"J%	c #8FB9D4",
-"K%	c #85ADC7",
-"L%	c #7FA4BE",
-"M%	c #4B606F",
-"N%	c #4E6372",
-"O%	c #89B6D0",
-"P%	c #92C1DA",
-"Q%	c #9DC7DD",
-"R%	c #95C0DA",
-"S%	c #94BED8",
-"T%	c #8BB8D1",
-"U%	c #7AA0B9",
-"V%	c #4E667A",
-"W%	c #344151",
-"X%	c #0C0D0F",
-"Y%	c #8A8F92",
-"Z%	c #D4E6F5",
-"`%	c #BCD5E9",
-" &	c #8599A5",
-".&	c #939DA6",
-"+&	c #C4DAEB",
-"@&	c #89A6B9",
-"#&	c #7D9FB5",
-"$&	c #98C3DC",
-"%&	c #95C0D9",
-"&&	c #7CA2B9",
-"*&	c #7697AE",
-"=&	c #698498",
-"-&	c #7394A8",
-";&	c #9EC7DF",
-">&	c #8DB1C4",
-",&	c #6B8594",
-"'&	c #50636C",
-")&	c #50626C",
-"!&	c #7F9FB1",
-"~&	c #93B8D0",
-"{&	c #627A88",
-"]&	c #90B6CC",
-"^&	c #93BDD7",
-"/&	c #87AFC9",
-"(&	c #7291A7",
-"_&	c #384651",
-":&	c #121618",
-"<&	c #12171B",
-"[&	c #4F6986",
-"}&	c #597998",
-"|&	c #324052",
-"1&	c #969CA1",
-"2&	c #D6E6F5",
-"3&	c #C6DCEE",
-"4&	c #505A64",
-"5&	c #82929F",
-"6&	c #99ABBB",
-"7&	c #A1B9CA",
-"8&	c #87A0B0",
-"9&	c #718EA1",
-"0&	c #8DB2C9",
-"a&	c #8BAEC4",
-"b&	c #586D7D",
-"c&	c #97C0D9",
-"d&	c #8DB3C9",
-"e&	c #95B8CD",
-"f&	c #9DC0D6",
-"g&	c #6F8B9C",
-"h&	c #354249",
-"i&	c #464E54",
-"j&	c #8A98A5",
-"k&	c #AABAC7",
-"l&	c #86939E",
-"m&	c #41494F",
-"n&	c #4A5861",
-"o&	c #97C1DA",
-"p&	c #5E7888",
-"q&	c #5C7482",
-"r&	c #88ACC2",
-"s&	c #91BFD7",
-"t&	c #799CB5",
-"u&	c #47596A",
-"v&	c #0D0F12",
-"w&	c #1A2127",
-"x&	c #56778D",
-"y&	c #688BA9",
-"z&	c #5D7F9E",
-"A&	c #547391",
-"B&	c #0E1013",
-"C&	c #9DA6AB",
-"D&	c #C8DCED",
-"E&	c #7A8996",
-"F&	c #B5CEE0",
-"G&	c #BCDBEC",
-"H&	c #B9D5EA",
-"I&	c #8BA2B2",
-"J&	c #6C8A9D",
-"K&	c #97BFD7",
-"L&	c #3E4E59",
-"M&	c #92B5CB",
-"N&	c #535F68",
-"O&	c #454F56",
-"P&	c #6F7C87",
-"Q&	c #ABC0D1",
-"R&	c #C7DCEE",
-"S&	c #C5DBED",
-"T&	c #C2D7EA",
-"U&	c #BFD8EA",
-"V&	c #BCD7EB",
-"W&	c #62717B",
-"X&	c #5B6F7B",
-"Y&	c #95C3DC",
-"Z&	c #8BB2C9",
-"`&	c #485761",
-" *	c #42525F",
-".*	c #6686A1",
-"+*	c #587896",
-"@*	c #1B2129",
-"#*	c #5C7A94",
-"$*	c #7DA2BD",
-"%*	c #84AEC7",
-"&*	c #749BB5",
-"**	c #5C7E9C",
-"=*	c #27343F",
-"-*	c #A4A9B2",
-";*	c #D9E7F4",
-">*	c #C8DBEC",
-",*	c #B1C8DA",
-"'*	c #5D6C76",
-")*	c #A8C5D8",
-"!*	c #A6BDD0",
-"~*	c #B9D6EA",
-"{*	c #B9D4E9",
-"]*	c #8198A8",
-"^*	c #8AADC3",
-"/*	c #8CB1CA",
-"(*	c #96C2D8",
-"_*	c #A3C7DF",
-":*	c #ADCDE3",
-"<*	c #ABD0E4",
-"[*	c #ADCFE3",
-"}*	c #AACEE4",
-"|*	c #A4CDE3",
-"1*	c #A1CBE1",
-"2*	c #A3CCE3",
-"3*	c #A2C9DF",
-"4*	c #41515A",
-"5*	c #81A2B5",
-"6*	c #94C0D7",
-"7*	c #5E7789",
-"8*	c #526777",
-"9*	c #516777",
-"0*	c #6B8CA5",
-"a*	c #759CBA",
-"b*	c #658AA5",
-"c*	c #587798",
-"d*	c #1B242B",
-"e*	c #0E1110",
-"f*	c #101214",
-"g*	c #202931",
-"h*	c #59758E",
-"i*	c #799FBB",
-"j*	c #84B1CA",
-"k*	c #86ACC6",
-"l*	c #354758",
-"m*	c #A0A6AE",
-"n*	c #DAE6F2",
-"o*	c #C4DCEE",
-"p*	c #B4D2E8",
-"q*	c #3E4A53",
-"r*	c #698091",
-"s*	c #5D7581",
-"t*	c #A3CAE0",
-"u*	c #A6CFE5",
-"v*	c #A5CCE5",
-"w*	c #718A9C",
-"x*	c #98C3DB",
-"y*	c #83ABC7",
-"z*	c #2E3B46",
-"A*	c #33414A",
-"B*	c #678398",
-"C*	c #8AB3CE",
-"D*	c #93BED7",
-"E*	c #97C4DB",
-"F*	c #42525E",
-"G*	c #88ACC0",
-"H*	c #789EB9",
-"I*	c #7A9FBB",
-"J*	c #7EA2BD",
-"K*	c #779DB5",
-"L*	c #577081",
-"M*	c #5B7B9B",
-"N*	c #1D2229",
-"O*	c #547390",
-"P*	c #54728D",
-"Q*	c #6082A0",
-"R*	c #688EA9",
-"S*	c #6689A7",
-"T*	c #6086A0",
-"U*	c #6285A1",
-"V*	c #6B8DAA",
-"W*	c #718FAB",
-"X*	c #3E5568",
-"Y*	c #969DA1",
-"Z*	c #DBE8F4",
-"`*	c #95ACBD",
-" =	c #758B9A",
-".=	c #A4C9DE",
-"+=	c #698190",
-"@=	c #667E8A",
-"#=	c #7D99AA",
-"$=	c #7B9BAD",
-"%=	c #6F8C9A",
-"&=	c #536976",
-"*=	c #84ADC6",
-"==	c #6D92AD",
-"-=	c #62829E",
-";=	c #43576A",
-">=	c #2F3B46",
-",=	c #5C788A",
-"'=	c #86AFC8",
-")=	c #93BED8",
-"!=	c #93BAD5",
-"~=	c #93BAD2",
-"{=	c #92BCD4",
-"]=	c #7EA2B6",
-"^=	c #3D4D56",
-"/=	c #485B67",
-"(=	c #7596A9",
-"_=	c #8CBBD4",
-":=	c #90BCD5",
-"<=	c #91BFD9",
-"[=	c #789BAD",
-"}=	c #465B6A",
-"|=	c #59789A",
-"1=	c #5D7F9D",
-"2=	c #5E839C",
-"3=	c #59799A",
-"4=	c #415569",
-"5=	c #2D3A46",
-"6=	c #2E3B49",
-"7=	c #4A647C",
-"8=	c #587690",
-"9=	c #39485A",
-"0=	c #7F8589",
-"a=	c #D9E8F5",
-"b=	c #CCDEEE",
-"c=	c #8597A5",
-"d=	c #B3D2E3",
-"e=	c #9BB3C4",
-"f=	c #B2CEE1",
-"g=	c #B2D1E7",
-"h=	c #ABCFE6",
-"i=	c #94B7CB",
-"j=	c #495C6A",
-"k=	c #688498",
-"l=	c #617B8A",
-"m=	c #85ADC8",
-"n=	c #78A0B9",
-"o=	c #62819B",
-"p=	c #2E3843",
-"q=	c #485A6C",
-"r=	c #67889C",
-"s=	c #8AB5CF",
-"t=	c #8EB9D1",
-"u=	c #6C899B",
-"v=	c #6E91A7",
-"w=	c #678399",
-"x=	c #6888A1",
-"y=	c #323E48",
-"z=	c #5B7585",
-"A=	c #98C5DD",
-"B=	c #83ACC1",
-"C=	c #2D373F",
-"D=	c #4B637C",
-"E=	c #567694",
-"F=	c #26313C",
-"G=	c #15191F",
-"H=	c #4D647A",
-"I=	c #252F39",
-"J=	c #5D6163",
-"K=	c #DDE9F5",
-"L=	c #CEDFEE",
-"M=	c #8898A5",
-"N=	c #B0CBDC",
-"O=	c #BFDAEC",
-"P=	c #BFDBEC",
-"Q=	c #BBDAEC",
-"R=	c #BAD7EA",
-"S=	c #6B808F",
-"T=	c #7297B0",
-"U=	c #8CB8D1",
-"V=	c #95C1D9",
-"W=	c #91BCD6",
-"X=	c #86AEC8",
-"Y=	c #7496B3",
-"Z=	c #6587A2",
-"`=	c #384958",
-" -	c #323F4B",
-".-	c #546A7C",
-"+-	c #6C88A1",
-"@-	c #779AB1",
-"#-	c #658297",
-"$-	c #3B4A58",
-"%-	c #33404B",
-"&-	c #202830",
-"*-	c #577287",
-"=-	c #86B1CC",
-"--	c #86ACC0",
-";-	c #6E8797",
-">-	c #9CC7DF",
-",-	c #92BCD5",
-"'-	c #91BCD5",
-")-	c #8EB6CE",
-"!-	c #344453",
-"~-	c #263039",
-"{-	c #364452",
-"]-	c #2B3643",
-"^-	c #2A2D2E",
-"/-	c #E1EBF4",
-"(-	c #D2E4F3",
-"_-	c #A0B2C3",
-":-	c #8094A1",
-"<-	c #BAD8EB",
-"[-	c #B8D6EA",
-"}-	c #485A6A",
-"|-	c #789FB9",
-"1-	c #90BBD3",
-"2-	c #94C4DC",
-"3-	c #88B3CD",
-"4-	c #7A9EB9",
-"5-	c #698BA8",
-"6-	c #4D677C",
-"7-	c #151A1E",
-"8-	c #1A2125",
-"9-	c #171C21",
-"0-	c #1D2329",
-"a-	c #1D262E",
-"b-	c #486073",
-"c-	c #6A8CAA",
-"d-	c #7CA2BE",
-"e-	c #90BDD7",
-"f-	c #9AC5DE",
-"g-	c #7493A2",
-"h-	c #708B99",
-"i-	c #8CB7D1",
-"j-	c #7494AB",
-"k-	c #68889F",
-"l-	c #6A8FA5",
-"m-	c #7BA2BC",
-"n-	c #171D21",
-"o-	c #1D262F",
-"p-	c #212B36",
-"q-	c #09090B",
-"r-	c #BBC2C9",
-"s-	c #D4E4F2",
-"t-	c #C1D9EB",
-"u-	c #44515A",
-"v-	c #92B5C9",
-"w-	c #6B8795",
-"x-	c #4E687E",
-"y-	c #7EA6C0",
-"z-	c #91BED8",
-"A-	c #93BFD9",
-"B-	c #8CB5D0",
-"C-	c #7DA4BE",
-"D-	c #6F92AE",
-"E-	c #6687A5",
-"F-	c #526C85",
-"G-	c #415669",
-"H-	c #384655",
-"I-	c #6589A4",
-"J-	c #6E92AE",
-"K-	c #80A8C2",
-"L-	c #92BCD6",
-"M-	c #91BFD8",
-"N-	c #799AAF",
-"O-	c #6A8796",
-"P-	c #81AAC3",
-"Q-	c #577187",
-"R-	c #1F2930",
-"S-	c #192027",
-"T-	c #1B2227",
-"U-	c #0D1010",
-"V-	c #0E1012",
-"W-	c #070709",
-"X-	c #5C6062",
-"Y-	c #DCE8F3",
-"Z-	c #C4DCEF",
-"`-	c #9BB3C6",
-" ;	c #3A424F",
-".;	c #313A44",
-"+;	c #35424C",
-"@;	c #374655",
-"#;	c #6E91AD",
-"$;	c #87B2CC",
-"%;	c #799EBA",
-"&;	c #618298",
-"*;	c #7095AF",
-"=;	c #435663",
-"-;	c #80A7C0",
-";;	c #95C4DC",
-">;	c #779CB3",
-",;	c #526D7E",
-"';	c #516A7A",
-");	c #526B7B",
-"!;	c #465764",
-"~;	c #34414E",
-"{;	c #5C7E9A",
-"];	c #2B3741",
-"^;	c #4B657F",
-"/;	c #5C7D9C",
-"(;	c #557088",
-"_;	c #0F0F10",
-":;	c #B9C2CA",
-"<;	c #CCDFEF",
-"[;	c #B4CDE1",
-"};	c #8DAEC8",
-"|;	c #6F93AE",
-"1;	c #678CA6",
-"2;	c #6E92AF",
-"3;	c #81A8C1",
-"4;	c #8FBBD5",
-"5;	c #8DB9D2",
-"6;	c #6D8FA2",
-"7;	c #586F82",
-"8;	c #394851",
-"9;	c #86B0C6",
-"0;	c #85AFC8",
-"a;	c #6F94AF",
-"b;	c #698DA8",
-"c;	c #6889A7",
-"d;	c #5E7E9F",
-"e;	c #475D75",
-"f;	c #2E3C4A",
-"g;	c #5D7E9D",
-"h;	c #405465",
-"i;	c #36393B",
-"j;	c #D7E5F1",
-"k;	c #A4C5DC",
-"l;	c #668496",
-"m;	c #7595AB",
-"n;	c #7798AE",
-"o;	c #97C2DA",
-"p;	c #789DB3",
-"q;	c #8BB1C8",
-"r;	c #93C0D9",
-"s;	c #8BB5CF",
-"t;	c #85AFC9",
-"u;	c #82AAC6",
-"v;	c #5F7C95",
-"w;	c #1E252C",
-"x;	c #54728E",
-"y;	c #587899",
-"z;	c #5A7B9B",
-"A;	c #2D3843",
-"B;	c #798086",
-"C;	c #D1E3F1",
-"D;	c #B7D3E8",
-"E;	c #7E98AB",
-"F;	c #181C1F",
-"G;	c #46525F",
-"H;	c #80A1B8",
-"I;	c #99C3DB",
-"J;	c #85ACC2",
-"K;	c #21272D",
-"L;	c #0A0B0D",
-"M;	c #53718C",
-"N;	c #577797",
-"O;	c #1B2229",
-"P;	c #0D0E0F",
-"Q;	c #B3BDC4",
-"R;	c #CADDED",
-"S;	c #B4D3E7",
-"T;	c #2B3339",
-"U;	c #2F3840",
-"V;	c #7899AC",
-"W;	c #93C1D9",
-"X;	c #8FBCD5",
-"Y;	c #8BB6D1",
-"Z;	c #8DB8D2",
-"`;	c #92BFD8",
-" >	c #678092",
-".>	c #547089",
-"+>	c #5C7F9B",
-"@>	c #1F262E",
-"#>	c #202223",
-"$>	c #B1BECB",
-"%>	c #C3D9EB",
-"&>	c #7B8D99",
-"*>	c #708B9A",
-"=>	c #85ABC1",
-"->	c #7FA3BA",
-";>	c #92BBD3",
-">>	c #7CA0B4",
-",>	c #97BDD4",
-"'>	c #657E8F",
-")>	c #93BDD4",
-"!>	c #88ADC7",
-"~>	c #6F94AE",
-"{>	c #526A7E",
-"]>	c #65849B",
-"^>	c #799DBB",
-"/>	c #84AFC9",
-"(>	c #8FB9D2",
-"_>	c #323C45",
-":>	c #516C84",
-"<>	c #658AA4",
-"[>	c #5B7C9B",
-"}>	c #2E3A49",
-"|>	c #2A3038",
-"1>	c #252D3A",
-"2>	c #1B1E20",
-"3>	c #ADBFCF",
-"4>	c #C0D6E7",
-"5>	c #B0CDE2",
-"6>	c #8EB3C9",
-"7>	c #526975",
-"8>	c #6B899D",
-"9>	c #597183",
-"0>	c #90BAD5",
-"a>	c #94C2DA",
-"b>	c #82ABC5",
-"c>	c #495E6E",
-"d>	c #82A8C3",
-"e>	c #81A4BA",
-"f>	c #7594A5",
-"g>	c #87ABC3",
-"h>	c #4D6573",
-"i>	c #6689A6",
-"j>	c #526E85",
-"k>	c #243037",
-"l>	c #607B96",
-"m>	c #7699B6",
-"n>	c #789EB5",
-"o>	c #303D48",
-"p>	c #7498B4",
-"q>	c #7094AF",
-"r>	c #597792",
-"s>	c #242F39",
-"t>	c #1A1D25",
-"u>	c #374553",
-"v>	c #4D677D",
-"w>	c #14191E",
-"x>	c #040505",
-"y>	c #171A1D",
-"z>	c #8A9FAD",
-"A>	c #BCD9EC",
-"B>	c #B5D3E7",
-"C>	c #A2CAE1",
-"D>	c #9DC7DE",
-"E>	c #9EC7DD",
-"F>	c #3B4A57",
-"G>	c #455867",
-"H>	c #98C2DB",
-"I>	c #85B0CC",
-"J>	c #7496B2",
-"K>	c #4C606F",
-"L>	c #6E8EA3",
-"M>	c #7EA0B6",
-"N>	c #91BBD3",
-"O>	c #8DB7D1",
-"P>	c #90BAD4",
-"Q>	c #96C1DA",
-"R>	c #3B4853",
-"S>	c #688AA5",
-"T>	c #4C657A",
-"U>	c #1B2026",
-"V>	c #2B3C44",
-"W>	c #5F7A90",
-"X>	c #587284",
-"Y>	c #536978",
-"Z>	c #88B1CC",
-"`>	c #759AB8",
-" ,	c #617E9A",
-".,	c #556F85",
-"+,	c #20272E",
-"@,	c #323D48",
-"#,	c #333E4A",
-"$,	c #060707",
-"%,	c #4A5159",
-"&,	c #ACC3D5",
-"*,	c #ACCFE5",
-"=,	c #5A6874",
-"-,	c #AACDE1",
-";,	c #9CC6DC",
-">,	c #35414C",
-",,	c #769AB2",
-"',	c #80AAC5",
-"),	c #6F92AB",
-"!,	c #38464F",
-"~,	c #7EA4B9",
-"{,	c #97C3DC",
-"],	c #7A9FB6",
-"^,	c #3F505C",
-"/,	c #6D8DA6",
-"(,	c #1E282E",
-"_,	c #080909",
-":,	c #090A0C",
-"<,	c #344452",
-"[,	c #3B4857",
-"},	c #7799AE",
-"|,	c #8DB6D1",
-"1,	c #66869E",
-"2,	c #3D4957",
-"3,	c #536C84",
-"4,	c #353F4C",
-"5,	c #111215",
-"6,	c #65727E",
-"7,	c #A6BCCD",
-"8,	c #5D6972",
-"9,	c #AED0E6",
-"0,	c #99C5DC",
-"a,	c #8DB5D0",
-"b,	c #8DB5CE",
-"c,	c #90BBD5",
-"d,	c #84AAC5",
-"e,	c #8EBBD5",
-"f,	c #80A7C1",
-"g,	c #6C8DA2",
-"h,	c #85AFC6",
-"i,	c #61839B",
-"j,	c #374352",
-"k,	c #576D83",
-"l,	c #80A6C1",
-"m,	c #81A4BB",
-"n,	c #111315",
-"o,	c #111418",
-"p,	c #4C6378",
-"q,	c #33424C",
-"r,	c #37454D",
-"s,	c #8DB4CF",
-"t,	c #7397B3",
-"u,	c #3A495A",
-"v,	c #0D0F13",
-"w,	c #27303A",
-"x,	c #272E36",
-"y,	c #0F1012",
-"z,	c #90A4B2",
-"A,	c #A8CBE2",
-"B,	c #91BCD4",
-"C,	c #80ABC3",
-"D,	c #567083",
-"E,	c #67899D",
-"F,	c #94C2DB",
-"G,	c #95C1DB",
-"H,	c #779CB2",
-"I,	c #60849E",
-"J,	c #64849F",
-"K,	c #1A1F22",
-"L,	c #405061",
-"M,	c #79A1BD",
-"N,	c #324051",
-"O,	c #6183A1",
-"P,	c #6B8FAD",
-"Q,	c #6485A2",
-"R,	c #34444F",
-"S,	c #060606",
-"T,	c #2D3339",
-"U,	c #B2CBDF",
-"V,	c #94BCD5",
-"W,	c #7DA2BA",
-"X,	c #3F5264",
-"Y,	c #5A7991",
-"Z,	c #7195B3",
-"`,	c #7BA5BD",
-" '	c #81AAC6",
-".'	c #88B2CC",
-"+'	c #8EBBD4",
-"@'	c #8AB2CC",
-"#'	c #82ADC7",
-"$'	c #7092A5",
-"%'	c #95C2DA",
-"&'	c #41525F",
-"*'	c #6387A3",
-"='	c #475F72",
-"-'	c #21282F",
-";'	c #5B7288",
-">'	c #0D0F11",
-",'	c #0B0E11",
-"''	c #212C36",
-")'	c #26323C",
-"!'	c #161B20",
-"~'	c #55616D",
-"{'	c #9BB9D0",
-"]'	c #799EB6",
-"^'	c #27313A",
-"/'	c #1A222B",
-"('	c #5D7E99",
-"_'	c #6587A4",
-":'	c #6789A6",
-"<'	c #6B8EAB",
-"['	c #628097",
-"}'	c #6D8B9D",
-"|'	c #769AAF",
-"1'	c #6E91A9",
-"2'	c #6C8EAD",
-"3'	c #6E91AF",
-"4'	c #3C4D59",
-"5'	c #8BB1CB",
-"6'	c #232D32",
-"7'	c #13171B",
-"8'	c #232B32",
-"9'	c #839AAF",
-"0'	c #789BB3",
-"a'	c #283138",
-"b'	c #0C0E0F",
-"c'	c #242B33",
-"d'	c #3D4D5B",
-"e'	c #435768",
-"f'	c #4B6176",
-"g'	c #283137",
-"h'	c #8DB4CC",
-"i'	c #41535E",
-"j'	c #405362",
-"k'	c #3C4F60",
-"l'	c #3C4E5B",
-"m'	c #2B353E",
-"n'	c #526876",
-"o'	c #92BAD3",
-"p'	c #1B1F23",
-"q'	c #31383F",
-"r'	c #7F9CB6",
-"s'	c #21292F",
-"t'	c #29333F",
-"u'	c #1F252E",
-"v'	c #090A0E",
-"w'	c #4D626E",
-"x'	c #96BDD3",
-"y'	c #191D20",
-"z'	c #13181B",
-"A'	c #80A4BC",
-"B'	c #1B2027",
-"C'	c #5D7182",
-"D'	c #2C383F",
-"E'	c #364857",
-"F'	c #1A2028",
-"G'	c #333F49",
-"H'	c #7FA2B5",
-"I'	c #4A5E6E",
-"J'	c #232E35",
-"K'	c #252D35",
-"L'	c #2F3A41",
-"M'	c #0A0B0E",
-"N'	c #14191D",
-"O'	c #5A717F",
-"P'	c #212931",
-"Q'	c #222B34",
-"R'	c #101216",
-"S'	c #21272B",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                    .                                                           ",
-"                                                                    +                                                           ",
-"                                    @               #             $ %                                                           ",
-"                                  & *               =             - ;                                                           ",
-"                                  > , '             ) !         ~ { ]                                                           ",
-"                  ^ /             ( _ : < [ } | 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 U V W       X Y                                               ",
-"                    Z `  ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<.                                              ",
-"                    b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c.                                              ",
-"                  d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r.                                              ",
-"                s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L.  M.N.                                      ",
-"              O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+                                      ",
-"            >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.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+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+          F+G+                        ",
-"        H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V  @.@+@@@#@  $@%@&@*@                          ",
-"        =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@                            ",
-"        9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@                              ",
-"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ #                              ",
-"    .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2#                              ",
-"      3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s#                            ",
-"      t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R#                          ",
-"      S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$                      ",
-"      ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.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$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$                          ",
-"    M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,%                        ",
-"    '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y                         ",
-"    b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A%              ",
-"    B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W%    X%$         ",
-"    Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:&      <&[&}&|&      ",
-"    1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v&        w&x&y&z&A&B&    ",
-"    C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@*      (.#*$*%*&***=*    ",
-"    -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.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*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*    ",
-"    Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9=    ",
-"    0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F=      G=H=I=    ",
-"    J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~-          {-]-    ",
-"    ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n-          o-p-    ",
-"    q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V-          W-      ",
-"      X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+                    ",
-"      _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h;                      ",
-"        i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A;                      ",
-"        H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O;                      ",
-"          P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@>                      ",
-"            #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}>      |>1>            ",
-"              2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w>            ",
-"              x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U>    X%V>W>X>Y>Z>P-`> ,.,+,              ",
-"              @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_,          :,<,[,},<@|,1,2,                ",
-"            B&3,4,    5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n,            o,p,q,r,s,t,u,v,                ",
-"            w,x,          y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+              N,O,P,Q,R,S,                  ",
-"                          T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-'    ~;;'>'            ,''')'!'                      ",
-"                          ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7'          8'K;                                          ",
-"                        v&9'0'a'    b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p'              y                                           ",
-"                        q'r's'        t'u'H+    v'w'x'y'        z'A'B'                                                          ",
-"                        C'D'          E'F'        G'H'            I'J'                                                          ",
-"                      K'L'            M'          N'O'            P'Q'                                                          ",
-"                      R'                            S'                                                                          ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                "};
diff --git a/minilibx/test/open24.xpm b/minilibx/test/open24.xpm
deleted file mode 100644
index f363254..0000000
--- a/minilibx/test/open24.xpm
+++ /dev/null
@@ -1,230 +0,0 @@
-/* XPM */
-static char *open[] = {
-/* width height num_colors chars_per_pixel */
-"    45    55      168            2",
-/* colors */
-".. s None c None",
-".# c #450304",
-".a c #ce7e7c",
-".b c #b94344",
-".c c #b65254",
-".d c #780204",
-".e c #b04c4c",
-".f c #b00204",
-".g c #8a8a64",
-".h c #969a24",
-".i c #b6b60c",
-".j c #cac614",
-".k c #cece34",
-".l c #cace54",
-".m c #caca94",
-".n c #c24e4c",
-".o c #aa0204",
-".p c #9e4244",
-".q c #bc0204",
-".r c #a40204",
-".s c #9e262c",
-".t c #8c3a3c",
-".u c #5c1414",
-".v c #5b0204",
-".w c #700204",
-".x c #722214",
-".y c #b52624",
-".z c #8e3234",
-".A c #b60204",
-".B c #c20204",
-".C c #860204",
-".D c #560304",
-".E c #800204",
-".F c #9e0204",
-".G c #920204",
-".H c #620204",
-".I c #a41314",
-".J c #996a6c",
-".K c #920d09",
-".L c #c80204",
-".M c #690204",
-".N c #980204",
-".O c #984c4c",
-".P c #e2dedc",
-".Q c #ae5e5c",
-".R c #bc6a6c",
-".S c #a21a1c",
-".T c #8a0a04",
-".U c #671e1c",
-".V c #941b1c",
-".W c #b8b4b4",
-".X c #e8e6e4",
-".Y c #ccb4b4",
-".Z c #c07c7c",
-".0 c #f3f2eb",
-".1 c #b49696",
-".2 c #521614",
-".3 c #9e5a5c",
-".4 c #d4d4d4",
-".5 c #a7a5a1",
-".6 c #dec4c4",
-".7 c #e4d6d4",
-".8 c #f4f2f4",
-".9 c #cccac4",
-"#. c #9a161c",
-"## c #8c0204",
-"#a c #862c2c",
-"#b c #7e5e5c",
-"#c c #a39694",
-"#d c #6b6667",
-"#e c #322624",
-"#f c #b09e9c",
-"#g c #b23234",
-"#h c #500304",
-"#i c #222224",
-"#j c #2e322c",
-"#k c #925c5c",
-"#l c #721a1c",
-"#m c #6e6e6c",
-"#n c #0a0a0c",
-"#o c #b2b2b4",
-"#p c #8e6264",
-"#q c #884444",
-"#r c #8c5c5c",
-"#s c #121214",
-"#t c #b2aeac",
-"#u c #c21e1c",
-"#v c #6e0e0c",
-"#w c #623e3c",
-"#x c #b64e4c",
-"#y c #bc3634",
-"#z c #624e1c",
-"#A c #6e727c",
-"#B c #824e4c",
-"#C c #8b8d87",
-"#D c #a09674",
-"#E c #766844",
-"#F c #7a663c",
-"#G c #828c90",
-"#H c #beb6a4",
-"#I c #3a0204",
-"#J c #8e9298",
-"#K c #562529",
-"#L c #7c3838",
-"#M c #bab294",
-"#N c #7e4644",
-"#O c #929a9c",
-"#P c #762a2c",
-"#Q c #a60e0c",
-"#R c #ae1e1c",
-"#S c #460a0c",
-"#T c #a6aaa4",
-"#U c #6a4a4c",
-"#V c #784c50",
-"#W c #761214",
-"#X c #9e1e1c",
-"#Y c #988c90",
-"#Z c #821e1c",
-"#0 c #7a1618",
-"#1 c #7a6e74",
-"#2 c #7e7a77",
-"#3 c #808688",
-"#4 c #828284",
-"#5 c #828279",
-"#6 c #827a64",
-"#7 c #7e765c",
-"#8 c #864a34",
-"#9 c #825a44",
-"a. c #766e54",
-"a# c #7e7e74",
-"aa c #806464",
-"ab c #7e724c",
-"ac c #766634",
-"ad c #765a2c",
-"ae c #8e7e54",
-"af c #a69e8c",
-"ag c #c7c2ac",
-"ah c #9a2a1c",
-"ai c #aa3a3c",
-"aj c #979894",
-"ak c #70684c",
-"al c #62522c",
-"am c #6e5e3c",
-"an c #92866c",
-"ao c #968e6c",
-"ap c #826e54",
-"aq c #84765c",
-"ar c #86522c",
-"as c #7e4624",
-"at c #7e3614",
-"au c #6e5254",
-"av c #712e2c",
-"aw c #7a5654",
-"ax c #82727c",
-"ay c #a63634",
-"az c #8a6a6c",
-"aA c #863534",
-"aB c #5c1a18",
-"aC c #6a2c2c",
-"aD c #5e0e14",
-"aE c #868684",
-"aF c #922624",
-"aG c #901614",
-"aH c #c21614",
-"aI c #520e0c",
-"aJ c #805654",
-"aK c #b00c0c",
-"aL c #c2221c",
-/* pixels */
-"..........................................................................................",
-"..........................................................................................",
-".....................................#.a.#................................................",
-"...................................#.b.c.#.#.#.#...........#.d............................",
-".................................#.e.f.f.#.g.h.i.j.k.l.m...f.n............................",
-".................................d.f.o.f.#.#.#.d.d.#.#.#...f.f.d..........................",
-".................................p.q.q.r.s.t.u.v.w.x.d.d.#.d.r.y.d........................",
-".................................z.A.B.q.C.D.E.F.G.E.H.E.I.F.q.A.d........................",
-".................................J.G.f.G.w.K.f.L.B.B.r.M.f.B.L.A.d........................",
-".................................d.w.N.M.O.P.Q.B.B.o.R.S.E.q.q.T.d........................",
-".................................d.U.M.V.W.X.Y.q.B.Z.0.1.E.r.N.d..........................",
-".................................d.2.r.3.4.5.6.A.f.7.8.9#.###a.#..........................",
-"................................#b.d.L#c#d#e#f.N.V.5#d.4#g.E.d............................",
-"...............................d#h.r.L#f#i#j#k.M#l#m#n#o.b.r.d............................",
-"...............................d#h##.q#g#p#q##.q.N#r#s#t#u.q#v.#..........................",
-"..............#j................#w.w.C.r.q##.r.B.f.T#x#y.L.r.M.d..........................",
-"............#j#z#j#A#A#j.........d.D.r.M.C.f.r.r.r.q.B.C.N.E#B............................",
-"..........#j#C#D#E#z#F#G#j.......d.d.#.G##.w.M.M.C.C.d.G.r.u.d............................",
-"....................#E#H#C#j.........d#I.w.F.f.o.o.o.N.M.#.d..............................",
-"......................#E#j#J#j......#K.M.#.#.v.w.M.v.##h.H#L.d............................",
-"..........................#M#j.......v.F.q.r.d.w.w.C.E.M.v.M#N.d..........................",
-"..........................#E#O#j#j#K##.f.L.L.L.B.q.f##.M.v.w.w#P.d.#...d.d................",
-"............................#C#E.#.v.o.B.L.L.q.q.q.q.N.M.D#h.M.N.r#Q#R#S.H.J.#............",
-"............................#j#T#U.C.q.q.o.G.F.f.q.A.N.d.v.v##.o.q.L.r.C.A###k............",
-"..............................#C#V.N.A.N.f.q.F.C.E.f.F.E.H#n#W.K.I#X#a.z.V.q.d#p.d........",
-"................................#Y.r.K#Z.K.q.A.G.w#0#b#1#2#3#4#5#5#6#6#7#8.q.G#9..........",
-"..................#j#oa..5#j..#J#Ja##4#4aa.o.A##.E.xabacadae#Daf#M#Magah.r.qai.#..........",
-"................aja#akalamanaoapaqaaarasat.r.o.E.w.T.T.E.H.#...........#.d.d.#............",
-"...........E....#j#j#C#M#j#n#naa#V.O.f.N.F.q.G.d.w.r.C.d.H.#...............#..............",
-"...........#.F.F.J#n#n#n#n#n#nauav#p.q.N.d.d.w.M.F.F.E.d.U................................",
-".........E.F.E.E.d.z#n.d#n#n#naw.Uax.r##.d.w.D.M.r.N.E.w.d................................",
-".........E.F.......d.Fay.E.F#naz.2#A.D#h.r.f.w##.r##.d.H.M................................",
-".........F.#...........E.E.F.baAaB#A.#.E.f.r.w.N.N.E.waC.#................................",
-".........F.#...............d.F.E#K#d.H.G.F.G.w.N##.d.D.#..................................",
-".........F.#....................#Aau.v.E##.w.E.E.w.H.d.......d..av.d......................",
-".........E.#..................#j#GaC.M.H.M.d.d.w.H.#.d.d.#aC.w.C##.E.d....................",
-"...........F.................5#O...#aD.w.d.w.H.D.M######.G.F.o.f.o.N.3....................",
-"...........F.E...........5aEakak.....#.##h#h.v.N.o.f.q.L.L.L.L.L.q.faF....................",
-"...........E.E......#E#C.5aq#j.....#.v.N.F.d.N.r.F.r.F#Q.I.o.q.L.L.L.y....................",
-".............E.....................#.E.B.qaG.d.d.d.....#.#.....d#x.b......................",
-".............E.F...................E.w.L.LaG.#............................................",
-"...............E.E.................EaA.q.qaG.#............................................",
-"...............E.F.E.................E.r.r#Z.#............................................",
-".................E.F.E...............E.G.NaA..............................................",
-".................E#uaH.................w.dav..............................................",
-"...................E.E.............EaI.M.w.v.#............................................",
-"...................................E.D.d.E.waJ............................................",
-".....................................C.N.N##.M............................................",
-"..................................#W.f.q.A.f.G#q..........................................",
-".....................................q.L.L.L.q.V.#........................................",
-"...................................#.daK.q.qaL.d..........................................",
-".......................................#.#.#..............................................",
-"..........................................................................................",
-"..........................................................................................",
-".........................................................................................."
-};
diff --git a/minilibx/test/open30.xpm b/minilibx/test/open30.xpm
deleted file mode 100644
index 87be371..0000000
--- a/minilibx/test/open30.xpm
+++ /dev/null
@@ -1,1439 +0,0 @@
-/* XPM */
-static char * open30_2_xpm[] = {
-"64 64 1372 2",
-"  	c None",
-". 	c #08090D",
-"+ 	c #1A1E23",
-"@ 	c #1F2124",
-"# 	c #060809",
-"$ 	c #1A1E21",
-"% 	c #4F606C",
-"& 	c #3D4145",
-"* 	c #868D93",
-"= 	c #454E56",
-"- 	c #627481",
-"; 	c #667C8A",
-"> 	c #2D3031",
-", 	c #D7E1E7",
-"' 	c #4D5157",
-") 	c #8997A5",
-"! 	c #282E31",
-"~ 	c #333B41",
-"{ 	c #A5C6DB",
-"] 	c #718C9B",
-"^ 	c #000000",
-"/ 	c #181B1F",
-"( 	c #262828",
-"_ 	c #D2DEE7",
-": 	c #B8C5D0",
-"< 	c #151719",
-"[ 	c #08090B",
-"} 	c #272B30",
-"| 	c #2D3037",
-"1 	c #26282C",
-"2 	c #1A1D1F",
-"3 	c #B1CADB",
-"4 	c #56646E",
-"5 	c #080809",
-"6 	c #080A0C",
-"7 	c #1E2126",
-"8 	c #98B7C9",
-"9 	c #A2CAE2",
-"0 	c #7FA1B5",
-"a 	c #06080A",
-"b 	c #252729",
-"c 	c #A7ADB2",
-"d 	c #272B2E",
-"e 	c #1E2023",
-"f 	c #C8D8E5",
-"g 	c #C9DDED",
-"h 	c #8996A3",
-"i 	c #6B7782",
-"j 	c #C7DFF0",
-"k 	c #CCE0F0",
-"l 	c #AFC1CF",
-"m 	c #47535B",
-"n 	c #B0D3E8",
-"o 	c #7E99A9",
-"p 	c #738493",
-"q 	c #97B4C7",
-"r 	c #53606A",
-"s 	c #6E8996",
-"t 	c #A1CBE3",
-"u 	c #9CC6DE",
-"v 	c #90B5CB",
-"w 	c #171D22",
-"x 	c #1E2629",
-"y 	c #020202",
-"z 	c #ABB3BA",
-"A 	c #BBC4C8",
-"B 	c #222323",
-"C 	c #141617",
-"D 	c #5D6164",
-"E 	c #ACB5BC",
-"F 	c #676D74",
-"G 	c #BDD4E5",
-"H 	c #B3D1E7",
-"I 	c #B0D1E7",
-"J 	c #728A99",
-"K 	c #94AEBF",
-"L 	c #B1D1E7",
-"M 	c #505C64",
-"N 	c #7B98A9",
-"O 	c #A1CBE0",
-"P 	c #99C3D9",
-"Q 	c #475863",
-"R 	c #A0C9DE",
-"S 	c #9CC6DA",
-"T 	c #9ECAE1",
-"U 	c #9CC5DD",
-"V 	c #9AC4DC",
-"W 	c #263137",
-"X 	c #3C4A55",
-"Y 	c #658190",
-"Z 	c #66686B",
-"` 	c #7D8085",
-" .	c #363839",
-"..	c #797E81",
-"+.	c #D2DBE1",
-"@.	c #DDE9F4",
-"#.	c #CADEEF",
-"$.	c #778593",
-"%.	c #AED0E5",
-"&.	c #9EC9DE",
-"*.	c #9EC8DF",
-"=.	c #9BC1D8",
-"-.	c #9EC8DE",
-";.	c #6B8596",
-">.	c #9BC5DC",
-",.	c #9BC6DF",
-"'.	c #9CC5DC",
-").	c #688595",
-"!.	c #6B8698",
-"~.	c #9CC4DC",
-"{.	c #9BC4DC",
-"].	c #9DC5DD",
-"^.	c #647D8C",
-"/.	c #485864",
-"(.	c #161A1D",
-"_.	c #36444C",
-":.	c #95BDD5",
-"<.	c #566E7E",
-"[.	c #A4AAAD",
-"}.	c #E9F2F7",
-"|.	c #DEEAF6",
-"1.	c #B5D4E9",
-"2.	c #A9CFE3",
-"3.	c #90B3C9",
-"4.	c #9FCAE1",
-"5.	c #9BC4DD",
-"6.	c #7490A2",
-"7.	c #99C2DB",
-"8.	c #81A5BA",
-"9.	c #9CC5DE",
-"0.	c #98C1DA",
-"a.	c #5F7889",
-"b.	c #96BFD8",
-"c.	c #44545F",
-"d.	c #565A5E",
-"e.	c #DFE6EC",
-"f.	c #E6EEF7",
-"g.	c #D6E4F2",
-"h.	c #BFD6E9",
-"i.	c #A9CCE3",
-"j.	c #9FC8DD",
-"k.	c #9DC6DD",
-"l.	c #9CC4DD",
-"m.	c #7D9FB0",
-"n.	c #98C0D6",
-"o.	c #9AC5DD",
-"p.	c #97BFD8",
-"q.	c #9BC5DF",
-"r.	c #2D3840",
-"s.	c #626567",
-"t.	c #E7ECF5",
-"u.	c #E1EAF5",
-"v.	c #CEE3F3",
-"w.	c #B7D6EA",
-"x.	c #A4CBE0",
-"y.	c #8AAFC5",
-"z.	c #647F90",
-"A.	c #648092",
-"B.	c #89B0C7",
-"C.	c #9CC6DF",
-"D.	c #5D7486",
-"E.	c #7B9BAF",
-"F.	c #84A8BF",
-"G.	c #9BC5DD",
-"H.	c #96BED5",
-"I.	c #4B5D69",
-"J.	c #9BC5DE",
-"K.	c #536B77",
-"L.	c #2E3B41",
-"M.	c #1B2124",
-"N.	c #3F4F58",
-"O.	c #4D5152",
-"P.	c #E7EEF3",
-"Q.	c #E2EAF5",
-"R.	c #CEE2F2",
-"S.	c #BAD5E9",
-"T.	c #9DC2D7",
-"U.	c #5C7281",
-"V.	c #232A31",
-"W.	c #08090A",
-"X.	c #121418",
-"Y.	c #131619",
-"Z.	c #131719",
-"`.	c #87ACC3",
-" +	c #7B9BAE",
-".+	c #87ADC3",
-"++	c #8FB5CB",
-"@+	c #678295",
-"#+	c #96C0D8",
-"$+	c #607787",
-"%+	c #6B8595",
-"&+	c #96C1DB",
-"*+	c #6A8595",
-"=+	c #35424A",
-"-+	c #7090A1",
-";+	c #15191C",
-">+	c #2D3033",
-",+	c #DDE5EB",
-"'+	c #D2E3F1",
-")+	c #BAD7EB",
-"!+	c #A9CFE5",
-"~+	c #272F35",
-"{+	c #1C2227",
-"]+	c #4F697B",
-"^+	c #6B8FA9",
-"/+	c #759CB6",
-"(+	c #7BA0BB",
-"_+	c #80A5BC",
-":+	c #88B0C8",
-"<+	c #96C3DB",
-"[+	c #8FB6CD",
-"}+	c #80A1B3",
-"|+	c #556876",
-"1+	c #96BFD7",
-"2+	c #566B77",
-"3+	c #93B8CD",
-"4+	c #637A8D",
-"5+	c #9DC6DE",
-"6+	c #8FB4CA",
-"7+	c #55697A",
-"8+	c #6F8F9F",
-"9+	c #91BDD5",
-"0+	c #283239",
-"a+	c #050406",
-"b+	c #767B80",
-"c+	c #BDC6CE",
-"d+	c #D4E5F3",
-"e+	c #C1D7EA",
-"f+	c #A7CDE4",
-"g+	c #9FC9DE",
-"h+	c #668596",
-"i+	c #6D90AA",
-"j+	c #5C7994",
-"k+	c #60849F",
-"l+	c #6286A1",
-"m+	c #688CA8",
-"n+	c #7298B2",
-"o+	c #82A8C2",
-"p+	c #8FBAD5",
-"q+	c #96C2DB",
-"r+	c #89ADC4",
-"s+	c #96BED6",
-"t+	c #99C2DA",
-"u+	c #6C899A",
-"v+	c #92BBD2",
-"w+	c #9AC4DD",
-"x+	c #5B717D",
-"y+	c #9EC6DE",
-"z+	c #8BB1C9",
-"A+	c #718EA0",
-"B+	c #94C3DB",
-"C+	c #536B78",
-"D+	c #3E505F",
-"E+	c #4E6373",
-"F+	c #2C333C",
-"G+	c #070708",
-"H+	c #040404",
-"I+	c #1A1C1E",
-"J+	c #202326",
-"K+	c #050606",
-"L+	c #23292E",
-"M+	c #A1C0D4",
-"N+	c #9FC9DD",
-"O+	c #97C2DB",
-"P+	c #80A8C1",
-"Q+	c #668AA6",
-"R+	c #4B5D72",
-"S+	c #4C647A",
-"T+	c #5F80A0",
-"U+	c #60859E",
-"V+	c #678AA6",
-"W+	c #739BB5",
-"X+	c #85AEC7",
-"Y+	c #92BDD7",
-"Z+	c #96BFD5",
-"`+	c #627B8A",
-" @	c #89B1C9",
-".@	c #2B353C",
-"+@	c #7597B2",
-"@@	c #779CB8",
-"#@	c #52697C",
-"$@	c #1D2328",
-"%@	c #445663",
-"&@	c #5E7A8D",
-"*@	c #252F37",
-"=@	c #090909",
-"-@	c #859BB2",
-";@	c #859DB8",
-">@	c #6E8396",
-",@	c #252C33",
-"'@	c #9CC4D7",
-")@	c #92C0D9",
-"!@	c #79A0BA",
-"~@	c #6487A3",
-"{@	c #566979",
-"]@	c #8CB0C2",
-"^@	c #51697C",
-"/@	c #60849D",
-"(@	c #6D8EAC",
-"_@	c #7BA0BC",
-":@	c #8AB4CE",
-"<@	c #95C2DB",
-"[@	c #9AC5DC",
-"}@	c #95C1DA",
-"|@	c #607B8C",
-"1@	c #597488",
-"2@	c #7EA6BF",
-"3@	c #597587",
-"4@	c #455664",
-"5@	c #668598",
-"6@	c #82A9C4",
-"7@	c #617F92",
-"8@	c #1A2328",
-"9@	c #2B3137",
-"0@	c #728FAC",
-"a@	c #51657B",
-"b@	c #6B8AA8",
-"c@	c #8EAEC7",
-"d@	c #A8C8E2",
-"e@	c #92BDD6",
-"f@	c #769DBA",
-"g@	c #526E87",
-"h@	c #7490A0",
-"i@	c #A6CDE4",
-"j@	c #97BFD4",
-"k@	c #55697D",
-"l@	c #6286A0",
-"m@	c #7399B3",
-"n@	c #84ACC5",
-"o@	c #92BFD9",
-"p@	c #99C4DC",
-"q@	c #94C0DA",
-"r@	c #4F6575",
-"s@	c #7DA5BF",
-"t@	c #7FA2BC",
-"u@	c #8FB6CE",
-"v@	c #95C3DB",
-"w@	c #8EB8D2",
-"x@	c #6A879D",
-"y@	c #111318",
-"z@	c #252A30",
-"A@	c #81868C",
-"B@	c #A5ABAD",
-"C@	c #70767C",
-"D@	c #38434F",
-"E@	c #637F9B",
-"F@	c #516980",
-"G@	c #799AB5",
-"H@	c #A5C3D9",
-"I@	c #93BDD6",
-"J@	c #779EBA",
-"K@	c #445A6B",
-"L@	c #93B5C9",
-"M@	c #B6D3E8",
-"N@	c #AECFE4",
-"O@	c #95BDD2",
-"P@	c #52687A",
-"Q@	c #6486A3",
-"R@	c #7092B0",
-"S@	c #90BCD6",
-"T@	c #97C4DC",
-"U@	c #A0C9E0",
-"V@	c #99C5DD",
-"W@	c #86AEC6",
-"X@	c #8FBAD4",
-"Y@	c #91BDD6",
-"Z@	c #7094AC",
-"`@	c #2A353E",
-" #	c #0B0E10",
-".#	c #888D90",
-"+#	c #787D82",
-"@#	c #465360",
-"##	c #56697F",
-"$#	c #A6CADD",
-"%#	c #5A7382",
-"&#	c #6C8CAA",
-"*#	c #A5BED3",
-"=#	c #A7CAE0",
-"-#	c #94C1DA",
-";#	c #7EA4BF",
-">#	c #415160",
-",#	c #9DC3D5",
-"'#	c #B3CFE1",
-")#	c #AAC3D4",
-"!#	c #A8CDE4",
-"~#	c #89ACBE",
-"{#	c #567088",
-"]#	c #6C91AC",
-"^#	c #81A7C2",
-"/#	c #96C4DC",
-"(#	c #85A9BD",
-"_#	c #708C9B",
-":#	c #5A6E7B",
-"<#	c #6C8695",
-"[#	c #97C3DB",
-"}#	c #8BB5CE",
-"|#	c #425461",
-"1#	c #63819E",
-"2#	c #415465",
-"3#	c #0B0D0E",
-"4#	c #607387",
-"5#	c #687D8C",
-"6#	c #B8D6E9",
-"7#	c #7893A2",
-"8#	c #576F85",
-"9#	c #A7BACF",
-"0#	c #B0CEE5",
-"a#	c #98C4DC",
-"b#	c #88B1CA",
-"c#	c #36444E",
-"d#	c #8FA0AD",
-"e#	c #73818D",
-"f#	c #596D81",
-"g#	c #B4D0E4",
-"h#	c #A3CDE2",
-"i#	c #658296",
-"j#	c #6A8DAB",
-"k#	c #7BA5C0",
-"l#	c #94BAD2",
-"m#	c #6D899B",
-"n#	c #99C3DC",
-"o#	c #8EB9D2",
-"p#	c #7AA0BA",
-"q#	c #6C8FAB",
-"r#	c #6484A1",
-"s#	c #1F252C",
-"t#	c #121619",
-"u#	c #7E96B0",
-"v#	c #7A8A96",
-"w#	c #BCD7EA",
-"x#	c #A0C5D9",
-"y#	c #3C4B57",
-"z#	c #A9BACD",
-"A#	c #BCD5E8",
-"B#	c #84A6BA",
-"C#	c #8EA1AE",
-"D#	c #CFD1D4",
-"E#	c #ECF6FA",
-"F#	c #ABB7C2",
-"G#	c #556F84",
-"H#	c #57626A",
-"I#	c #5C7078",
-"J#	c #6C8AA7",
-"K#	c #80A6C0",
-"L#	c #91B8D0",
-"M#	c #94BFD8",
-"N#	c #87B0CA",
-"O#	c #7CA2BB",
-"P#	c #7097AF",
-"Q#	c #495E6F",
-"R#	c #0C0E11",
-"S#	c #3A3F43",
-"T#	c #8AA3BB",
-"U#	c #778592",
-"V#	c #C0D8EB",
-"W#	c #B3D5E9",
-"X#	c #404A53",
-"Y#	c #B2C2D3",
-"Z#	c #96A1AC",
-"`#	c #9DB2C3",
-" $	c #AEBECE",
-".$	c #EDEFF3",
-"+$	c #F7FAFC",
-"@$	c #B6BFC7",
-"#$	c #556E85",
-"$$	c #121314",
-"%$	c #2B2E2F",
-"&$	c #555A5E",
-"*$	c #3B4C5B",
-"=$	c #6F8EA4",
-"-$	c #92BED8",
-";$	c #9DC7DF",
-">$	c #87ACC1",
-",$	c #546A78",
-"'$	c #516874",
-")$	c #4E6570",
-"!$	c #4D6271",
-"~$	c #4C6271",
-"{$	c #4E677A",
-"]$	c #38454E",
-"^$	c #6C7278",
-"/$	c #86A1B6",
-"($	c #5C656C",
-"_$	c #A4B0BA",
-":$	c #555D64",
-"<$	c #657178",
-"[$	c #A6B0B5",
-"}$	c #939CA1",
-"|$	c #D4E4F1",
-"1$	c #A0BACE",
-"2$	c #B9C7D7",
-"3$	c #F6F7F9",
-"4$	c #C6CED1",
-"5$	c #506A7C",
-"6$	c #060607",
-"7$	c #676A6B",
-"8$	c #91999F",
-"9$	c #7CA3BE",
-"0$	c #96BCD4",
-"a$	c #5B717E",
-"b$	c #4B5F6C",
-"c$	c #455864",
-"d$	c #5B717F",
-"e$	c #81A5B9",
-"f$	c #98C4DD",
-"g$	c #93BFD8",
-"h$	c #87B1CA",
-"i$	c #7BA1BC",
-"j$	c #5A7489",
-"k$	c #222A33",
-"l$	c #838A92",
-"m$	c #9DADBC",
-"n$	c #ECF0F5",
-"o$	c #F1F9FB",
-"p$	c #818A8D",
-"q$	c #4A5155",
-"r$	c #6A6F72",
-"s$	c #7E898F",
-"t$	c #E6F1F7",
-"u$	c #CADCED",
-"v$	c #A0B7CC",
-"w$	c #C6D1DF",
-"x$	c #AFB3B4",
-"y$	c #5F707D",
-"z$	c #CBCFD1",
-"A$	c #F4F5F6",
-"B$	c #66737F",
-"C$	c #87B2CB",
-"D$	c #90B7CD",
-"E$	c #596E7B",
-"F$	c #586F7E",
-"G$	c #8BB0C8",
-"H$	c #91BED6",
-"I$	c #83ADC7",
-"J$	c #6D8EA7",
-"K$	c #3F5161",
-"L$	c #2D3A45",
-"M$	c #1F2020",
-"N$	c #BDC5CC",
-"O$	c #E0EDF5",
-"P$	c #BBCAD8",
-"Q$	c #E1E4E7",
-"R$	c #5E6368",
-"S$	c #5B5F62",
-"T$	c #D9E7F3",
-"U$	c #A4C3D6",
-"V$	c #89A3B3",
-"W$	c #7B91A1",
-"X$	c #627990",
-"Y$	c #42505A",
-"Z$	c #CACCCE",
-"`$	c #F9F9F9",
-" %	c #FDFDFD",
-".%	c #BCBEC0",
-"+%	c #5C7689",
-"@%	c #8DB9D3",
-"#%	c #8FB5CC",
-"$%	c #536471",
-"%%	c #98C1D9",
-"&%	c #91BED7",
-"*%	c #81AAC5",
-"=%	c #597386",
-"-%	c #41535F",
-";%	c #6486A2",
-">%	c #4D667D",
-",%	c #070809",
-"'%	c #44484E",
-")%	c #BEC8D0",
-"!%	c #8096A6",
-"~%	c #516473",
-"{%	c #A9ACAF",
-"]%	c #8B8F91",
-"^%	c #A8B3BD",
-"/%	c #C5DAEB",
-"(%	c #9FC8E1",
-"_%	c #8FBCD6",
-":%	c #81A8C2",
-"<%	c #6C90AC",
-"[%	c #56728C",
-"}%	c #585B5F",
-"|%	c #CBCDCD",
-"1%	c #C1C3C6",
-"2%	c #4F565F",
-"3%	c #82ABC3",
-"4%	c #93BCD3",
-"5%	c #95BED7",
-"6%	c #8EB9D3",
-"7%	c #5B788B",
-"8%	c #627E91",
-"9%	c #7FA7C1",
-"0%	c #6C91AB",
-"a%	c #546F87",
-"b%	c #6F7376",
-"c%	c #D5E2EF",
-"d%	c #A9C4D8",
-"e%	c #81A1BA",
-"f%	c #333940",
-"g%	c #5F6B76",
-"h%	c #C0D5E8",
-"i%	c #AACCE2",
-"j%	c #8EB8D3",
-"k%	c #7FA5BF",
-"l%	c #7095B0",
-"m%	c #4E697E",
-"n%	c #07090A",
-"o%	c #0D0F10",
-"p%	c #7193A6",
-"q%	c #96C3DC",
-"r%	c #8EBCD7",
-"s%	c #91BDD7",
-"t%	c #8FBBD6",
-"u%	c #7699AD",
-"v%	c #4D626F",
-"w%	c #252D33",
-"x%	c #101215",
-"y%	c #0C0D0E",
-"z%	c #0A0C0E",
-"A%	c #06090A",
-"B%	c #7F8488",
-"C%	c #D7E3F1",
-"D%	c #B6D0E4",
-"E%	c #A3C2D7",
-"F%	c #596872",
-"G%	c #A9BED0",
-"H%	c #B4D0E5",
-"I%	c #9EC8DC",
-"J%	c #8FB9D4",
-"K%	c #85ADC7",
-"L%	c #7FA4BE",
-"M%	c #4B606F",
-"N%	c #4E6372",
-"O%	c #89B6D0",
-"P%	c #92C1DA",
-"Q%	c #9DC7DD",
-"R%	c #95C0DA",
-"S%	c #94BED8",
-"T%	c #8BB8D1",
-"U%	c #7AA0B9",
-"V%	c #4E667A",
-"W%	c #344151",
-"X%	c #0C0D0F",
-"Y%	c #8A8F92",
-"Z%	c #D4E6F5",
-"`%	c #BCD5E9",
-" &	c #8599A5",
-".&	c #939DA6",
-"+&	c #C4DAEB",
-"@&	c #89A6B9",
-"#&	c #7D9FB5",
-"$&	c #98C3DC",
-"%&	c #95C0D9",
-"&&	c #7CA2B9",
-"*&	c #7697AE",
-"=&	c #698498",
-"-&	c #7394A8",
-";&	c #9EC7DF",
-">&	c #8DB1C4",
-",&	c #6B8594",
-"'&	c #50636C",
-")&	c #50626C",
-"!&	c #7F9FB1",
-"~&	c #93B8D0",
-"{&	c #627A88",
-"]&	c #90B6CC",
-"^&	c #93BDD7",
-"/&	c #87AFC9",
-"(&	c #7291A7",
-"_&	c #384651",
-":&	c #121618",
-"<&	c #12171B",
-"[&	c #4F6986",
-"}&	c #597998",
-"|&	c #324052",
-"1&	c #969CA1",
-"2&	c #D6E6F5",
-"3&	c #C6DCEE",
-"4&	c #505A64",
-"5&	c #82929F",
-"6&	c #99ABBB",
-"7&	c #A1B9CA",
-"8&	c #87A0B0",
-"9&	c #718EA1",
-"0&	c #8DB2C9",
-"a&	c #8BAEC4",
-"b&	c #586D7D",
-"c&	c #97C0D9",
-"d&	c #8DB3C9",
-"e&	c #95B8CD",
-"f&	c #9DC0D6",
-"g&	c #6F8B9C",
-"h&	c #354249",
-"i&	c #464E54",
-"j&	c #8A98A5",
-"k&	c #AABAC7",
-"l&	c #86939E",
-"m&	c #41494F",
-"n&	c #4A5861",
-"o&	c #97C1DA",
-"p&	c #5E7888",
-"q&	c #5C7482",
-"r&	c #88ACC2",
-"s&	c #91BFD7",
-"t&	c #799CB5",
-"u&	c #47596A",
-"v&	c #0D0F12",
-"w&	c #1A2127",
-"x&	c #56778D",
-"y&	c #688BA9",
-"z&	c #5D7F9E",
-"A&	c #547391",
-"B&	c #0E1013",
-"C&	c #9DA6AB",
-"D&	c #C8DCED",
-"E&	c #7A8996",
-"F&	c #B5CEE0",
-"G&	c #BCDBEC",
-"H&	c #B9D5EA",
-"I&	c #8BA2B2",
-"J&	c #6C8A9D",
-"K&	c #97BFD7",
-"L&	c #3E4E59",
-"M&	c #92B5CB",
-"N&	c #535F68",
-"O&	c #454F56",
-"P&	c #6F7C87",
-"Q&	c #ABC0D1",
-"R&	c #C7DCEE",
-"S&	c #C5DBED",
-"T&	c #C2D7EA",
-"U&	c #BFD8EA",
-"V&	c #BCD7EB",
-"W&	c #62717B",
-"X&	c #5B6F7B",
-"Y&	c #95C3DC",
-"Z&	c #8BB2C9",
-"`&	c #485761",
-" *	c #42525F",
-".*	c #6686A1",
-"+*	c #587896",
-"@*	c #1B2129",
-"#*	c #5C7A94",
-"$*	c #7DA2BD",
-"%*	c #84AEC7",
-"&*	c #749BB5",
-"**	c #5C7E9C",
-"=*	c #27343F",
-"-*	c #A4A9B2",
-";*	c #D9E7F4",
-">*	c #C8DBEC",
-",*	c #B1C8DA",
-"'*	c #5D6C76",
-")*	c #A8C5D8",
-"!*	c #A6BDD0",
-"~*	c #B9D6EA",
-"{*	c #B9D4E9",
-"]*	c #8198A8",
-"^*	c #8AADC3",
-"/*	c #8CB1CA",
-"(*	c #96C2D8",
-"_*	c #A3C7DF",
-":*	c #ADCDE3",
-"<*	c #ABD0E4",
-"[*	c #ADCFE3",
-"}*	c #AACEE4",
-"|*	c #A4CDE3",
-"1*	c #A1CBE1",
-"2*	c #A3CCE3",
-"3*	c #A2C9DF",
-"4*	c #41515A",
-"5*	c #81A2B5",
-"6*	c #94C0D7",
-"7*	c #5E7789",
-"8*	c #526777",
-"9*	c #516777",
-"0*	c #6B8CA5",
-"a*	c #759CBA",
-"b*	c #658AA5",
-"c*	c #587798",
-"d*	c #1B242B",
-"e*	c #0E1110",
-"f*	c #101214",
-"g*	c #202931",
-"h*	c #59758E",
-"i*	c #799FBB",
-"j*	c #84B1CA",
-"k*	c #86ACC6",
-"l*	c #354758",
-"m*	c #A0A6AE",
-"n*	c #DAE6F2",
-"o*	c #C4DCEE",
-"p*	c #B4D2E8",
-"q*	c #3E4A53",
-"r*	c #698091",
-"s*	c #5D7581",
-"t*	c #A3CAE0",
-"u*	c #A6CFE5",
-"v*	c #A5CCE5",
-"w*	c #718A9C",
-"x*	c #98C3DB",
-"y*	c #83ABC7",
-"z*	c #2E3B46",
-"A*	c #33414A",
-"B*	c #678398",
-"C*	c #8AB3CE",
-"D*	c #93BED7",
-"E*	c #97C4DB",
-"F*	c #42525E",
-"G*	c #88ACC0",
-"H*	c #789EB9",
-"I*	c #7A9FBB",
-"J*	c #7EA2BD",
-"K*	c #779DB5",
-"L*	c #577081",
-"M*	c #5B7B9B",
-"N*	c #1D2229",
-"O*	c #547390",
-"P*	c #54728D",
-"Q*	c #6082A0",
-"R*	c #688EA9",
-"S*	c #6689A7",
-"T*	c #6086A0",
-"U*	c #6285A1",
-"V*	c #6B8DAA",
-"W*	c #718FAB",
-"X*	c #3E5568",
-"Y*	c #969DA1",
-"Z*	c #DBE8F4",
-"`*	c #95ACBD",
-" =	c #758B9A",
-".=	c #A4C9DE",
-"+=	c #698190",
-"@=	c #667E8A",
-"#=	c #7D99AA",
-"$=	c #7B9BAD",
-"%=	c #6F8C9A",
-"&=	c #536976",
-"*=	c #84ADC6",
-"==	c #6D92AD",
-"-=	c #62829E",
-";=	c #43576A",
-">=	c #2F3B46",
-",=	c #5C788A",
-"'=	c #86AFC8",
-")=	c #93BED8",
-"!=	c #93BAD5",
-"~=	c #93BAD2",
-"{=	c #92BCD4",
-"]=	c #7EA2B6",
-"^=	c #3D4D56",
-"/=	c #485B67",
-"(=	c #7596A9",
-"_=	c #8CBBD4",
-":=	c #90BCD5",
-"<=	c #91BFD9",
-"[=	c #789BAD",
-"}=	c #465B6A",
-"|=	c #59789A",
-"1=	c #5D7F9D",
-"2=	c #5E839C",
-"3=	c #59799A",
-"4=	c #415569",
-"5=	c #2D3A46",
-"6=	c #2E3B49",
-"7=	c #4A647C",
-"8=	c #587690",
-"9=	c #39485A",
-"0=	c #7F8589",
-"a=	c #D9E8F5",
-"b=	c #CCDEEE",
-"c=	c #8597A5",
-"d=	c #B3D2E3",
-"e=	c #9BB3C4",
-"f=	c #B2CEE1",
-"g=	c #B2D1E7",
-"h=	c #ABCFE6",
-"i=	c #94B7CB",
-"j=	c #495C6A",
-"k=	c #688498",
-"l=	c #617B8A",
-"m=	c #85ADC8",
-"n=	c #78A0B9",
-"o=	c #62819B",
-"p=	c #2E3843",
-"q=	c #485A6C",
-"r=	c #67889C",
-"s=	c #8AB5CF",
-"t=	c #8EB9D1",
-"u=	c #6C899B",
-"v=	c #6E91A7",
-"w=	c #678399",
-"x=	c #6888A1",
-"y=	c #323E48",
-"z=	c #5B7585",
-"A=	c #98C5DD",
-"B=	c #83ACC1",
-"C=	c #2D373F",
-"D=	c #4B637C",
-"E=	c #567694",
-"F=	c #26313C",
-"G=	c #15191F",
-"H=	c #4D647A",
-"I=	c #252F39",
-"J=	c #5D6163",
-"K=	c #DDE9F5",
-"L=	c #CEDFEE",
-"M=	c #8898A5",
-"N=	c #B0CBDC",
-"O=	c #BFDAEC",
-"P=	c #BFDBEC",
-"Q=	c #BBDAEC",
-"R=	c #BAD7EA",
-"S=	c #6B808F",
-"T=	c #7297B0",
-"U=	c #8CB8D1",
-"V=	c #95C1D9",
-"W=	c #91BCD6",
-"X=	c #86AEC8",
-"Y=	c #7496B3",
-"Z=	c #6587A2",
-"`=	c #384958",
-" -	c #323F4B",
-".-	c #546A7C",
-"+-	c #6C88A1",
-"@-	c #779AB1",
-"#-	c #658297",
-"$-	c #3B4A58",
-"%-	c #33404B",
-"&-	c #202830",
-"*-	c #577287",
-"=-	c #86B1CC",
-"--	c #86ACC0",
-";-	c #6E8797",
-">-	c #9CC7DF",
-",-	c #92BCD5",
-"'-	c #91BCD5",
-")-	c #8EB6CE",
-"!-	c #344453",
-"~-	c #263039",
-"{-	c #364452",
-"]-	c #2B3643",
-"^-	c #2A2D2E",
-"/-	c #E1EBF4",
-"(-	c #D2E4F3",
-"_-	c #A0B2C3",
-":-	c #8094A1",
-"<-	c #BAD8EB",
-"[-	c #B8D6EA",
-"}-	c #485A6A",
-"|-	c #789FB9",
-"1-	c #90BBD3",
-"2-	c #94C4DC",
-"3-	c #88B3CD",
-"4-	c #7A9EB9",
-"5-	c #698BA8",
-"6-	c #4D677C",
-"7-	c #151A1E",
-"8-	c #1A2125",
-"9-	c #171C21",
-"0-	c #1D2329",
-"a-	c #1D262E",
-"b-	c #486073",
-"c-	c #6A8CAA",
-"d-	c #7CA2BE",
-"e-	c #90BDD7",
-"f-	c #9AC5DE",
-"g-	c #7493A2",
-"h-	c #708B99",
-"i-	c #8CB7D1",
-"j-	c #7494AB",
-"k-	c #68889F",
-"l-	c #6A8FA5",
-"m-	c #7BA2BC",
-"n-	c #171D21",
-"o-	c #1D262F",
-"p-	c #212B36",
-"q-	c #09090B",
-"r-	c #BBC2C9",
-"s-	c #D4E4F2",
-"t-	c #C1D9EB",
-"u-	c #44515A",
-"v-	c #92B5C9",
-"w-	c #6B8795",
-"x-	c #4E687E",
-"y-	c #7EA6C0",
-"z-	c #91BED8",
-"A-	c #93BFD9",
-"B-	c #8CB5D0",
-"C-	c #7DA4BE",
-"D-	c #6F92AE",
-"E-	c #6687A5",
-"F-	c #526C85",
-"G-	c #415669",
-"H-	c #384655",
-"I-	c #6589A4",
-"J-	c #6E92AE",
-"K-	c #80A8C2",
-"L-	c #92BCD6",
-"M-	c #91BFD8",
-"N-	c #799AAF",
-"O-	c #6A8796",
-"P-	c #81AAC3",
-"Q-	c #577187",
-"R-	c #1F2930",
-"S-	c #192027",
-"T-	c #1B2227",
-"U-	c #0D1010",
-"V-	c #0E1012",
-"W-	c #070709",
-"X-	c #5C6062",
-"Y-	c #DCE8F3",
-"Z-	c #C4DCEF",
-"`-	c #9BB3C6",
-" ;	c #3A424F",
-".;	c #313A44",
-"+;	c #35424C",
-"@;	c #374655",
-"#;	c #6E91AD",
-"$;	c #87B2CC",
-"%;	c #799EBA",
-"&;	c #618298",
-"*;	c #7095AF",
-"=;	c #435663",
-"-;	c #80A7C0",
-";;	c #95C4DC",
-">;	c #779CB3",
-",;	c #526D7E",
-"';	c #516A7A",
-");	c #526B7B",
-"!;	c #465764",
-"~;	c #34414E",
-"{;	c #5C7E9A",
-"];	c #2B3741",
-"^;	c #4B657F",
-"/;	c #5C7D9C",
-"(;	c #557088",
-"_;	c #0F0F10",
-":;	c #B9C2CA",
-"<;	c #CCDFEF",
-"[;	c #B4CDE1",
-"};	c #8DAEC8",
-"|;	c #6F93AE",
-"1;	c #678CA6",
-"2;	c #6E92AF",
-"3;	c #81A8C1",
-"4;	c #8FBBD5",
-"5;	c #8DB9D2",
-"6;	c #6D8FA2",
-"7;	c #586F82",
-"8;	c #394851",
-"9;	c #86B0C6",
-"0;	c #85AFC8",
-"a;	c #6F94AF",
-"b;	c #698DA8",
-"c;	c #6889A7",
-"d;	c #5E7E9F",
-"e;	c #475D75",
-"f;	c #2E3C4A",
-"g;	c #5D7E9D",
-"h;	c #405465",
-"i;	c #36393B",
-"j;	c #D7E5F1",
-"k;	c #A4C5DC",
-"l;	c #668496",
-"m;	c #7595AB",
-"n;	c #7798AE",
-"o;	c #97C2DA",
-"p;	c #789DB3",
-"q;	c #8BB1C8",
-"r;	c #93C0D9",
-"s;	c #8BB5CF",
-"t;	c #85AFC9",
-"u;	c #82AAC6",
-"v;	c #5F7C95",
-"w;	c #1E252C",
-"x;	c #54728E",
-"y;	c #587899",
-"z;	c #5A7B9B",
-"A;	c #2D3843",
-"B;	c #798086",
-"C;	c #D1E3F1",
-"D;	c #B7D3E8",
-"E;	c #7E98AB",
-"F;	c #181C1F",
-"G;	c #46525F",
-"H;	c #80A1B8",
-"I;	c #99C3DB",
-"J;	c #85ACC2",
-"K;	c #21272D",
-"L;	c #0A0B0D",
-"M;	c #53718C",
-"N;	c #577797",
-"O;	c #1B2229",
-"P;	c #0D0E0F",
-"Q;	c #B3BDC4",
-"R;	c #CADDED",
-"S;	c #B4D3E7",
-"T;	c #2B3339",
-"U;	c #2F3840",
-"V;	c #7899AC",
-"W;	c #93C1D9",
-"X;	c #8FBCD5",
-"Y;	c #8BB6D1",
-"Z;	c #8DB8D2",
-"`;	c #92BFD8",
-" >	c #678092",
-".>	c #547089",
-"+>	c #5C7F9B",
-"@>	c #1F262E",
-"#>	c #202223",
-"$>	c #B1BECB",
-"%>	c #C3D9EB",
-"&>	c #7B8D99",
-"*>	c #708B9A",
-"=>	c #85ABC1",
-"->	c #7FA3BA",
-";>	c #92BBD3",
-">>	c #7CA0B4",
-",>	c #97BDD4",
-"'>	c #657E8F",
-")>	c #93BDD4",
-"!>	c #88ADC7",
-"~>	c #6F94AE",
-"{>	c #526A7E",
-"]>	c #65849B",
-"^>	c #799DBB",
-"/>	c #84AFC9",
-"(>	c #8FB9D2",
-"_>	c #323C45",
-":>	c #516C84",
-"<>	c #658AA4",
-"[>	c #5B7C9B",
-"}>	c #2E3A49",
-"|>	c #2A3038",
-"1>	c #252D3A",
-"2>	c #1B1E20",
-"3>	c #ADBFCF",
-"4>	c #C0D6E7",
-"5>	c #B0CDE2",
-"6>	c #8EB3C9",
-"7>	c #526975",
-"8>	c #6B899D",
-"9>	c #597183",
-"0>	c #90BAD5",
-"a>	c #94C2DA",
-"b>	c #82ABC5",
-"c>	c #495E6E",
-"d>	c #82A8C3",
-"e>	c #81A4BA",
-"f>	c #7594A5",
-"g>	c #87ABC3",
-"h>	c #4D6573",
-"i>	c #6689A6",
-"j>	c #526E85",
-"k>	c #243037",
-"l>	c #607B96",
-"m>	c #7699B6",
-"n>	c #789EB5",
-"o>	c #303D48",
-"p>	c #7498B4",
-"q>	c #7094AF",
-"r>	c #597792",
-"s>	c #242F39",
-"t>	c #1A1D25",
-"u>	c #374553",
-"v>	c #4D677D",
-"w>	c #14191E",
-"x>	c #040505",
-"y>	c #171A1D",
-"z>	c #8A9FAD",
-"A>	c #BCD9EC",
-"B>	c #B5D3E7",
-"C>	c #A2CAE1",
-"D>	c #9DC7DE",
-"E>	c #9EC7DD",
-"F>	c #3B4A57",
-"G>	c #455867",
-"H>	c #98C2DB",
-"I>	c #85B0CC",
-"J>	c #7496B2",
-"K>	c #4C606F",
-"L>	c #6E8EA3",
-"M>	c #7EA0B6",
-"N>	c #91BBD3",
-"O>	c #8DB7D1",
-"P>	c #90BAD4",
-"Q>	c #96C1DA",
-"R>	c #3B4853",
-"S>	c #688AA5",
-"T>	c #4C657A",
-"U>	c #1B2026",
-"V>	c #2B3C44",
-"W>	c #5F7A90",
-"X>	c #587284",
-"Y>	c #536978",
-"Z>	c #88B1CC",
-"`>	c #759AB8",
-" ,	c #617E9A",
-".,	c #556F85",
-"+,	c #20272E",
-"@,	c #323D48",
-"#,	c #333E4A",
-"$,	c #060707",
-"%,	c #4A5159",
-"&,	c #ACC3D5",
-"*,	c #ACCFE5",
-"=,	c #5A6874",
-"-,	c #AACDE1",
-";,	c #9CC6DC",
-">,	c #35414C",
-",,	c #769AB2",
-"',	c #80AAC5",
-"),	c #6F92AB",
-"!,	c #38464F",
-"~,	c #7EA4B9",
-"{,	c #97C3DC",
-"],	c #7A9FB6",
-"^,	c #3F505C",
-"/,	c #6D8DA6",
-"(,	c #1E282E",
-"_,	c #080909",
-":,	c #090A0C",
-"<,	c #344452",
-"[,	c #3B4857",
-"},	c #7799AE",
-"|,	c #8DB6D1",
-"1,	c #66869E",
-"2,	c #3D4957",
-"3,	c #536C84",
-"4,	c #353F4C",
-"5,	c #111215",
-"6,	c #65727E",
-"7,	c #A6BCCD",
-"8,	c #5D6972",
-"9,	c #AED0E6",
-"0,	c #99C5DC",
-"a,	c #8DB5D0",
-"b,	c #8DB5CE",
-"c,	c #90BBD5",
-"d,	c #84AAC5",
-"e,	c #8EBBD5",
-"f,	c #80A7C1",
-"g,	c #6C8DA2",
-"h,	c #85AFC6",
-"i,	c #61839B",
-"j,	c #374352",
-"k,	c #576D83",
-"l,	c #80A6C1",
-"m,	c #81A4BB",
-"n,	c #111315",
-"o,	c #111418",
-"p,	c #4C6378",
-"q,	c #33424C",
-"r,	c #37454D",
-"s,	c #8DB4CF",
-"t,	c #7397B3",
-"u,	c #3A495A",
-"v,	c #0D0F13",
-"w,	c #27303A",
-"x,	c #272E36",
-"y,	c #0F1012",
-"z,	c #90A4B2",
-"A,	c #A8CBE2",
-"B,	c #91BCD4",
-"C,	c #80ABC3",
-"D,	c #567083",
-"E,	c #67899D",
-"F,	c #94C2DB",
-"G,	c #95C1DB",
-"H,	c #779CB2",
-"I,	c #60849E",
-"J,	c #64849F",
-"K,	c #1A1F22",
-"L,	c #405061",
-"M,	c #79A1BD",
-"N,	c #324051",
-"O,	c #6183A1",
-"P,	c #6B8FAD",
-"Q,	c #6485A2",
-"R,	c #34444F",
-"S,	c #060606",
-"T,	c #2D3339",
-"U,	c #B2CBDF",
-"V,	c #94BCD5",
-"W,	c #7DA2BA",
-"X,	c #3F5264",
-"Y,	c #5A7991",
-"Z,	c #7195B3",
-"`,	c #7BA5BD",
-" '	c #81AAC6",
-".'	c #88B2CC",
-"+'	c #8EBBD4",
-"@'	c #8AB2CC",
-"#'	c #82ADC7",
-"$'	c #7092A5",
-"%'	c #95C2DA",
-"&'	c #41525F",
-"*'	c #6387A3",
-"='	c #475F72",
-"-'	c #21282F",
-";'	c #5B7288",
-">'	c #0D0F11",
-",'	c #0B0E11",
-"''	c #212C36",
-")'	c #26323C",
-"!'	c #161B20",
-"~'	c #55616D",
-"{'	c #9BB9D0",
-"]'	c #799EB6",
-"^'	c #27313A",
-"/'	c #1A222B",
-"('	c #5D7E99",
-"_'	c #6587A4",
-":'	c #6789A6",
-"<'	c #6B8EAB",
-"['	c #628097",
-"}'	c #6D8B9D",
-"|'	c #769AAF",
-"1'	c #6E91A9",
-"2'	c #6C8EAD",
-"3'	c #6E91AF",
-"4'	c #3C4D59",
-"5'	c #8BB1CB",
-"6'	c #232D32",
-"7'	c #13171B",
-"8'	c #232B32",
-"9'	c #839AAF",
-"0'	c #789BB3",
-"a'	c #283138",
-"b'	c #0C0E0F",
-"c'	c #242B33",
-"d'	c #3D4D5B",
-"e'	c #435768",
-"f'	c #4B6176",
-"g'	c #283137",
-"h'	c #8DB4CC",
-"i'	c #41535E",
-"j'	c #405362",
-"k'	c #3C4F60",
-"l'	c #3C4E5B",
-"m'	c #2B353E",
-"n'	c #526876",
-"o'	c #92BAD3",
-"p'	c #1B1F23",
-"q'	c #31383F",
-"r'	c #7F9CB6",
-"s'	c #21292F",
-"t'	c #29333F",
-"u'	c #1F252E",
-"v'	c #090A0E",
-"w'	c #4D626E",
-"x'	c #96BDD3",
-"y'	c #191D20",
-"z'	c #13181B",
-"A'	c #80A4BC",
-"B'	c #1B2027",
-"C'	c #5D7182",
-"D'	c #2C383F",
-"E'	c #364857",
-"F'	c #1A2028",
-"G'	c #333F49",
-"H'	c #7FA2B5",
-"I'	c #4A5E6E",
-"J'	c #232E35",
-"K'	c #252D35",
-"L'	c #2F3A41",
-"M'	c #0A0B0E",
-"N'	c #14191D",
-"O'	c #5A717F",
-"P'	c #212931",
-"Q'	c #222B34",
-"R'	c #101216",
-"S'	c #21272B",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                    .                                                           ",
-"                                                                    +                                                           ",
-"                                    @               #             $ %                                                           ",
-"                                  & *               =             - ;                                                           ",
-"                                  > , '             ) !         ~ { ]                                                           ",
-"                  ^ /             ( _ : < [ } | 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 U V W       X Y                                               ",
-"                    Z `  ...+.@.#.$.%.O &.*.=.-.;.>.,.'.).!.~.~.~.{.].^./.(._.:.<.                                              ",
-"                    b [.}.|.#.1.2.3.4.{.~.~.~.~.5.6.5.~.7.8.{.~.~.~.~.9.0.a.b.].c.                                              ",
-"                  d.e.f.g.h.i.j.k.{.~.~.~.~.l.~.m.% n.~.o.{.{.~.~.~.~.p.V 9.~.q.r.                                              ",
-"                s.t.u.v.w.x.u y.z.A.B.5.~.~.5.C.D.E.F.~.~.G.~.~.~.G.H.I.J.~.~.J.K.L.  M.N.                                      ",
-"              O.P.Q.R.S.T.U.V.W.X.Y.Z.`.~.~.5. +.+++@+U ~.~.~.~.~.#+$+%+,.~.~.G.&+*+=+-+;+                                      ",
-"            >+,+Q.'+)+!+~+{+]+^+/+(+_+:+<+~.[+}+U 9.|+5.~.~.~.~.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+5.U ~.U r+s+~.~.~.t+u+v+w+x+y+~.z+A+t+B+C+D+E+          F+G+                        ",
-"        H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+V ~.~.~.~.U ~.~.~.o.9.{.Z+`+9.~.~.~.V  @.@+@@@#@  $@%@&@*@                          ",
-"        =@-@;@>@,@'@'.)@!@~@{@]@^@/@l+(@_@:@<@~.~.~.U {.~.~.~.{.~.~.{.[@~.~.~.~.}@|@1@2@3@4@5@6@7@8@                            ",
-"        9@0@a@b@c@d@-.e@f@g@h@i@j@k@l@V+m@n@o@p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.q@r@s@t@u@v@w@x@y@                              ",
-"z@A@B@C@D@E@X F@G@H@R I@J@K@L@M@N@O@P@Q@R@o+S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.9.U@V@W@X@<+V Y@Z@`@ #                              ",
-"    .#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.U (#_#:#<#p@{.[#}#|#1#2#                              ",
-"      3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#S@/#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.l#m#9.{.~.n#o#p#q#r#s#                            ",
-"      t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#% J#K#S@T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.L#0.l.~.~.{.M#N#O#P#Q#R#                          ",
-"      S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$a#~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.o.o.;$9.G.~.>$,$'$)$!$~${$]$                      ",
-"      ^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$:+<+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.G.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$M#p@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.;$D$E$F$G$H$I$J$K$L$                          ",
-"    M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%<+{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#%$%%%p@&%*%=%-%;%>%,%                        ",
-"    '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%-$T@~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.4%5%U p@6%7%8%9%0%a%y                         ",
-"    b%c%d%e%f%g%h%i%G.[#j%k%l%m%n%o%p%@%q%{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.~.~.~.~.~.V G.}@r%s%t%u%v%w%M.x%y%z%A%              ",
-"    B%C%D%E%F%G%H%I%V o.<@J%K%L%M%N%O%P%p@~.~.~.~.~.~.~.~.~.U ~.~.U 9.Q%{.~.~.~.~.~.{.%%U {.~.~.{.v@R%S%T%U%V%W%    X%$         ",
-"    Y%Z%`% &.&+&@&#&U ~.{.$&%&&&*&=&-&T@~.~.~.~.~.~.~.~.~.~.~.;&>&,&'&)&!&5+~.~.~.~.{.~&{&]&9.~.p@^&/&(&_&:&      <&[&}&|&      ",
-"    1&2&3&4&5&6&7&8&9&l.~.{.V 0&a&b&c&~.~.~.~.~.~.~.5.d&e&f&g&h&i&j&k&l&m&n&~.~.G.~.~.~.o&p&q&r&s&t&u&v&        w&x&y&z&A&B&    ",
-"    C&2&D&E&F&G&G&H&I&J&U ~.~.U K&L&,.~.~.~.~.~.~.~.U M&N&O&P&Q&R&S&T&U&V&W&X&].{.~.~.{./#Y&Z&`& *.*+*@*      (.#*$*%*&***=*    ",
-"    -*;*>*,*'*)*!*~*{*]*^*~.5.{.5./*U ~.~.~.~.~.~.{.[#(*_*:*<*[*[*}*|*1*2*3*4*5*U ~.~.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*1+~.~.~.~.~.~.~.~.~.~.~.x*y*z*A*B*C*D*E*V U ~.G.~.:.F*G*l.{.R%X+H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*    ",
-"    Y*Z*D&`* =.=+=@=#=$=%=&={.~.~.~.~.~.~.~.~.~.~.<+*===-=;=>=,='=)=[#p@!=~={=]=^=/=(=a#&%_=:=<=-#[=}=k$|=1=2=3=4=5=6=7=8=9=    ",
-"    0=a=b=c=d=e=f=g=h=i=j=k=l=5.~.~.~.~.~.~.~.~.~.V -$m=n===o=p=q=r=s=t=:+u=v=w=x=y=z=A=J.V U ~.V [#B=C=D=1=E=F=      G=H=I=    ",
-"    J=K=L=M=N=O=P=Q=R=S=T=U=V=5.U ~.~.~.~.~.~.~.~.~.{.x*W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-9.x*)=,-'-)-c.!-~-          {-]-    ",
-"    ^-/-(-_-:-<-<-[-%.}-|-1-T@~.{.~.~.~.~.~.~.~.~.~.~.V 2-^&3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-V@i-j-k-l-T=m-7@n-          o-p-    ",
-"    q-r-s-t-u-v-!+2*w-x-y-z-V ~.~.~.~.~.~.~.~.~.~.~.~.~.~./#A-B-C-D-E-F-G-H-I-J-K-L-<@M-W=N-O-P-Q-R-<&S-T-U-V-          W-      ",
-"      X-Y-Z-`- ;.;+;@;#;$;q+~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./#v@W=N#%;&;*;=;-;s=-#;;>;,;';);!;~;{;];^;/;(;H+                    ",
-"      _;:;<;[;};|;1;2;3;4;{.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.T@-#5;6;7;8;9;[#V <+0;a;b;c;E-d;e;f;|=g;h;                      ",
-"        i;j;V#k;F.l;m;n;o;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.~.{.p@S@s=p;q;~.~.{.r;s;t;u;~$v;w;x;y;z;A;                      ",
-"        H+B;C;D;E;F;G;H;~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.{.U ~.~.V E*E*V ~.~.~.{.T@/#I;J;K;L;M;y;N;O;                      ",
-"          P;Q;R;S;T;U;~.{.~.~.~.~.~.~.~.~.l.U {.p@~.~.{.V ~.~.5+V;].~.~.~.~.{.{.p@W;X;Y;Z;`;/# >W..>+>N;@>                      ",
-"            #>$>%>&>*>G.~.~.~.~.~.~.~.~.{.`.=>V=->;>~.n##&>>T@,>'>].~.~.~.~.~.)>!>i$~>{>]>^>/>(>_>:><>[>}>      |>1>            ",
-"              2>3>4>5>U@U ~.~.~.~.~.~.~.{.6>7>8>9>0>a#a>b>c>d>e>f>~.~.~.V ~.~.g>h>i>1=j>,%k>l>m>n>o>p>q>r>s>t>u>v>w>            ",
-"              x>y>z>A>B>C>5+D>E>~.~.~.~.{.%&F>G>3;s%{.H>I>J>K>L>M>~.V N>O>P>x*Q>R>S>T>U>    X%V>W>X>Y>Z>P-`> ,.,+,              ",
-"              @,#,$,%,&,1.*,=,-,;,{.p@V {.X@>,,,Z;V ~.5.`;',),!,~,~.{,],^,/,/&-$F$(,_,          :,<,[,},<@|,1,2,                ",
-"            B&3,4,    5,6,7,8,9,0,`;a,b,B+c,d,s=<+~.~.~.a#e,f,g,h,V -#9$i,j,k,l,m,n,            o,p,q,r,s,t,u,v,                ",
-"            w,x,          y,z,A,B,C,D,E,o@F,G,<+~.~.~.~.~.;;P>j%}@p@H,]#I,J,K,L,M,=+              N,O,P,Q,R,S,                  ",
-"                          T,U,V,W,X,Y,Z,`, '.'+'x*~.{.O+@%@'#'$'%'a#&'*'='-'    ~;;'>'            ,''')'!'                      ",
-"                          ~'{']'^'/'('_'_':'<'['}'{.V |'1'2'3'4'5'}@6'7'          8'K;                                          ",
-"                        v&9'0'a'    b'c'd'e'f'1@g'h'G.i'j'k'l'm'n'o'p'              y                                           ",
-"                        q'r's'        t'u'H+    v'w'x'y'        z'A'B'                                                          ",
-"                        C'D'          E'F'        G'H'            I'J'                                                          ",
-"                      K'L'            M'          N'O'            P'Q'                                                          ",
-"                      R'                            S'                                                                          ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                "};
diff --git a/minilibx_macos/Makefile b/minilibx_macos/Makefile
new file mode 100644
index 0000000..6081605
--- /dev/null
+++ b/minilibx_macos/Makefile
@@ -0,0 +1,20 @@
+#
+#
+
+NOM=libmlx.a
+SRC= mlx_shaders.c mlx_new_window.m mlx_init_loop.m mlx_new_image.m mlx_xpm.c mlx_int_str_to_wordtab.c
+OBJ1=$(SRC:.c=.o)
+OBJ=$(OBJ1:.m=.o)
+CFLAGS+=-O2
+
+all: $(NOM)
+
+$(NOM):	$(OBJ)
+	ar -rc $(NOM) $(OBJ)
+	ranlib $(NOM)
+
+clean:
+	rm -f $(NOM) $(OBJ) *~
+	rm -f mlx_app
+
+re: clean all
diff --git a/minilibx_macos/_README_ b/minilibx_macos/_README_
new file mode 100644
index 0000000..d0a5548
--- /dev/null
+++ b/minilibx_macos/_README_
@@ -0,0 +1,29 @@
+#
+#
+#  14/10/2015
+#  ol@staff.42.fr
+#
+
+MinilibX
+
+Interface simplifiee de programmation graphique pour debutant
+#
+
+Cette minilibX est la version native pour MacOSX.
+[ Elle n'utilise plus les librairies graphiques X11, ni XQuartz le serveur X pour MacOSX. ]
+L'interface / l'API, reste identique a la version precedente. Les man presents dans la minilibX
+d'origine sont toujours valides.
+
+Le fichier mlx.h a inclure dans vos programmes rapelle les petites differences de comportement
+entre les 2 versions, dues a la gestion graphique differente selon les systemes d'exploitation.
+
+#
+
+Cette version utilise le systeme de fenetrage Cocoa de MacOSX ( AppKit ), et les primitives
+graphiques OpenGL moderne.
+
+#
+
+License: la MinilibX macos est fournie sous license BSD: Copyright Olivier Crouzet - 2014-2015
+         la MinilibX est fournie sous license BSD:  Copyright Olivier Crouzet - 1999-2015
+#
diff --git a/minilibx_macos/font.c b/minilibx_macos/font.c
new file mode 100644
index 0000000..656d248
--- /dev/null
+++ b/minilibx_macos/font.c
@@ -0,0 +1,3525 @@
+/* GIMP RGBA C-Source image dump (font.c) */
+
+static const struct {
+  unsigned int 	 width;
+  unsigned int 	 height;
+  unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
+  unsigned char	 pixel_data[1140 * 20 * 4 + 1];
+} font_atlas = {
+  1140, 20, 4,
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\214\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  ")\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\263\377\377\377\13\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377b\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\270\377\377"
+  "\377u\377\377\377\13\377\377\377\252\377\377\377\255\377\377\377\13\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\374\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377e\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377\377\377\267"
+  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\343\377\377"
+  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\373\377\377\377\243\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "b\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377)\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
+  "c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377b\377\377\377c\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377S\377\377\377c\377\377\3775\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377"
+  "\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377\377\377"
+  "\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377"
+  "\377\371\377\377\377\233\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372"
+  "\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377U\377\377\377e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377s\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\214\377\377\377\372\377"
+  "\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\367\377\377\377"
+  "\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\340"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\214\377\377\377\372\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377"
+  "\372\377\377\377\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377\374\377"
+  "\377\377\370\377\377\377\370\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377"
+  "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
+  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372\377\377\377\363\377"
+  "\377\377\333\377\377\377m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\364\377\377\377\366\377\377\377%\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\377\377\377\377\254\377\377\377=\377\377\377\375\377"
+  "\377\377\372\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\363\377\377\377%\377\377\377"
+  "\224\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\336\377\377\377\375\377"
+  "\377\377x\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377=\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377~\377\377\377\374\377\377\377\377\377\377"
+  "\377\376\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377"
+  "\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\325\377\377\377\377"
+  "\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\33\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377v\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377`\377\377\377\300\377\377\377\342\377\377\377Z\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377"
+  "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377"
+  "\377\377b\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\343\377\377\377\273"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
+  "\377\377\315\377\377\377\337\377\377\377\333\377\377\377\333\377\377\377"
+  "\333\377\377\377\343\377\377\377\223\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\346\377\377\377"
+  "\370\377\377\377\364\377\377\377\320\377\377\377O\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\315\377\377\377\337\377\377\377"
+  "\333\377\377\377\333\377\377\377\333\377\377\377\333\377\377\377\333\377"
+  "\377\377\323\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\377\377\3772\377\377\377\316\377\377\377\366\377\377\377\373\377\377\377"
+  "\344\377\377\377\200\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377u\377\377\377\342\377\377\377\370\377\377\377\364"
+  "\377\377\377\305\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377)\377\377\3775\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\371\371\377.\377\377\377V\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\321\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377"
+  "\273\377\377\377\332\377\377\377\322\377\377\377\206\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3778\377\377"
+  "\377\367\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\374\377\377\377\360\377\377\377\253\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377\377\377\377"
+  "\377\373\377\377\377\247\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\374\377\377\377\324\377\377\377B\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\346"
+  "\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
+  "\377\377\352\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\333\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\364"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377"
+  "\377\377\377\377\377\377\377\377\303\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\225\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\356\377\377\377"
+  "\376\377\377\377v\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
+  "\377\377\377\352\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
+  "\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\375"
+  "\377\377\377\321\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\307\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\330\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\206\377\377\377\366\377\377\377\377\377\377\377"
+  "\377\377\377\377\373\377\377\377\246\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\370\377\377\377\324\377\377\377"
+  "B\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206"
+  "\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373\377\377"
+  "\377\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\364\377\377\377\312\377\377\377\33\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\365\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\342\377\377\377V\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\252\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\352\377\377\377\364\377\377\377%\377\377"
+  "\377\377\377\377\377\377\377\377\377}\377\377\377\376\377\377\377\332\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\262\377\377\377\377\377\377\377"
+  "\216\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\372\377"
+  "\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\345\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
+  "\367\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\377\377"
+  "\377\206\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\361"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255\377\377\377"
+  "\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377;\377\377\377\373\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377"
+  "\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377\377\377\254"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\376\377\377\377_\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\374"
+  "\377\377\377\355\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377"
+  "\377\377\374\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\334\377\377\377\377\377\377\377\346\377\377\377\272\377\377\377"
+  "\342\377\377\377\276\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377"
+  "l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377"
+  "\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377"
+  "\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\254\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377`\377\377\377\262\377\377\377=\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\377\377\377\377"
+  "\325\377\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377\377\363"
+  "\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\351\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\377"
+  "\377\377\377\243\377\377\377;\377\377\377\374\377\377\377\364\377\377\377"
+  "%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\355\0\0\0\0\377\377\377\320\377\377\377\346\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\247"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\352\377\377\377S\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "}\377\377\377\377\377\377\377\326\377\377\377\334\377\377\377\376\377\377"
+  "\377l\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\323\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\354\377\377\377\364\377"
+  "\377\377\226\377\377\377\373\377\377\377\337\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
+  "\377\362\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377"
+  "\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377"
+  "\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377\377\205\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377_\377\377\377\232\377\377\377\13\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "!\377\377\377\371\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\377\377"
+  "\377\377\365\377\377\377\353\377\377\377\377\377\377\377\367\377\377\377"
+  "2\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377"
+  "\377\377\377\377\377\377\376\377\377\377\335\377\377\377\371\377\377\377"
+  "\377\377\377\377\352\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\342"
+  "\377\377\377\362\377\377\377\377\377\377\377\375\377\377\377\\\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "U\377\377\377\374\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377"
+  "\377\377\377\377\373\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\251\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\247\377\377\377\377\377\377\377\377\377\377\377\360\377\377\377"
+  "\373\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\376\377\377"
+  "\377\374\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\367"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\25\377"
+  "\377\377\356\377\377\377\377\377\377\377\351\377\377\377\350\377\377\377"
+  "\376\377\377\377\376\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377|\377\377\377\376\377\377\377\377\377\377\377\345\377"
+  "\377\377\356\377\377\377\377\377\377\377\355\377\377\377%\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377}\377\377\377\374\377\377\377\254\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377V\377\377\377\375\377\377\377\241\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377"
+  "\377\377\372\377\377\377\343\377\377\377u\377\377\377\217\377\377\377\374"
+  "\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\233\377\377\377\376\377\377\377\377\377\377\377"
+  "\354\377\377\377\375\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\342\377\377\377\304\377\377\377\332\377\377\377\376\377\377\377\377\377"
+  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\331\377\377\377\377\377\377\377\373\377\377\377\306\377\377\377"
+  "\307\377\377\377\375\377\377\377\376\377\377\377Q\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\330\377\377"
+  "\377\310\377\377\377\370\377\377\377\377\377\377\377\375\377\377\377f\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374"
+  "\377\377\377\376\377\377\377\323\377\377\377\327\377\377\377\327\377\377"
+  "\377\327\377\377\377\316\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\324\377"
+  "\377\377\327\377\377\377\327\377\377\377\327\377\377\377\312\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362"
+  "\377\377\377\377\377\377\377\365\377\377\377\277\377\377\377\321\377\377"
+  "\377\377\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\356\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377}\377\377\377\332\377\377\377\323\377\377"
+  "\377\371\377\377\377\377\377\377\377\331\377\377\377\327\377\377\377\266"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\302\377\377\377\323\377\377\377\322\377\377\377\322\377\377\377\342\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377"
+  "\377\377\335\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\336\0\0\0\0\0\0"
+  "\0\0\377\377\377\275\377\377\377\377\377\377\377\330\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377"
+  "\364\377\377\377%\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377"
+  "\375\377\377\377\377\377\377\377\325\377\377\377\313\377\377\377\376\377"
+  "\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377"
+  "\377\377\322\377\377\377\366\377\377\377\377\377\377\377\355\377\377\377"
+  "\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\375"
+  "\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377\376\377\377"
+  "\377\377\377\377\377\216\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377\377"
+  "\377\322\377\377\377\371\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\377\377\377\377\330\377\377\377\271\377\377\377\351\377\377\377\377\377"
+  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377}\377\377"
+  "\377\332\377\377\377\327\377\377\377\323\377\377\377\371\377\377\377\377"
+  "\377\377\377\331\377\377\377\326\377\377\377\332\377\377\377p\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
+  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377\365\377"
+  "\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\345"
+  "\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\377\377\377"
+  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\361\377\377\377\347\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\214\377\377\377\377\377\377\377\343\0\0\0\0\0\0\0\0\377"
+  "\377\377\261\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377i"
+  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377\372\377\377\377"
+  "8\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\327\377"
+  "\377\377\322\377\377\377\322\377\377\377\316\377\377\377\351\377\377\377"
+  "\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\320\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\377\377\377\377\272\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\371\377\377\377"
+  "i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
+  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\373\377\377\377"
+  "\356\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "S\377\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
+  "\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\252\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\360\377\377\377\334\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\247\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\337\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\3\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331"
+  "\377\377\377\376\377\377\377i\377\377\377K\377\377\377\374\377\377\377\366"
+  "\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\316\377\377\377\333\0\0\0\0\377\377\377\316\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "8\377\377\377\372\377\377\377\377\377\377\377\307\377\377\377\237\377\377"
+  "\377\364\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\232\377\377\377\375\377\377\3772\377\377\377=\377\377"
+  "\377\375\377\377\377\254\377\377\377!\377\377\377\371\377\377\377\367\377"
+  "\377\3778\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
+  "\372\377\377\377\346\377\377\377\13\377\377\377\371\377\377\377\333\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\13\377\377\377\355\377\377\377\375\377\377\377\\\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377!\377\377\377\372\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\327\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377"
+  "\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377"
+  "\377\377\377\377\377\377\353\377\377\377\13\0\0\0\0\377\377\377\320\377\377"
+  "\377\377\377\377\377\260\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\205\377\377\377\322\377\377\377\353\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\325\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\33"
+  "\377\377\377\356\377\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\375\377\377\377Z\0\0\0\0"
+  "\0\0\0\0\377\377\377\325\377\377\377\377\377\377\377\257\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377"
+  "\356\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\377\377"
+  "\377\377\216\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\224\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\302\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\260\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\330\377\377\377\377"
+  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\336\377\377\377\377\377"
+  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\276\377\377\377\377\377\377\377\377\377\377\377\225\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\325\377"
+  "\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
+  "\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377q\0\0\0\0\377\377"
+  "\377\33\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\377\377"
+  "\377\377\376\377\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243"
+  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\377\377\377\377\327\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\376\377"
+  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\257\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377U\0\0\0\0\377\377\377\33\377\377\377\353\377\377\377\377"
+  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377K\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377"
+  "\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\246\377\377"
+  "\377\213\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377\377\377\363\377\377\377\13\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\377\377\377\377"
+  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\270\377\377\377\377\377"
+  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\307\377\377\377\377\377\377\377\375\377\377\3778\377\377\377\13"
+  "\377\377\377\352\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\377\377\377\377\377"
+  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\377\377\377\377\315\0\0\0\0\0\0\0\0\377\377\377\253\377\377\377\377\377"
+  "\377\377\346\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\25\377\377"
+  "\377\356\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\377\377\377\377\310\0\0\0\0\0\0\0\0\377"
+  "\377\377\253\377\377\377\377\377\377\377\342\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0"
+  "\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\367\377\377\377)\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377z\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\355\377\377\377\363\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
+  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
+  "\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\347\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\247\377\377"
+  "\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377"
+  "\377\377\374\377\377\377\333\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\342\377\377\377\376\377\377\377v\377\377\377\33\377\377"
+  "\377\366\377\377\377\367\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\316\0\0\0\0\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\264\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\25\377\377\377\356\377\377\377\376\377\377\377v\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\277\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\335\377\377\377\370\377\377\377\353\377\377\377\363\377"
+  "\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377V\377\377\377\33\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377b\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377S\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
+  "\377\3775\377\377\377;\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377"
+  "\377V\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377\377\326"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377E\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377b\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
+  "\377\375\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377X\0"
+  "\0\0\0\0\0\0\0\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377E\377\377\377K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377S\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377U\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377E\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
+  "\377\377\0\377\377\377\6\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\377\377\377\33"
+  "\377\377\377\364\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\3772\377\377\377\274\377\377\377\361\377\377"
+  "\377\375\377\377\377\265\377\377\377\367\377\377\377\372\377\377\377\221"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377"
+  "\374\377\377\377\336\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\261\377\377"
+  "\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\232\377\377\377"
+  "\371\377\377\377\33\377\377\377;\377\377\377\374\377\377\377\217\377\377"
+  "\377\335\377\377\377\375\377\377\377\\\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\377\377\377e"
+  "\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377"
+  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
+  "\227\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377"
+  "\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\306\377\377\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377"
+  "\377\377`\377\377\377\375\377\377\377\346\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\3772\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
+  "\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\231\377\377\377\377"
+  "\377\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\356\377\377\377\374"
+  "\377\377\377\332\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\347\377\377\377\13"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377U\377\377\377"
+  "\375\377\377\377\266\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
+  "\377\236\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377"
+  "\361\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377j\377\377\377"
+  "\376\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377G\377\377\377\350\377\377\377\377\377\377\377\367"
+  "\377\377\377y\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\207\377\377\377\307\377\377\377\304\377\377\377\304\377\377\377"
+  "\304\377\377\377\304\377\377\377\304\377\377\377\243\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\351\377\377"
+  "\377\377\377\377\377\365\377\377\377n\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\345\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\273\377\377\377\377\377\377\377\234"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\376\377\377\377i\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373"
+  "\377\377\377\344\377\377\377\317\377\377\377\376\377\377\377v\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377X\377\377\377\375\377\377"
+  "\377\327\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\300"
+  "\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\342\377\377\377\377"
+  "\377\377\377\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
+  "\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\237\377\377\377\203\377\377\377\377\377\377\377\375\377\377\377"
+  "Q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
+  "\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377"
+  "\377\377\377\377\377\377\377\377\377\377\217\377\377\377X\377\377\377\375"
+  "\377\377\377\373\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\313\377\377\377\373\377\377\377\371\377\377\377\366"
+  "\377\377\377%\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\375"
+  "\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
+  "\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306"
+  "\377\377\377\375\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377"
+  "\33\377\377\377\362\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\377\377"
+  "\377!\377\377\377\371\377\377\377\375\377\377\377M\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0"
+  "\0\0\0\0\377\377\377\25\377\377\377\370\377\377\377\364\377\377\377%\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
+  "\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377"
+  "\377\377\311\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\222\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\377\377\377\307\377\377\377\355\377\377\377"
+  "%\377\377\377K\377\377\377\374\377\377\377\260\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\376\377\377\377\333\377\377"
+  "\377\243\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\375\377"
+  "\377\377M\377\377\377\13\377\377\377\351\377\377\377\372\377\377\377)\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\317\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377"
+  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\316\377\377\377\247"
+  "\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\345\377\377"
+  "\377\377\377\377\377\377\377\377\377\376\377\377\377\275\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377\271\377\377\377\364\377\377\377\377\377\377\377\377\377\377"
+  "\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\377\377\377\13\377\377\377\272\377\377\377\371\377\377\377\377\377"
+  "\377\377\377\377\377\377\355\377\377\377\200\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377"
+  "\377\377\377\377\377\377\377\325\377\377\377\377\377\377\377\332\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377"
+  "\327\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\267\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377"
+  "\377\377\361\377\377\377\363\377\377\377\377\377\377\377\374\377\377\377"
+  "\364\377\377\377\367\377\377\377\354\377\377\377%\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\350\377\377\377\377\377"
+  "\377\377\377\377\377\377\360\377\377\377\360\377\377\377\375\377\377\377"
+  "\243\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377\215\377\377\377\350\377\377\377\377\377\377\377\377\377"
+  "\377\377\346\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\301\377\377\377\370\377\377\377\364\377\377\377\364\377\377"
+  "\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\301\377\377\377\370\377\377\377\364\377"
+  "\377\377\364\377\377\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377"
+  "\377\377\252\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\354\377\377\377\363"
+  "\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377"
+  "\377\332\377\377\377\374\377\377\377\377\377\377\377\276\377\377\377\353"
+  "\377\377\377\377\377\377\377\352\377\377\377)\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\214\377\377\377\371\377\377\377\212\377\377\377"
+  "\350\377\377\377\377\377\377\377\377\377\377\377\346\377\377\3772\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377"
+  "\351\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377\222\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\213\377"
+  "\377\377\371\377\377\377\262\377\377\377\365\377\377\377\377\377\377\377"
+  "\377\377\377\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377\377\377\377"
+  "\377\377\377\377\310\377\377\377\347\377\377\377\315\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\301\377\377\377\351\377"
+  "\377\377)\377\377\377\326\377\377\377\377\377\377\377\377\377\377\377\372"
+  "\377\377\377M\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\224\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\373\377"
+  "\377\377\300\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\332\377\377\377\360\377\377\377\373\377\377\377\377\377"
+  "\377\377\376\377\377\377\364\377\377\377\367\377\377\377\354\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\301\377\377\377\354"
+  "\377\377\3772\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\364\377\377\377\275"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364\377"
+  "\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
+  "\367\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377\335\377\377"
+  "\377\360\377\377\3778\0\0\0\0\377\377\377~\377\377\377\224\0\0\0\0\377\377"
+  "\377\13\377\377\377\332\377\377\377\342\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\275\377\377\377\373\377\377\377\255\0\0\0\0\0\0\0\0\377"
+  "\377\377r\377\377\377\370\377\377\377\315\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377I\377\377\377\364\377\377\377\330\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\254\377\377\377\367\377\377\377\\\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\365\377\377\377\364\377"
+  "\377\377\364\377\377\377\364\377\377\377\360\377\377\377\360\377\377\377"
+  "\354\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\7\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\375"
+  "\377\377\3778\377\377\377\13\377\377\377\364\377\377\377\334\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\364"
+  "\377\377\377\376\377\377\377\370\377\377\377\364\377\377\377\376\377\377"
+  "\377\374\377\377\377\320\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\307\377\377\377"
+  "O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\223\377\377\377\377\377\377\377\234\377\377\377\243\377\377\377\376"
+  "\377\377\377\217\377\377\377\373\377\377\377v\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331\377\377\377\377\377"
+  "\377\377\377\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323"
+  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\245\377\377\377\377\377"
+  "\377\377\215\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377"
+  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\260\377\377\377\354\377\377\377\236\377\377\377\326\377\377"
+  "\377\361\377\377\377\224\377\377\377\341\377\377\377\314\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\325"
+  "\377\377\377\374\377\377\3772\377\377\377\215\377\377\377\241\377\377\377"
+  "\13\377\377\377\361\377\377\377\367\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377"
+  "\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\200\377\377\377\363\377\377\377\376"
+  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\240\377\377\377\377\377\377\377\363\377\377\377V\377\377\377\374"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\274\377\377\377"
+  "\310\377\377\377\251\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377l\377\377\377"
+  "j\377\377\377\237\377\377\377\223\377\377\377%\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\342\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377"
+  "\237\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\243\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\25\377\377\377\361\377\377\377\366"
+  "\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
+  "\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\224\377\377\377\374\377\377\377\377\377\377\377\314\377\377\377\33\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\274\377\377\377\377\377\377\377\370\377\377\377\370\377\377\377\370\377"
+  "\377\377\370\377\377\377\373\377\377\377\321\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\264\377\377\377"
+  "\377\377\377\377\377\377\377\377\262\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\337"
+  "\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\25\377\377\377\361\377\377\377\352\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377U\377\377\377\237\377\377\377\376\377\377\377l\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377"
+  "\377\377\377\266\377\377\377\213\377\377\377\377\377\377\377\304\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\377\377\377\377\265\377\377\377E\377\377\377y\377\377\377\337\377\377"
+  "\377\377\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\352\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\324\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377K\377\377\377\374\377\377\377\337\377\377\377Z\377\377\377"
+  "p\377\377\377p\377\377\377f\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\3775\377\377\377\371\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377\224\377\377\377m\377\377\377v\377"
+  "\377\377h\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
+  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\300\377\377\377\372\377"
+  "\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\313\377\377\377\370\377\377\377\366\377\377\377"
+  "\317\377\377\377\243\377\377\377\376\377\377\377\372\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\367\377\377\377\304\377\377\377\377\377\377\377\251\377\377\377\13\377\377"
+  "\377\361\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377U\377\377\377\374\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\314\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377l\377\377\377\377\377"
+  "\377\377\377\377\377\377U\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\243\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374"
+  "\377\377\377\377\377\377\377\336\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
+  "\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\33\377\377\377\371\377\377\377\360\377\377\377\33\0\0\0\0\377\377\377\320"
+  "\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\377U\377\377\377\375\377\377\377\277\377\377\377\33\377\377\377\366"
+  "\377\377\377\376\377\377\377m\377\377\377\213\377\377\377\377\377\377\377"
+  "\243\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\324\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377\33\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204"
+  "\377\377\377\377\377\377\377\304\377\377\377\204\377\377\377\377\377\377"
+  "\377\260\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377"
+  "\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\266\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377"
+  "\377\377\207\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377"
+  "\377\377\377\377\373\377\377\377\313\377\377\377\303\377\377\377\374\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\351\377"
+  "\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\346\377\377"
+  "\377\377\377\377\377\365\377\377\377\305\377\377\377\315\377\377\377\376"
+  "\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377}\377\377\377\376\377\377\377\377\377\377\377\325\377\377\377\321"
+  "\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
+  "\377\377\335\377\377\377\263\377\377\377\351\377\377\377\377\377\377\377"
+  "\304\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377S\377\377"
+  "\377\330\377\377\377\343\377\377\377\377\377\377\377\364\377\377\377\327"
+  "\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\275"
+  "\377\377\377\307\377\377\377\376\377\377\377\377\377\377\377\324\377\377"
+  "\377y\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\356\377"
+  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\336\377\377\377\333\377\377\377\327\377"
+  "\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\336\377\377\377\333"
+  "\377\377\377\327\377\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375"
+  "\377\377\377\252\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\377\377"
+  "\377\377\242\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355"
+  "\377\377\377\377\377\377\377\346\377\377\377\362\377\377\377\377\377\377"
+  "\377\362\377\377\377\347\377\377\377\377\377\377\377\215\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377"
+  "\377\377\377\370\377\377\377\306\377\377\377\356\377\377\377\377\377\377"
+  "\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377"
+  "\377\377\376\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377"
+  "\375\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377"
+  "\352\377\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377\376"
+  "\377\377\377\377\377\377\377\325\377\377\377\321\377\377\377\376\377\377"
+  "\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377\366\377\377\377\377"
+  "\377\377\377\335\377\377\377\322\377\377\377\343\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\377\377\377\377\370"
+  "\377\377\377\277\377\377\377\262\377\377\377\346\377\377\377\377\377\377"
+  "\377\231\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\315\377\377\377\330\377\377\377\370\377\377\377\377\377\377\377\335\377"
+  "\377\377\327\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\0\0"
+  "\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\366\377\377"
+  "\377)\377\377\377\377\377\377\377\377\377\377\377\313\377\377\377\377\377"
+  "\377\377\205\377\377\377\13\377\377\377\364\377\377\377\376\377\377\377Q"
+  "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377I\377\377\377\372\377\377\377\376\377\377\377v\377"
+  "\377\377\33\377\377\377\362\377\377\377\376\377\377\377}\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\364\377\377\377\372\377"
+  "\377\3772\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
+  "\323\377\377\377\333\377\377\377\333\377\377\377\327\377\377\377\377\377"
+  "\377\377\377\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\355\377\377\377"
+  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377"
+  "\377\313\377\377\377\257\377\377\377\13\0\0\0\0\377\377\377\223\377\377\377"
+  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\316"
+  "\377\377\377\352\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\325\377\377\377\33\377"
+  "\377\377\13\377\377\377\314\377\377\377\267\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\373\377\377\377"
+  "\211\377\377\377!\377\377\377\374\377\377\377\200\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\370"
+  "\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\200\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\333\377"
+  "\377\377\377\377\377\377\377\377\377\377\321\0\0\0\0\377\377\377r\377\377"
+  "\377z\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\25\377\377\377\337\377\377\377\377\377\377\377\375\377\377\3778\0\0"
+  "\0\0\377\377\377U\377\377\377\365\377\377\377\256\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\255\377\377\377\275"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377"
+  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\361\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
+  "\215\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\25\377\377\377\361\377\377\377\363\377\377\377E\377\377\377\375\377\377"
+  "\377\377\377\377\377V\377\377\377\324\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377j\377\377"
+  "\377\375\377\377\377\361\377\377\377%\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\375\377\377"
+  "\377Q\377\377\377K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377"
+  "\377\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\375\377"
+  "\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312"
+  "\377\377\377\377\377\377\377\360\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\376\377\377\377\213\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\321\377\377\377\377\377\377\377\315\377"
+  "\377\377q\377\377\377\221\377\377\377\363\377\377\377\377\377\377\377\364"
+  "\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377"
+  "\377\376\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377"
+  "\377\377\377\377m\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\377\377\377\377\271\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377\377"
+  "\375\377\377\377\252\0\0\0\0\377\377\377\233\377\377\377\366\377\377\377"
+  "\377\377\377\377\377\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\376\377\377\377U\377"
+  "\377\377!\377\377\377\371\377\377\377\363\377\377\377%\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\371\377"
+  "\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "K\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\375\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\327\377\377\377\322\377\377"
+  "\377\300\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\312\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\364\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
+  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\363\377\377\377\301\377\377"
+  "\377\373\377\377\377\356\377\377\377\333\377\377\377\352\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377w\377\377\377\371\377\377\377\366\377\377\377!\377\377"
+  "\377\360\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\312\377\377\377\377\377\377\377\251\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\326\377\377\377"
+  "\247\377\377\377\262\377\377\377\351\377\377\377\377\377\377\377\355\377"
+  "\377\377\33\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374"
+  "\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\356\377\377\377\340\377\377\377\343\377"
+  "\377\377\376\377\377\377\377\377\377\377\304\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\365\377\377\377\377"
+  "\377\377\377\377\377\377\377\364\377\377\377\247\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\321\377\377"
+  "\377\376\377\377\377i\377\377\377\33\377\377\377\365\377\377\377\355\377"
+  "\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\3778\377\377"
+  "\377\372\377\377\377\327\377\377\377c\377\377\377\377\377\377\377\377\377"
+  "\377\377\271\377\377\377\205\377\377\377\376\377\377\377i\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\377\377"
+  "\377\377\377\377\377\377\226\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\376\377"
+  "\377\377\372\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
+  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\326\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377"
+  "\377\377\364\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\335\377\377"
+  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\177\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377"
+  "\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377"
+  "\377\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377\377\377\377\345\377"
+  "\377\377\33\0\0\0\0\0\0\0\0\377\377\377O\377\377\377X\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377"
+  "\377\252\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377"
+  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377%\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377"
+  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\325\377\377\377\13\0\0\0\0\377\377\377;\377"
+  "\377\377\373\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\354\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\354\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377"
+  "\377\377\375\377\377\377\237\377\377\377j\377\377\377\374\377\377\377\376"
+  "\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377"
+  "\377\377\361\377\377\377\352\0\0\0\0\377\377\377\306\377\377\377\375\377"
+  "\377\377=\377\377\377\211\377\377\377\377\377\377\377\252\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\325"
+  "\377\377\377\13\0\0\0\0\377\377\377;\377\377\377\373\377\377\377\363\377"
+  "\377\377%\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
+  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377r\377\377\377"
+  "\375\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377"
+  "\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377\377"
+  "\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377\377\252\0"
+  "\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377"
+  "\377\377\377\372\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\333\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377S\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377"
+  "\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377"
+  "\322\0\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\264\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
+  "\377\377\266\377\377\377;\377\377\377\374\377\377\377\377\377\377\377\226"
+  "\377\377\377l\377\377\377\377\377\377\377\300\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\376\377\377\377\361\377\377"
+  "\377\325\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\333\0\0"
+  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\277\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\314\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377E\377\377\377\217\377\377"
+  "\377\373\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377"
+  "\377\377\247\377\377\377I\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\364\377\377\377\245\377\377\377\372\377\377\377\355\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377"
+  "\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377"
+  "\271\377\377\377\376\377\377\377\303\377\377\377\262\377\377\377\377\377"
+  "\377\377\315\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\220\377\377\377\341\377\377\377\377"
+  "\377\377\377\377\377\377\377\233\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\257\377\377\377)\377\377\377"
+  "\313\377\377\377\377\377\377\377\377\377\377\377\375\377\377\377\\\377\377"
+  "\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377\377\377\377"
+  "\377\377\373\377\377\377\377\377\377\377\265\0\0\0\0\377\377\377\266\377"
+  "\377\377\377\377\377\377\215\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\360\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
+  "\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377`\377\377\377\262\377\377\377\251\377\377\377\354"
+  "\377\377\377\373\377\377\377\261\377\377\377\262\377\377\377\224\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377v\377\377\377\263\377\377\377\255\377\377\377\255\377"
+  "\377\377\255\377\377\377\255\377\377\377\263\377\377\377\224\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\13\377\377\377\356\377\377\377\363\371\371\377.\377\377\377\362\377\377"
+  "\377\375\377\377\377B\377\377\377\335\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\373"
+  "\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\271\377\377\377"
+  "\332\377\377\377\377\377\377\377\373\377\377\377r\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\377\377\377\377"
+  "\242\377\377\377E\377\377\377x\377\377\377\374\377\377\377\336\377\377\377"
+  "K\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\216\377\377\377]\0\0\0\0\0\0\0\0\377\377\377\251\377\377\377\377\377"
+  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\312\377\377\377\377\377\377\377\356\377\377\377v\0\0\0\0\377\377\377\220"
+  "\377\377\377\374\377\377\377\363\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377j\377\377\377\374\377\377\377\367\377\377\377\260\377\377\377"
+  "\342\377\377\377\377\377\377\377\376\377\377\377\224\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\343\377\377\377\374\377\377"
+  "\377\360\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\25\377\377\377\337\377\377\377\377\377\377\377\361\377\377\377\200"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377b\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377"
+  "\232\377\377\377\232\377\377\377\232\377\377\377}\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377\377\377"
+  "\345\377\377\377\377\377\377\377\361\377\377\3778\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377"
+  "\377\377\344\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\377K\377\377\377\374\377\377\377\245\377\377\377l\377\377\377"
+  "\377\377\377\377\344\377\377\377v\377\377\377;\377\377\377\375\377\377\377"
+  "l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377\373\377"
+  "\377\377\376\377\377\377\301\377\377\377\271\377\377\377\374\377\377\377"
+  "\376\377\377\377v\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\377\377\377\377\304\377\377\377e\377\377\377x\377\377"
+  "\377\300\377\377\377\376\377\377\377\367\377\377\377)\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\367\377\377\377)"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\343\377"
+  "\377\377|\377\377\377\202\377\377\377\211\377\377\377\202\377\377\377\13"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\373\377\377\377\300\377\377\377\276\377\377\377\276\377"
+  "\377\377\302\377\377\377G\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377U\377\377\377\374\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377"
+  "\307\377\377\377\374\377\377\377\377\377\377\377\372\377\377\377)\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377\240\377\377\377\200\377\377\377\210\377\377\377\202\377\377\377\371"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377"
+  "\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\377\377\377\377\311\377\377\377\343\377\377"
+  "\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\366\377\377\377]\377\377\377\375\377\377"
+  "\377\377\377\377\377\211\377\377\377\354\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377V\377\377\377\252\377\377\377\377\377\377\377\244\377\377\377\354\377"
+  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377"
+  "\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307"
+  "\377\377\377\376\377\377\377\177\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\374\377\377\377\324\377\377\377)\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\327\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\365\377\377\377\357\377\377\377\377\377\377\377\377\377\377\377"
+  "\224\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\210\377\377\377\335\377\377\377\377\377\377\377"
+  "\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\254\377\377"
+  "\377c\377\377\377\377\377\377\377\273\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\340\377\377\377\277"
+  "\377\377\377\367\377\377\377\351\377\377\377\352\377\377\377\300\377\377"
+  "\377\375\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\335\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377\377\252\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\325\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\342\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377I\377\377\377\340\377\377\377\240\0\0\0\0\0\0\0\0"
+  "\377\377\377}\377\377\377\341\377\377\377Z\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377\306\377\377\377"
+  "\366\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\376"
+  "\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\317\377"
+  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377"
+  "\372\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
+  "\377\377\377\377\377\377\377\361\377\377\377\354\377\377\377\354\377\377"
+  "\377\354\377\377\377\376\377\377\377\376\377\377\377l\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377_\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\377"
+  "\377\377\374\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\356\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377b\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\321\377\377\377\376\377\377\377l\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377\372\377\377\377"
+  ")\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
+  "\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\333\377\377\377\377"
+  "\377\377\377\377\377\377\377\354\377\377\377\300\377\377\377\\\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\375\377\377\377M\377\377\377\13\377\377\377\355\377\377\377"
+  "\375\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377"
+  "\377\377\374\377\377\377\333\377\377\377\217\377\377\377\373\377\377\377"
+  "\361\377\377\377\312\377\377\377\241\377\377\377\377\377\377\377\215\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
+  "\377\377\377\377\377\377\377\377\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377"
+  "\376\377\377\377i\0\0\0\0\377\377\377\342\377\377\377\375\377\377\377Q\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\315\377\377\377\377\377\377\377\342\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377"
+  "\377\377\377\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377c\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377l\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\360\377\377"
+  "\377\33\377\377\377\205\377\377\377\365\377\377\377\377\377\377\377\364\377"
+  "\377\377\\\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "|\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307"
+  "\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205"
+  "\377\377\377\376\377\377\377\336\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\242\377\377"
+  "\377\374\377\377\377\264\377\377\377\33\377\377\377\371\377\377\377\316\377"
+  "\377\377\377\377\377\377\377\377\377\377b\377\377\377\376\377\377\377\326"
+  "\377\377\377\25\377\377\377\362\377\377\377\377\377\377\377\304\377\377\377"
+  "\372\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317"
+  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\374\377\377\377\343\377"
+  "\377\377\313\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
+  "\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377"
+  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\373\377\377\377\376\377\377\377\214\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377m\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377"
+  "\377\377\366\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377e\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\330\377\377\377\371\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\365\377\377\377"
+  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377\13\377\377\377\351\377\377\377\375\377\377\377=\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\374\377\377\377\366\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377p\377"
+  "\377\377M\377\377\377!\377\377\377\373\377\377\377\333\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377"
+  "\377\377\374\377\377\377\377\377\377\377\320\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\337\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\271\377\377\377\377\377\377\377\377\377\377"
+  "\377\267\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377V\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377"
+  "\377\374\377\377\377\245\377\377\377|\377\377\377\377\377\377\377y\0\0\0"
+  "\0\377\377\377\247\377\377\377\376\377\377\377l\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\240\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377\304\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\334"
+  "\377\377\377\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377\362\377"
+  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\331\0\0\0\0\377\377\377j\377\377\377\376"
+  "\377\377\377\366\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\313\377\377\377\371\377\377\377\33\377\377\377\351\377\377\377"
+  "\371\377\377\377!\377\377\377\360\377\377\377\333\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\377"
+  "\377\377\33\377\377\377\365\377\377\377\365\377\377\377\361\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377"
+  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\340\377\377"
+  "\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377"
+  "\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377"
+  "\330\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "l\377\377\377\373\377\377\377\375\377\377\377M\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\361\377\377\377\355\377\377\377\33\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\372\377\377\377\337"
+  "\377\377\377\257\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\370\377\377\377"
+  "\360\377\377\377\323\377\377\377\255\377\377\377\375\377\377\377\333\377"
+  "\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\376\377\377\377\337\377\377\377\326\377\377\377"
+  "\377\377\377\377\234\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\372\377\377"
+  "\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\346\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\232\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\215\377\377\377\376\377\377\377\376\377\377\377\313\377"
+  "\377\377\224\377\377\377\202\377\377\377\374\377\377\377\332\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
+  "\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377\377\377"
+  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377"
+  "\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\352\377"
+  "\377\377\377\377\377\377\321\377\377\377\321\377\377\377\316\377\377\377"
+  "\322\377\377\377\316\377\377\377\315\377\377\377G\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\362\377\377"
+  "\377\366\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\377\377\377\377\370\377\377\377\366\377\377\377\376\377\377\377\214\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
+  "\377\333\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377"
+  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377\377\377)"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
+  "\377i\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377"
+  "\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377"
+  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377u\377\377\377\302\377\377\377\357\377\377\377\377\377\377\377\377\377"
+  "\377\377\276\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
+  "\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\240\377\377\377\377\377\377\377\266\377\377\377s\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\25\377\377\377\361\377\377\377\361\377\377\377\320\377\377\377\344\377\377"
+  "\377\303\377\377\377\356\377\377\377\316\377\377\377\375\377\377\377M\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377"
+  "\377\377\377\377\377\377\377\377\377\377\314\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\377"
+  "\377\377\377\321\377\377\377M\377\377\377\375\377\377\377\327\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\307\377\377\377\377\377\377\377\346\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377"
+  "\237\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377\263\377\377\377f\377\377\377\13\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\25\377\377\377\304\377\377\377\322\377\377\377S\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\374\377"
+  "\377\377\33\377\377\377\222\377\377\377\374\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377"
+  "\377\377\377\302\377\377\377\\\377\377\3772\377\377\377\264\377\377\377\377"
+  "\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\315\377\377\377\377\377\377\377\257\377\377\377;\377\377\377\375\377"
+  "\377\377b\377\377\377\13\377\377\377\360\377\377\377\337\377\377\377\377"
+  "\377\377\377\377\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0"
+  "\377\377\377\33\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377"
+  "\217\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\377\377"
+  "\377\377\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377"
+  "\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\317\377\377\377\374\377\377\3778\377\377\377\13\377"
+  "\377\377\351\377\377\377\366\377\377\377\33\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\374"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\367\377\377"
+  "\377\232\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377"
+  "\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377\257\0\0"
+  "\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\213\377\377\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\375\377\377"
+  "\377\373\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377j\377\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377~\377\377\377\202\377\377\377\202\377\377"
+  "\377\201\377\377\377\231\377\377\377\377\377\377\377\343\377\377\377z\377"
+  "\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377"
+  "\377j\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\343"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\255\377\377"
+  "\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\356\377"
+  "\377\377\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356"
+  "\377\377\377\375\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377"
+  "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377"
+  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3775\377\377\377\347\377\377\377\367\377\377\377\232\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\3772\377\377\377\327\377\377\377\377\377\377\377\375\377\377\377"
+  "z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377\377\377\377"
+  "\346\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\320\377\377\377"
+  "\305\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377K\377\377\377\374\377\377\377\252\377\377\377K\377\377\377\374"
+  "\377\377\377\376\377\377\377\363\377\377\377\377\377\377\377\377\377\377"
+  "\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377"
+  "\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377\377"
+  "\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\343\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\232\377\377\377\377\377\377\377\356\377\377\377)\0\0\0\0\0\0"
+  "\0\0\377\377\3775\377\377\377\260\377\377\377\13\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377U\0\0\0\0\0\0"
+  "\0\0\377\377\377\276\377\377\377\377\377\377\377\346\377\377\377\13\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\321\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\330\377\377\377%\0"
+  "\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\206\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\244\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
+  "\277\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\371\377\377\377%\377\377\377]\377\377\377f\377\377\377\13\377\377\377\361"
+  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\334\377\377\377\377\377\377\377\252\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\376\377\377\377\363\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\251\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377\377"
+  "\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\375\377"
+  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205"
+  "\377\377\377\304\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\362\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\312\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377}\377"
+  "\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\376\377\377\377\372\377"
+  "\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\305\377\377\377\377\377\377\377\377\377\377\377\237"
+  "\377\377\377l\377\377\377\376\377\377\377\377\377\377\377\336\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
+  "\377\376\377\377\377l\377\377\377K\377\377\377\374\377\377\377\372\377\377"
+  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
+  "\373\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377"
+  "\377\372\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377"
+  "\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377~\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
+  "\374\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\266\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377e\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377v\0\0\0\0\0\0\0\0"
+  "\377\377\377s\377\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\317\377\377\377\377\377\377\377\251\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377j\377\377\377\375\377\377\377\326\377\377\377\302\377\377\377"
+  "\304\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\361\377\377\377=\377"
+  "\377\377V\377\377\377\374\377\377\377\375\377\377\377M\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
+  "\377\377\377\355\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377"
+  "\313\377\377\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377"
+  "\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\13"
+  "\377\377\377\355\377\377\377\376\377\377\377\215\0\0\0\0\0\0\0\0\377\377"
+  "\377V\377\377\377\374\377\377\377\367\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377~\0\0\0\0\0\0"
+  "\0\0\377\377\377K\377\377\377\374\377\377\377\366\377\377\377)\377\377\377"
+  "\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377s\377\377\377\375\377\377\377\332\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\3772\377\377\377n\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377"
+  "\377\376\377\377\377v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0"
+  "\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\332\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377"
+  "\377\377\361\377\377\377\331\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
+  "\377\377\377\377\377\377\377\273\377\377\377\205\377\377\377\377\377\377"
+  "\377\376\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\336\377\377\377"
+  "\330\377\377\377\377\377\377\377\256\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\375\377"
+  "\377\377\326\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377"
+  "\377\345\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323\377\377\377"
+  "\360\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\377\377\377\0\377"
+  "\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\206\377\377\377\377\377\377"
+  "\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\360\377\377\377\13\377\377\377\316\377\377\377\352\377"
+  "\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\205\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\356\377\377\3778\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\224\377\377\377\377\377\377\377\311\0\0\0\0\377"
+  "\377\377K\377\377\377\374\377\377\377\316\377\377\377y\377\377\377\374\377"
+  "\377\377\273\377\377\377\377\377\377\377\377\377\377\377!\377\377\377\371"
+  "\377\377\377\377\377\377\377\315\377\377\377\242\377\377\377\360\377\377"
+  "\377\377\377\377\377\377\377\377\377\370\377\377\377\237\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377`\377\377\377\375\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\266\377\377\377\377\377\377\377\217\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\377\377"
+  "\377M\0\0\0\0\0\0\0\0\371\371\377.\377\377\377M\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377"
+  "\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377"
+  "\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377"
+  "\377\371\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377"
+  "\377\377\377\377\377\275\377\377\377\253\377\377\377\374\377\377\377\376"
+  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "r\377\377\377\314\377\377\377\304\377\377\377\332\377\377\377\377\377\377"
+  "\377\321\377\377\377\307\377\377\377\271\377\377\377\13\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\263\377\377\377\377\377\377\377\377\377"
+  "\377\377\350\377\377\377\307\377\377\377\322\377\377\377\321\377\377\377"
+  "\310\377\377\377\33\377\377\377\377\377\377\377\377\377\377\3778\377\377"
+  "\377\373\377\377\377\377\377\377\377\325\377\377\377\242\377\377\377\275"
+  "\377\377\377\371\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377"
+  "\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\3778\377\377\377\373\377\377\377\377\377\377\377\321\377\377"
+  "\377\250\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\234"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377"
+  "\362\377\377\377\377\377\377\377\313\377\377\377\214\377\377\377\345\377"
+  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\326\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\302\377\377\377\377\377\377\377\346\377\377\377\226\377\377\377\201"
+  "\377\377\377\320\377\377\377\377\377\377\377\347\377\377\377\13\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
+  "\307\377\377\377\250\377\377\377\335\377\377\377\377\377\377\377\356\377"
+  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\343\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\207\377\377\377\374\377\377\377\266"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\247\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\377\377\377\377\376\377"
+  "\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\355\377\377\377\352\0\0\0\0\377\377\377s\377\377\377"
+  "\314\377\377\377\315\377\377\377v\377\377\377\245\377\377\377%\377\377\377"
+  "\377\377\377\377\377\377\377\377K\377\377\377\373\377\377\377\360\377\377"
+  "\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377"
+  "~\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\335\377\377\377\275\377\377\377\310\377\377\377\366\377\377"
+  "\377\377\377\377\377\346\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\13\377\377\377\342\377\377\377\377\377\377\377\370\377"
+  "\377\377\300\377\377\377\276\377\377\377\371\377\377\377\377\377\377\377"
+  "\227\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
+  "\377\377\377\377\325\377\377\377\303\377\377\377\361\377\377\377\377\377"
+  "\377\377\375\377\377\377f\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\362\377\377\377\316\377\377\377"
+  "\316\377\377\377\316\377\377\377\322\377\377\377\273\377\377\377\13\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377"
+  "\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
+  "\377\377\352\377\377\377\271\377\377\377\321\377\377\377\375\377\377\377"
+  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377u\377\377\377\325\377\377\377\316\377\377\377\371\377\377\377"
+  "\373\377\377\377\320\377\377\377\322\377\377\377\207\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377"
+  "\365\377\377\377\266\377\377\377\324\377\377\377\377\377\377\377\375\377"
+  "\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
+  "\372\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\320\377\377\377"
+  "\316\377\377\377\316\377\377\377\316\377\377\377\322\377\377\377V\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377l\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\377"
+  "\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377j\377\377\377\375\377\377\377\377\377\377\377\321\377\377\377\302\377"
+  "\377\377\375\377\377\377\377\377\377\377\234\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377j\377\377\377\375\377\377\377\377\377\377\377\320"
+  "\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\216\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377"
+  "\377\336\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\351\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\264\377"
+  "\377\377\351\377\377\377\377\377\377\377\343\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377"
+  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\377\377\377\377\325"
+  "\377\377\377\307\377\377\377\374\377\377\377\377\377\377\377\227\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232"
+  "\377\377\377\377\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\375\377\377\377_\377\377\377\33\377\377\377\365\377\377\377"
+  "\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\253\377\377\377\377\377\377\377\322\0\0\0\0\0\0\0\0\377\377\377"
+  "\275\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\334\377\377\377\377\377\377\377\372\377\377\377\310\377"
+  "\377\377\316\377\377\377\316\377\377\377\321\377\377\377\310\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\317\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
+  "\377\377\377\377\377\377\336\377\377\377\233\377\377\377\305\377\377\377"
+  "\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\376\377\377\377"
+  "\307\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\272\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\366"
+  "\377\377\377\377\377\377\377\346\377\377\377\271\377\377\377\270\377\377"
+  "\377\365\377\377\377\375\377\377\377M\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377"
+  "\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374\377\377"
+  "\377\377\377\377\377\332\377\377\377\233\377\377\377\260\377\377\377\367"
+  "\377\377\377\316\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377"
+  "\377\377\377\377\377\377\342\377\377\377\242\377\377\377\237\377\377\377"
+  "\246\377\377\377\247\377\377\377X\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\356\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\245\0\0\0\0\0\0\0\0\377"
+  "\377\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377"
+  "\33\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
+  "\377\333\0\0\0\0\377\377\377\320\377\377\377\371\377\377\377%\377\377\377"
+  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\376\377"
+  "\377\377\274\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377"
+  "\265\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\376\377\377\377\307\377\377\377\255\377\377\377"
+  "\370\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377"
+  "\257\377\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\377\377\377"
+  "\377\335\377\377\377\233\377\377\377\213\377\377\377\306\377\377\377\377"
+  "\377\377\377\352\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\365\377\377\377"
+  "\245\377\377\377\255\377\377\377\325\377\377\3772\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377\361\377\377"
+  "\377\252\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\332"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\266\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\240\377\377"
+  "\377\377\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374\377"
+  "\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377U\377\377\377\374\377\377\377\372\377\377\3778\377\377\377"
+  "!\377\377\377\366\377\377\377\376\377\377\377\177\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
+  "\377\377\377\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\267\377\377\377\377\377\377\377\377"
+  "\377\377\377\311\377\377\377\302\377\377\377\304\377\377\377\304\377\377"
+  "\377\271\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\13\377\377\377\361\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\333\0\0\0\0"
+  "\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377w\377\377\377\343\377"
+  "\377\377\375\377\377\377\201\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\244\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377"
+  "\377Z\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377\370"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\377\377"
+  "\377\266\377\377\377\376\377\377\377\323\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377"
+  "\377\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377"
+  "\377\357\377\377\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377"
+  "\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\377\377\377\223\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
+  ")\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377j\377\377\377\350\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\376\377\377\377\302\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377;\377\377\377\372\377\377\377\316\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377u\377\377\377\351\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\373\377\377\377\254\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377"
+  "\354\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\377"
+  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\214\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\315\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\342\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\177\377\377\377\365\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\342\377\377\3772\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377"
+  "\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\357\377\377"
+  "\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\375"
+  "\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\255\377\377\377\377\377\377\377\234\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\224\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\240\377\377\377\377\377\377\377\266\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\370\377\377\377\312\377\377\377%\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\305\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377"
+  "\377\377\330\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
+  ")\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351"
+  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\370\377\377"
+  "\377\241\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\375\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\316\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\213\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377"
+  "\377\377\377\377\377\377\326\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377_\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\375\377\377"
+  "\377Q\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\327\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206\377"
+  "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377"
+  "\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\215\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\241\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\214\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377"
+  "\33\377\377\377\356\377\377\377\376\377\377\377v\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\25\377\377\377\316\377\377\377\376\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\335\377\377\377)\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\351\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\375"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\276\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377;\377\377\377\372\377\377\377\376\377\377\377|\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\375\377"
+  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\320\377\377\377\377\377\377"
+  "\377\244\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377"
+  "\366\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
+  "\377\362\377\377\377\376\377\377\377_\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\364\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\13\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377"
+  "\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377"
+  "\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
+  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\377"
+  "\377\377\362\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\345\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\260"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\326\377\377"
+  "\377\367\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377l\377\377\377\356\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\370\377\377\377\231\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377"
+  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\216\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
+  "\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355\377\377\377"
+  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
+  "\377\374\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377"
+  "\377\377\377\377\377\304\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\375\377\377\377\377\377\377"
+  "\377\377\377\377\377\372\377\377\377M\377\377\377\377\377\377\377\377\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377\275\377\377"
+  "\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355"
+  "\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\240\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\275\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\224\377\377\377\377\377\377\377\352\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\337\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\307\377"
+  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377c\377\377\377\330\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\354\377"
+  "\377\377Z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\375\377\377\377_\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\33\377\377\377\350\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\377\377\377\255\377\377\377\362\377\377\377\323\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\372"
+  "\377\377\377\376\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\372\377"
+  "\377\377I\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\243"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377"
+  "\377\377\376\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\374"
+  "\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\377\377\377\377\236\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
+  "\377\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\360"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377n\377\377\377\13\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377"
+  "\377e\377\377\377\33\0\0\0\0\0\0\0\0\371\371\377.\377\377\3775\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377\377\364\377\377"
+  "\3772\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\343\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\334\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377X\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\377\377\377\341\377\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377e\377\377\377l\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377E\377\377\377X\377\377\377S\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377e\377\377\377c\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377S\377\377\377K\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377e\377\377\377n\377\377\377"
+  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377_\377\377\377p\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377E\377\377\377X\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371"
+  "\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377`\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362\377\377\377"
+  "\376\377\377\377\255\377\377\3775\377\377\377V\377\377\377\322\377\377\377"
+  "\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377)\377\377\377X\377\377\377V\377\377\377\13\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377"
+  "m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\371\371\377.\377\377\377m\377\377\377c\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377c\377\377\377\13"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
+  "\377\377\377\377\377\377\377\333\377\377\377\33\377\377\377E\377\377\377"
+  "\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377e\377\377\377e\377\377"
+  "\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "e\377\377\377n\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\361\377\377\377\366\377\377"
+  "\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\216\377\377\377\233\377\377\377\232\377\377\377\232"
+  "\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\237\377\377"
+  "\377=\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377n\377\377\3775\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377n\377\377\3778\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377@\377\377\377m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377p\377"
+  "\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377p\377\377\377X\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\376\377\377\377"
+  "|\377\377\377S\377\377\377V\377\377\377K\377\377\377\263\377\377\377\377"
+  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377\360\377\377\377"
+  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377"
+  "\377\377p\377\377\377c\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377f\377\377\377"
+  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377e\377\377\377"
+  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377@\377\377\377p\377\377\377I\377\377\377;\377\377\377"
+  "\374\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377e\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377O\377\377"
+  "\377X\377\377\377U\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377j\377\377\377n\377\377\377\33\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377"
+  "\362\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\356\377\377\377%\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
+  "\345\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\361\377\377"
+  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\331\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377b\377"
+  "\377\377\376\377\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\3775\377\377\377\344\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\270\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\210\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377"
+  "\377\370\377\377\377\364\377\377\377\372\377\377\377\243\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\266\377\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377\371\377\377\377\364"
+  "\377\377\377\364\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377\13\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377m\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377\377\377"
+  "\375\377\377\377f\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\326\377\377\377"
+  "\377\377\377\377\245\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\234\377\377\377\205\377\377\377I\377\377\377\272\377\377\377\377"
+  "\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\203\377\377\377"
+  "\337\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377"
+  "\377\377\377\377\373\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377"
+  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\177\377\377\377\372\377\377\377\376\377\377\377\377\377\377"
+  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377\377"
+  "\377\340\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\310\377\377\377\307\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377u\377\377\377\325\377\377\377w\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\213\377\377\377\203\377\377"
+  "\3778\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377\322\377\377\377\316"
+  "\377\377\377m\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377`\377\377\377\263\377\377\377\263\377\377\377\263\377\377\377\266"
+  "\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377G\377\377\377\317\377\377\377w\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\266"
+  "\377\377\377\263\377\377\377\263\377\377\377\262\377\377\377_\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377`\377\377\377y\377\377\377y\377\377\377y"
+  "\377\377\377y\377\377\377y\377\377\377y\377\377\377x\377\377\377\33\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\377"
+  "\377\377\377\370\377\377\377\370\377\377\377\377\377\377\377\377\377\377"
+  "\377\325\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  ";\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\376\377\377\377z\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\233\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377\377\377\327\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\377"
+  "\377\377\377\377\377\377\377\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\246\377"
+  "\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\372\377\377\377)\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "i\377\377\377\266\377\377\377\255\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377s\377\377\377|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377s\377\377\377"
+  "|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377_\377\377\377\266\377\377\377\321\377\377\377\316\377"
+  "\377\377\271\377\377\377q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377`\377\377\377\245\377\377\377\267\377\377\377"
+  "\247\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377E\377\377\377\212\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\211\377\377\377=\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\232\377\377"
+  "\377q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\363\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377",
+};
+
diff --git a/minilibx_macos/font.xcf b/minilibx_macos/font.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..b9c8c82dec50244b31f1ae2b6f84be1668688d7b
GIT binary patch
literal 52570
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
D(ji>k

literal 0
HcmV?d00001

diff --git a/minilibx/man/man1 b/minilibx_macos/man/man1
similarity index 100%
rename from minilibx/man/man1
rename to minilibx_macos/man/man1
diff --git a/minilibx/man/man3/mlx.1 b/minilibx_macos/man/man3/mlx.1
similarity index 65%
rename from minilibx/man/man3/mlx.1
rename to minilibx_macos/man/man3/mlx.1
index 9ad0ac1..cfdac3d 100644
--- a/minilibx/man/man3/mlx.1
+++ b/minilibx_macos/man/man3/mlx.1
@@ -1,6 +1,6 @@
 .TH MiniLibX 3 "September 19, 2002"
 .SH NAME
-MiniLibX - Simple X-Window Interface Library for students
+MiniLibX - Simple Graphical Interface Library for students
 .SH SYNOPSYS
 #include <mlx.h>
 
@@ -12,11 +12,11 @@ MiniLibX - Simple X-Window Interface Library for students
 
 .SH DESCRIPTION
 MiniLibX is an easy way to create graphical software,
-without any X-Window programming knowledge. It provides
+without any X-Window/Cocoa programming knowledge. It provides
 simple window creation, a drawing tool, image and basic events
 management.
 
-.SH X-WINDOW CONCEPT
+.SH BSD/LINUX X-WINDOW CONCEPT
 
 X-Window is a network-oriented graphical system for Unix.
 It is based on two main parts:
@@ -31,6 +31,18 @@ A network connection must be established between these two entities to send
 drawing orders (from the software to the X-Server), and keyboard/mouse
 events (from the X-Server to the software).
 
+.SH MACOSX CONCEPT
+
+The MacOSX operating system handle graphical access to the screen (or "display").
+.br
+On one side, your software wants to draw something on the screen and/or
+get keyboard & mouse entries.
+.br
+On the other side, the underlying MacOSX graphical framework that handles
+the screen, the windowing system, keyboard and mouse.
+.br
+A connection between these two entities must be established.
+
 .SH INCLUDE FILE
 .B mlx.h
 should be included for a correct use of the MiniLibX API.
@@ -41,7 +53,7 @@ It only contains function prototypes, no structure is needed.
 First of all, you need to initialize the connection
 between your software and the display.
 Once this connection is established, you'll be able to
-use other MiniLibX functions to send the X-Server messages,
+use other MiniLibX functions to send the graphical orders,
 like "I want to draw a yellow pixel in this window" or "did the
 user hit a key?".
 .P
@@ -67,7 +79,7 @@ All other MiniLibX functions are described in the following man pages:
 .B mlx_loop
 : handle keyboard or mouse events
 
-.SH LINKING MiniLibX
+.SH LINKING MiniLibX on BSD/Linux and X-Window
 To use MiniLibX functions, you'll need to link
 your software with several libraries, including the MiniLibX library itself.
 To do this, simply add the following arguments at linking time:
@@ -79,15 +91,25 @@ the
 .B -L
 flag.
 
+.SH LINKING MiniLibX on MACOSX
+To use MiniLibX functions, you'll need to link your software with the
+MiniLibX library, and several system frameworks:
+
+.B -lmlx -framework OpenGL -framework AppKit
+
+You may also need to specify the path to the MiniLibX library, using
+the
+.B -L
+flag.
 
 .SH RETURN VALUES
 If
 .B mlx_init()
-fails to set up the connection to the X server, it will return NULL, otherwise
+fails to set up the connection to the graphical system, it will return NULL, otherwise
 a non-null pointer is returned as a connection identifier.
 
 .SH SEE ALSO
 mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3)
 
 .SH AUTHOR
-Copyright ol@ - 2002-2014 - Olivier Crouzet
+Copyright ol@ - 2002-2015 - Olivier Crouzet
diff --git a/minilibx/man/man3/mlx_loop.1 b/minilibx_macos/man/man3/mlx_loop.1
similarity index 86%
rename from minilibx/man/man3/mlx_loop.1
rename to minilibx_macos/man/man3/mlx_loop.1
index 3397ce2..fa2b835 100644
--- a/minilibx/man/man3/mlx_loop.1
+++ b/minilibx_macos/man/man3/mlx_loop.1
@@ -43,9 +43,10 @@ MiniLibX - Handle events
 .I void *mlx_ptr, int (*funct_ptr)(), void *param
 );
 
-.SH X-WINDOW EVENTS
+.SH EVENTS
 
-The X-Window system is bi-directionnal. On one hand, the program sends orders to
+Both X-Window and MacOSX graphical systems are bi-directionnal.
+On one hand, the program sends orders to
 the screen to display pixels, images, and so on. On the other hand,
 it can get information from the keyboard and mouse associated to
 the screen. To do so, the program receives "events" from the keyboard or the
@@ -114,7 +115,8 @@ is the address specified in the mlx_*_hook calls. This address is never
 used nor modified by the MiniLibX. On key and mouse events, additional
 information is passed:
 .I keycode
-tells you which key is pressed (look for the X11 include file "keysymdef.h"),
+tells you which key is pressed (X11 : look for the include file "keysymdef.h",
+MacOS : create a small software and find out by yourself),
 (
 .I x
 ,
@@ -124,12 +126,12 @@ tells you which key is pressed (look for the X11 include file "keysymdef.h"),
 tells you which mouse button was pressed.
 
 .SH GOING FURTHER WITH EVENTS
-The MiniLibX provides a much generic access to all X-Window events. The
+The MiniLibX provides a much generic access to all type of events. The
 .I mlx.h
 include define
 .B mlx_hook()
 in the same manner mlx_*_hook functions work. The event and mask values
-will be taken from the X11 include file "X.h".
+will be taken from the X11 include file "X.h" (even for MacOSX, for compatibility purposes)
 
 See source code of mlx_int_param_event.c to find out how the MiniLibX will
 call your own function for a specific event.
@@ -138,4 +140,4 @@ call your own function for a specific event.
 mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3)
 
 .SH AUTHOR
-Copyright ol@ - 2002-2014 - Olivier Crouzet
+Copyright ol@ - 2002-2015 - Olivier Crouzet
diff --git a/minilibx/man/man3/mlx_new_image.1 b/minilibx_macos/man/man3/mlx_new_image.1
similarity index 96%
rename from minilibx/man/man3/mlx_new_image.1
rename to minilibx_macos/man/man3/mlx_new_image.1
index f2160a2..d46bf59 100644
--- a/minilibx/man/man3/mlx_new_image.1
+++ b/minilibx_macos/man/man3/mlx_new_image.1
@@ -141,7 +141,7 @@ one byte for each component (see
 .B mlx_pixel_put
 manual). This must be translated to fit the
 .I bits_per_pixel
-requirement of the image, and make the color understandable to the X-Server.
+requirement of the image, and make the color understandable to the graphical system.
 That is the purpose of the
 .B mlx_get_color_value
 () function. It takes a standard RGB
@@ -155,7 +155,7 @@ least significant bits of this value can be stored in the image.
 
 Keep in mind that the least significant bits position depends on the local
 computer's endian. If the endian of the image (in fact the endian of
-the X-Server's computer) differs from the local endian, then the value should
+the X-Server's computer for remote X11 display) differs from the local endian, then the value should
 be transformed before being used.
 
 .SH XPM IMAGES
@@ -189,4 +189,4 @@ as an image identifier.
 mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3)
 
 .SH AUTHOR
-Copyright ol@ - 2002-2014 - Olivier Crouzet
+Copyright ol@ - 2002-2015 - Olivier Crouzet
diff --git a/minilibx/man/man3/mlx_new_window.1 b/minilibx_macos/man/man3/mlx_new_window.1
similarity index 96%
rename from minilibx/man/man3/mlx_new_window.1
rename to minilibx_macos/man/man3/mlx_new_window.1
index 90f6d47..36176d7 100644
--- a/minilibx/man/man3/mlx_new_window.1
+++ b/minilibx_macos/man/man3/mlx_new_window.1
@@ -76,4 +76,4 @@ right now return nothing.
 mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3)
 
 .SH AUTHOR
-Copyright ol@ - 2002-2014 - Olivier Crouzet
+Copyright ol@ - 2002-2015 - Olivier Crouzet
diff --git a/minilibx/man/man3/mlx_pixel_put.1 b/minilibx_macos/man/man3/mlx_pixel_put.1
similarity index 97%
rename from minilibx/man/man3/mlx_pixel_put.1
rename to minilibx_macos/man/man3/mlx_pixel_put.1
index f4d131e..caf89f2 100644
--- a/minilibx/man/man3/mlx_pixel_put.1
+++ b/minilibx_macos/man/man3/mlx_pixel_put.1
@@ -78,4 +78,4 @@ mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3)
 
 
 .SH AUTHOR
-Copyright ol@ - 2002-2014 - Olivier Crouzet
+Copyright ol@ - 2002-2015 - Olivier Crouzet
diff --git a/minilibx/mlx.h b/minilibx_macos/mlx.h
similarity index 75%
rename from minilibx/mlx.h
rename to minilibx_macos/mlx.h
index 25991a1..ce28644 100644
--- a/minilibx/mlx.h
+++ b/minilibx_macos/mlx.h
@@ -2,10 +2,10 @@
 ** mlx.h for MinilibX in 
 ** 
 ** Made by Charlie Root
-** Login   <ol@epitech.net>
+** Login   <ol@staff.42.fr>
 ** 
 ** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
-** Last update Tue May 15 16:23:28 2007 Olivier Crouzet
+** Last update Tue Oct 01 16:23:28 2014 Olivier Crouzet
 */
 
 /*
@@ -16,14 +16,29 @@
 /*
 ** FR msg - FR msg - FR msg
 **
+** MacOSX
+** La MinilibX utilise 2 frameworks Mac : OpenGL et AppKit
+**    qu'il faut ajouter a la compilation :
+**   -framework OpenGL -framework AppKit
+**
+** UNIX / Linux
 ** La MinilibX utilise 2 librairies supplementaires qu'il
 **      est necessaire de rajouter a la compilation :
 **   -lmlx -lXext -lX11
 **
 ** La MinilibX permet le chargement des images de type Xpm.
 ** Notez que cette implementation est incomplete.
-** Merci de communiquer tout probleme de chargement d'image
-** de ce type.
+**
+** Il y a des differences entre X11 et MacOS.
+** les numeros des touches ne sont pas les memes,
+** les numeros des boutons souris ne sont pas les memes.
+** Egalement l'expose est gere differemment, et sous MacOS
+** il est preferable d'entrer le plus tot possible dans mlx_loop,
+** il est normal que les fenetres n'apparaissent pas avant mlx_loop
+** (ou bien forcez avec mlx_do_sync mais c'est pas genial).
+** Sous MacOS, l'octet Alpha est pris en compte dans toutes les
+** images, et represente la transparence et non l'opacite comme
+** c'est normalement le cas.
 */
 
 
@@ -63,14 +78,12 @@ int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
 void	*mlx_new_image(void *mlx_ptr,int width,int height);
 /*
 **  return void *0 if failed
-**  obsolete : image2 data is stored using bit planes
-**  void	*mlx_new_image2(void *mlx_ptr,int width,int height);
 */
 char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
 			   int *size_line, int *endian);
 /*
 **  endian : 0 = sever X is little endian, 1 = big endian
-**  for mlx_new_image2, 2nd arg of mlx_get_data_addr is number_of_planes
+**  endian : useless on macos, client and graphical framework have the same endian
 */
 int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
 				int x, int y);
diff --git a/minilibx_macos/mlx_init_loop.m b/minilibx_macos/mlx_init_loop.m
new file mode 100644
index 0000000..55c1cfd
--- /dev/null
+++ b/minilibx_macos/mlx_init_loop.m
@@ -0,0 +1,184 @@
+//  mlx_init_loop.m
+// By Ol
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+#import <AppKit/NSOpenGLView.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+#include "font.c"
+
+
+void	do_loop_hook2(CFRunLoopTimerRef observer, void * info)
+{
+  ((mlx_ptr_t *)info)->loop_hook(((mlx_ptr_t *)info)->loop_hook_data);
+}
+
+
+void do_loop_flush(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void * info)
+{
+  mlx_ptr_t	*mlx_ptr;
+  mlx_win_list_t *win;
+
+  mlx_ptr = (mlx_ptr_t *)info;
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      if (win->nb_flush > 0 && win->pixmgt)
+	{
+	  [(id)win->winid selectGLContext];
+	  [(id)win->winid mlx_gl_draw];
+	  glFlush();
+	  win->nb_flush = 0;
+	}
+      win = win->next;
+    }
+}
+
+
+
+
+void *mlx_init()
+{
+  mlx_ptr_t	*new_mlx;
+  int		bidon;
+  int		i;
+
+  if ((new_mlx = malloc(sizeof(*new_mlx))) == NULL)
+    return ((void *)0);
+  new_mlx->win_list = NULL;
+  new_mlx->img_list = NULL;
+  new_mlx->loop_hook = NULL;
+  new_mlx->loop_hook_data = NULL;
+  new_mlx->main_loop_active = 0;
+
+  new_mlx->appid = [NSApplication sharedApplication];
+
+  // super magic trick to detach app from terminal, get menubar & key input events
+  for (NSRunningApplication * app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"])
+    {
+      [app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+      break;
+    }
+  usleep(100000);
+  ProcessSerialNumber psn = { 0, kCurrentProcess };
+  (void) TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+  usleep(100000);
+  [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+
+  // load font
+  new_mlx->font = mlx_new_image(new_mlx, (FONT_WIDTH+2)*95, FONT_HEIGHT);
+  i = 0;
+  while (i < 4*(FONT_WIDTH+2)*95*FONT_HEIGHT)
+    {
+      new_mlx->font->buffer[i+0] = font_atlas.pixel_data[i+2];
+      new_mlx->font->buffer[i+1] = font_atlas.pixel_data[i+1];
+      new_mlx->font->buffer[i+2] = font_atlas.pixel_data[i+0];
+      ((unsigned char *)new_mlx->font->buffer)[i+3] = 0xFF-font_atlas.pixel_data[i+3];
+      i += 4;
+    }
+
+  new_mlx->font->vertexes[2] = FONT_WIDTH;
+  new_mlx->font->vertexes[4] = FONT_WIDTH;
+  new_mlx->font->vertexes[5] = -FONT_HEIGHT-1;
+  new_mlx->font->vertexes[7] = -FONT_HEIGHT-1;
+
+  return ((void *)new_mlx);
+}
+
+
+void mlx_loop(mlx_ptr_t *mlx_ptr)
+{
+  CFRunLoopObserverRef observer;
+  CFRunLoopObserverContext ocontext = {.version = 0, .info = mlx_ptr, .retain = NULL, .release = NULL, .copyDescription = NULL};
+
+  mlx_ptr->main_loop_active = 1;
+
+  observer = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeTimers, true, 0, do_loop_flush, &ocontext);
+  CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes);
+
+  //  [[[MlxLoopHookObj alloc] initWithPtr:mlx_ptr] performSelector:@selector(do_loop_hook) withObject:nil afterDelay:0.0];
+
+  [NSApp run];
+}
+
+
+void mlx_pixel_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color)
+{
+  if (!win_ptr->pixmgt)
+    return ;
+  [(id)(win_ptr->winid) selectGLContext];
+  [(id)(win_ptr->winid) pixelPutColor:color X:x Y:y];
+  win_ptr->nb_flush ++;
+}
+
+
+void	mlx_int_loop_once()
+{
+  NSEvent *event;
+  NSDate  *thedate;
+
+  thedate = [NSDate dateWithTimeIntervalSinceNow:0.1];
+  while (42)
+    {
+      event = [NSApp nextEventMatchingMask:NSAnyEventMask
+		     untilDate:thedate
+		     inMode:NSDefaultRunLoopMode
+		     dequeue:YES];
+      if (event == nil)
+	{
+	  [thedate release];
+	  return ;
+	}
+      [NSApp sendEvent:event];
+      [NSApp updateWindows];
+    }
+}
+
+
+int     mlx_do_sync(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      if (win->pixmgt)
+	{
+	  [(id)(win->winid) selectGLContext];
+	  [(id)(win->winid) mlx_gl_draw];
+	  glFlush();
+	  if (!mlx_ptr->main_loop_active)
+	    mlx_int_loop_once();
+	}
+      win = win->next;
+    }
+  return (0);
+}
+
+
+int mlx_loop_hook(mlx_ptr_t *mlx_ptr, void (*fct)(void *), void *param)
+{
+  CFRunLoopTimerContext	tcontext = {0, mlx_ptr, NULL, NULL, NULL};
+  CFRunLoopTimerRef	timer;
+
+  if (mlx_ptr->loop_hook != NULL)
+    {
+      CFRunLoopTimerInvalidate(mlx_ptr->loop_timer);
+      [(id)(mlx_ptr->loop_timer) release];
+    }
+
+  mlx_ptr->loop_hook = fct;
+  mlx_ptr->loop_hook_data = param;
+
+  if (fct)
+    {
+      timer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, &do_loop_hook2, &tcontext);
+      mlx_ptr->loop_timer = timer;
+      CFRunLoopAddTimer(CFRunLoopGetMain(), timer, kCFRunLoopCommonModes);
+    }
+
+  return (0);
+}
diff --git a/minilibx_macos/mlx_int.h b/minilibx_macos/mlx_int.h
new file mode 100644
index 0000000..a93c1c9
--- /dev/null
+++ b/minilibx_macos/mlx_int.h
@@ -0,0 +1,102 @@
+//
+// mlx_int.h for minilibx
+//
+// ol@staff.42.fr
+//
+// include opengl needed before mlx_int.h
+//
+
+
+#define	MAX_EVENT	32
+#define MAX_PIXEL_NB	200000
+#define UNIQ_BPP	4
+
+#define FONT_WIDTH	10
+#define	FONT_HEIGHT	20
+
+
+typedef int (*func_t)();
+
+/* structs */
+
+typedef struct	glsl_info_s
+{
+  GLuint	pixel_vshader;
+  GLuint	pixel_fshader;
+  GLuint	pixel_program;
+  GLint		loc_pixel_position;
+  GLint		loc_pixel_texture;
+  GLint		loc_pixel_winhalfsize;
+
+  GLuint	image_vshader;
+  GLuint	image_fshader;
+  GLuint	image_program;
+  GLint		loc_image_position;
+  GLint		loc_image_winhalfsize;
+  GLint		loc_image_texture;
+  GLint		loc_image_pos;
+  GLint		loc_image_size;
+
+  GLuint	font_vshader;
+  GLuint	font_fshader;
+  GLuint	font_program;
+  GLint		loc_font_position;
+  GLint		loc_font_winhalfsize;
+  GLint		loc_font_texture;
+  GLint		loc_font_color;
+  GLint		loc_font_posinwin;
+  GLint		loc_font_posinatlas;
+  GLint		loc_font_atlassize;
+} glsl_info_t;
+
+
+typedef struct	mlx_img_list_s
+{
+  int			width;
+  int			height;
+  char			*buffer;
+  GLfloat		vertexes[8];
+  struct mlx_img_list_s	*next;
+} mlx_img_list_t;
+
+
+typedef struct	mlx_img_ctx_s
+{
+  GLuint		texture;
+  GLuint		vbuffer;
+  mlx_img_list_t	*img;
+  struct mlx_img_ctx_s	*next;
+} mlx_img_ctx_t;
+
+typedef struct	mlx_win_list_s
+{
+  void			*winid;
+  mlx_img_ctx_t		*img_list;
+  int			nb_flush;
+  int			pixmgt;
+  struct mlx_win_list_s	*next;
+} mlx_win_list_t;
+
+
+typedef struct		mlx_ptr_s
+{
+  void			*appid;
+  mlx_win_list_t	*win_list;
+  mlx_img_list_t	*img_list;
+  void			(*loop_hook)(void *);
+  void			*loop_hook_data;
+  void			*loop_timer;
+  mlx_img_list_t	*font;
+  int			main_loop_active;
+} mlx_ptr_t;
+
+// proto
+
+int	mlx_shaders(glsl_info_t *glsl);
+char    **mlx_int_str_to_wordtab(char *str);
+int     mlx_int_str_str(char *str,char *find,int len);
+int     mlx_int_str_str_cote(char *str,char *find,int len);
+int	mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_ptr);
+void	*mlx_new_image();
+void    *mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height);
+int	mlx_do_sync(mlx_ptr_t *mlx_ptr);
diff --git a/minilibx/mlx_int_str_to_wordtab.c b/minilibx_macos/mlx_int_str_to_wordtab.c
similarity index 86%
rename from minilibx/mlx_int_str_to_wordtab.c
rename to minilibx_macos/mlx_int_str_to_wordtab.c
index 7f92089..3b2ef2e 100644
--- a/minilibx/mlx_int_str_to_wordtab.c
+++ b/minilibx_macos/mlx_int_str_to_wordtab.c
@@ -1,16 +1,10 @@
-/*
-** mlx_int_str_to_wordtab.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Wed Sep 13 11:36:09 2000 Charlie Root
-** Last update Fri Dec 14 11:02:09 2001 Charlie Root
-*/
+//
+// str 2 wordtab & co
+// by ol
 
 
-#include	"mlx_int.h"
-
+#include <stdlib.h>
+#include <string.h>
 
 int	mlx_int_str_str(char *str,char *find,int len)
 {
diff --git a/minilibx_macos/mlx_new_image.m b/minilibx_macos/mlx_new_image.m
new file mode 100644
index 0000000..e84dc36
--- /dev/null
+++ b/minilibx_macos/mlx_new_image.m
@@ -0,0 +1,190 @@
+// mlx_new_image
+//
+// by Ol
+//
+
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+
+
+void    *mlx_new_image(mlx_ptr_t *mlx_ptr, int width, int height)
+{
+  mlx_img_list_t        *newimg;
+
+  //  if (mlx_ptr->win_list == NULL)
+  //    return (NULL);  // need at leat one window created to have openGL context and create texture
+  if ((newimg = malloc(sizeof(*newimg))) == NULL)
+    return ((void *)0);
+  newimg->next = mlx_ptr->img_list;
+  mlx_ptr->img_list = newimg;
+  newimg->width = width;
+  newimg->height = height;
+  newimg->vertexes[0] = 0.0;  newimg->vertexes[1] = 0.0;
+  newimg->vertexes[2] = width;  newimg->vertexes[3] = 0.0;
+  newimg->vertexes[4] = width;  newimg->vertexes[5] = -height;
+  newimg->vertexes[6] = 0.0;  newimg->vertexes[7] = -height;
+  newimg->buffer = malloc(UNIQ_BPP*width*height);
+  bzero(newimg->buffer, UNIQ_BPP*width*height);
+
+  return (newimg);
+}
+
+mlx_img_ctx_t	*add_img_to_ctx(mlx_img_list_t *img, mlx_win_list_t *win)
+{
+  mlx_img_ctx_t	*imgctx;
+
+  imgctx = win->img_list;
+  while (imgctx)
+    {
+      if (imgctx->img == img)
+	return (imgctx);
+      imgctx = imgctx->next;
+    }
+
+  imgctx = malloc(sizeof(*imgctx));
+  imgctx->img = img;
+  imgctx->next = win->img_list;
+  win->img_list = imgctx;
+
+  glGenTextures(1, &(imgctx->texture));
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
+  glTexImage2D(
+	       GL_TEXTURE_2D, 0,           /* target, level of detail */
+	       GL_RGBA8,                    /* internal format */
+	       img->width, img->height, 0,           /* width, height, border */
+	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
+	       img->buffer               /* pixels */
+	       );
+
+  glGenBuffers(1, &(imgctx->vbuffer));
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glBufferData(GL_ARRAY_BUFFER, sizeof(img->vertexes), img->vertexes, GL_DYNAMIC_DRAW); // 4 points buff
+
+  return (imgctx);
+}
+
+
+void    mlx_put_image_to_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, mlx_img_list_t *img_ptr, int x, int y)
+{
+  mlx_img_ctx_t	*imgctx;
+
+  if (!win_ptr->pixmgt)
+    return ;
+
+  [(id)(win_ptr->winid) selectGLContext];
+  imgctx = add_img_to_ctx(img_ptr, win_ptr);
+
+  // update texture
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img_ptr->width, img_ptr->height, 0,
+	       GL_BGRA, GL_UNSIGNED_BYTE, img_ptr->buffer);
+
+  [(id)(win_ptr->winid) mlx_gl_draw_img:img_ptr andCtx:imgctx andX:x andY:y];
+
+  win_ptr->nb_flush ++;
+}
+
+// assume here 32bpp little endian
+
+char    *mlx_get_data_addr(mlx_img_list_t *img_ptr, int *bits_per_pixel, int *size_line, int *endian)
+{
+  *bits_per_pixel = UNIQ_BPP*8;
+  *size_line = img_ptr->width*UNIQ_BPP;
+  *endian = 0; // little endian for now on mac-intel
+  return (img_ptr->buffer);
+}
+
+unsigned int    mlx_get_color_value(mlx_ptr_t *mlx_ptr, int color)
+{
+  return (color);
+}
+
+int mlx_string_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color, unsigned char *string)
+{
+  mlx_img_ctx_t	*imgctx;
+  int		gX;
+  int		gY;
+
+  if (!win_ptr->pixmgt)
+    return(0);
+
+  [(id)(win_ptr->winid) selectGLContext];
+
+  imgctx = add_img_to_ctx(mlx_ptr->font, win_ptr);
+
+  while (*string)
+    {
+      if (*string >= 32 && *string <= 127)
+	{
+	  gX = (FONT_WIDTH+2)*(*string-32);
+	  gY = 0;
+	  //      printf("put char %c pos %d %d\n", *string, gX, gY);
+	  [(id)(win_ptr->winid) mlx_gl_draw_font:mlx_ptr->font andCtx:imgctx andX:x andY:y andColor:color glyphX:gX glyphY:gY];
+	  x += FONT_WIDTH;
+	}
+      string ++;
+    }
+
+  win_ptr->nb_flush ++;
+  
+  return (0);
+}
+
+int     mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_todel)
+{
+  mlx_img_ctx_t	ctx_first;
+  mlx_img_ctx_t	*ctx;
+  mlx_img_ctx_t	*ctx_to_del;
+  mlx_img_list_t img_first;
+  mlx_img_list_t *img;
+  mlx_win_list_t *win;
+
+  img_first.next = mlx_ptr->img_list;
+  img = &img_first;
+  while (img && img->next)
+    {
+      if (img->next == img_todel)
+	img->next = img->next->next;
+      img = img->next;
+    }
+  mlx_ptr->img_list = img_first.next;
+
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      ctx_first.next = win->img_list;
+      ctx = &ctx_first;
+      while (ctx && ctx->next)
+	{
+	  if (ctx->next->img == img_todel)
+	    {
+	      [(id)(win->winid) selectGLContext];
+	      glDeleteBuffers(1, &(ctx->next->vbuffer));
+	      glDeleteTextures(1, &(ctx->next->texture));
+	      ctx_to_del = ctx->next;
+	      ctx->next = ctx->next->next;
+	      free(ctx_to_del);
+	    }
+	  ctx = ctx->next;
+	}
+      win->img_list = ctx_first.next;
+      win = win->next;
+    }
+
+
+  free(img_todel->buffer);
+  free(img_todel);
+
+  //  printf("destroy image done.\n");
+  return (0);
+}
diff --git a/minilibx_macos/mlx_new_window.h b/minilibx_macos/mlx_new_window.h
new file mode 100644
index 0000000..f57324a
--- /dev/null
+++ b/minilibx_macos/mlx_new_window.h
@@ -0,0 +1,56 @@
+//
+// mlx_int.h for minilibx
+//
+// ol@staff.42.fr
+//
+// include opengl needed before mlx_int.h
+//
+
+#import <Cocoa/Cocoa.h>
+#import "mlx_int.h"
+
+@interface NSWindowEvent : NSWindow
+{
+  func_t	event_funct[MAX_EVENT];
+  void		*(event_param[MAX_EVENT]);
+  int		keyrepeat;
+  int		keyflag;
+  int		size_x;
+  int		size_y;
+}
+- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr;
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
+- (void) setKeyRepeat:(int)mode;
+- (void) exposeNotification:(NSNotification *)note;
+- (void) closeNotification:(NSNotification *)note;
+@end
+
+
+@interface MlxWin : NSOpenGLView
+{
+  NSWindowEvent		*win;
+  NSOpenGLContext	*ctx;
+  glsl_info_t		glsl;
+  int			openglwin;
+
+  int			size_x;
+  int			size_y;
+
+  int			pixel_nb;
+  GLuint		pixel_vbuffer;
+  GLuint		pixel_texture;
+  unsigned int		*pixtexbuff;
+}
+
+- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs;
+- (void) selectGLContext;
+- (void) flushGLContext;
+- (void) pixelPutColor: (int)color X:(int)x Y:(int)y;
+- (void) mlx_gl_draw;
+- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y;
+- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy;
+- (NSOpenGLContext *) ctx;
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
+- (void) setKeyRepeat:(int)mode;
+- (void) ctxNeedsUpdate;
+@end
diff --git a/minilibx_macos/mlx_new_window.m b/minilibx_macos/mlx_new_window.m
new file mode 100644
index 0000000..7a13ab6
--- /dev/null
+++ b/minilibx_macos/mlx_new_window.m
@@ -0,0 +1,760 @@
+//  mlx_new_window.m
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+#import <AppKit/NSOpenGLView.h>
+
+#include <stdio.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+
+NSOpenGLPixelFormatAttribute pfa_attrs[] =
+  {
+    NSOpenGLPFADepthSize, 32,
+    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy,
+    0
+  };
+
+static const GLfloat pixel_vertexes[8] =
+  {
+    -1.0 , -1.0,
+    1.0, -1.0,
+    1.0, 1.0,
+    -1.0, 1.0
+  };
+
+
+
+int get_mouse_button(NSEventType eventtype)
+{
+  switch (eventtype) {
+  case NSLeftMouseDown:
+  case NSLeftMouseUp:
+  case NSLeftMouseDragged:
+    return 1;
+  case NSRightMouseDown:
+  case NSRightMouseUp:
+  case NSRightMouseDragged:
+    return 2;
+  case NSOtherMouseDown:
+  case NSOtherMouseUp:
+  case NSOtherMouseDragged:
+    return 3;
+  default:
+    return 0;
+  }
+}
+
+
+// classes for window & events
+
+
+
+
+@implementation NSWindowEvent
+
+- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr
+{
+  int i;
+
+  if ((self = [super initWithContentRect:rect
+		     styleMask:winstyle
+		     backing:bck
+		     defer:dfr]))
+    {
+      i = MAX_EVENT;
+      while (i--)
+	{
+	  event_funct[i] = NULL;
+	  event_param[i] = NULL;
+	}
+      keyrepeat = 0;
+      keyflag = 0;
+      size_x = rect.size.width;
+      size_y = rect.size.height;
+    }
+  return (self);
+}
+
+
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
+{
+  event_funct[event] = func;
+  event_param[event] = param;
+  if (event == 6) // motion notify
+    {
+      if (func == NULL)
+	[self setAcceptsMouseMovedEvents:NO];
+      else
+	[self setAcceptsMouseMovedEvents:YES];
+    }
+}
+
+
+- (void) setKeyRepeat:(int)mode
+{
+  keyrepeat = mode;
+}
+
+- (BOOL) acceptsFirstResponder
+{
+  return (YES);
+}
+
+- (void) flagsChanged:(NSEvent *)theEvent
+{
+  unsigned int flag;
+  int the_key;
+  unsigned int val;
+
+  flag = [theEvent modifierFlags];
+  //  printf("Key flag changed: %x => %x\n", keyflag, flag);
+  //  printf("**mlx flag low part : %d  - %x\n", flag&0xFFFF, flag&0xFFFF);
+
+  if (!(val = (keyflag|flag)&(~(keyflag&flag))))
+    return ;   // no change - can happen when loosing focus on special key pressed, then re-pressed later
+  the_key = 1;
+  while (((val >> (the_key-1)) & 0x01)==0)
+    the_key ++;
+  if (flag > keyflag && event_funct[2] != NULL)
+    event_funct[2](0xFF+the_key, event_param[2]);
+  if (flag < keyflag && event_funct[3] != NULL)
+    event_funct[3](0xFF+the_key, event_param[3]);
+  /*
+  if (event_funct[2] != NULL)
+    {
+      if (!(keyflag & NSAlphaShiftKeyMask) && (flag&NSAlphaShiftKeyMask)) event_funct[2](0xFF+1, event_param[2]);
+      if (!(keyflag & NSShiftKeyMask) && (flag&NSShiftKeyMask)) event_funct[2](0xFF+2, event_param[2]);
+      if (!(keyflag & NSControlKeyMask) && (flag&NSControlKeyMask)) event_funct[2](0xFF+3, event_param[2]);
+      if (!(keyflag & NSAlternateKeyMask) && (flag&NSAlternateKeyMask)) event_funct[2](0xFF+4, event_param[2]);
+      if (!(keyflag & NSCommandKeyMask) && (flag&NSCommandKeyMask)) event_funct[2](0xFF+5, event_param[2]);
+      if (!(keyflag & NSNumericPadKeyMask) && (flag&NSNumericPadKeyMask)) event_funct[2](0xFF+6, event_param[2]);
+      if (!(keyflag & NSHelpKeyMask) && (flag&NSHelpKeyMask)) event_funct[2](0xFF+7, event_param[2]);
+      if (!(keyflag & NSFunctionKeyMask) && (flag&NSFunctionKeyMask)) event_funct[2](0xFF+8, event_param[2]);
+    }
+  if (event_funct[3] != NULL)
+    {
+      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](NSShiftKeyMask, event_param[3]);
+
+      if ((keyflag & NSAlphaShiftKeyMask) && !(flag&NSAlphaShiftKeyMask)) event_funct[3](0xFF+1, event_param[3]);
+      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](0xFF+2, event_param[3]);
+      if ((keyflag & NSControlKeyMask) && !(flag&NSControlKeyMask)) event_funct[3](0xFF+3, event_param[3]);
+      if ((keyflag & NSAlternateKeyMask) && !(flag&NSAlternateKeyMask)) event_funct[3](0xFF+4, event_param[3]);
+      if ((keyflag & NSCommandKeyMask) && !(flag&NSCommandKeyMask)) event_funct[3](0xFF+5, event_param[3]);
+      if ((keyflag & NSNumericPadKeyMask) && !(flag&NSNumericPadKeyMask)) event_funct[3](0xFF+6, event_param[3]);
+      if ((keyflag & NSHelpKeyMask) && !(flag&NSHelpKeyMask)) event_funct[3](0xFF+7, event_param[3]);
+      if ((keyflag & NSFunctionKeyMask) && !(flag&NSFunctionKeyMask)) event_funct[3](0xFF+8, event_param[3]);
+    }
+  */
+  keyflag = flag;
+}
+
+- (void) keyDown:(NSEvent *)theEvent
+{
+  if (keyrepeat==0 && [theEvent isARepeat])
+    return ;
+  //  printf("Key Down: %d\n", [theEvent keyCode]);
+  if (event_funct[2] != NULL)
+    event_funct[2]([theEvent keyCode], event_param[2]);
+  //  else [super keyDown: theEvent];
+}
+
+- (void) keyUp:(NSEvent *)theEvent
+{
+  //  printf("Key Up: %d\n", [theEvent keyCode]);
+  if (event_funct[3] != NULL)
+    event_funct[3]([theEvent keyCode], event_param[3]);
+  //  else [super keyUp: theEvent];
+
+}
+
+- (void) mouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) rightMouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) otherMouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) mouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) rightMouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) otherMouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) mouseMoved:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) mouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) rightMouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) otherMouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) scrollWheel:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+  float	  sens;
+
+  if (event_funct[4] == NULL)
+    return ;
+
+  button = 0;
+  thepoint = [theEvent locationInWindow];
+  sens = [theEvent deltaY];
+  if (sens > 0.2)
+    button = 4;
+  if (sens < -0.2)
+    button = 5;
+  sens = [theEvent deltaX];
+  if (sens > 0.2)
+    button = 6;
+  if (sens < -0.2)
+    button = 7;
+  if (button != 0)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+
+- (void) exposeNotification:(NSNotification *)note
+{
+  //    printf("Expose...\n");
+    if (event_funct[12] != NULL)
+      event_funct[12](event_param[12]);
+    //    printf("Expose done.\n");
+}
+
+- (void) closeNotification:(NSNotification *)note
+{
+  if (event_funct[17] != NULL)
+    event_funct[17](event_param[17]);
+}
+
+- (void) deminiaturizeNotification:(NSNotification *)note
+{
+  //  if (event_funct[??] != NULL)
+  //    event_funct[??](event_param[??]);
+  [self exposeNotification:note];
+}
+@end
+
+
+@implementation MlxWin
+
+- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs
+{
+  NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
+
+  if ((self = [super initWithFrame:rect pixelFormat:pixFmt]) != nil)
+    {
+      NSUInteger windowStyle = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask;
+
+      win = [[NSWindowEvent alloc] initWithContentRect:rect
+				   styleMask:windowStyle
+				   backing:NSBackingStoreBuffered   // NSBackingStoreNonretained
+				   defer:NO];
+      [win setContentView:self];
+      [win setTitle:title];
+      [win setKeyRepeat:1];
+      [win makeKeyAndOrderFront:self];
+
+      //      printf("init ctx: current %p ", [NSOpenGLContext currentContext]);
+
+      //      ctx = [[NSOpenGLContext alloc] initWithFormat:pixFmt shareContext:[NSOpenGLContext currentContext]]; //other_context];
+      //      [ctx setView:self];
+      //      [ctx makeCurrentContext];
+
+      [[self openGLContext] makeCurrentContext];
+      [[self openGLContext] setView:self];
+      [self prepareOpenGL];
+
+      [self setNextKeyView:self];
+
+      //      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidExposeNotification" object:nil];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidBecomeKeyNotification" object:win];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(deminiaturizeNotification:) name:@"NSWindowDidDeminiaturizeNotification" object:win];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(closeNotification:) name:@"NSWindowWillCloseNotification" object:win];
+      // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctxNeedsUpdate:)
+      //				    name:NSViewGlobalFrameDidChangeNotification
+      //				    object:nil];
+
+      size_x = rect.size.width;
+      size_y = rect.size.height;
+
+      glClearColor(0, 0, 0, 0);
+      glClear(GL_COLOR_BUFFER_BIT);
+      glFlush();
+
+      //[win makeKeyAndOrderFront:nil];
+      // BOOL r = [win isKeyWindow];
+      //  if (r==YES) printf("keywindow ok\n"); else printf("keywindow KO\n");
+
+      // Window controller subclass to set title
+      // NSWindowController* windowController = [[NSWindowController alloc] initWithWindow:win];
+      // [windowController windowTitleForDocumentDisplayName:title];
+      // [windowController showWindow:nil];
+      // MlxWinController *mlxWinCont = [[MlxWinController alloc] initWin:win andTitle:title];
+
+      // after nswindowcontroller who will retake first responder
+      //      BOOL r = [win makeFirstResponder:nil];
+      //      if (r==YES) printf("responder ok\n"); else printf("responder KO\n");
+
+      [pixFmt release];
+    }
+  return (self);
+}
+
+- (int)	pixel_management
+{
+  bzero(&glsl, sizeof(glsl));   // so gldelete[shader/program] go silent on error.
+
+  glDisable(GL_DEPTH_TEST);
+  glGenBuffers(1, &pixel_vbuffer);
+  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
+  glBufferData(GL_ARRAY_BUFFER, sizeof(pixel_vertexes), pixel_vertexes, GL_DYNAMIC_DRAW); // 4 points buff
+  // pixel_ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
+
+  glGenTextures(1, &pixel_texture);
+  glBindTexture(GL_TEXTURE_2D, pixel_texture);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
+  pixtexbuff = malloc(sizeof(unsigned int)*size_x*size_y);
+  pixel_nb = size_x*size_y;
+  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
+  pixel_nb = 0;
+  glTexImage2D(
+	       GL_TEXTURE_2D, 0,           /* target, level of detail */
+	       GL_RGBA8,                    /* internal format */
+	       size_x, size_y, 0,           /* width, height, border */
+	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
+	       pixtexbuff                   /* pixels */
+	       );
+  //      printf("pix tex err? 0x%x\n", glGetError());
+
+  if (mlx_shaders(&glsl))
+    return (0);
+
+  glUseProgram(glsl.pixel_program);
+  glsl.loc_pixel_texture = glGetUniformLocation(glsl.pixel_program, "texture");
+  //glsl.loc_pixel_winhalfsize = glGetUniformLocation(glsl.pixel_program, "winhalfsize");
+  glsl.loc_pixel_position = glGetAttribLocation(glsl.pixel_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glUseProgram(glsl.image_program);
+  glsl.loc_image_texture = glGetUniformLocation(glsl.image_program, "texture");
+  glsl.loc_image_pos = glGetUniformLocation(glsl.image_program, "imagepos");
+  glsl.loc_image_size = glGetUniformLocation(glsl.image_program, "imagesize");
+  glsl.loc_image_winhalfsize = glGetUniformLocation(glsl.image_program, "winhalfsize");
+  glsl.loc_image_position = glGetAttribLocation(glsl.image_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glUseProgram(glsl.font_program);
+  glsl.loc_font_texture = glGetUniformLocation(glsl.font_program, "texture");
+  glsl.loc_font_color = glGetUniformLocation(glsl.font_program, "color");
+  glsl.loc_font_posinwin = glGetUniformLocation(glsl.font_program, "fontposinwin");
+  glsl.loc_font_posinatlas = glGetUniformLocation(glsl.font_program, "fontposinatlas");
+  glsl.loc_font_atlassize = glGetUniformLocation(glsl.font_program, "fontatlassize");
+  glsl.loc_font_winhalfsize = glGetUniformLocation(glsl.font_program, "winhalfsize");
+  glsl.loc_font_position = glGetAttribLocation(glsl.font_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glFlush();
+  return (1);
+}
+
+- (void) ctxNeedsUpdate
+{
+  // printf("Context update\n");
+  [ctx update];
+}
+
+- (void) selectGLContext
+{
+  if ([NSOpenGLContext currentContext] != [self openGLContext])
+    {
+      //      printf("ctx: %p => %p\n", [NSOpenGLContext currentContext], [self openGLContext]);
+      [[self openGLContext] makeCurrentContext];
+    }
+}
+
+- (void) flushGLContext
+{
+  [[self openGLContext] flushBuffer];
+}
+
+- (NSOpenGLContext *) ctx
+{
+  return (ctx);
+}
+
+
+- (void) pixelPutColor: (int)color X:(int)x Y:(int)y
+{
+  pixel_nb ++;
+
+  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
+  glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, 1, 1, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)(&color));
+
+  if (pixel_nb >= MAX_PIXEL_NB)
+    [self mlx_gl_draw];
+}
+
+- (void) destroyPixelManagement
+{
+  free(pixtexbuff);
+  [self selectGLContext];
+  glDeleteBuffers(1, &pixel_vbuffer);
+  glDeleteTextures(1, &pixel_texture);
+  glDeleteProgram(glsl.pixel_program);
+  glDeleteProgram(glsl.image_program);
+  glDeleteShader(glsl.pixel_vshader);
+  glDeleteShader(glsl.pixel_fshader);
+  glDeleteShader(glsl.image_vshader);
+  glDeleteShader(glsl.image_fshader);
+}
+
+
+- (void) destroyMe
+{
+  [[NSNotificationCenter defaultCenter] removeObserver:win];
+  [[NSNotificationCenter defaultCenter] removeObserver:self];
+  // [ctx release];
+  [win close];
+  [self release];
+}
+
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
+{
+  [win setEvent:event andFunc:func andParam:param];
+}
+
+- (void) setKeyRepeat:(int)mode
+{
+  [win setKeyRepeat:mode];
+}
+
+- (void) clearWin
+{
+  glClearColor(0, 0, 0, 0);
+  glClear(GL_COLOR_BUFFER_BIT);
+}
+
+- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y
+{
+
+  if (pixel_nb >0)
+    [self mlx_gl_draw];
+
+  glUseProgram(glsl.image_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glUniform1i(glsl.loc_image_texture, 0);
+
+  glUniform2f(glsl.loc_image_winhalfsize, size_x/2, size_y/2);
+  glUniform2f(glsl.loc_image_pos, x, size_y - y);
+  glUniform2f(glsl.loc_image_size, img->width, -img->height);
+
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+}
+
+
+- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy
+{
+  GLfloat color_tab[4];
+
+  if (pixel_nb >0)
+    [self mlx_gl_draw];
+
+  color_tab[0] = ((float)((color&0xFF0000)>>16))/255.0;
+  color_tab[1] = ((float)((color&0xFF00)>>8))/255.0;
+  color_tab[2] = ((float)((color&0xFF)>>0))/255.0;
+  color_tab[3] = 1.0;
+  glUseProgram(glsl.font_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glUniform1i(glsl.loc_font_texture, 0);
+  glUniform4fv(glsl.loc_font_color, 1, color_tab);
+
+  glUniform2f(glsl.loc_font_winhalfsize, size_x/2, size_y/2);
+  glUniform2f(glsl.loc_font_posinwin, x, size_y - 1 - y);
+  glUniform2f(glsl.loc_font_posinatlas, gx, gy);
+  glUniform2f(glsl.loc_font_atlassize, img->width, img->height);
+
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+}
+
+
+- (void) mlx_gl_draw
+{
+  if (pixel_nb <= 0)
+    return ;
+
+  glUseProgram(glsl.pixel_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
+  glUniform1i(glsl.loc_pixel_texture, 0);
+  
+  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+  pixel_nb = size_x*size_y;
+  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
+  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, size_x, size_y, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixtexbuff);
+  pixel_nb = 0;
+  
+}
+
+@end
+
+
+// mlx API
+ 
+
+void *mlx_new_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title)
+{
+  mlx_win_list_t	*newwin;
+  NSString		*str;
+
+  if ((newwin = malloc(sizeof(*newwin))) == NULL)
+    return ((void *)0);
+  newwin->img_list = NULL;
+  newwin->next = mlx_ptr->win_list;
+  newwin->nb_flush = 0;
+  newwin->pixmgt = 1;
+  mlx_ptr->win_list = newwin;
+
+  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y);
+  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding];
+  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs];
+  if (newwin->winid)
+    if (![(id)(newwin->winid) pixel_management])
+      {
+	[(id)(newwin->winid) destroyPixelManagement];
+	[(id)(newwin->winid) destroyMe];
+      }
+  return ((void *)newwin);
+}
+
+
+void mlx_clear_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr)
+{
+  [(id)(win_ptr->winid) selectGLContext];
+  [(id)(win_ptr->winid) clearWin];
+  win_ptr->nb_flush ++;
+}
+
+
+void mlx_expose_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:12 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_key_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:3 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_mouse_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:4 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_hook(mlx_win_list_t *win_ptr, int x_event, int x_mask, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:x_event andFunc:funct_ptr andParam:param];
+}
+
+int     mlx_do_key_autorepeatoff(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      [(id)(win->winid) setKeyRepeat:0];
+      win = win->next;
+    }
+  return (0);
+}
+
+int     mlx_do_key_autorepeaton(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      [(id)(win->winid) setKeyRepeat:1];
+      win = win->next;
+    }
+  return (0);
+}
+
+
+int     mlx_destroy_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_to_del)
+{
+  mlx_win_list_t    first;
+  mlx_win_list_t    *win;
+  mlx_img_ctx_t	    *ctx;
+  mlx_img_ctx_t	    *ctx2;
+
+  first.next = mlx_ptr->win_list;
+  win = &first;
+  while (win && win->next)
+    {
+      if (win->next == win_to_del)
+	win->next = win->next->next;
+      win = win->next;
+    }
+  mlx_ptr->win_list = first.next;
+
+  if (win_to_del->pixmgt)
+    {
+      [(id)(win_to_del->winid) selectGLContext];
+      ctx = win_to_del->img_list;   // should be null anyway if no pixel management
+      while (ctx)
+	{
+	  glDeleteBuffers(1, &(ctx->vbuffer));
+	  glDeleteTextures(1, &(ctx->texture));
+	  ctx2 = ctx;
+	  ctx = ctx->next;
+	  free(ctx2);
+	}
+      [(id)(win_to_del->winid) destroyPixelManagement];
+    }
+  [(id)(win_to_del->winid) destroyMe];
+  free(win_to_del);
+
+  //  printf("destroy window done.\n");
+  mlx_do_sync(mlx_ptr);
+  return (0);
+}
diff --git a/minilibx/mlx_rgb.c b/minilibx_macos/mlx_rgb.c
similarity index 99%
rename from minilibx/mlx_rgb.c
rename to minilibx_macos/mlx_rgb.c
index 0cfccf6..3f98717 100644
--- a/minilibx/mlx_rgb.c
+++ b/minilibx_macos/mlx_rgb.c
@@ -3,7 +3,6 @@
 ** the XFree86 distribution.
 */
 
-#include	"mlx_int.h"
 
 struct s_col_name mlx_col_name[] =
 {
diff --git a/minilibx_macos/mlx_shaders.c b/minilibx_macos/mlx_shaders.c
new file mode 100644
index 0000000..8a50e27
--- /dev/null
+++ b/minilibx_macos/mlx_shaders.c
@@ -0,0 +1,236 @@
+//  mlx_shaders.c
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <OpenGL/gl3.h>
+#include "mlx_int.h"
+
+
+void display_log(GLuint object, void (*param_func)(), void (*getlog_func)())
+{
+  GLint log_length;
+  char *log;
+
+  param_func(object, GL_INFO_LOG_LENGTH, &log_length);
+  log = malloc(log_length);
+  getlog_func(object, log_length, NULL, log);
+  fprintf(stderr, "%s", log);
+  free(log);
+}
+
+
+int mlx_shaders_pixel(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->pixel_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_Position = vec4( position, 0.0, 1.0);"
+		  " texcoord = vec2(position[0]+1.0, 1.0 - position[1]) / 2.0;"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->pixel_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->pixel_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->pixel_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile pixel vshader :\n");
+    display_log(glsl->pixel_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->pixel_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->pixel_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->pixel_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->pixel_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile pixel fshader :\n");
+    display_log(glsl->pixel_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->pixel_program = glCreateProgram();
+  glAttachShader(glsl->pixel_program, glsl->pixel_vshader);
+  glAttachShader(glsl->pixel_program, glsl->pixel_fshader);
+  glLinkProgram(glsl->pixel_program);
+
+  glGetProgramiv(glsl->pixel_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link pixel shader program:\n");
+    display_log(glsl->pixel_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+int mlx_shaders_image(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->image_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "uniform vec2 winhalfsize;"
+		  "uniform vec2 imagepos;"
+		  "uniform vec2 imagesize;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " texcoord = position / imagesize;"
+		  " vec2 pos = position - winhalfsize + imagepos;"
+		  " pos = pos / winhalfsize;"
+		  " gl_Position = vec4( pos, 0.0, 1.0);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->image_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->image_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->image_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile image vshader :\n");
+    display_log(glsl->image_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->image_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->image_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->image_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->image_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile image fshader :\n");
+    display_log(glsl->image_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->image_program = glCreateProgram();
+  glAttachShader(glsl->image_program, glsl->image_vshader);
+  glAttachShader(glsl->image_program, glsl->image_fshader);
+  glLinkProgram(glsl->image_program);
+
+  glGetProgramiv(glsl->image_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link image shader program:\n");
+    display_log(glsl->image_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+
+
+int mlx_shaders_font(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->font_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "uniform vec2 winhalfsize;"
+		  "uniform vec2 fontposinwin;"
+		  "uniform vec2 fontposinatlas;"
+		  "uniform vec2 fontatlassize;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " texcoord = (position * vec2(1.0, -1.0) + fontposinatlas ) / fontatlassize;"
+		  " vec2 pos = position - winhalfsize + fontposinwin;"
+		  " pos = pos / winhalfsize;"
+		  " gl_Position = vec4( pos, 0.0, 1.0);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->font_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->font_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->font_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile font vshader :\n");
+    display_log(glsl->font_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->font_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "uniform vec4 color;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = color * texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->font_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->font_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->font_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile font fshader :\n");
+    display_log(glsl->font_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->font_program = glCreateProgram();
+  glAttachShader(glsl->font_program, glsl->font_vshader);
+  glAttachShader(glsl->font_program, glsl->font_fshader);
+  glLinkProgram(glsl->font_program);
+
+  glGetProgramiv(glsl->font_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link font shader program:\n");
+    display_log(glsl->font_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+
+int mlx_shaders(glsl_info_t *glsl)
+{
+  return (mlx_shaders_pixel(glsl) + mlx_shaders_image(glsl) + mlx_shaders_font(glsl));
+}
diff --git a/minilibx/mlx_xpm.c b/minilibx_macos/mlx_xpm.c
similarity index 73%
rename from minilibx/mlx_xpm.c
rename to minilibx_macos/mlx_xpm.c
index ac8928f..78d8c9b 100644
--- a/minilibx/mlx_xpm.c
+++ b/minilibx_macos/mlx_xpm.c
@@ -1,24 +1,36 @@
-/*
-** xpm-read.c for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@epitech.net>
-** 
-** Started on  Tue Dec 11 15:25:27 2001 olivier crouzet
-** Last update Sat Oct  1 14:56:13 2005 Olivier Crouzet
-*/
-
+// mlx xpm
+// by ol
 
+#include <OpenGL/gl3.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
 #include	"mlx_int.h"
 
-extern struct s_col_name mlx_col_name[];
+typedef struct  s_xpm_col
+{
+  int           name;
+  int           col;
+} t_xpm_col;
+
+
+struct  s_col_name
+{
+  char  *name;
+  int   color;
+};
+
+//extern struct s_col_name mlx_col_name[];
+#include "mlx_rgb.c"
 
 
 #define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
 		  if (colors_direct) free(colors_direct); \
-                  if (img) {XDestroyImage(img->image); \
-                            XFreePixmap(xvar->display,img->pix);free(img);} \
-                  return ((void *)0);}
+                  if (img) mlx_destroy_image(xvar, img);   \
+                  return ((void *)0); }
 
 
 
@@ -59,7 +71,7 @@ char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
       len = len2;
     }
   /* strcpy(copy,str); */
-  strncpy(copy, str, len2+1);
+  strlcpy(copy, str, len2+1);
   return (copy);
 }
 
@@ -97,8 +109,9 @@ int	mlx_int_get_text_rgb(char *name, char *end)
 }
 
 
-int	mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x)
+void	mlx_int_xpm_set_pixel(mlx_img_list_t *img, char *data, int opp, int col, int x)
 {
+  /*
   int	dec;
 
   dec = opp;
@@ -110,10 +123,13 @@ int	mlx_int_xpm_set_pixel(t_img *img, char *data, int opp, int col, int x)
 	*(data+x*opp+opp-dec-1) = col&0xFF;
       col >>= 8;
     }
+  */
+  // opp is 4, do it the simple way
+  *((unsigned int *)(data+4*x)) = col;
 }
 
 
-void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
+void	*mlx_int_parse_xpm(mlx_ptr_t *xvar,void *info,int info_size,char *(*f)())
 {
   int	pos;
   char	*line;
@@ -130,14 +146,11 @@ void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
   int	x;
   int	i;
   int	j;
-  t_img	*img;
+  mlx_img_list_t	*img;
   t_xpm_col	*colors;
   int		*colors_direct;
   int	width;
   int	height;
-  XImage	*clip_img;
-  XGCValues	xgcv;
-  Pixmap	clip_pix;
 
   colors = 0;
   colors_direct = 0;
@@ -176,35 +189,39 @@ void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
 
       if (!tab[j])
 	RETURN;
-      
+
+      rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]);
+      /*      
       if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1)
 	{
-	  if (!(clip_data = malloc(4*width*height)) ||   /* ok, nice size .. */
+	  if (!(clip_data = malloc(4*width*height)) ||   // ok, nice size ..
 	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
 					1, XYPixmap, 0, clip_data,
 					width, height, 8, (width+7)/8)) )
 	    RETURN;
 	  memset(clip_data, 0xFF, 4*width*height);
 	}
-
+      */
       if (method)
-	colors_direct[mlx_int_get_col_name(line,cpp)] =
-	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
+	colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col;
+      //	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
       else
 	{
 	  colors[i].name = mlx_int_get_col_name(line,cpp);
-	  colors[i].col = rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
+	  colors[i].col = rgb_col; // rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
 	}
       free(tab);
+      tab = 0;
     }
 
   if (!(img = mlx_new_image(xvar,width,height)))
     RETURN;
-  opp = img->bpp/8;
+  //opp = img->bpp/8;
+  opp = 4;
 
 
   i = height;
-  data = img->data;
+  data = img->buffer;
   while (i--)
     {
       if (!(line = f(info,&pos,info_size)))
@@ -226,14 +243,18 @@ void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
 		    j = 0;
 		  }
 	    }
+	  //	  if (col==-1)
+	  //	    XPutPixel(clip_img, x, height-1-i, 0);
+	  //	  else
 	  if (col==-1)
-	    XPutPixel(clip_img, x, height-1-i, 0);
-	  else
-	    mlx_int_xpm_set_pixel(img, data, opp, col, x);
+	    col = 0xFF000000;
+	  mlx_int_xpm_set_pixel(img, data, opp, col, x);
 	  x ++;
 	}
-      data += img->size_line;
+      //      data += img->size_line;
+      data += img->width*4;
     }
+  /*
   if (clip_data)
     {
       if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
@@ -251,6 +272,7 @@ void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
       XSync(xvar->display, False);
       XDestroyImage(clip_img);
     }
+  */
   if (colors)
     free(colors);
   if (colors_direct)
@@ -259,7 +281,7 @@ void	*mlx_int_parse_xpm(t_xvar *xvar,void *info,int info_size,char *(*f)())
 }
 
 
-int	mlx_int_file_get_rid_comment(char *ptr, int size)
+void	mlx_int_file_get_rid_comment(char *ptr, int size)
 {
   int	com_begin;
   int	com_end;
@@ -277,14 +299,13 @@ int	mlx_int_file_get_rid_comment(char *ptr, int size)
 }
 
 
-void	*mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height)
+void	*mlx_xpm_file_to_image(mlx_ptr_t *xvar,char *file,int *width,int *height)
 {
   int	fd;
   int	size;
   char	*ptr;
-  t_img	*img;
+  mlx_img_list_t	*img;
 
-  fd = -1;
   if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
       (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
       (void *)MAP_FAILED)
@@ -294,7 +315,7 @@ void	*mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height)
       return ((void *)0);
     }
   mlx_int_file_get_rid_comment(ptr, size);
-  if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))
+  if ((img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)))
     {
       *width = img->width;
       *height = img->height;
@@ -304,11 +325,11 @@ void	*mlx_xpm_file_to_image(t_xvar *xvar,char *file,int *width,int *height)
   return (img);
 }
 
-void	*mlx_xpm_to_image(t_xvar *xvar,char **xpm_data,int *width,int *height)
+void	*mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height)
 {
-  t_img	*img;
+  mlx_img_list_t	*img;
 
-  if (img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line))
+  if ((img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line)))
     {
       *width = img->width;
       *height = img->height;
diff --git a/src/hooks.c b/src/hooks.c
index 6481fb0..e190098 100644
--- a/src/hooks.c
+++ b/src/hooks.c
@@ -6,7 +6,7 @@
 /*   By: gtertysh <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2017/03/16 18:59:03 by gtertysh          #+#    #+#             */
-/*   Updated: 2017/03/16 18:59:06 by gtertysh         ###   ########.fr       */
+/*   Updated: 2017/03/20 15:29:10 by gtertysh         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -15,7 +15,7 @@
 int		key_hook(int keycode, void *fdf)
 {
 	ft_putnbr(keycode);
-	if (keycode == 65307)
+	if (keycode == 53)
 		quit(fdf);
 //	if (keycode == 89)
 //		aclock_rot(fdf);
diff --git a/src/main.c b/src/main.c
index 3bccd14..91f683b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,7 +6,7 @@
 /*   By: gtertysh <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2017/03/16 18:58:41 by gtertysh          #+#    #+#             */
-/*   Updated: 2017/03/16 18:58:44 by gtertysh         ###   ########.fr       */
+/*   Updated: 2017/03/20 15:33:20 by gtertysh         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -47,7 +47,7 @@ void	recursive_circles(t_pnt pnt, float radius, t_fractol *fr)
 	int tmp;
 	drawcircle(pnt, radius, fr);
 	pnt.color = color_lerp(pnt.color, color_lerp(pnt.color, color_init(0, 97, 255), 0.4), 0.3);
-	if (radius > 2)
+	if (radius > 3)
 	{
 		tmp = pnt.x;
 		pnt.x = tmp + (int)radius / 2;
@@ -70,8 +70,8 @@ int		main(int argc, char **argv)
 
 	srand(time(NULL));
 	fr = NULL;
-	argc = argc;
-	argv = argv;
+	argc = 0;
+	argv = 0;
 	fr = fractol_init();
 //	while (pnt.y < fr->w_height)
 //	{