From abd20a73b4733a1a8b845f6ff0817ed77e545173 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Tue, 10 Mar 2020 10:48:58 +0100
Subject: Freed multiple leaks

---
 src/ft_exit.c        |  4 ++++
 src/ft_init_lists.c  |  2 ++
 src/ft_init_s_ray.c  |  2 ++
 src/ft_raycasting.c  | 14 ++++++--------
 src/ft_save_to_bmp.c |  7 ++++---
 src/ft_warp_level.c  |  9 ++++++---
 6 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/ft_exit.c b/src/ft_exit.c
index 97c9e02..fb6de09 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -57,6 +57,10 @@ static void
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[4].img);
 	if (clist->mlist.isnlvl && clist->tlist[5].img)
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[5].img);
+	if (clist->mlist.isftex && clist->tlist[6].img)
+		mlx_destroy_image(clist->wlist.wlx, clist->tlist[6].img);
+	if (clist->mlist.isctex && clist->tlist[7].img)
+		mlx_destroy_image(clist->wlist.wlx, clist->tlist[7].img);
 }
 
 int
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index bd2ae74..82f5c0e 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -76,6 +76,8 @@ static int8_t
 	cl->f_rgb = ft_init_rgb();
 	cl->c_rgb = ft_init_rgb();
 	cl->rlist = ft_init_s_ray();
+	if (!(cl->rlist.wall_dist_tab = (float*)malloc(1 * sizeof(float))))
+		return (-1);
 	cl->currlvl = 0;
 	cl->walltexgood = 0;
 	ft_init_funptr(cl);
diff --git a/src/ft_init_s_ray.c b/src/ft_init_s_ray.c
index e890d68..0d4ba96 100644
--- a/src/ft_init_s_ray.c
+++ b/src/ft_init_s_ray.c
@@ -11,6 +11,8 @@
 /* ************************************************************************** */
 
 #include <cub3d.h>
+#include <stdlib.h>
+#include <stddef.h>
 
 t_ray
 	ft_init_s_ray(void)
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index 3cbd368..baa71af 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -83,17 +83,16 @@ static void
 void
 	ft_castray(t_cub *cl)
 {
-	uint16_t	i;
-	t_win		*wl;
-	float		*dist_tab;
+	uint16_t		i;
+	t_win			*wl;
 
+	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	wl = &cl->wlist;
 	i = (wl->y_size / 2) + 1;
 	while (++i < wl->y_size)
 		ft_floor_cast(i, cl);
-	if (!(dist_tab = malloc(sizeof(float) * cl->wlist.x_size)))
-		return ;
-	if (!(cl->rlist.wall_dist_tab = malloc(sizeof(float) * cl->wlist.x_size)))
+	if (!(cl->rlist.wall_dist_tab =
+			(float*)malloc(sizeof(float) * cl->wlist.x_size)))
 		return ;
 	i = 0;
 	while (i < wl->x_size)
@@ -102,8 +101,7 @@ void
 		ft_choose_tex(cl);
 		ft_calc_tex(cl);
 		ft_draw_verline(cl, i, cl->rlist.wall_t, cl->rlist.wall_b);
-		dist_tab[i] = cl->rlist.wall_dist;
-		cl->rlist.wall_dist_tab = dist_tab;
+		cl->rlist.wall_dist_tab[i] = cl->rlist.wall_dist;
 		i++;
 	}
 }
diff --git a/src/ft_save_to_bmp.c b/src/ft_save_to_bmp.c
index 90bbb1f..ae3a2b6 100644
--- a/src/ft_save_to_bmp.c
+++ b/src/ft_save_to_bmp.c
@@ -93,9 +93,10 @@ static int8_t
 	bmp_info.size_image = size;
 	if (!(fd = open(fname, O_RDWR | O_CREAT, 0644)))
 		return (-1);
-	write(fd, &bmp_file, sizeof(t_bmp_file));
-	write(fd, &bmp_info, sizeof(t_bmp_info));
-	write(fd, bmp, size);
+	if (!write(fd, &bmp_file, sizeof(t_bmp_file)) ||
+		!write(fd, &bmp_info, sizeof(t_bmp_info)) ||
+		!write(fd, bmp, size))
+		return (-1);
 	close(fd);
 	return (0);
 }
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index 4a02c2b..1f744c2 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -59,13 +59,16 @@ static void
 	cl->f_rgb = ft_init_rgb();
 	cl->c_rgb = ft_init_rgb();
 	cl->rlist = ft_init_s_ray();
-	i = 0;
-	while (i <= 5)
+	i = -1;
+	while (++i <= 5)
 	{
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[i].img);
 		cl->tlist[i].img = NULL;
-		i++;
 	}
+	if (cl->mlist.isftex && cl->tlist[6].img)
+		mlx_destroy_image(cl->wlist.wlx, cl->tlist[6].img);
+	if (cl->mlist.isctex && cl->tlist[7].img)
+		mlx_destroy_image(cl->wlist.wlx, cl->tlist[7].img);
 }
 
 static void
-- 
cgit v1.2.3


From 25247ca1f3ffc9485b02686f616c41a52f8eb82a Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:00:07 +0100
Subject: Pas trop ecole opti memoire mais ok

---
 inc/cub3d.h         |  2 +-
 inc/cub3d_structs.h |  1 +
 map/map_five.cub    |  3 +--
 src/ft_floor_cast.c | 46 +++++++++++++++++++++++++++-------------------
 src/ft_raycasting.c | 16 ++++++++++------
 5 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/inc/cub3d.h b/inc/cub3d.h
index 7de1df7..2a9d66e 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -130,7 +130,7 @@ uint8_t			ft_use_args(int argc, const char *argv[],
 
 void			ft_castray(t_cub *cl);
 void			ft_detect(t_cub *cl);
-void			ft_floor_cast(uint16_t y, t_cub *cl);
+void			ft_floor_cast(t_cub *cl);
 
 /*
 ** ====== OTHER ======
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index f1dfdfc..144de6f 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -137,6 +137,7 @@ typedef struct			s_ray
 	float				y_delta_dist;
 	int16_t				wall_t;
 	int16_t				wall_b;
+	int16_t				*wall_bz;
 	uint8_t				side;
 	size_t				sqx;
 	size_t				sqy;
diff --git a/map/map_five.cub b/map/map_five.cub
index 3c6bc4a..d5c3361 100644
--- a/map/map_five.cub
+++ b/map/map_five.cub
@@ -8,11 +8,10 @@ S ./media/img/crapaud.xpm
 F ./media/img/terre.xpm
 C 225,30,0
 
-SB ./media/img/normal_sky.xpm
 LT ./media/img/linuz.xpm
 L ./map/map_two.cub
 
-SH 5
+SH 4
 
         1111111111111111111111111111111
         1000000000110000000000000000001
diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index 384f699..d2c6046 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -78,8 +78,6 @@ static void
 	{
 		ft_set_tex_xy(7, rl, cl);
 	}
-	rl->x_floor += cl->mlist.x_floor_step;
-	rl->y_floor += cl->mlist.y_floor_step;
 	if (cl->mlist.isftex)
 		ft_draw_extra_tex(6, y, x, cl);
 	else
@@ -91,28 +89,38 @@ static void
 }
 
 void
-	ft_floor_cast(uint16_t y, t_cub *cl)
+	ft_floor_cast(t_cub *cl)
 {
 	t_ray		*rl;
 	uint16_t	x;
+	uint16_t	y;
 
 	rl = &cl->rlist;
-	rl->x_f_ray_dir = cl->plist.dir_x - cl->plist.plane_x;
-	rl->y_f_ray_dir = cl->plist.dir_y - cl->plist.plane_y;
-	rl->x_f_ray_dir_bis = cl->plist.dir_x + cl->plist.plane_x;
-	rl->y_f_ray_dir_bis = cl->plist.dir_y + cl->plist.plane_y;
-	rl->p = y - cl->wlist.y_size / 2;
-	cl->plist.pos_z = 0.5 * cl->wlist.y_size;
-	rl->row_dist = cl->plist.pos_z / rl->p;
-	cl->mlist.x_floor_step = rl->row_dist *
-		(rl->x_f_ray_dir_bis - rl->x_f_ray_dir) / cl->wlist.x_size;
-	cl->mlist.y_floor_step = rl->row_dist *
-		(rl->y_f_ray_dir_bis - rl->y_f_ray_dir) / cl->wlist.x_size;
-	rl->x_floor = cl->plist.pos_y + rl->row_dist * rl->x_f_ray_dir;
-	rl->y_floor = cl->plist.pos_x + rl->row_dist * rl->y_f_ray_dir;
-	x = 0;
-	while (++x < cl->wlist.x_size)
+	y = (cl->wlist.y_size / 2) + 1;
+	while (++y < cl->wlist.y_size)
 	{
-		ft_floor_cast_loop(y, x, rl, cl);
+		rl->x_f_ray_dir = cl->plist.dir_x - cl->plist.plane_x;
+		rl->y_f_ray_dir = cl->plist.dir_y - cl->plist.plane_y;
+		rl->x_f_ray_dir_bis = cl->plist.dir_x + cl->plist.plane_x;
+		rl->y_f_ray_dir_bis = cl->plist.dir_y + cl->plist.plane_y;
+		rl->p = y - cl->wlist.y_size / 2;
+		cl->plist.pos_z = 0.5 * cl->wlist.y_size;
+		rl->row_dist = cl->plist.pos_z / rl->p;
+		cl->mlist.x_floor_step = rl->row_dist *
+			(rl->x_f_ray_dir_bis - rl->x_f_ray_dir) / cl->wlist.x_size;
+		cl->mlist.y_floor_step = rl->row_dist *
+			(rl->y_f_ray_dir_bis - rl->y_f_ray_dir) / cl->wlist.x_size;
+		rl->x_floor = cl->plist.pos_y + rl->row_dist * rl->x_f_ray_dir;
+		rl->y_floor = cl->plist.pos_x + rl->row_dist * rl->y_f_ray_dir;
+		x = -1;
+		while (++x < cl->wlist.x_size)
+		{
+			if (cl->rlist.wall_bz[x] <= y)
+			{
+				ft_floor_cast_loop(y, x, rl, cl);
+			}
+			rl->x_floor += cl->mlist.x_floor_step;
+			rl->y_floor += cl->mlist.y_floor_step;
+		}
 	}
 }
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index baa71af..5c57044 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -76,24 +76,25 @@ static void
 	if (cl->rlist.wall_t < 0)
 		cl->rlist.wall_t = 0;
 	cl->rlist.wall_b = cl->rlist.line_h / 2 + wl->y_size / 2;
-	if (cl->rlist.wall_b >= (float)wl->y_size)
+	if (cl->rlist.wall_b >= (int16_t)wl->y_size)
 		cl->rlist.wall_b = wl->y_size - 1;
+	cl->rlist.wall_bz[i] = cl->rlist.wall_b;
 }
 
 void
 	ft_castray(t_cub *cl)
 {
-	uint16_t		i;
-	t_win			*wl;
+	uint16_t	i;
+	t_win		*wl;
 
 	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	wl = &cl->wlist;
-	i = (wl->y_size / 2) + 1;
-	while (++i < wl->y_size)
-		ft_floor_cast(i, cl);
 	if (!(cl->rlist.wall_dist_tab =
 			(float*)malloc(sizeof(float) * cl->wlist.x_size)))
 		return ;
+	if (!(cl->rlist.wall_bz =
+			(int16_t*)malloc(cl->wlist.x_size * sizeof(int16_t))))
+		return ;
 	i = 0;
 	while (i < wl->x_size)
 	{
@@ -104,4 +105,7 @@ void
 		cl->rlist.wall_dist_tab[i] = cl->rlist.wall_dist;
 		i++;
 	}
+	ft_floor_cast(cl);
+	i = 0;
+	ft_memdel((void**)&cl->rlist.wall_bz);
 }
-- 
cgit v1.2.3


From ac3c64f5438770e351ea6af693db76e51671e5b3 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:16:16 +0100
Subject: qwe

---
 src/ft_floor_cast.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index 384f699..a7e3de2 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -16,16 +16,8 @@
 static void
 	ft_draw_plain_horizontal(t_rgb rgb, t_cub *cl, int32_t y, int32_t x)
 {
-	if (cl->mlist.darklvl > 0)
-	{
-		*(int*)(cl->img.ptr +
+	*(int*)(cl->img.ptr +
 			(x * 4 + (y * cl->img.sizeline))) = ft_darken(rgb, cl);
-	}
-	else
-	{
-		*(int*)(cl->img.ptr +
-			(x * 4 + (y * cl->img.sizeline))) = ft_rgb_to_hex(rgb);
-	}
 }
 
 static void
-- 
cgit v1.2.3


From 02433637a499cd48e501d89c54e6ddf488dca98f Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:27:19 +0100
Subject: qweqwe

---
 src/ft_floor_cast.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index d2c6046..1082fe5 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -16,16 +16,8 @@
 static void
 	ft_draw_plain_horizontal(t_rgb rgb, t_cub *cl, int32_t y, int32_t x)
 {
-	if (cl->mlist.darklvl > 0)
-	{
-		*(int*)(cl->img.ptr +
+	*(int*)(cl->img.ptr +
 			(x * 4 + (y * cl->img.sizeline))) = ft_darken(rgb, cl);
-	}
-	else
-	{
-		*(int*)(cl->img.ptr +
-			(x * 4 + (y * cl->img.sizeline))) = ft_rgb_to_hex(rgb);
-	}
 }
 
 static void
-- 
cgit v1.2.3


From 7f39d8337453dc905ddb4d42731bcfbf1b6b1968 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:28:37 +0100
Subject: Resized map

---
 map/lvl_one.cub | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/map/lvl_one.cub b/map/lvl_one.cub
index 8eec433..8e5deac 100644
--- a/map/lvl_one.cub
+++ b/map/lvl_one.cub
@@ -1,4 +1,4 @@
-R 1800 1100
+R 1500 900
 
 NO ./media/img/BRIQUASSE_3.xpm
 SO ./media/img/BRIQUASSE_3.xpm
-- 
cgit v1.2.3


From 1bfb92324f267291f556cb464ea42a07d3c8224a Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:36:54 +0100
Subject: Freed leaks

---
 map/lvl_one.cub     | 2 +-
 src/ft_init_lists.c | 2 --
 src/ft_raycasting.c | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/map/lvl_one.cub b/map/lvl_one.cub
index 8e5deac..2c52287 100644
--- a/map/lvl_one.cub
+++ b/map/lvl_one.cub
@@ -1,4 +1,4 @@
-R 1500 900
+R 1440 1000
 
 NO ./media/img/BRIQUASSE_3.xpm
 SO ./media/img/BRIQUASSE_3.xpm
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index 82f5c0e..bd2ae74 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -76,8 +76,6 @@ static int8_t
 	cl->f_rgb = ft_init_rgb();
 	cl->c_rgb = ft_init_rgb();
 	cl->rlist = ft_init_s_ray();
-	if (!(cl->rlist.wall_dist_tab = (float*)malloc(1 * sizeof(float))))
-		return (-1);
 	cl->currlvl = 0;
 	cl->walltexgood = 0;
 	ft_init_funptr(cl);
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index 5c57044..221c43d 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -87,7 +87,6 @@ void
 	uint16_t	i;
 	t_win		*wl;
 
-	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	wl = &cl->wlist;
 	if (!(cl->rlist.wall_dist_tab =
 			(float*)malloc(sizeof(float) * cl->wlist.x_size)))
@@ -107,5 +106,6 @@ void
 	}
 	ft_floor_cast(cl);
 	i = 0;
+	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	ft_memdel((void**)&cl->rlist.wall_bz);
 }
-- 
cgit v1.2.3


From 54a87749b47b094d54858f563fe7796a2209d83b Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 00:39:54 +0100
Subject: Stupid me

---
 src/ft_floor_cast.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index 1082fe5..36c759f 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -23,8 +23,8 @@ static void
 static void
 	ft_draw_extra_tex(uint8_t tid, uint16_t y, uint16_t x, t_cub *cl)
 {
-	float		dist;
-	float		calc;
+	float	dist;
+	float	calc;
 
 	if ((dist = cl->rlist.row_dist) <= 0)
 		dist = 0.0001;
-- 
cgit v1.2.3


From 154ccbc0546018554982f9170d32b7858a8c33aa Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 01:17:41 +0100
Subject: Norme

---
 Makefile                  |  1 +
 inc/cub3d.h               |  1 +
 src/ft_floor_cast.c       | 16 ++--------------
 src/ft_floor_cast_inits.c | 32 ++++++++++++++++++++++++++++++++
 4 files changed, 36 insertions(+), 14 deletions(-)
 create mode 100644 src/ft_floor_cast_inits.c

diff --git a/Makefile b/Makefile
index de7a863..348c37a 100644
--- a/Makefile
+++ b/Makefile
@@ -81,6 +81,7 @@ SRCS_NAME	+= ft_treat_args.c
 SRCS_NAME	+= ft_init_funptr.c
 SRCS_NAME	+= ft_init_bmp.c
 SRCS_NAME	+= ft_floor_cast.c
+SRCS_NAME	+= ft_floor_cast_inits.c
 #--------------------------------------------------------------------------------------------------#
 SRCS		= $(addprefix ${SRCS_DIR},${SRCS_NAME})
 #--------------------------------------------------------------------------------------------------#
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 2a9d66e..a7b649d 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -131,6 +131,7 @@ uint8_t			ft_use_args(int argc, const char *argv[],
 void			ft_castray(t_cub *cl);
 void			ft_detect(t_cub *cl);
 void			ft_floor_cast(t_cub *cl);
+void			ft_floor_cast_inits(uint16_t y, t_ray *rl, t_cub *cl);
 
 /*
 ** ====== OTHER ======
diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index 36c759f..b6c7e72 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -1,7 +1,7 @@
 /* ************************************************************************** */
 /*                                                                            */
 /*                                                        :::      ::::::::   */
-/*   ft_raycasting.c                                    :+:      :+:    :+:   */
+/*   ft_floor_cast.c                                    :+:      :+:    :+:   */
 /*                                                    +:+ +:+         +:+     */
 /*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
@@ -91,19 +91,7 @@ void
 	y = (cl->wlist.y_size / 2) + 1;
 	while (++y < cl->wlist.y_size)
 	{
-		rl->x_f_ray_dir = cl->plist.dir_x - cl->plist.plane_x;
-		rl->y_f_ray_dir = cl->plist.dir_y - cl->plist.plane_y;
-		rl->x_f_ray_dir_bis = cl->plist.dir_x + cl->plist.plane_x;
-		rl->y_f_ray_dir_bis = cl->plist.dir_y + cl->plist.plane_y;
-		rl->p = y - cl->wlist.y_size / 2;
-		cl->plist.pos_z = 0.5 * cl->wlist.y_size;
-		rl->row_dist = cl->plist.pos_z / rl->p;
-		cl->mlist.x_floor_step = rl->row_dist *
-			(rl->x_f_ray_dir_bis - rl->x_f_ray_dir) / cl->wlist.x_size;
-		cl->mlist.y_floor_step = rl->row_dist *
-			(rl->y_f_ray_dir_bis - rl->y_f_ray_dir) / cl->wlist.x_size;
-		rl->x_floor = cl->plist.pos_y + rl->row_dist * rl->x_f_ray_dir;
-		rl->y_floor = cl->plist.pos_x + rl->row_dist * rl->y_f_ray_dir;
+		ft_floor_cast_inits(y, rl, cl);
 		x = -1;
 		while (++x < cl->wlist.x_size)
 		{
diff --git a/src/ft_floor_cast_inits.c b/src/ft_floor_cast_inits.c
new file mode 100644
index 0000000..591eb24
--- /dev/null
+++ b/src/ft_floor_cast_inits.c
@@ -0,0 +1,32 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_floor_cast_inits.c                              :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2020/02/14 17:22:57 by rbousset          #+#    #+#             */
+/*   Updated: 2020/02/14 17:23:42 by rbousset         ###   ########lyon.fr   */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <cub3d.h>
+#include <stdint.h>
+
+void
+	ft_floor_cast_inits(uint16_t y, t_ray *rl, t_cub *cl)
+{
+	rl->x_f_ray_dir = cl->plist.dir_x - cl->plist.plane_x;
+	rl->y_f_ray_dir = cl->plist.dir_y - cl->plist.plane_y;
+	rl->x_f_ray_dir_bis = cl->plist.dir_x + cl->plist.plane_x;
+	rl->y_f_ray_dir_bis = cl->plist.dir_y + cl->plist.plane_y;
+	rl->p = y - cl->wlist.y_size / 2;
+	cl->plist.pos_z = 0.5 * cl->wlist.y_size;
+	rl->row_dist = cl->plist.pos_z / rl->p;
+	cl->mlist.x_floor_step = rl->row_dist *
+		(rl->x_f_ray_dir_bis - rl->x_f_ray_dir) / cl->wlist.x_size;
+	cl->mlist.y_floor_step = rl->row_dist *
+		(rl->y_f_ray_dir_bis - rl->y_f_ray_dir) / cl->wlist.x_size;
+	rl->x_floor = cl->plist.pos_y + rl->row_dist * rl->x_f_ray_dir;
+	rl->y_floor = cl->plist.pos_x + rl->row_dist * rl->y_f_ray_dir;
+}
-- 
cgit v1.2.3


From a752af80e3778b8a17b53b49b11ed235494a623d Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 01:44:15 +0100
Subject: Sliding like a champ

---
 src/ft_key_loop.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index d40de34..d3e871b 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -53,12 +53,12 @@ static void
 	pl = &cl->plist;
 	x = ft_find_x(key, pl);
 	y = ft_find_y(key, pl);
-	if (ft_ischarset(FT_CHRST_COLLISION, cl->mlist.map[y][x]) ||
-		cl->mlist.map[y][x] == '\0')
-	{
-		pl->pos_y = old_y;
+	if (ft_ischarset(FT_CHRST_COLLISION, cl->mlist.map[(uint64_t)old_y][x]) ||
+		cl->mlist.map[(uint64_t)old_y][x] == '\0')
 		pl->pos_x = old_x;
-	}
+	if (ft_ischarset(FT_CHRST_COLLISION, cl->mlist.map[y][(uint64_t)old_x]) ||
+		cl->mlist.map[y][(uint64_t)old_x] == '\0')
+		pl->pos_y = old_y;
 }
 
 int
-- 
cgit v1.2.3


From 15e4ca8491c9b2872b30cb1522f72920514a62f1 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 02:03:18 +0100
Subject: ft_calc_sprite in a better location, still sliding like a champ

---
 map/map_one.cub     | 4 ++--
 src/ft_draw_scene.c | 2 --
 src/ft_raycasting.c | 2 +-
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/map/map_one.cub b/map/map_one.cub
index f4f9e91..1f7a92c 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -1,4 +1,4 @@
-R 1000 700
+R 1400 800
 
 NO ./media/img/segfot_small.xpm
 SO ./media/img/segfot_small.xpm
@@ -9,7 +9,7 @@ S ./media/img/pillar.xpm
 C 50,100,200
 F 50,190,124
 
-SH 6
+SH 4
 
 111111111111111111
 120000000011000001
diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c
index 2cfa3f4..4d15df2 100644
--- a/src/ft_draw_scene.c
+++ b/src/ft_draw_scene.c
@@ -52,7 +52,6 @@ void
 	}
 	if (clist->mlist.isskybox)
 		ft_draw_skybox(clist);
-	ft_calc_sprite(clist);
 	mlx_put_image_to_window(clist->wlist.wlx,
 							clist->wlist.winptr, clist->img.img, 0, 0);
 	if (clist->ishud && clist->mlist.isnlvl)
@@ -73,7 +72,6 @@ void
 	clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp,
 				&clist->img.sizeline, &clist->img.endian);
 	ft_castray(clist);
-	ft_calc_sprite(clist);
 	if (ft_save_to_bmp(clist) < 0)
 		ft_error(FT_RET_BMP_ERR, FT_ERR_WR_BMP, clist);
 	mlx_destroy_image(clist->wlist.wlx, clist->img.img);
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index 221c43d..2d6d197 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -105,7 +105,7 @@ void
 		i++;
 	}
 	ft_floor_cast(cl);
-	i = 0;
+	ft_calc_sprite(cl);
 	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	ft_memdel((void**)&cl->rlist.wall_bz);
 }
-- 
cgit v1.2.3


From 79af897f235b2172ce37e6d30b829fa0928aef3a Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 09:17:49 +0100
Subject: Good trap init

---
 inc/cub3d_structs.h |  7 ++++-
 src/ft_exit.c       |  1 +
 src/ft_init_map.c   |  2 ++
 src/ft_tex_init.c   | 89 +++++++++++++++++++++++++++++------------------------
 src/ft_warp_level.c |  1 +
 5 files changed, 59 insertions(+), 41 deletions(-)

diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 144de6f..9f48975 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -169,6 +169,7 @@ typedef struct			s_map
 	char				*ce_tex_path;
 	char				*nlevel_path;
 	char				*skybox_path;
+	char				*traps_path;
 	char				*music_path;
 	char				*music_cmd;
 	char				*mapl;
@@ -181,6 +182,8 @@ typedef struct			s_map
 	size_t				mapl_len;
 	int32_t				sprite_nbr;
 	int32_t				sprite_order[12];
+	int32_t				traps_nbr;
+	int32_t				traps_order[12];
 	size_t				line_chk;
 	size_t				map_start;
 	uint8_t				isspawn;
@@ -189,6 +192,7 @@ typedef struct			s_map
 	uint8_t				isftex;
 	uint8_t				isctex;
 	uint8_t				isskybox;
+	uint8_t				istrap;
 	uint8_t				darklvl;
 	uint8_t				scale;
 	uint32_t			nlx;
@@ -219,8 +223,9 @@ typedef struct			s_cub
 	struct s_img		img;
 	struct s_rgb		f_rgb;
 	struct s_rgb		c_rgb;
-	struct s_img		tlist[8];
+	struct s_img		tlist[16];
 	struct s_sprite		sprites[4096];
+	struct s_sprite		traps[4096];
 }						t_cub;
 
 #	endif
diff --git a/src/ft_exit.c b/src/ft_exit.c
index fb6de09..3b00701 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -33,6 +33,7 @@ static void
 	ft_memdel((void**)&clist->mlist.ce_tex_path);
 	ft_memdel((void**)&clist->mlist.nlevel_path);
 	ft_memdel((void**)&clist->mlist.skybox_path);
+	ft_memdel((void**)&clist->mlist.traps_path);
 	ft_memdel((void**)&clist->mlist.music_path);
 	ft_memdel((void**)&clist->mlist.music_cmd);
 	ft_memdel((void**)&clist->mlist.mapl);
diff --git a/src/ft_init_map.c b/src/ft_init_map.c
index 27b4a39..f2b0726 100644
--- a/src/ft_init_map.c
+++ b/src/ft_init_map.c
@@ -29,6 +29,7 @@ static int8_t
 		!(mlist->ce_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
 		!(mlist->nlevel_path = (char*)ft_calloc(1, sizeof(char))) ||
 		!(mlist->skybox_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->traps_path = (char*)ft_calloc(1, sizeof(char))) ||
 		!(mlist->music_path = (char*)ft_calloc(1, sizeof(char))) ||
 		!(mlist->music_cmd = (char*)ft_calloc(1, sizeof(char))) ||
 		!(mlist->mapl = (char*)ft_calloc(1, sizeof(char))) ||
@@ -60,6 +61,7 @@ int8_t
 	mlist->isnlvl = 0;
 	mlist->ismusic = 0;
 	mlist->isskybox = 0;
+	mlist->istrap = 0;
 	mlist->darklvl = 0;
 	mlist->scale = 0;
 	mlist->nlx = 0;
diff --git a/src/ft_tex_init.c b/src/ft_tex_init.c
index 4cbdf73..32bfb66 100644
--- a/src/ft_tex_init.c
+++ b/src/ft_tex_init.c
@@ -16,60 +16,69 @@
 #include <mlx.h>
 
 /*
-** 0 : no
-** 1 : so
-** 2 : ea
-** 3 : we
-** 4 : sprite
-** 5 : new level door
-** 6 : floor
-** 7 : ceil
+** 0  : no
+** 1  : so
+** 2  : ea
+** 3  : we
+** 4  : sprite 1
+** 5  : new level door
+** 6  : floor
+** 7  : ceil / skybox
+** 8  : sprite 2
+** 9  : sprite 3
+** 10 : sprite 4
+** 11 : sprite 5
+** 12 : sprite 6
+** 13 : sprite 7
+** 14 : sprite 8
+** 15 : trap
 */
 
 static void
-	ft_get_nlvl_img(t_cub *cl)
+	ft_wall_tex_init_norme_bis(t_cub *cl)
 {
-	cl->tlist[5].img = mlx_xpm_file_to_image(cl->wlist.wlx,
-			cl->mlist.nl_tex_path, &cl->tlist[5].img_w, &cl->tlist[5].img_h);
-	cl->tlist[5].ptr = mlx_get_data_addr(cl->tlist[5].img,
-		&cl->tlist[5].bpp, &cl->tlist[5].sizeline, &cl->tlist[5].endian);
-}
-
-static void
-	ft_get_floor_tex(t_cub *cl)
-{
-	cl->tlist[6].img = mlx_xpm_file_to_image(cl->wlist.wlx,
-			cl->mlist.fl_tex_path, &cl->tlist[6].img_w, &cl->tlist[6].img_h);
-	cl->tlist[6].ptr = mlx_get_data_addr(cl->tlist[6].img,
-		&cl->tlist[6].bpp, &cl->tlist[6].sizeline, &cl->tlist[6].endian);
-}
-
-static void
-	ft_get_ceil_tex(t_cub *cl)
-{
-	cl->tlist[7].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+	if (cl->mlist.isctex)
+	{
+		cl->tlist[7].img = mlx_xpm_file_to_image(cl->wlist.wlx,
 			cl->mlist.ce_tex_path, &cl->tlist[7].img_w, &cl->tlist[7].img_h);
-	cl->tlist[7].ptr = mlx_get_data_addr(cl->tlist[7].img,
-		&cl->tlist[7].bpp, &cl->tlist[7].sizeline, &cl->tlist[7].endian);
+		cl->tlist[7].ptr = mlx_get_data_addr(cl->tlist[7].img,
+			&cl->tlist[7].bpp, &cl->tlist[7].sizeline, &cl->tlist[7].endian);
+	}
+	if (cl->mlist.isskybox)
+	{
+		cl->tlist[7].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.skybox_path, &cl->tlist[7].img_w, &cl->tlist[7].img_h);
+		cl->tlist[7].ptr = mlx_get_data_addr(cl->tlist[7].img,
+			&cl->tlist[7].bpp, &cl->tlist[7].sizeline, &cl->tlist[7].endian);
+	}
+	cl->walltexgood = 1;
 }
 
 static void
 	ft_wall_tex_init_norme(t_cub *cl)
 {
 	if (cl->mlist.isnlvl)
-		ft_get_nlvl_img(cl);
+	{
+		cl->tlist[5].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.nl_tex_path, &cl->tlist[5].img_w, &cl->tlist[5].img_h);
+		cl->tlist[5].ptr = mlx_get_data_addr(cl->tlist[5].img,
+			&cl->tlist[5].bpp, &cl->tlist[5].sizeline, &cl->tlist[5].endian);
+	}
 	if (cl->mlist.isftex)
-		ft_get_floor_tex(cl);
-	if (cl->mlist.isctex)
-		ft_get_ceil_tex(cl);
-	if (cl->mlist.isskybox)
 	{
-		cl->tlist[7].img = mlx_xpm_file_to_image(cl->wlist.wlx,
-			cl->mlist.skybox_path, &cl->tlist[7].img_w, &cl->tlist[7].img_h);
-		cl->tlist[7].ptr = mlx_get_data_addr(cl->tlist[7].img,
-			&cl->tlist[7].bpp, &cl->tlist[7].sizeline, &cl->tlist[7].endian);
+		cl->tlist[6].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.fl_tex_path, &cl->tlist[6].img_w, &cl->tlist[6].img_h);
+		cl->tlist[6].ptr = mlx_get_data_addr(cl->tlist[6].img,
+			&cl->tlist[6].bpp, &cl->tlist[6].sizeline, &cl->tlist[6].endian);
 	}
-	cl->walltexgood = 1;
+	if (cl->mlist.istrap)
+	{
+		cl->tlist[15].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.traps_path, &cl->tlist[15].img_w, &cl->tlist[15].img_h);
+		cl->tlist[15].ptr = mlx_get_data_addr(cl->tlist[15].img,
+			&cl->tlist[15].bpp, &cl->tlist[15].sizeline, &cl->tlist[15].endian);
+	}
+	ft_wall_tex_init_norme_bis(cl);
 }
 
 void
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index 1f744c2..3c9110f 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -34,6 +34,7 @@ static void
 	ft_memdel((void**)&ml->ce_tex_path);
 	ft_memdel((void**)&ml->nlevel_path);
 	ft_memdel((void**)&ml->skybox_path);
+	ft_memdel((void**)&ml->traps_path);
 	ft_memdel((void**)&ml->music_path);
 	ft_memdel((void**)&ml->music_cmd);
 	ft_memdel((void**)&ml->mapl);
-- 
cgit v1.2.3


From bfa1f4e6e61152ba3ff555d1508f43f0a5ab2754 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 09:50:36 +0100
Subject: Secured collision segv

---
 inc/cub3d.h         |  1 +
 map/lvl_one.cub     |  2 +-
 src/ft_exit.c       |  2 ++
 src/ft_init_lists.c |  2 +-
 src/ft_key_loop.c   | 13 +++++++++----
 src/ft_warp_level.c | 17 +++--------------
 6 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/inc/cub3d.h b/inc/cub3d.h
index a7b649d..e351fa9 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -27,6 +27,7 @@ void			ft_init_ref(t_cub *clist);
 int8_t			ft_init_cub3d(t_cub *clist);
 int				ft_init_winlx(t_cub *clist);
 int				ft_init_winptr(t_cub *clist);
+t_player		ft_init_player(void);
 t_ray			ft_init_s_ray(void);
 t_rgb			ft_init_rgb(void);
 int8_t			ft_init_map(t_map *mlist);
diff --git a/map/lvl_one.cub b/map/lvl_one.cub
index 2c52287..64c741b 100644
--- a/map/lvl_one.cub
+++ b/map/lvl_one.cub
@@ -1,4 +1,4 @@
-R 1440 1000
+R 800 600
 
 NO ./media/img/BRIQUASSE_3.xpm
 SO ./media/img/BRIQUASSE_3.xpm
diff --git a/src/ft_exit.c b/src/ft_exit.c
index 3b00701..4125567 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -62,6 +62,8 @@ static void
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[6].img);
 	if (clist->mlist.isctex && clist->tlist[7].img)
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[7].img);
+	if (clist->mlist.istrap && clist->tlist[15].img)
+		mlx_destroy_image(clist->wlist.wlx, clist->tlist[15].img);
 }
 
 int
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index bd2ae74..8ba9a13 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -28,7 +28,7 @@ t_rgb
 	return (rgb);
 }
 
-static t_player
+t_player
 	ft_init_player(void)
 {
 	t_player	plist;
diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index d3e871b..c68b228 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -26,7 +26,7 @@ static uint64_t
 		return (pl->pos_x - (pl->dir_y * FT_COLL_MULT));
 	else if (key == 3)
 		return (pl->pos_x - (pl->dir_x * (FT_COLL_MULT / 2)));
-	return (1);
+	return ((uint64_t)pl->pos_x);
 }
 
 static uint64_t
@@ -40,9 +40,10 @@ static uint64_t
 		return (pl->pos_y - (pl->dir_x * FT_COLL_MULT));
 	else if (key == 3)
 		return (pl->pos_y + (pl->dir_y * (FT_COLL_MULT / 2)));
-	return (1);
+	return ((uint64_t)pl->pos_y);
 }
 
+#include <stdio.h>
 static void
 	ft_collision(float old_y, float old_x, int32_t key, t_cub *cl)
 {
@@ -75,8 +76,12 @@ int
 		ft_collision(old_y, old_x, cl->key_input[i], cl);
 		if (cl->mlist.isnlvl)
 		{
-			if (ft_warp_level(cl) < 0)
-				return (ft_exit(FT_RET_FAILED_STRUCTS, cl));
+			if ((uint32_t)cl->plist.pos_x == cl->mlist.nlx &&
+				(uint32_t)cl->plist.pos_y == cl->mlist.nly)
+			{
+				return ((ft_warp_level(cl) < 0) ?
+						(ft_exit(FT_RET_FAILED_STRUCTS, cl)) : (0));
+			}
 		}
 		i++;
 	}
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index 3c9110f..a4f705b 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -47,16 +47,7 @@ static void
 {
 	uint8_t	i;
 
-	cl->plist.pos_x = 0;
-	cl->plist.pos_y = 0;
-	cl->plist.pos_z = 0;
-	cl->plist.start_x = 0;
-	cl->plist.start_y = 0;
-	cl->plist.cam_x = 0;
-	cl->plist.dir_x = -1;
-	cl->plist.dir_y = 0;
-	cl->plist.plane_x = 0;
-	cl->plist.plane_y = 0.66;
+	cl->plist = ft_init_player();
 	cl->f_rgb = ft_init_rgb();
 	cl->c_rgb = ft_init_rgb();
 	cl->rlist = ft_init_s_ray();
@@ -70,6 +61,8 @@ static void
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[6].img);
 	if (cl->mlist.isctex && cl->tlist[7].img)
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[7].img);
+	if (cl->mlist.istrap && cl->tlist[15].img)
+		mlx_destroy_image(cl->wlist.wlx, cl->tlist[15].img);
 }
 
 static void
@@ -100,9 +93,6 @@ int8_t
 	char	*tmp_mup;
 	uint8_t	isoldmus;
 
-	if ((uint32_t)cl->plist.pos_x == cl->mlist.nlx &&
-		(uint32_t)cl->plist.pos_y == cl->mlist.nly)
-	{
 		if (!(next_path = (char *)malloc((ft_strlen(
 				cl->mlist.nlevel_path) + 1) * sizeof(char))))
 			return (-1);
@@ -119,6 +109,5 @@ int8_t
 			ft_memdel((void**)&tmp_mup);
 		ft_wall_tex_init(cl);
 		ft_memdel((void**)&next_path);
-	}
 	return (0);
 }
-- 
cgit v1.2.3


From 1e34f00dd4b8080406ac2eae4e3a34d82ab05442 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 09:51:01 +0100
Subject: Reverted lvl_one size

---
 map/lvl_one.cub | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/map/lvl_one.cub b/map/lvl_one.cub
index 64c741b..2c52287 100644
--- a/map/lvl_one.cub
+++ b/map/lvl_one.cub
@@ -1,4 +1,4 @@
-R 800 600
+R 1440 1000
 
 NO ./media/img/BRIQUASSE_3.xpm
 SO ./media/img/BRIQUASSE_3.xpm
-- 
cgit v1.2.3


From c1d1d76e0c88fbbbe4b1e0611a13a6a4df6cb424 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 09:59:17 +0100
Subject: Parsed traps

---
 Makefile             |  1 +
 inc/cub3d.h          |  1 +
 inc/cub3d_defines.h  |  9 +++++----
 inc/cub3d_structs.h  |  6 +++---
 src/ft_get_traps.c   | 42 ++++++++++++++++++++++++++++++++++++++++++
 src/ft_init_funptr.c |  4 +++-
 src/ft_select_get.c  |  2 +-
 7 files changed, 56 insertions(+), 9 deletions(-)
 create mode 100644 src/ft_get_traps.c

diff --git a/Makefile b/Makefile
index 348c37a..6c0dfb2 100644
--- a/Makefile
+++ b/Makefile
@@ -42,6 +42,7 @@ SRCS_NAME	+= ft_get_skybox.c
 SRCS_NAME	+= ft_get_player_spawn.c
 SRCS_NAME	+= ft_get_music.c
 SRCS_NAME	+= ft_get_darkness.c
+SRCS_NAME	+= ft_get_traps.c
 SRCS_NAME	+= ft_set_minimap_scale.c
 SRCS_NAME	+= ft_check_missing.c
 SRCS_NAME	+= ft_check_not_found.c
diff --git a/inc/cub3d.h b/inc/cub3d.h
index e351fa9..bb30122 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -102,6 +102,7 @@ int8_t			ft_get_c_tex(char **words, t_cub *clist);
 int8_t			ft_get_darkness(char **words, t_cub *clist);
 int8_t			ft_get_path_nl(char **words, t_cub *clist);
 int8_t			ft_get_skybox(char **words, t_cub *clist);
+int8_t			ft_get_traps(char **words, t_cub *clist);
 int8_t			ft_get_tex_nl(char **words, t_cub *clist);
 int8_t			ft_get_music(char **words, t_cub *clist);
 size_t			ft_get_map_h(char **map);
diff --git a/inc/cub3d_defines.h b/inc/cub3d_defines.h
index edc3dec..6453e73 100644
--- a/inc/cub3d_defines.h
+++ b/inc/cub3d_defines.h
@@ -114,11 +114,11 @@ enum
 ** ====== CHARSET ======
 */
 
-#	define FT_CHRST_VALID_PARSE		"RNSEWFCLM"
-#	define FT_CHRST_MAP_ENTRY		"012NSEWL "
+#	define FT_CHRST_VALID_PARSE		"RNSEWFCLMT"
+#	define FT_CHRST_MAP_ENTRY		"012NSEWLT "
 #	define FT_CHRST_SPAWN			"NSEW"
-#	define FT_CHRST_MAP_NON_WALL	"02NESWL"
-#	define FT_CHRST_COLLISION		"12 "
+#	define FT_CHRST_MAP_NON_WALL	"02NESWLT"
+#	define FT_CHRST_COLLISION		"12T "
 #	define FT_CHRST_DETECT			"1L"
 
 /*
@@ -166,6 +166,7 @@ enum
 #	define FT_ERR_RD_NL_TEX		"could not find next level texture file"
 #	define FT_ERR_RD_NL_MAP		"could not find next level map file"
 #	define FT_ERR_RD_MUSIC		"could not find music file"
+#	define FT_ERR_RD_TRAP		"could not find trap texture file"
 #	define FT_ERR_WR_BMP		"could not export to bmp"
 
 /*
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 9f48975..89e531a 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -214,8 +214,8 @@ typedef struct			s_cub
 	int32_t				key_input[5];
 	pid_t				mpid;
 	int					(*key_ptr[6])(struct s_cub*);
-	int8_t				(*get_ptr[13])(char**, struct s_cub*);
-	char				ref[14][3];
+	int8_t				(*get_ptr[14])(char**, struct s_cub*);
+	char				ref[15][3];
 	struct s_win		wlist;
 	struct s_player		plist;
 	struct s_map		mlist;
@@ -225,7 +225,7 @@ typedef struct			s_cub
 	struct s_rgb		c_rgb;
 	struct s_img		tlist[16];
 	struct s_sprite		sprites[4096];
-	struct s_sprite		traps[4096];
+	struct s_sprite		traps[512];
 }						t_cub;
 
 #	endif
diff --git a/src/ft_get_traps.c b/src/ft_get_traps.c
new file mode 100644
index 0000000..cdc05de
--- /dev/null
+++ b/src/ft_get_traps.c
@@ -0,0 +1,42 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_get_tex_nl.c                                    :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2020/02/28 18:24:52 by rbousset          #+#    #+#             */
+/*   Updated: 2020/02/28 18:24:56 by rbousset         ###   ########lyon.fr   */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <cub3d.h>
+#include <stdint.h>
+
+int8_t
+	ft_get_traps(char **words, t_cub *clist)
+{
+	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
+	{
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
+		return (-1);
+	}
+	if (ft_check_ext(*(words + 1), ".xpm") < 0)
+	{
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
+		return (-1);
+	}
+	ft_memdel((void**)&clist->mlist.traps_path);
+	if (!(clist->mlist.traps_path = ft_strdup(*(words + 1))))
+	{
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
+		return (-1);
+	}
+	if (ft_check_not_found(clist->mlist.traps_path) < 0)
+	{
+		ft_sprintf(clist->errmsg, FT_ERR_RD_TRAP);
+		return (-1);
+	}
+	return (0);
+}
diff --git a/src/ft_init_funptr.c b/src/ft_init_funptr.c
index 6bfa3f7..c74b2c8 100644
--- a/src/ft_init_funptr.c
+++ b/src/ft_init_funptr.c
@@ -29,7 +29,8 @@ void
 	ft_sprintf(clist->ref[10], "MU");
 	ft_sprintf(clist->ref[11], "SH");
 	ft_sprintf(clist->ref[12], "SB");
-	ft_bzero(clist->ref[13], 3);
+	ft_sprintf(clist->ref[13], "T");
+	ft_bzero(clist->ref[14], 3);
 }
 
 void
@@ -54,4 +55,5 @@ void
 	clist->get_ptr[10] = ft_get_music;
 	clist->get_ptr[11] = ft_get_darkness;
 	clist->get_ptr[12] = ft_get_skybox;
+	clist->get_ptr[14] = ft_get_traps;
 }
diff --git a/src/ft_select_get.c b/src/ft_select_get.c
index fe6bb3e..2a95309 100644
--- a/src/ft_select_get.c
+++ b/src/ft_select_get.c
@@ -66,7 +66,7 @@ static int8_t
 	ret = 0;
 	while (ft_strncmp(words[0], clist->ref[ret], 3) && clist->ref[ret][0])
 		ret++;
-	if (ret == 13)
+	if (ret == 14)
 		ret = FT_PARSE_END_RET;
 	ret = ft_check_exists(ret, clist);
 	ret = ft_check_exists_two(ret, clist);
-- 
cgit v1.2.3


From c581c7e3543058f015bddf96d76ac2d771ea40a0 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 10:16:48 +0100
Subject: Nice parse

---
 inc/cub3d.h             |  3 ++-
 inc/cub3d_structs.h     |  2 +-
 map/map_one.cub         |  1 +
 src/ft_check_map_line.c |  2 ++
 src/ft_exit.c           |  2 +-
 src/ft_get_traps.c      | 28 ++++++++++++++++++++++++++++
 src/ft_init_funptr.c    |  2 +-
 src/ft_init_map.c       |  4 +++-
 src/ft_select_get.c     |  4 ++++
 src/ft_tex_init.c       |  2 +-
 src/ft_warp_level.c     |  2 +-
 11 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/inc/cub3d.h b/inc/cub3d.h
index bb30122..9487883 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -77,7 +77,6 @@ void			ft_sprite_width(t_cub *cl, t_sprite *sprite);
 void			ft_sprite_height(t_cub *cl, t_sprite *sprite);
 void			ft_calc_sprite(t_cub *cl);
 void			ft_draw_sprite(t_cub *cl, t_sprite *sprite);
-void			ft_get_sprite_spawn(t_cub *cl);
 void			ft_draw_skybox(t_cub *cl);
 
 /*
@@ -107,6 +106,8 @@ int8_t			ft_get_tex_nl(char **words, t_cub *clist);
 int8_t			ft_get_music(char **words, t_cub *clist);
 size_t			ft_get_map_h(char **map);
 size_t			ft_get_map_w(char **map);
+void			ft_get_sprite_spawn(t_cub *clist);
+void			ft_get_trap_spawn(t_cub *clist);
 int8_t			ft_check_map_line(char *line, uint8_t l, t_cub *clist);
 int8_t			ft_check_ext(const char *filep, const char *ext);
 int8_t			ft_check_not_found(const char *path);
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 89e531a..5ba3b38 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -192,7 +192,7 @@ typedef struct			s_map
 	uint8_t				isftex;
 	uint8_t				isctex;
 	uint8_t				isskybox;
-	uint8_t				istrap;
+	uint8_t				istraps;
 	uint8_t				darklvl;
 	uint8_t				scale;
 	uint32_t			nlx;
diff --git a/map/map_one.cub b/map/map_one.cub
index 1f7a92c..540e7c2 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -9,6 +9,7 @@ S ./media/img/pillar.xpm
 C 50,100,200
 F 50,190,124
 
+T ./media/img/linus.xpm
 SH 4
 
 111111111111111111
diff --git a/src/ft_check_map_line.c b/src/ft_check_map_line.c
index 7fa68b7..c88e1f5 100644
--- a/src/ft_check_map_line.c
+++ b/src/ft_check_map_line.c
@@ -37,6 +37,8 @@ static int8_t
 		ft_sprintf(clist->errmsg, FT_ERR_MULT_NLVL);
 		return (-1);
 	}
+	if (line[i] == 'T')
+		clist->mlist.istraps = 1;
 	return (0);
 }
 
diff --git a/src/ft_exit.c b/src/ft_exit.c
index 4125567..4a131c8 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -62,7 +62,7 @@ static void
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[6].img);
 	if (clist->mlist.isctex && clist->tlist[7].img)
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[7].img);
-	if (clist->mlist.istrap && clist->tlist[15].img)
+	if (clist->mlist.istraps && clist->tlist[15].img)
 		mlx_destroy_image(clist->wlist.wlx, clist->tlist[15].img);
 }
 
diff --git a/src/ft_get_traps.c b/src/ft_get_traps.c
index cdc05de..0235bb5 100644
--- a/src/ft_get_traps.c
+++ b/src/ft_get_traps.c
@@ -14,6 +14,34 @@
 #include <cub3d.h>
 #include <stdint.h>
 
+void
+	ft_get_trap_spawn(t_cub *clist)
+{
+	size_t	x;
+	size_t	y;
+	uint8_t i;
+
+	x = 1;
+	y = 1;
+	i = 0;
+	while (clist->mlist.map[y])
+	{
+		while (clist->mlist.map[y][x])
+		{
+			if (clist->mlist.map[y][x] == 'T')
+			{
+				clist->mlist.traps_nbr++;
+				clist->traps[i].s_pos_x = x;
+				clist->traps[i].s_pos_y = y;
+				i++;
+			}
+			x++;
+		}
+		x = 1;
+		y++;
+	}
+}
+
 int8_t
 	ft_get_traps(char **words, t_cub *clist)
 {
diff --git a/src/ft_init_funptr.c b/src/ft_init_funptr.c
index c74b2c8..c299336 100644
--- a/src/ft_init_funptr.c
+++ b/src/ft_init_funptr.c
@@ -55,5 +55,5 @@ void
 	clist->get_ptr[10] = ft_get_music;
 	clist->get_ptr[11] = ft_get_darkness;
 	clist->get_ptr[12] = ft_get_skybox;
-	clist->get_ptr[14] = ft_get_traps;
+	clist->get_ptr[13] = ft_get_traps;
 }
diff --git a/src/ft_init_map.c b/src/ft_init_map.c
index f2b0726..867a5b0 100644
--- a/src/ft_init_map.c
+++ b/src/ft_init_map.c
@@ -61,7 +61,9 @@ int8_t
 	mlist->isnlvl = 0;
 	mlist->ismusic = 0;
 	mlist->isskybox = 0;
-	mlist->istrap = 0;
+	mlist->istraps = 0;
+	mlist->sprite_nbr = 0;
+	mlist->traps_nbr = 0;
 	mlist->darklvl = 0;
 	mlist->scale = 0;
 	mlist->nlx = 0;
diff --git a/src/ft_select_get.c b/src/ft_select_get.c
index 2a95309..f748721 100644
--- a/src/ft_select_get.c
+++ b/src/ft_select_get.c
@@ -53,6 +53,10 @@ static int8_t
 		return (-1);
 	if (ret == 10 && (clist->mlist.music_path[0]))
 		return (-1);
+	if (ret == 12 && (clist->mlist.skybox_path[0]))
+		return (-1);
+	if (ret == 13 && (clist->mlist.traps_path[0]))
+		return (-1);
 	return (ret);
 }
 
diff --git a/src/ft_tex_init.c b/src/ft_tex_init.c
index 32bfb66..30b738e 100644
--- a/src/ft_tex_init.c
+++ b/src/ft_tex_init.c
@@ -71,7 +71,7 @@ static void
 		cl->tlist[6].ptr = mlx_get_data_addr(cl->tlist[6].img,
 			&cl->tlist[6].bpp, &cl->tlist[6].sizeline, &cl->tlist[6].endian);
 	}
-	if (cl->mlist.istrap)
+	if (cl->mlist.istraps)
 	{
 		cl->tlist[15].img = mlx_xpm_file_to_image(cl->wlist.wlx,
 			cl->mlist.traps_path, &cl->tlist[15].img_w, &cl->tlist[15].img_h);
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index a4f705b..faaf322 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -61,7 +61,7 @@ static void
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[6].img);
 	if (cl->mlist.isctex && cl->tlist[7].img)
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[7].img);
-	if (cl->mlist.istrap && cl->tlist[15].img)
+	if (cl->mlist.istraps && cl->tlist[15].img)
 		mlx_destroy_image(cl->wlist.wlx, cl->tlist[15].img);
 }
 
-- 
cgit v1.2.3


From 537ace5d3615855ad2e236ab6f94862241ac71c4 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 10:19:22 +0100
Subject: Ok

---
 map/map_one.cub   | 8 ++++----
 src/ft_draw_map.c | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/map/map_one.cub b/map/map_one.cub
index 540e7c2..0b0cbd5 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -1,4 +1,4 @@
-R 1400 800
+R 1400 900
 
 NO ./media/img/segfot_small.xpm
 SO ./media/img/segfot_small.xpm
@@ -22,8 +22,8 @@ SH 4
 1011001     100001
 111101111111110111
 110000001101010111
-100020000000000011
-100000000000000011
-110000001101010111
+100020T00000000011
+100000T00000000011
+110000T01101010111
 111101111111010111
 11111       1 1111
diff --git a/src/ft_draw_map.c b/src/ft_draw_map.c
index 232891c..fc2613b 100644
--- a/src/ft_draw_map.c
+++ b/src/ft_draw_map.c
@@ -49,13 +49,13 @@ void
 	{
 		while (map[y][x])
 		{
-			if (ft_ischarset("1D", map[y][x]))
+			if (ft_ischarset("1", map[y][x]))
 				ft_draw_square(scale + 9 + (x * (scale)),
 					ft_y_offset(clist) - 9 + (y * (scale)), 0x00ca5422, clist);
 			else if (map[y][x] == '2')
 				ft_draw_square(scale + 9 + (x * (scale)),
 					ft_y_offset(clist) - 9 + (y * (scale)), 0x0033ccff, clist);
-			else if (ft_ischarset("0LNSEW", map[y][x]))
+			else if (ft_ischarset("0LNSEWT", map[y][x]))
 				ft_draw_square(scale + 9 + (x * (scale)), ft_y_offset(clist)
 					- 9 + (y * (scale)), 0x006afa6a, clist);
 			x++;
-- 
cgit v1.2.3


From 8df5ba15b4b54511ade9c875bf84ac2696630aa7 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 10:28:33 +0100
Subject: Perfect collision on them traps

---
 inc/cub3d_defines.h | 2 +-
 src/ft_key_loop.c   | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/inc/cub3d_defines.h b/inc/cub3d_defines.h
index 6453e73..6ab05c2 100644
--- a/inc/cub3d_defines.h
+++ b/inc/cub3d_defines.h
@@ -118,7 +118,7 @@ enum
 #	define FT_CHRST_MAP_ENTRY		"012NSEWLT "
 #	define FT_CHRST_SPAWN			"NSEW"
 #	define FT_CHRST_MAP_NON_WALL	"02NESWLT"
-#	define FT_CHRST_COLLISION		"12T "
+#	define FT_CHRST_COLLISION		"12 "
 #	define FT_CHRST_DETECT			"1L"
 
 /*
diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index c68b228..d19daaa 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -54,6 +54,13 @@ static void
 	pl = &cl->plist;
 	x = ft_find_x(key, pl);
 	y = ft_find_y(key, pl);
+	if (cl->mlist.map[y][x] == 'T')
+	{
+		pl->pos_x = old_x + ((old_x - x) / 4);
+		pl->pos_y = old_y + ((old_y - y) / 4);
+		x = ft_find_x(key, pl);
+		y = ft_find_y(key, pl);
+	}
 	if (ft_ischarset(FT_CHRST_COLLISION, cl->mlist.map[(uint64_t)old_y][x]) ||
 		cl->mlist.map[(uint64_t)old_y][x] == '\0')
 		pl->pos_x = old_x;
-- 
cgit v1.2.3


From b236416db21d03f7749e1c80d5b7abee70ea07d5 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 12:38:21 +0100
Subject: Pretty cool animation

---
 Makefile                  |  1 +
 inc/cub3d.h               |  1 +
 inc/cub3d_structs.h       |  1 +
 src/ft_draw_hud.c         |  2 +-
 src/ft_floor_cast.c       |  2 +-
 src/ft_init_lists.c       |  1 +
 src/ft_key_loop.c         |  1 +
 src/ft_suffer_animation.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 51 insertions(+), 2 deletions(-)
 create mode 100644 src/ft_suffer_animation.c

diff --git a/Makefile b/Makefile
index 6c0dfb2..7b374c8 100644
--- a/Makefile
+++ b/Makefile
@@ -83,6 +83,7 @@ SRCS_NAME	+= ft_init_funptr.c
 SRCS_NAME	+= ft_init_bmp.c
 SRCS_NAME	+= ft_floor_cast.c
 SRCS_NAME	+= ft_floor_cast_inits.c
+SRCS_NAME	+= ft_suffer_animation.c
 #--------------------------------------------------------------------------------------------------#
 SRCS		= $(addprefix ${SRCS_DIR},${SRCS_NAME})
 #--------------------------------------------------------------------------------------------------#
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 9487883..4172c9d 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -78,6 +78,7 @@ void			ft_sprite_height(t_cub *cl, t_sprite *sprite);
 void			ft_calc_sprite(t_cub *cl);
 void			ft_draw_sprite(t_cub *cl, t_sprite *sprite);
 void			ft_draw_skybox(t_cub *cl);
+void			ft_suffer_animation(t_cub *cl);
 
 /*
 ** ====== PARSING ======
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 5ba3b38..7665e96 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -120,6 +120,7 @@ typedef struct			s_player
 	float				cam_x;
 	float				plane_x;
 	float				plane_y;
+	int8_t				life;
 }						t_player;
 
 typedef struct			s_ray
diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c
index 4ae497a..486112d 100644
--- a/src/ft_draw_hud.c
+++ b/src/ft_draw_hud.c
@@ -65,7 +65,7 @@ static void
 		while (y < clist->wlist.y_size - (clist->mlist.map_h * scl) - 20)
 		{
 			*(int*)(clist->img.ptr +
-				((uint8_t)x * 4 + (y * clist->img.sizeline))) = col;
+				((uint16_t)x * 4 + (y * clist->img.sizeline))) = col;
 			y++;
 		}
 		y = clist->wlist.y_size - (clist->mlist.map_h * scl) - 45;
diff --git a/src/ft_floor_cast.c b/src/ft_floor_cast.c
index b6c7e72..2eda9d8 100644
--- a/src/ft_floor_cast.c
+++ b/src/ft_floor_cast.c
@@ -17,7 +17,7 @@ static void
 	ft_draw_plain_horizontal(t_rgb rgb, t_cub *cl, int32_t y, int32_t x)
 {
 	*(int*)(cl->img.ptr +
-			(x * 4 + (y * cl->img.sizeline))) = ft_darken(rgb, cl);
+		(x * 4 + (y * cl->img.sizeline))) = ft_darken(rgb, cl);
 }
 
 static void
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index 8ba9a13..79b0d14 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -43,6 +43,7 @@ t_player
 	plist.dir_y = 0;
 	plist.plane_x = 0;
 	plist.plane_y = 0.66;
+	plist.life = 100;
 	return (plist);
 }
 
diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index d19daaa..29718df 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -58,6 +58,7 @@ static void
 	{
 		pl->pos_x = old_x + ((old_x - x) / 4);
 		pl->pos_y = old_y + ((old_y - y) / 4);
+		ft_suffer_animation(cl);
 		x = ft_find_x(key, pl);
 		y = ft_find_y(key, pl);
 	}
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
new file mode 100644
index 0000000..bb69b4b
--- /dev/null
+++ b/src/ft_suffer_animation.c
@@ -0,0 +1,44 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_key_loop.c                                      :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2020/02/17 20:06:26 by rbousset          #+#    #+#             */
+/*   Updated: 2020/02/17 20:06:29 by rbousset         ###   ########lyon.fr   */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <cub3d.h>
+#include <mlx.h>
+#include <stdint.h>
+
+void
+	ft_suffer_animation(t_cub *cl)
+{
+	uint16_t	x;
+	uint16_t	y;
+
+	cl->img.img = mlx_new_image(cl->wlist.wlx,
+		cl->wlist.x_size, cl->wlist.y_size);
+	cl->img.ptr = mlx_get_data_addr(cl->img.img, &cl->img.bpp,
+		&cl->img.sizeline, &cl->img.endian);
+	x = 0;
+	y = 0;
+	while (y < cl->wlist.y_size)
+	{
+		while (x < cl->wlist.x_size)
+		{
+			*(int*)(cl->img.ptr +
+				(x * 4 + (y * cl->img.sizeline))) = 0x00ce1212;
+			x++;
+		}
+		x = 0;
+		y++;
+	}
+	mlx_put_image_to_window(cl->wlist.wlx,
+		cl->wlist.winptr, cl->img.img, 0, 0);
+	mlx_destroy_image(cl->wlist.wlx, cl->img.img);
+}
-- 
cgit v1.2.3


From 878b565e98728dcd0fba8dfeeba8b1ff46dbd5cd Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Wed, 11 Mar 2020 12:48:34 +0100
Subject: Tweaked suff animation

---
 src/ft_key_loop.c         |  1 -
 src/ft_suffer_animation.c | 38 ++++++++++++++++++++++----------------
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index 29718df..e0c2c28 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -43,7 +43,6 @@ static uint64_t
 	return ((uint64_t)pl->pos_y);
 }
 
-#include <stdio.h>
 static void
 	ft_collision(float old_y, float old_x, int32_t key, t_cub *cl)
 {
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index bb69b4b..4e77ca7 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -20,25 +20,31 @@ void
 {
 	uint16_t	x;
 	uint16_t	y;
+	uint8_t		i;
 
-	cl->img.img = mlx_new_image(cl->wlist.wlx,
-		cl->wlist.x_size, cl->wlist.y_size);
-	cl->img.ptr = mlx_get_data_addr(cl->img.img, &cl->img.bpp,
-		&cl->img.sizeline, &cl->img.endian);
-	x = 0;
-	y = 0;
-	while (y < cl->wlist.y_size)
+	i = 0;
+	while (i < 8)
 	{
-		while (x < cl->wlist.x_size)
+		cl->img.img = mlx_new_image(cl->wlist.wlx,
+									cl->wlist.x_size, cl->wlist.y_size);
+		cl->img.ptr = mlx_get_data_addr(cl->img.img, &cl->img.bpp,
+										&cl->img.sizeline, &cl->img.endian);
+		x = 0;
+		y = 0;
+		while (y < cl->wlist.y_size)
 		{
-			*(int*)(cl->img.ptr +
-				(x * 4 + (y * cl->img.sizeline))) = 0x00ce1212;
-			x++;
+			while (x < cl->wlist.x_size)
+			{
+				*(int*)(cl->img.ptr +
+					(x * 4 + (y * cl->img.sizeline))) = 0x00ce1212;
+				x++;
+			}
+			x = 0;
+			y++;
 		}
-		x = 0;
-		y++;
+		mlx_put_image_to_window(cl->wlist.wlx,
+								cl->wlist.winptr, cl->img.img, 0, 0);
+		mlx_destroy_image(cl->wlist.wlx, cl->img.img);
+		i++;
 	}
-	mlx_put_image_to_window(cl->wlist.wlx,
-		cl->wlist.winptr, cl->img.img, 0, 0);
-	mlx_destroy_image(cl->wlist.wlx, cl->img.img);
 }
-- 
cgit v1.2.3


From 17906f353bb6e87528f552891d7d4c91bb3ac789 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p3.le-101.fr>
Date: Wed, 11 Mar 2020 14:38:52 +0100
Subject: why macos

---
 inc/cub3d_structs.h       |  1 +
 map/lvl_one.cub           |  2 +-
 map/map_one.cub           |  4 ++--
 src/ft_suffer_animation.c | 43 ++++++++++++++++++++-----------------------
 4 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 7665e96..310ba90 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -222,6 +222,7 @@ typedef struct			s_cub
 	struct s_map		mlist;
 	struct s_ray		rlist;
 	struct s_img		img;
+	struct s_img		red_scr;
 	struct s_rgb		f_rgb;
 	struct s_rgb		c_rgb;
 	struct s_img		tlist[16];
diff --git a/map/lvl_one.cub b/map/lvl_one.cub
index 2c52287..d0ce0a2 100644
--- a/map/lvl_one.cub
+++ b/map/lvl_one.cub
@@ -1,4 +1,4 @@
-R 1440 1000
+R 1600 1000
 
 NO ./media/img/BRIQUASSE_3.xpm
 SO ./media/img/BRIQUASSE_3.xpm
diff --git a/map/map_one.cub b/map/map_one.cub
index 0b0cbd5..285fbf0 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -14,7 +14,7 @@ SH 4
 
 111111111111111111
 120000000011000001
-10010E000000000201
+100100000000000201
 101100000111000001
 111111111111110011
 1000001     100001
@@ -23,7 +23,7 @@ SH 4
 111101111111110111
 110000001101010111
 100020T00000000011
-100000T00000000011
+100000T00000W00011
 110000T01101010111
 111101111111010111
 11111       1 1111
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index 4e77ca7..a2ce3b1 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -18,33 +18,30 @@
 void
 	ft_suffer_animation(t_cub *cl)
 {
-	uint16_t	x;
-	uint16_t	y;
-	uint8_t		i;
+	int32_t	x;
+	int32_t	y;
+	int8_t	i;
+	int32_t col;
 
-	i = 0;
-	while (i < 8)
+	i = -1;
+	col = 0x00ce2524;
+	while (++i < 100)
 	{
-		cl->img.img = mlx_new_image(cl->wlist.wlx,
-									cl->wlist.x_size, cl->wlist.y_size);
-		cl->img.ptr = mlx_get_data_addr(cl->img.img, &cl->img.bpp,
-										&cl->img.sizeline, &cl->img.endian);
-		x = 0;
-		y = 0;
-		while (y < cl->wlist.y_size)
+		cl->red_scr.img = mlx_new_image(cl->wlist.wlx,
+			cl->wlist.x_size, cl->wlist.y_size);
+		cl->red_scr.ptr = mlx_get_data_addr(cl->red_scr.img, &cl->red_scr.bpp,
+			&cl->red_scr.sizeline, &cl->red_scr.endian);
+		x = -1;
+		y = -1;
+		while (++y < (int32_t)cl->wlist.y_size)
 		{
-			while (x < cl->wlist.x_size)
-			{
-				*(int*)(cl->img.ptr +
-					(x * 4 + (y * cl->img.sizeline))) = 0x00ce1212;
-				x++;
-			}
-			x = 0;
-			y++;
+			while (++x < (int32_t)cl->wlist.x_size)
+				*(int*)(cl->red_scr.ptr +
+					(x * 4 + (y * cl->red_scr.sizeline))) = col;
+			x = -1;
 		}
 		mlx_put_image_to_window(cl->wlist.wlx,
-								cl->wlist.winptr, cl->img.img, 0, 0);
-		mlx_destroy_image(cl->wlist.wlx, cl->img.img);
-		i++;
+			cl->wlist.winptr, cl->red_scr.img, 0, 0);
+		mlx_destroy_image(cl->wlist.wlx, cl->red_scr.img);
 	}
 }
-- 
cgit v1.2.3


From 650e83573987d004171f250e236b21b243477355 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p3.le-101.fr>
Date: Wed, 11 Mar 2020 14:57:54 +0100
Subject: is not working

---
 Makefile                                |   17 +-
 minilibx_beta/Makefile                  |   34 +
 minilibx_beta/font.c                    | 3526 +++++++++++++++++++++++++++++++
 minilibx_beta/interface.swift           |  292 +++
 minilibx_beta/man/man3/mlx.3            |  110 +
 minilibx_beta/man/man3/mlx_loop.3       |  144 ++
 minilibx_beta/man/man3/mlx_new_image.3  |  206 ++
 minilibx_beta/man/man3/mlx_new_window.3 |   79 +
 minilibx_beta/man/man3/mlx_pixel_put.3  |   85 +
 minilibx_beta/mlx.h                     |  157 ++
 minilibx_beta/mlx_image.swift           |   48 +
 minilibx_beta/mlx_image.swiftdoc        |  Bin 0 -> 532 bytes
 minilibx_beta/mlx_image.swiftmodule     |  Bin 0 -> 32172 bytes
 minilibx_beta/mlx_init.swift            |  100 +
 minilibx_beta/mlx_init.swiftdoc         |  Bin 0 -> 376 bytes
 minilibx_beta/mlx_init.swiftmodule      |  Bin 0 -> 20128 bytes
 minilibx_beta/mlx_png.c                 |  431 ++++
 minilibx_beta/mlx_rgb.c                 |  763 +++++++
 minilibx_beta/mlx_string_put.c          |   72 +
 minilibx_beta/mlx_window.swift          |  541 +++++
 minilibx_beta/mlx_window.swiftdoc       |  Bin 0 -> 508 bytes
 minilibx_beta/mlx_window.swiftmodule    |  Bin 0 -> 55576 bytes
 minilibx_beta/mlx_xpm.c                 |  384 ++++
 src/ft_suffer_animation.c               |    6 +-
 24 files changed, 6990 insertions(+), 5 deletions(-)
 create mode 100644 minilibx_beta/Makefile
 create mode 100644 minilibx_beta/font.c
 create mode 100644 minilibx_beta/interface.swift
 create mode 100644 minilibx_beta/man/man3/mlx.3
 create mode 100644 minilibx_beta/man/man3/mlx_loop.3
 create mode 100644 minilibx_beta/man/man3/mlx_new_image.3
 create mode 100644 minilibx_beta/man/man3/mlx_new_window.3
 create mode 100644 minilibx_beta/man/man3/mlx_pixel_put.3
 create mode 100644 minilibx_beta/mlx.h
 create mode 100644 minilibx_beta/mlx_image.swift
 create mode 100644 minilibx_beta/mlx_image.swiftdoc
 create mode 100644 minilibx_beta/mlx_image.swiftmodule
 create mode 100644 minilibx_beta/mlx_init.swift
 create mode 100644 minilibx_beta/mlx_init.swiftdoc
 create mode 100644 minilibx_beta/mlx_init.swiftmodule
 create mode 100644 minilibx_beta/mlx_png.c
 create mode 100644 minilibx_beta/mlx_rgb.c
 create mode 100644 minilibx_beta/mlx_string_put.c
 create mode 100644 minilibx_beta/mlx_window.swift
 create mode 100644 minilibx_beta/mlx_window.swiftdoc
 create mode 100644 minilibx_beta/mlx_window.swiftmodule
 create mode 100644 minilibx_beta/mlx_xpm.c

diff --git a/Makefile b/Makefile
index 7b374c8..9fbd0f2 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,11 @@ INCS_DIR	= inc/
 SRCS_DIR	= src/
 OBJS_DIR	= obj/
 LFT_DIR		= libft/
-MLX_DIR		= minilibx/
+ifdef BETA
+	MLX_DIR	= minilibx_beta/
+else
+	MLX_DIR	= minilibx/
+endif
 #==================================================================================================#
 #---------------------------------------------- Files ---------------------------------------------#
 #==================================================================================================#
@@ -95,6 +99,7 @@ LFT_SRCS	= $(shell find libft/src -name "*.c")
 #==================================================================================================#
 MKDIR		= mkdir -p
 RM			= rm -rf
+MV			= mv
 OS			= $(shell uname)
 ifeq (${OS}, Darwin)
 	SCR_SZE = $(shell osascript -e 'tell application "Finder" to get bounds of window of desktop' \
@@ -153,6 +158,9 @@ endif
 ${NAME}:	${OBJS} ${LFT_SRCS} ${LFT_DIR}${INCS_DIR}libft.h
 ifeq (${OS}, Darwin)
 	@$(MAKE) --no-print-directory -C ${MLX_DIR} all
+ifdef BETA
+	${MV} ${MLX_DIR}libmlx.dylib ./
+endif
 endif
 ifdef ASAN
 	@$(MAKE) --no-print-directory -C ${LFT_DIR} all ASAN=1
@@ -160,8 +168,12 @@ else
 	@$(MAKE) --no-print-directory -C ${LFT_DIR} all
 endif
 ifeq (${OS}, Darwin)
+ifdef BETA
+	${CC} ${CFLAGS} -o $@ ${OBJS} -rpath ${MLX_DIR}libmlx.dylib -rpath /usr/lib/libSystem.B.dylib -L${LFT_DIR} -L./ -lft -lmlx -lm
+else
 	${CC} ${CFLAGS} -o $@ ${OBJS} -L${LFT_DIR} -L${MLX_DIR} -lft -lmlx -lm \
 -framework OpenGL -framework AppKit
+endif
 else
 	${CC} ${CFLAGS} -o $@ ${OBJS} -L${LFT_DIR} -lft -lX11 -lXext -lmlx -lm -lbsd
 endif
@@ -171,6 +183,9 @@ all: ${NAME}
 clean: 
 ifeq (${OS}, Darwin)
 	@$(MAKE) --no-print-directory -C ${MLX_DIR} clean
+ifdef BETA
+	${RM} libmlx.dylib
+endif
 endif
 	@$(MAKE) --no-print-directory -C ${LFT_DIR} clean
 	${RM} ${OBJS_DIR}
diff --git a/minilibx_beta/Makefile b/minilibx_beta/Makefile
new file mode 100644
index 0000000..39c36f4
--- /dev/null
+++ b/minilibx_beta/Makefile
@@ -0,0 +1,34 @@
+
+
+
+MODULE_SRC= mlx_image.swift mlx_window.swift mlx_init.swift
+MODULE_OBJ=$(MODULE_SRC:.swift=.swiftmodule)
+
+SRC= interface.swift $(MODULE_SRC)
+OBJ=$(SRC:.swift=.o)
+
+C_SRC= mlx_xpm.c mlx_png.c mlx_string_put.c
+C_OBJ=$(C_SRC:.c=.o)
+CFLAGS=-O3
+
+NAME=libmlx.dylib
+
+INC=-I.
+#OPTI=-Ounchecked
+
+all: $(NAME)
+
+$(NAME): $(MODULE_OBJ) $(OBJ) $(C_OBJ)
+	swiftc $(OPTI) $(INC) -o $(NAME) -emit-library $(OBJ) $(C_OBJ) -lz
+
+
+
+%.o: %.swift
+	swiftc $(OPTI) $(INC) -parse-as-library -c $< -o $@
+
+%.swiftmodule: %.swift
+	swiftc $(OPTI) $(INC) -parse-as-library -c $< -o $@ -emit-module -module-name $(patsubst %.swift,%,$<) -module-link-name $(patsubst %.swift,%,$<)
+
+clean:
+	rm -f $(NAME) $(OBJ) $(MODULE_OBJ) $(C_OBJ) *.swiftdoc *~
+
diff --git a/minilibx_beta/font.c b/minilibx_beta/font.c
new file mode 100644
index 0000000..d4c48cc
--- /dev/null
+++ b/minilibx_beta/font.c
@@ -0,0 +1,3526 @@
+/* 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,
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\214\377\377\377\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  ")\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\216\377\377\377\263\377\377\377\013\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377b\377\377\377V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\270\377\377"
+  "\377u\377\377\377\013\377\377\377\252\377\377\377\255\377\377\377\013\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\374\377\377"
+  "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377e\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\234\377\377\377"
+  "\267\377\377\377B\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\343\377"
+  "\377\377\375\377\377\377M\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\013\377\377\377\355\377\377\377\367\377\377\377\070\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\373\377\377\377\243\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377b\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377)\377\377\377e\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377"
+  "\377c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377b\377\377\377c\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377c\377\377\377\065\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\213\377\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377"
+  "\377\377\225\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "u\377\377\377\371\377\377\377\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377"
+  "\377\372\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377U\377\377\377e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\376\377\377\377"
+  "s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\372"
+  "\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\367\377\377"
+  "\377\315\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\214\377\377\377\372\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377\366\377\377\377\342\377\377\377"
+  "%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377"
+  "\372\377\377\377\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\306\377\377\377\374\377"
+  "\377\377\370\377\377\377\370\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377"
+  "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320"
+  "\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\215\377\377\377\372\377\377\377\363\377"
+  "\377\377\333\377\377\377m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\001\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\364\377\377\377\366\377\377\377%\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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)\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\363\377\377\377%\377\377\377"
+  "\224\377\377\377\363\377\377\377%\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\062\377\377\377\336\377\377\377\375\377"
+  "\377\377x\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377=\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\377\377\377~\377\377\377\374\377\377\377\377\377\377"
+  "\377\376\377\377\377\224\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\375\377\377\377"
+  "\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377"
+  "\377\377\377\271\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\033\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377v\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377`\377\377\377\300\377\377\377\342\377\377\377Z\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\224\377\377"
+  "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377"
+  "\377\377b\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377\377\377\343\377\377\377\273"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\346\377\377\377"
+  "\370\377\377\377\364\377\377\377\320\377\377\377O\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\377\377\377\013\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\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\377\377\377\062\377\377\377\316\377\377\377\366\377\377\377\373\377\377"
+  "\377\344\377\377\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377u\377\377\377\342\377\377\377\370\377\377\377"
+  "\364\377\377\377\305\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377)\377\377\377\065\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\371\371\377.\377\377\377V\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\321\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\271\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377Q\377"
+  "\377\377\273\377\377\377\332\377\377\377\322\377\377\377\206\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\070\377\377\377\367\377\377\377\376\377\377\377s\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377"
+  "\377\377\377\377\373\377\377\377\247\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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\013\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\013\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\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\333\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\307\377\377\377"
+  "\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\352\377\377"
+  "\377\364\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\013\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"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377"
+  "\377\377\377\377\377\225\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\356\377"
+  "\377\377\376\377\377\377v\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\013\377\377\377\352\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\307\377\377\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377u\377\377"
+  "\377\375\377\377\377\321\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\307\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\355\377\377\377\330\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\366\377\377\377\377\377"
+  "\377\377\377\377\377\377\373\377\377\377\246\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\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\377B\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377"
+  "\377\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373"
+  "\377\377\377\240\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\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\033\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\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\377"
+  "V\000\000\000\000\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\000\000\000\000\377\377\377\307\377\377\377\376\377\377\377i\000\000"
+  "\000\000\000\000\000\000\377\377\377\013\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\355\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\013\377"
+  "\377\377\345\377\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\377\377\377\070"
+  "\377\377\377\367\377\377\377\360\377\377\377\033\377\377\377\377\377\377\377"
+  "\377\377\377\377\206\377\377\377\377\377\377\377\332\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255"
+  "\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377;\377\377\377\373\377\377\377\347\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377`\377\377\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377"
+  "\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\376\377\377"
+  "\377_\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377"
+  "\377\374\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\224\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377K\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\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\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377"
+  "\377\377\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377"
+  "\377\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\254\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377"
+  "\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\262\377\377\377=\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\377\377"
+  "\377\377\325\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371"
+  "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377"
+  "\377\363\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\000\377\377\377\000\377\377\377\000\377\377\377\001\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\013\377\377\377\351\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\355\000\000\000\000\377\377\377\320\377\377\377"
+  "\346\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\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\000\000\000\000\377\377\377}\377\377\377\377\377\377\377\323\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\354\377\377"
+  "\377\364\377\377\377\226\377\377\377\373\377\377\377\337\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\033\377\377\377\362\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\232\377\377\377\377\377\377\377\336\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\302\377"
+  "\377\377\377\377\377\377\277\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377|\377\377"
+  "\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\232\377\377\377"
+  "\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\013\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377"
+  "l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\033\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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"
+  "\\\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377U\377\377\377\374\377\377\377\377\377\377\377\333\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\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\033\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\025\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\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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%\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\374\377\377\377\254\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377V\377\377\377\375\377\377\377\241\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\070\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\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\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\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\232\377\377\377\377\377\377\377\377\377\377\377\277\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\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\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "K\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\033\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\013\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\000\000\000\000\377\377\377\033\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\033\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\356\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\013\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\000\000\000\000\377\377\377\335\377\377\377\377\377\377\377\315\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377"
+  "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\377\377\377\377\336"
+  "\000\000\000\000\000\000\000\000\377\377\377\275\377\377\377\377\377\377\377\330\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377"
+  "\377\377\377\364\377\377\377%\000\000\000\000\377\377\377\013\377\377\377\361\377"
+  "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "j\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\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\377"
+  "p\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376"
+  "\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377"
+  "\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\033\377\377"
+  "\377\365\377\377\377\375\377\377\377\070\000\000\000\000\000\000\000\000\377\377\377\013\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\361\377\377\377\347\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\214\377\377\377\377\377\377\377\343\000\000\000\000"
+  "\000\000\000\000\377\377\377\261\377\377\377\377\377\377\377\272\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\377\377\377\013\377\377\377\351\377\377\377\376\377"
+  "\377\377i\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\366\377\377\377\372"
+  "\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377"
+  "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\377\377\377\320\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\224\377\377\377\377\377\377\377\377\377\377\377\272\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\233\377\377\377"
+  "\371\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377"
+  "\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377"
+  "\373\377\377\377\356\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377S\377\377\377\314\377\377\377\271\377\377\377\013\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377S\377\377\377\314\377\377\377\271\377\377\377\013\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\375"
+  "\377\377\377\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\360"
+  "\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377\377\377\377\377l\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377"
+  "\377\337\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377"
+  "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372\377\377\377)\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377"
+  "\000\377\377\377\003\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377"
+  "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\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)\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\333\000\000\000\000\377\377"
+  "\377\316\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\070\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377\232\377\377\377\375\377\377\377"
+  "\062\377\377\377=\377\377\377\375\377\377\377\254\377\377\377!\377\377\377"
+  "\371\377\377\377\367\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377;\377\377\377\372\377\377\377\346\377\377\377\013\377\377\377"
+  "\371\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\375"
+  "\377\377\377\\\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\376\377"
+  "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\372\377\377\377\375\377\377\377"
+  "\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\327\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\320\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377"
+  "\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\204\377\377\377\377\377\377\377\353\377\377\377\013\000\000\000"
+  "\000\377\377\377\320\377\377\377\377\377\377\377\260\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\205\377\377\377\322\377\377"
+  "\377\353\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\325\377\377\377\375\377\377\377"
+  "M\000\000\000\000\377\377\377\033\377\377\377\356\377\377\377\376\377\377\377l\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377"
+  "\375\377\377\377Z\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377\377\377"
+  "\377\257\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\025\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377"
+  "\326\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "K\377\377\377\374\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377!\377\377\377"
+  "\371\377\377\377\377\377\377\377\216\000\000\000\000\000\000\000\000\377\377\377\302\377"
+  "\377\377\224\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\302\377\377\377\377\377\377\377"
+  "\252\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377V\377\377"
+  "\377\375\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377"
+  "\377\377\377\260\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\330\377\377\377\377\377\377\377\251\000\000\000\000\377\377\377\013\377\377\377"
+  "\336\377\377\377\377\377\377\377\227\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\250\377\377\377\276\377"
+  "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\250\377\377\377\276\377\377\377\033"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\276\377\377\377\377\377\377\377\377"
+  "\377\377\377\225\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377I\377\377\377\373\377\377\377"
+  "\377\377\377\377\325\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377)\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\306\377\377\377\376\377\377\377l\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\375\377"
+  "\377\377q\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\334\377\377\377\377\377\377\377\376\377\377\377\360\377\377\377\033\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377"
+  "\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377\223\377\377\377\377"
+  "\377\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377s\377\377\377\376\377\377\377\375\377\377\377_\000\000\000\000\000\000\000\000\377\377"
+  "\377z\377\377\377\257\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\313\377\377\377\376\377\377\377U\000\000\000\000\377\377\377\033\377\377"
+  "\377\353\377\377\377\377\377\377\377\333\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\326\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377\033\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377\247\377\377\377\377\377\377\377\364\377\377\377)\000\000\000\000\000"
+  "\000\000\000\377\377\377\246\377\377\377\213\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377"
+  "\377\377\363\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\213"
+  "\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\377\377"
+  "\377\270\377\377\377\377\377\377\377\355\377\377\377\033\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366"
+  "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\375\377"
+  "\377\377\070\377\377\377\013\377\377\377\352\377\377\377\377\377\377\377\327"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\307\377\377"
+  "\377\377\377\377\377\377\377\377\377\251\000\000\000\000\377\377\377\013\377\377\377"
+  "\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\313\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\377\377\377"
+  "\253\377\377\377\377\377\377\377\346\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\243\000\000\000\000\000\000"
+  "\000\000\377\377\377\025\377\377\377\356\377\377\377\376\377\377\377l\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\377\377\377"
+  "\377\310\000\000\000\000\000\000\000\000\377\377\377\253\377\377\377\377\377\377\377\342"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377"
+  "\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371\377"
+  "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\232\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\302\377\377\377z\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\363\377\377\377\013\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313"
+  "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\312\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\377\377"
+  "\377K\377\377\377\374\377\377\377\347\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377\247\377\377\377\377\377\377\377\206\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\376\377\377"
+  "\377v\377\377\377\033\377\377\377\366\377\377\377\367\377\377\377)\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377\377\377"
+  "\377\377\377\316\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377"
+  "\377\264\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\356\377\377\377\376\377\377\377"
+  "v\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377"
+  "\377\377\377\277\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\370\377\377\377"
+  "\353\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377)\377\377\377"
+  "V\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377b\000\000\000\000\377\377\377"
+  "S\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377I\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377S\377\377\377\065\377\377\377;\377\377\377\374\377\377"
+  "\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377)\377\377\377V\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377"
+  "\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377"
+  "\377E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\224\377\377\377\376\377\377\377b\000\000\000\000\377\377\377E\377"
+  "\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377)\377\377\377X\000\000\000\000\000\000\000\000\377\377\377V\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377E\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377K\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377S\377\377\377\065\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377S\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377)\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377U\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\006\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377"
+  "\377\376\377\377\377l\377\377\377\033\377\377\377\364\377\377\377\352\377"
+  "\377\377\013\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\062"
+  "\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377V\377\377\377\374\377\377\377\336\000\000\000\000\000\000"
+  "\000\000\377\377\377\065\377\377\377\261\377\377\377\013\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\377\377\377\232\377\377\377\371\377\377\377\033\377\377\377"
+  ";\377\377\377\374\377\377\377\217\377\377\377\335\377\377\377\375\377\377"
+  "\377\\\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377"
+  "\377\377\371\377\377\377\333\377\377\377e\377\377\377\374\377\377\377\326"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\364\377\377\377%\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377b\377\377\377\375\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\266\377\377\377\377\377\377\377\227\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\316\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377"
+  "\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\375\377\377\377=\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\306\377\377"
+  "\377\377\377\377\377\225\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\375\377"
+  "\377\377\346\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\213\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\062\377\377\377"
+  "f\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\253\377\377\377\376\377\377\377i\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\231\377\377\377\377\377\377\377\257\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377"
+  "\377\377\377\377\377\377\356\377\377\377\374\377\377\377\332\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377"
+  "\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377"
+  "\377\377\375\377\377\377\347\377\377\377\013\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377U\377\377\377\375\377\377\377\266\000\000\000\000\000\000"
+  "\000\000\377\377\377;\377\377\377\374\377\377\377\236\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\377\377\377\025\377\377\377\361\377\377\377\367\377\377\377"
+  ")\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\376\377\377\377\322\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377"
+  "\377\377\377\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377"
+  "\377\377\377\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377"
+  "\377\350\377\377\377\377\377\377\377\367\377\377\377y\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\377\377\377S\377\377\377\351\377\377\377\377\377\377\377\365\377\377"
+  "\377n\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\345\377\377\377\376"
+  "\377\377\377_\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\273\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\232\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\344\377\377\377\317\377"
+  "\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000"
+  "\377\377\377X\377\377\377\375\377\377\377\327\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\300\377\377\377\377\377\377\377\277\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377Q\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\332\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377)"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\342\377\377\377\377\377\377\377\225\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\377\377\377"
+  "\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377"
+  "\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377"
+  "\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\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\377Q\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377"
+  "\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\373"
+  "\377\377\377\371\377\377\377\366\377\377\377%\377\377\377\013\377\377\377"
+  "\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377"
+  "\033\377\377\377\362\377\377\377\375\377\377\377\\\000\000\000\000\000\000\000\000\377\377"
+  "\377\033\377\377\377\366\377\377\377\375\377\377\377Q\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\306\377\377\377\375\377\377\377\\\377\377"
+  "\377\377\377\377\377\377\377\377\377\033\377\377\377\362\377\377\377\375\377"
+  "\377\377Q\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371\377\377\377\375\377"
+  "\377\377M\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377"
+  "\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\370\377"
+  "\377\377\364\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\232\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377"
+  "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\204\377\377\377\377\377\377\377\311\000\000\000\000\000\000\000\000\377\377\377"
+  "\224\377\377\377\377\377\377\377\260\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377\222\377\377\377\377\377\377\377\252\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377l\377\377"
+  "\377\376\377\377\377\333\377\377\377\243\377\377\377\377\377\377\377\244"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377"
+  "\377\377\345\377\377\377\375\377\377\377M\377\377\377\013\377\377\377\351"
+  "\377\377\377\372\377\377\377)\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\377\377"
+  "\377\377\277\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377"
+  "\377\025\377\377\377\362\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377U\377\377\377"
+  "\374\377\377\377\316\377\377\377\247\377\377\377\377\377\377\377\206\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\216\377\377\377\345\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\377\377\377\275\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\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\013\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\272\377"
+  "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377"
+  "\200\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\377\377\377\065\377\377\377\327\377\377\377\377\377\377\377\377\377"
+  "\377\377\376\377\377\377\267\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000\000\000\000\000\000\000\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\000\000"
+  "\000\000\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\377\062\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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%\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377"
+  "S\377\377\377\354\377\377\377\363\377\377\377I\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377"
+  "\377\013\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\000\000\000\000\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\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\377\377\377u\377\377\377\351\377\377\377\377\377\377\377\377\377\377"
+  "\377\364\377\377\377\222\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\013\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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"
+  "\000\000\000\000\000\000\000\000\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=\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\377\377\377\013\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\000\000\000\000\377"
+  "\377\377\301\377\377\377\354\377\377\377\062\000\000\000\000\000\000\000\000\377\377\377I"
+  "\377\377\377\364\377\377\377\275\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\377\377\377I\377\377\377\364\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\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\377\070\000\000\000\000\377\377\377"
+  "~\377\377\377\224\000\000\000\000\377\377\377\013\377\377\377\332\377\377\377\342"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\275\377\377\377\373"
+  "\377\377\377\255\000\000\000\000\000\000\000\000\377\377\377r\377\377\377\370\377\377\377"
+  "\315\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364"
+  "\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\254\377\377"
+  "\377\367\377\377\377\\\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "K\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377"
+  "\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377"
+  "\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377"
+  "\000\377\377\377\007\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372\377\377"
+  "\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\377\377\377\306\377\377\377\375\377\377\377\070\377\377\377\013\377\377"
+  "\377\364\377\377\377\334\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377\372\377\377"
+  "\377\376\377\377\377\307\377\377\377O\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\367\377\377"
+  "\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\323\377\377\377\374\377\377\377)\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\245\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377V\377\377\377\375\377\377\377\322\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377"
+  "\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\325\377\377\377\374\377\377\377\062\377\377"
+  "\377\215\377\377\377\241\377\377\377\013\377\377\377\361\377\377\377\367\377"
+  "\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\307\377\377\377\376\377\377\377l\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\200"
+  "\377\377\377\363\377\377\377\376\377\377\377s\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377\377\377\377\377"
+  "\363\377\377\377V\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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=\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\314\377\377"
+  "\377\376\377\377\377l\377\377\377j\377\377\377\237\377\377\377\223\377\377"
+  "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\376\377\377\377i\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\377\377\377"
+  "\372\377\377\377\376\377\377\377\237\000\000\000\000\377\377\377\254\377\377\377"
+  "\377\377\377\377\243\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377"
+  "\025\377\377\377\361\377\377\377\366\377\377\377\033\000\000\000\000\000\000\000\000\377\377"
+  "\377\033\377\377\377\366\377\377\377\355\377\377\377\033\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377"
+  "\377\377\377\377\377\377\323\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377"
+  "\377\377\377\377\377\377\323\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\374\377\377\377"
+  "\377\377\377\377\314\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\264\377\377\377\377\377\377\377\377\377\377\377\262"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\337\377\377\377\377\377\377\377\271\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\025\377\377\377"
+  "\361\377\377\377\352\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377\377\237"
+  "\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\377\377\377\232\377\377\377\377\377\377\377\266\377\377\377\213\377"
+  "\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\265\377\377\377"
+  "E\377\377\377y\377\377\377\337\377\377\377\377\377\377\377\227\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\352\377\377\377\375"
+  "\377\377\377Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377"
+  "i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\324\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377"
+  "\377\337\377\377\377Z\377\377\377p\377\377\377p\377\377\377f\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355"
+  "\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377\065\377\377\377\371\377\377\377\367"
+  "\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377"
+  "\377\377\377\300\377\377\377\372\377\377\377\377\377\377\377\236\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377"
+  "\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\313\377\377\377\367\377\377\377\304\377\377\377\377"
+  "\377\377\377\251\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\343"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377\377\376\377\377"
+  "\377i\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377"
+  "\377\377\377\377\243\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377"
+  "\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\224\377\377\377\377\377\377\377\243\000\000\000\000\000\000\000\000\377\377\377`\377"
+  "\377\377\373\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377`\377\377\377\374\377\377\377\377\377\377\377\336\377"
+  "\377\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366"
+  "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\360\377\377"
+  "\377\033\000\000\000\000\377\377\377\320\377\377\377\376\377\377\377_\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377U\377\377\377\375\377\377\377\277"
+  "\377\377\377\033\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\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\324\377\377\377\377\377\377\377\377\377"
+  "\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377\377\377\377\304\377\377"
+  "\377\204\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\214\377\377"
+  "\377\377\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\206"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\266\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374"
+  "\377\377\377\327\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\013\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\033\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\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\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\070\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"
+  "\000\000\000\000\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377K\377\377\377\375\377\377\377\252\000\000\000\000\377\377\377"
+  "`\377\377\377\373\377\377\377\377\377\377\377\242\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377"
+  "\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377\013\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\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\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\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377"
+  "u\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\377\377\377\013\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\033\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313"
+  "\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\341\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\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\013\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\000\000\000\000\377\377\377I\377\377\377\372\377"
+  "\377\377\376\377\377\377v\377\377\377\033\377\377\377\362\377\377\377\376"
+  "\377\377\377}\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\335\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377\033\377\377"
+  "\377\364\377\377\377\372\377\377\377\062\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\377\377\377\065\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\320\377\377\377\355\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377"
+  "\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377"
+  "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\000\000\000\000\377\377\377}\377\377\377\313\377\377\377\257\377\377\377\013\000"
+  "\000\000\000\377\377\377\223\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\352\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377z\377"
+  "\377\377\325\377\377\377\033\377\377\377\013\377\377\377\314\377\377\377\267"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377"
+  "\377!\377\377\377\373\377\377\377\211\377\377\377!\377\377\377\374\377\377"
+  "\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\377\377\377\205\377\377\377\370\377\377\377\377\377\377\377\377\377\377"
+  "\377\345\377\377\377\200\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\377\377\377\013\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377"
+  "\321\000\000\000\000\377\377\377r\377\377\377z\377\377\377%\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377\025\377\377\377\337\377\377\377\377\377"
+  "\377\377\375\377\377\377\070\000\000\000\000\377\377\377U\377\377\377\365\377\377"
+  "\377\256\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\255\377\377\377\275\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377"
+  "\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371"
+  "\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\261\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\377\377\377\025\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\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377j\377\377\377\375\377\377\377\361\377\377\377%\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\215\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "K\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\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377}\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\333\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377\377\330\377\377\377\343\377"
+  "\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377G\377\377\377\330\377\377\377\343\377\377\377"
+  "c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377V\377\377\377\375\377\377\377\376\377\377\377\214\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "U\377\377\377\374\377\377\377\377\377\377\377m\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\330\377\377\377"
+  "\377\377\377\377\271\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377U\377\377\377\375\377\377\377\252\000\000\000\000\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\000\000\000\000\000\000\000\000\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%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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)\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\375\377\377\377)\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377K\377"
+  "\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377"
+  "\327\377\377\377\322\377\377\377\300\377\377\377\013\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377"
+  "\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\327\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377"
+  "\251\377\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377"
+  "\377\377\377K\377\377\377\374\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377}\377"
+  "\377\377\365\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377"
+  "\247\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313"
+  "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\377\377\377\321\377\377\377\376\377\377\377i\377\377\377\033\377"
+  "\377\377\365\377\377\377\355\377\377\377\013\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\377\377\377\070\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\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377l\377\377\377\377\377\377\377\377\377\377\377\226\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\344\377\377\377\376\377\377\377\372\377\377\377\367\377\377\377"
+  ")\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377!\377\377\377\371\377\377\377\376\377\377\377i\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377"
+  "\377\375\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\033\377\377\377\364\377\377\377\363\377\377\377%"
+  "\000\000\000\000\377\377\377\335\377\377\377\375\377\377\377M\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\177\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\205\377\377\377\376\377\377\377\333\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377"
+  "\377\377\257\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372"
+  "\377\377\377\070\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\247\377"
+  "\377\377\377\377\377\377\345\377\377\377\033\000\000\000\000\000\000\000\000\377\377\377O"
+  "\377\377\377X\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377"
+  "\377\377\351\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377"
+  "b\377\377\377\375\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\306\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\344\377\377\377\372\377\377\377)\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377%\377\377\377\374\377\377"
+  "\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\264\000\000\000\000\000\000\000\000"
+  "\377\377\377\335\377\377\377\376\377\377\377Q\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\325\377"
+  "\377\377\013\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\363\377\377"
+  "\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\354\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\354\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\377\377\377\013\377\377\377\361\377\377\377\352\000\000\000\000\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\000\000\000\000\377\377\377\224"
+  "\377\377\377\377\377\377\377\325\377\377\377\013\000\000\000\000\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\013\377\377\377\351\377\377\377\377\377\377\377\243\000\000\000\000\000"
+  "\000\000\000\377\377\377r\377\377\377\375\377\377\377\363\377\377\377%\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377"
+  "\377\257\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372\377"
+  "\377\377\070\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\351"
+  "\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377b\377\377\377"
+  "\375\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\377\377\377\312\377\377\377\377\377\377\377\372\377\377\377f\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\224\377\377\377\377\377\377\377\333\377\377\377\013\000\000\000\000\000\000\000\000\377"
+  "\377\377S\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\306\377\377\377\376\377\377\377U\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377"
+  "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377"
+  "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\204\377\377\377\377\377\377\377\322\000\000\000\000\000\000\000\000\377\377\377\241\377"
+  "\377\377\377\377\377\377\264\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377u\377\377"
+  "\377\376\377\377\377\361\377\377\377\325\377\377\377\377\377\377\377\252"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377s\377"
+  "\377\377\377\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377"
+  "\377\377\377\377\277\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\314\377\377\377\377\377\377\377"
+  "\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377E\377\377\377\217\377\377\377\373\377\377\377\343\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\376\377\377\377\247\377\377\377I\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\324\377\377\377\343\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\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\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\220"
+  "\377\377\377\341\377\377\377\377\377\377\377\377\377\377\377\233\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\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\013\377"
+  "\377\377\342\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377"
+  "\265\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\215\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\360\377\377\377\333\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\261\377\377\377\377\377\377\377\377\377\377\377\332\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\356\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\377\377\377\013\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\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377U\377\377\377\373\377\377\377\376\377\377\377s\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\205"
+  "\377\377\377\271\377\377\377\332\377\377\377\377\377\377\377\373\377\377"
+  "\377r\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\033\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\377K\377\377\377\013\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\377\377\377\216\377\377\377]\000\000\000\000\000\000\000\000\377"
+  "\377\377\251\377\377\377\377\377\377\377\333\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\312\377\377\377\377\377\377\377\356\377"
+  "\377\377v\000\000\000\000\377\377\377\220\377\377\377\374\377\377\377\363\377\377"
+  "\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\324\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\065\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\025\377\377\377\337\377\377\377\377"
+  "\377\377\377\361\377\377\377\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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}\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377_\377\377\377\345\377\377\377\377\377\377\377\361\377"
+  "\377\377\070\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377V\377\377\377\376\377\377\377\344\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\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\377l\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\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\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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\013\377\377\377"
+  "\361\377\377\377\367\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377"
+  "\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377"
+  "\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000\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\013\000\000\000\000\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\377\377\377\013\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\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\352\377"
+  "\377\377\013\000\000\000\000\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\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377"
+  "\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377"
+  "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\377\377\377U\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\307\377\377\377\376\377\377\377\177\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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"
+  ")\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377U\377\377\377\374\377"
+  "\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377"
+  "\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\210\377\377\377\335\377\377"
+  "\377\377\377\377\377\377\377\377\377\315\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377"
+  "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377"
+  "\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\215\377\377\377\377\377\377"
+  "\377\254\377\377\377c\377\377\377\377\377\377\377\273\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377\013\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\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\377\377"
+  "\377\377\335\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377\377\377"
+  "\377\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\325\377\377\377\377\377\377\377\264\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\342\377\377\377\375\377\377\377\070\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377I\377\377\377\340\377\377\377\240"
+  "\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\341\377\377\377Z\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\224\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320"
+  "\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\317\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377"
+  "\356\377\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377\377\377"
+  "\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377"
+  "\013\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377"
+  "\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377\377\377\377\377\311"
+  "\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377i\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377_\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366"
+  "\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\333\377\377\377\374\377\377\377\377\377\377\377\311\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361\377"
+  "\377\377\333\000\000\000\000\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"
+  "\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000\377"
+  "\377\377\013\377\377\377\355\377\377\377\366\377\377\377)\377\377\377\377"
+  "\377\377\377\377\377\377\377\013\377\377\377\356\377\377\377\372\377\377\377"
+  ")\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\345\377\377\377\376\377\377\377i\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377b\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\321\377\377\377\376\377\377"
+  "\377l\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\356\377"
+  "\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377"
+  "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\377\377\377\377\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377"
+  "\377\333\377\377\377\377\377\377\377\377\377\377\377\354\377\377\377\300"
+  "\377\377\377\\\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313"
+  "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\013\377\377\377\355\377\377\377\375\377\377\377M\377\377\377\013\377\377"
+  "\377\355\377\377\377\375\377\377\377=\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\253\377\377\377\377\377\377\377\377\377\377\377\315\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377"
+  "\377\335\377\377\377\376\377\377\377i\000\000\000\000\377\377\377\342\377\377\377"
+  "\375\377\377\377Q\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\315\377\377\377\377\377\377\377\342\377\377"
+  "\377\013\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "V\377\377\377\375\377\377\377\377\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377c\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377l\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377"
+  "\377\377\360\377\377\377\033\377\377\377\205\377\377\377\365\377\377\377\377"
+  "\377\377\377\364\377\377\377\\\000\000\000\000\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377|\377\377\377\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\205\377\377\377\376\377\377\377\336\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\302\377\377\377\377\377"
+  "\377\377\242\377\377\377\374\377\377\377\264\377\377\377\033\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\025\377\377\377\362\377\377\377\377\377\377"
+  "\377\304\377\377\377\372\377\377\377\360\377\377\377\033\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\317\377\377\377\376\377\377\377_\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\013\377\377\377\361\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\374"
+  "\377\377\377\343\377\377\377\313\377\377\377\377\377\377\377\215\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\306\377\377\377\371\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377\377\377\377\377\304"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\320\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\377\377\377"
+  "\025\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376"
+  "\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\373\377\377\377\376\377\377"
+  "\377\214\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377"
+  "\377\377\377\333\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\033\377\377\377\366\377\377\377\367\377\377\377)\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\317\377\377\377\376\377\377"
+  "\377e\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\330\377\377\377\371\377\377\377"
+  ")\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033"
+  "\377\377\377\365\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\351\377\377\377\375"
+  "\377\377\377=\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\374\377\377\377\366"
+  "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377U\377\377\377p\377\377\377M\377\377\377!\377\377\377\373\377\377"
+  "\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\234\377\377\377\374\377\377\377\377\377\377\377\320"
+  "\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\271\377\377\377"
+  "\377\377\377\377\377\377\377\377\267\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\251"
+  "\377\377\377V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377\247\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\224\377\377\377\377\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\334\377\377\377\377\377\377\377\205\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377"
+  "\013\377\377\377\355\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377\327\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377\033\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377"
+  "\377\025\377\377\377\362\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377b\000\000\000\000\000\000"
+  "\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377"
+  "\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\224\377\377\377\377\377\377\377\257\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\331\000\000\000\000"
+  "\377\377\377j\377\377\377\376\377\377\377\366\377\377\377)\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377"
+  "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377\033\377"
+  "\377\377\351\377\377\377\371\377\377\377!\377\377\377\360\377\377\377\333"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377"
+  "\377\376\377\377\377i\377\377\377\033\377\377\377\365\377\377\377\365\377"
+  "\377\377\361\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377"
+  "\377\377K\377\377\377\374\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\340\377\377\377\376\377\377\377l\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\257\000\000\000\000"
+  "\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\377\377\377I\377\377\377\373\377\377\377\363\377\377\377%\000\000\000\000\000"
+  "\000\000\000\377\377\377\013\377\377\377\345\377\377\377\376\377\377\377i\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377"
+  "\377\243\000\000\000\000\377\377\377\330\377\377\377\377\377\377\377\257\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\373\377\377\377\375\377\377\377"
+  "M\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013"
+  "\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377"
+  "\377\377b\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\355"
+  "\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "!\377\377\377\372\377\377\377\337\377\377\377\257\377\377\377\376\377\377"
+  "\377l\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377l\377\377\377\376\377\377\377"
+  "\337\377\377\377\326\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\356\377\377\377\372\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377"
+  "\377\377\346\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377"
+  "\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\324\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\314\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377"
+  "\377\377\355\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\377\377\377K\377"
+  "\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\377"
+  "\377\377\013\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "K\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377"
+  "\377\377\377\377\362\377\377\377\366\377\377\377\377\377\377\377\326\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377"
+  "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377"
+  "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377\377%"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013"
+  "\377\377\377\361\377\377\377\333\000\000\000\000\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\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377"
+  "i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377"
+  "\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377"
+  "\377\376\377\377\377l\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\324"
+  "\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\377\377\377"
+  "\013\377\377\377\355\377\377\377\374\377\377\377)\000\000\000\000\000\000\000\000\377\377"
+  "\377K\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377u\377\377\377\302\377\377\377\357\377\377\377"
+  "\377\377\377\377\377\377\377\377\276\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377\377"
+  "i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377"
+  ";\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377\377\377\377\377\266\377\377"
+  "\377s\377\377\377\377\377\377\377\315\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\377\377\377\025\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\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\275\377\377\377\377\377\377\377\377\377\377\377\314\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377v\377\377\377\377\377\377\377\321\377\377\377M\377\377\377\375\377"
+  "\377\377\327\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377\346\377\377\377"
+  "\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\377\377\377b\377\377\377\237\377\377\377\374\377\377\377\336\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\313\377\377\377\376\377\377\377\263\377\377\377f\377\377\377"
+  "\013\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\371\371\377."
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377B\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000"
+  "\377\377\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\304\377\377"
+  "\377\322\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "\214\377\377\377\374\377\377\377\033\377\377\377\222\377\377\377\374\377\377"
+  "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\247\377\377\377\377\377\377\377\302\377\377\377\\\377\377\377\062\377\377"
+  "\377\264\377\377\377\377\377\377\377\326\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\013\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\000\000\000\000\377\377\377\033\377\377\377\356\377\377\377\377\377"
+  "\377\377\377\377\377\377\217\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\247\377\377\377\377\377\377\377\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "V\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\374\377\377"
+  "\377\070\377\377\377\013\377\377\377\351\377\377\377\366\377\377\377\033\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\324\377\377\377\374\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377"
+  "\347\377\377\377\367\377\377\377\232\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\261\377\377"
+  "\377\377\377\377\377\257\000\000\000\000\000\000\000\000\377\377\377\204\377\377\377\377"
+  "\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\213\377\377\377\376\377\377\377U\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "\224\377\377\377\375\377\377\377\373\377\377\377s\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377"
+  "\377}\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\376\377\377\377\333"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\205\377\377\377j\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "}\377\377\377\376\377\377\377\343\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377\255\377\377\377\377\377\377\377\264\000\000\000\000\000\000\000\000"
+  "\377\377\377\025\377\377\377\356\377\377\377\372\377\377\377)\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374"
+  "\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\377\377\377\013\377\377\377\356\377\377\377\375\377\377\377)\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\367\377\377\377)\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\065\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\313\377\377\377\377\377\377\377\257\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\355"
+  "\377\377\377\367\377\377\377}\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\347\377\377"
+  "\377\367\377\377\377\232\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\062\377\377\377\327\377"
+  "\377\377\377\377\377\377\375\377\377\377z\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\065\377"
+  "\377\377\362\377\377\377\377\377\377\377\346\377\377\377V\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377S\377\377\377\320\377\377\377\305\377\377\377%\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\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\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377l\000\000\000\000\000\000\000\000"
+  "\377\377\377;\377\377\377\373\377\377\377\363\377\377\377%\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\243"
+  "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\343\377\377\377\376\377\377\377"
+  "l\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\232\377\377\377\377"
+  "\377\377\377\356\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377"
+  "\260\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313"
+  "\377\377\377\376\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\276\377\377\377"
+  "\377\377\377\377\346\377\377\377\013\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377K\377\377\377\374\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312"
+  "\377\377\377\377\377\377\377\321\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313"
+  "\377\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\313\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013"
+  "\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\355\377\377\377\366\377"
+  "\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377j\377\377\377\330\377\377\377%\000\000\000\000\000\000\000\000\377\377\377"
+  "\312\377\377\377\377\377\377\377\206\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\244\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\377\377\377\377\277\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366"
+  "\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\377\377"
+  "\377]\377\377\377f\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376"
+  "\377\377\377i\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\377\377"
+  "\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\334\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377}\377\377"
+  "\377\376\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\332\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\377\377\377"
+  "\214\377\377\377\377\377\377\377\355\377\377\377\013\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377Q\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\205\377\377\377\304\377\377"
+  "\377\013\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\362\377\377\377\375\377"
+  "\377\377Q\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\312\377\377\377"
+  "\377\377\377\377\264\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377"
+  "\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\330\377\377\377\376\377\377\377\372\377\377\377\360\377\377"
+  "\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\376\377\377\377"
+  "l\377\377\377K\377\377\377\374\377\377\377\372\377\377\377\062\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\355\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\372"
+  "\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377"
+  "\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\372\377\377\377"
+  "\347\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376\377\377"
+  "\377b\000\000\000\000\000\000\000\000\377\377\377b\377\377\377\375\377\377\377\332\000\000\000"
+  "\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377"
+  "\377\377\377~\000\000\000\000\000\000\000\000\377\377\377U\377\377\377\374\377\377\377\366"
+  "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\266\377"
+  "\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377e\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377"
+  "\355\377\377\377\376\377\377\377v\000\000\000\000\000\000\000\000\377\377\377s\377\377\377"
+  "\376\377\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\317\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377K\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377j\377\377\377"
+  "\375\377\377\377\326\377\377\377\302\377\377\377\304\377\377\377\206\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013\377\377"
+  "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366"
+  "\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377"
+  "\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "K\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\355\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013"
+  "\377\377\377\361\377\377\377\333\000\000\000\000\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\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377"
+  "i\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\355\377"
+  "\377\377\376\377\377\377\215\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\374"
+  "\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\224\377\377\377\377\377\377\377~\000\000\000\000\000\000\000\000\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\013\377\377\377\355\377\377\377\376\377\377\377v\000\000\000\000\000\000"
+  "\000\000\377\377\377s\377\377\377\375\377\377\377\332\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\376\377\377"
+  "\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\062\377\377\377n\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317\377\377\377\376\377\377"
+  "\377v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\314\377\377\377\376\377\377\377b\000\000\000\000\000\000\000\000\377\377"
+  "\377\254\377\377\377\377\377\377\377\332\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\366\377\377\377\361\377"
+  "\377\377\331\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\224\377\377\377\377\377\377\377\336\377\377\377\330\377\377\377"
+  "\377\377\377\377\256\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\342\377\377\377\375\377\377\377\326\377"
+  "\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\275\377\377\377\377\377\377\377\345\377\377"
+  "\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\323\377\377\377\360\377\377\377"
+  "\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\313\377\377\377\371\377\377\377\033\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377\377\377\000\377\377\377\000\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\377\377\377\377\377\377\377"
+  "\377\260\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377"
+  "\377\360\377\377\377\013\377\377\377\316\377\377\377\352\377\377\377\013\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\377\070\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\377\377\377\224\377\377\377\377\377\377\377\311\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377`\377\377\377\375\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\266\377\377\377\377\377\377\377\217\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\371\371\377.\377\377\377M\000\000\000"
+  "\000\000\000\000\000\371\371\377.\377\377\377M\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377|\377\377\377s\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377"
+  "\343\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377"
+  "\377\377\377\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377!\377\377\377\371"
+  "\377\377\377\352\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\070\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377r\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\013\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\377\377\377\070\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377"
+  "\374\377\377\377\333\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377"
+  "\377\377\070\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\033\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\326\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\013\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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"
+  "\033\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\232\377\377\377\377\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\232\377\377\377\377\377\377\377\377\377\377\377\343\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\207\377\377\377\374\377\377\377\266\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\377\377\377V\377\377\377\375\377\377\377\247\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\306\377\377\377\377\377\377\377\376\377\377\377"
+  "l\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013"
+  "\377\377\377\355\377\377\377\352\000\000\000\000\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\033"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\376\377\377\377~\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377\013\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\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\013\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377\366"
+  "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\070\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\000\000\000\000\377\377\377\313\377"
+  "\377\377\376\377\377\377l\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355"
+  "\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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=\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\070\377\377\377\372"
+  "\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377\013\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\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377"
+  "%\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\333\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\376"
+  "\377\377\377l\000\000\000\000\377\377\377\013\377\377\377\352\377\377\377\377\377"
+  "\377\377\332\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "j\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377\377\252\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377"
+  "\377\377\252\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377"
+  "\336\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377"
+  "\366\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377"
+  "\377\377\377\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377"
+  "\377\377\375\377\377\377_\377\377\377\033\377\377\377\365\377\377\377\377"
+  "\377\377\377\322\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\253\377\377\377\377\377\377\377\322\000\000\000\000\000\000\000\000\377\377\377\275"
+  "\377\377\377\377\377\377\377\315\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356\377\377\377\366\377"
+  "\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377"
+  "\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\317"
+  "\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377"
+  "\377\254\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000"
+  "\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\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377U\377\377\377\374\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\356"
+  "\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377"
+  "\377\366\377\377\377%\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377K\377\377\377\375\377\377\377\245\000\000\000\000\000\000\000\000\377\377"
+  "\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377"
+  "\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377\033\377"
+  "\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361\377\377\377\333"
+  "\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000\377\377\377\013"
+  "\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377"
+  "\376\377\377\377l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\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\013\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\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\377\062\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\266"
+  "\377\377\377\377\377\377\377\377\377\377\377\336\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377"
+  "\377\377U\377\377\377\374\377\377\377\372\377\377\377\070\377\377\377!\377"
+  "\377\377\366\377\377\377\376\377\377\377\177\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377\377\377"
+  "\377\377\377\377\377\352\377\377\377\013\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377\013\377\377\377\361\377\377\377\327\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\377\377\377\316\377\377\377\333\000\000\000\000\377"
+  "\377\377\316\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377w\377\377\377\343\377\377"
+  "\377\375\377\377\377\201\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\377\377\377\013\377\377\377\244\377\377\377\013\000\000\000\000\000\000\000\000\377"
+  "\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377"
+  "Z\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\335\377\377\377\376\377\377\377~\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377"
+  "\373\377\377\377\363\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377"
+  "\357\377\377\377\377\377\377\377\364\377\377\377)\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377\377\377\377"
+  "\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\377\377\377\232\377\377\377\377\377\377\377\251\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377\376"
+  "\377\377\377\223\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\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\013\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\033\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377"
+  "\377\377\372\377\377\377\316\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\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"
+  "\033\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\214\377\377\377\377\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\377\062\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\376\377\377\377\377"
+  "\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377I\377\377\377\357\377\377\377\377\377"
+  "\377\377\364\377\377\377)\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377"
+  "\377\377M\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\232\377\377\377\377\377\377\377\375\377\377\377\\\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "\255\377\377\377\377\377\377\377\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377"
+  "\377\377\377\377\276\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\240\377"
+  "\377\377\377\377\377\377\266\377\377\377\377\377\377\377\377\000\000\000\000\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%\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\316\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\255\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\366\377"
+  "\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\377\377\377\313\377\377\377\375\377"
+  "\377\377\\\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\355\377\377\377\355"
+  "\377\377\377\033\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\013\377\377\377\316\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\373\377\377\377\213\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\224\377\377\377\377\377\377"
+  "\377\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\247\377\377\377\377\377\377"
+  "\377\326\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\013\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"
+  "\000\000\000\000\377\377\377\313\377\377\377\366\377\377\377%\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\344\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\307\377\377\377\375\377\377\377Q\000\000\000\000\000\000\000\000"
+  "\377\377\377\204\377\377\377\377\377\377\377\327\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\371\377\377"
+  "\377\377\377\377\377\377\377\377\377\376\377\377\377\240\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\215\377\377\377\377"
+  "\377\377\377\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\206\377\377\377\370"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\241\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\214\377\377"
+  "\377\377\377\377\377\252\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\356\377"
+  "\377\377\376\377\377\377v\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377\025\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)\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377"
+  "\364\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\233\377\377\377\375\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\276\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\372\377"
+  "\377\377\376\377\377\377|\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377u\377\377\377\375\377\377\377\355\377\377\377"
+  "\033\000\000\000\000\377\377\377\320\377\377\377\377\377\377\377\244\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\377\377\377\033\377\377\377\366\377\377\377\372\377"
+  "\377\377=\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377\376"
+  "\377\377\377_\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\013\377\377\377\351\377\377\377\364\377\377\377%\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377"
+  "\377i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377}\377\377\377\377\377\377"
+  "\377\277\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\377\377\377\065\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\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\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "l\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\370\377\377\377\231\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\373\377\377\377\322\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377"
+  "I\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\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000"
+  "\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\355\377\377\377\033"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377\351\377\377\377\355\377\377\377\033\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\013\377\377\377\355\377\377\377\366\377\377\377)\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377K\377\377\377\374\377\377\377"
+  "\252\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\377\377\377\377"
+  "\304\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\013\377\377"
+  "\377\361\377\377\377\333\000\000\000\000\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\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\355\377\377\377\033\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\240\377\377\377"
+  "\374\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\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\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\307\377\377\377\375\377"
+  "\377\377_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\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\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\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\000\000\000\000\377\377\377\033"
+  "\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\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377;\377\377\377\372\377\377\377"
+  "\376\377\377\377\206\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377b\377\377\377\374\377\377\377\372\377\377\377I\377"
+  "\377\377\013\377\377\377\355\377\377\377\377\377\377\377\243\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\377\377\377\013\377\377\377\345\377\377\377\376\377"
+  "\377\377\214\000\000\000\000\000\000\000\000\377\377\377j\377\377\377\374\377\377\377\363"
+  "\377\377\377%\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\335\377\377\377\377\377\377\377\236\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\377\377\377\013\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\360\377\377\377\333"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377S\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\313\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377Q\377\377\377n\377\377\377\013\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377e\377\377"
+  "\377\033\000\000\000\000\000\000\000\000\371\371\377.\377\377\377\065\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377V\377\377\377\374\377\377\377\364\377\377\377\062\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377"
+  "\013\377\377\377\343\377\377\377\377\377\377\377\215\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\033\377\377\377\371\377\377\377\334\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377X\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377"
+  "\377\377\341\377\377\377\375\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377e\377\377\377l\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377"
+  "\377\377X\377\377\377S\377\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377@\377\377\377e\377\377\377c\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\377\377\377S\377\377\377K\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377)\377\377\377e\377\377\377n\377\377\377\070\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377_\377\377\377p\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377E\377\377\377X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\033\377\377\377\371"
+  "\377\377\377\334\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377`\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377\033\377\377\377\362\377\377\377"
+  "\376\377\377\377\255\377\377\377\065\377\377\377V\377\377\377\322\377\377"
+  "\377\255\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377)\377\377\377X\377\377\377V\377\377\377\013\000"
+  "\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377"
+  "\377m\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\371\371\377.\377\377\377m\377\377\377c\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377c\377\377\377"
+  "\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\320"
+  "\377\377\377\377\377\377\377\333\377\377\377\033\377\377\377E\377\377\377"
+  "\013\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377e\377\377\377e\377\377"
+  "\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "e\377\377\377n\377\377\377\065\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377U\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\361\377\377\377\366\377"
+  "\377\377%\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\013\377\377\377\364\377\377\377\254\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377U\377\377\377n\377\377\377\065"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377E\377\377\377n\377\377\377\070\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377@\377\377\377m\377\377\377c\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377@\377\377"
+  "\377p\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377Q\377\377\377p\377\377"
+  "\377X\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\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\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\025\377\377\377\362\377\377\377\360\377"
+  "\377\377\033\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377)\377\377\377p\377\377\377c\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377b\377\377\377f\377"
+  "\377\377\013\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\377\377\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377"
+  "e\377\377\377\070\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377@\377\377\377p\377\377\377I\377\377\377"
+  ";\377\377\377\374\377\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\013\377\377\377e\377\377\377e\377\377\377I\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377O\377\377\377X\377\377\377U\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377j\377\377\377n\377\377\377\033"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\033\377\377\377\362\377\377\377\367\377\377\377)\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\361\377\377\377\356"
+  "\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\371\377\377\377"
+  "%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\335\377\377\377\372\377\377\377)\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\267\377\377\377\345\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\237\377\377\377\377\377\377"
+  "\377\361\377\377\377\062\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\377\377\377\331\377\377\377\377\377\377\377\304\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\062\377\377\377\337\377\377\377\377\377\377\377\236"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\377\377\377b\377\377\377\376\377\377\377\330\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\062\377\377\377\337\377\377\377\377\377\377\377\236"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\065\377\377\377\344\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\270\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\065\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\232\377\377"
+  "\377\377\377\377\377\370\377\377\377\364\377\377\377\372\377\377\377\243"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\266\377\377\377\377\377\377\377\225\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\205\377\377\377\371"
+  "\377\377\377\364\377\377\377\364\377\377\377\377\377\377\377\260\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\377\377\377\013\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\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377"
+  "\345\377\377\377\375\377\377\377f\000\000\000\000\000\000\000\000\377\377\377\062\377\377"
+  "\377\326\377\377\377\377\377\377\377\245\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377\234\377\377\377\205\377\377\377I\377\377\377"
+  "\272\377\377\377\377\377\377\377\326\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\224\377\377\377\376\377\377\377i\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377K\377\377\377\374\377"
+  "\377\377\333\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377i\377\377"
+  "\377\203\377\377\377\337\377\377\377\377\377\377\377\260\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\275\377\377"
+  "\377\377\377\377\377\377\377\377\377\373\377\377\377\243\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313"
+  "\377\377\377\371\377\377\377%\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\377\377\377\177\377\377\377\372\377\377\377\376\377"
+  "\377\377\377\377\377\377\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\253\377\377\377\340\377\377\377%\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\377\377\377\310\377\377\377\307\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\377\377\377\377"
+  "\276\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377u\377\377\377\325\377\377\377w\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377"
+  "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\377\377\377\013\377\377\377\351\377\377\377\377\377\377\377\276"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\213\377"
+  "\377\377\203\377\377\377\070\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\251\377\377\377"
+  "\322\377\377\377\316\377\377\377m\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377`\377\377\377\263\377\377\377\263\377\377\377"
+  "\263\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377G\377\377\377"
+  "\317\377\377\377w\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377"
+  "\377i\377\377\377\266\377\377\377\263\377\377\377\263\377\377\377\262\377"
+  "\377\377_\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\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\033\377\377\377\377\377\377\377\377\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\377\377\377\233\377\377\377\377\377\377\377l\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377V\377\377\377\376\377"
+  "\377\377\327\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\013\377\377\377\361"
+  "\377\377\377\377\377\377\377\377\377\377\377\325\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377v\377"
+  "\377\377\246\377\377\377\266\377\377\377u\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\313\377\377\377\372"
+  "\377\377\377)\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\377\377\377i\377\377\377\266\377\377\377\255\377\377\377\214\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377s\377\377\377|\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377s\377\377\377|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\000\000\000\000\377\377\377_\377\377\377\266\377\377\377\321\377"
+  "\377\377\316\377\377\377\271\377\377\377q\000\000\000\000\000\000\000\000\377\377\377\377"
+  "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\377\377\377`\377\377\377\245\377\377\377"
+  "\267\377\377\377\247\377\377\377=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377"
+  "\377\377\000\000\000\000\377\377\377E\377\377\377\212\377\377\377%\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\013\377\377\377\211"
+  "\377\377\377=\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377"
+  "\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377"
+  "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377v\377\377"
+  "\377\232\377\377\377q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
+  "\377\377\313\377\377\377\363\377\377\377\033\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
+  "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000"
+  "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+  "\377\377\377\377\377\377\377\377",
+};
+
diff --git a/minilibx_beta/interface.swift b/minilibx_beta/interface.swift
new file mode 100644
index 0000000..97d6b81
--- /dev/null
+++ b/minilibx_beta/interface.swift
@@ -0,0 +1,292 @@
+
+import Cocoa
+
+import mlx_window
+import mlx_image
+import mlx_init
+
+
+
+func _mlx_bridge<T : AnyObject>(obj : T) -> UnsafeRawPointer {
+    return UnsafeRawPointer(Unmanaged.passUnretained(obj).toOpaque())
+}
+
+func _mlx_bridge_retained<T : AnyObject>(obj : T) -> UnsafeRawPointer {
+    return UnsafeRawPointer(Unmanaged.passRetained(obj).toOpaque())
+}
+
+func _mlx_bridge<T : AnyObject>(ptr : UnsafeRawPointer) -> T {
+    return Unmanaged<T>.fromOpaque(ptr).takeUnretainedValue()
+}
+
+func _mlx_bridge_transfer<T : AnyObject>(ptr : UnsafeRawPointer) -> T {
+    return Unmanaged<T>.fromOpaque(ptr).takeRetainedValue()
+}
+
+
+let MLX_SYNC_IMAGE_WRITABLE = Int32(1)
+let MLX_SYNC_WIN_FLUSH_CMD = Int32(2)
+let MLX_SYNC_WIN_CMD_COMPLETED = Int32(3)
+
+
+
+/// C decl
+
+
+@_cdecl("mlx_init")
+public func mlx_init_swift() -> UnsafeRawPointer
+{
+	let mm = MlxMain()	
+	return (_mlx_bridge_retained(obj:mm))
+}
+
+
+@_cdecl("mlx_loop")
+public func mlx_loop_swift(_ mlxptr:UnsafeRawPointer)
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	mlx.inLoop = true
+        NSApp.run()
+}
+
+
+@_cdecl("mlx_new_window")
+public func mlx_new_window_swift(_ mlxptr:UnsafeRawPointer, Width w:UInt32, Height h:UInt32, Title t:UnsafePointer<CChar>) -> UnsafeRawPointer
+{
+		let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+		let mw = MlxWin(device: mlx.device, width: Int(w), height: Int(h), title: String(cString: t))
+		mw.setNotifs()
+		mw.initMetal()
+		mlx.addWinToList(mw)
+		return (_mlx_bridge_retained(obj:mw))
+}
+
+
+
+@_cdecl("mlx_key_hook")
+public func mlx_key_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	win.addHook(index: 3, fct: fctptr, param: paramptr)
+	return (Int32(0));
+}
+
+
+@_cdecl("mlx_mouse_hook")
+public func mlx_mouse_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32
+{
+        let win:MlxWin = _mlx_bridge(ptr:winptr)
+        win.addHook(index: 4, fct: fctptr, param: paramptr)
+        return (Int32(0));
+}
+
+
+@_cdecl("mlx_hook")
+public func mlx_hook_swift(_ winptr:UnsafeRawPointer, _ xevent:Int32, _ xmask:Int32, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32
+{
+        let win:MlxWin = _mlx_bridge(ptr:winptr)
+        win.addHook(index: Int(xevent), fct: fctptr, param: paramptr)
+        return (Int32(0));
+}
+
+
+@_cdecl("mlx_expose_hook")
+public func mlx_expose_hook_swift(_ winptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32
+{
+        let win:MlxWin = _mlx_bridge(ptr:winptr)
+        win.addHook(index: 12, fct: fctptr, param: paramptr)
+        return (Int32(0));
+}
+
+@_cdecl("mlx_loop_hook")
+public func mlx_loop_hook_swift(_ mlxptr:UnsafeRawPointer, _ fctptr:UnsafeMutableRawPointer, _ paramptr:UnsafeMutableRawPointer) -> Int32
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	mlx.addLoopHook(fctptr, paramptr)
+        return (Int32(0));
+}
+
+
+@_cdecl("mlx_do_key_autorepeatoff")
+public func mlx_do_key_autorepeatoff_swift(_ mlxptr:UnsafeRawPointer)
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	mlx.winList.forEach{ $0.setKeyRepeat(0) }
+}
+
+
+@_cdecl("mlx_do_key_autorepeaton")
+public func mlx_do_key_autorepeatoon_swift(_ mlxptr:UnsafeRawPointer)
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	mlx.winList.forEach{ $0.setKeyRepeat(1) }
+}
+
+
+@_cdecl("mlx_clear_window")
+public func mlx_clear_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer)
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	win.clearWin()
+}
+
+
+@_cdecl("mlx_pixel_put")
+public func mlx_pixel_put_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ x:Int32, _ y:Int32, _ color:UInt32)
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	win.pixelPut(x, y, color)
+}
+
+
+@_cdecl("mlx_get_color_value")
+public func mlx_get_color_value(_ mlxptr:UnsafeRawPointer, _ color:UInt32) -> UInt32
+{
+    return color
+}
+
+
+@_cdecl("mlx_new_image")
+public func mlx_new_image(_ mlxptr:UnsafeRawPointer, _ width:Int32, _ height:Int32) -> UnsafeRawPointer
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	let img = MlxImg(d:mlx.device, w:Int(width), h:Int(height))
+	mlx.addImgToList(img)
+///	print(CFGetRetainCount(img))
+	return (_mlx_bridge_retained(obj:img))
+
+}
+
+@_cdecl("mlx_get_data_addr")
+public func mlx_get_data_addr_swift(_ imgptr:UnsafeRawPointer, _ bpp:UnsafeMutablePointer<Int32>, _ sizeline:UnsafeMutablePointer<Int32>, _ endian:UnsafeMutablePointer<Int32>) -> UnsafeMutablePointer<UInt32>
+{
+	let img:MlxImg = _mlx_bridge(ptr:imgptr)
+	bpp.pointee = 32
+	sizeline.pointee = Int32(img.texture_sizeline)
+	endian.pointee = Int32(0)
+	return img.texture_data
+}
+
+@_cdecl("mlx_put_image_to_window")
+public func mlx_put_image_to_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer, _ x:Int32, _ y:Int32) -> Int32
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	let img:MlxImg = _mlx_bridge(ptr:imgptr)
+	win.putImage(image:img, x:x, y:y)
+	return Int32(0)
+}
+
+@_cdecl("mlx_put_image_to_window_scale")
+public func mlx_put_image_to_window_scale_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer, _ sx:Int32, _ sy:Int32, _ sw:Int32, _ sh:Int32, _ dx:Int32, _ dy:Int32, _ dw:Int32, _ dh:Int32, _ color:UInt32) -> Int32
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	let img:MlxImg = _mlx_bridge(ptr:imgptr)
+	win.putImageScale(image:img, sx:sx, sy:sy, sw:sw, sh:sh, dx:dx, dy:dy, dw:dw, dh:dh, c:color)
+	return Int32(0)
+}
+
+@_cdecl("mlx_do_sync")
+public func mlx_do_sync_swift(_ mlxptr:UnsafeRawPointer) -> Int32
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	mlx.winList.forEach { $0.flushImages() }
+	mlx.winList.forEach { $0.waitForGPU() }
+	return Int32(0)
+}
+
+@_cdecl("mlx_sync")
+public func mlx_sync_swift(_ what:Int32, _ param:UnsafeRawPointer) -> Int32
+{
+    switch what
+    {
+	case MLX_SYNC_IMAGE_WRITABLE:
+		let img:MlxImg = _mlx_bridge(ptr:param); while img.onGPU > 0 {} 
+	case MLX_SYNC_WIN_FLUSH_CMD:
+		let win:MlxWin = _mlx_bridge(ptr:param); win.flushImages()
+	case MLX_SYNC_WIN_CMD_COMPLETED:
+	        let win:MlxWin = _mlx_bridge(ptr:param); win.flushImages(); win.waitForGPU()
+	default:
+		break
+    }
+    return Int32(0)
+}
+
+@_cdecl("mlx_destroy_window")
+public func mlx_destroy_window_swift(_ mlxptr:UnsafeRawPointer, _ winptr:UnsafeRawPointer) -> Int32
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	/// bridge_transfer to get the retain, at end of this func should release the MlxWin object, because no ref anymore.
+	let win:MlxWin = _mlx_bridge_transfer(ptr:winptr)
+	win.delNotifs()
+	win.flushImages()
+	win.waitForGPU()
+	win.destroyWinE()
+	mlx.winList.removeAll(where: { $0 === win} )
+	return Int32(0)
+}
+
+@_cdecl("mlx_destroy_image")
+public func mlx_destroy_image_swift(_ mlxptr:UnsafeRawPointer, _ imgptr:UnsafeRawPointer) -> Int32
+{
+	let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	/// bridge_transfer to get the retain, at end of this func should release the MlxImg object, because no ref anymore.
+	let img:MlxImg = _mlx_bridge_transfer(ptr:imgptr)
+	mlx.winList.forEach { $0.flushImages() }
+	while img.onGPU > 0 {}
+	mlx.imgList.removeAll(where: { $0 === img} )
+	return Int32(0)
+}
+
+
+@_cdecl("mlx_get_screen_size")
+public func mlx_get_screen_size_swift(_ mlxptr:UnsafeRawPointer, _ sizex:UnsafeMutablePointer<Int32>, _ sizey:UnsafeMutablePointer<Int32>) -> Int32
+{
+	/// let mlx:MlxMain = _mlx_bridge(ptr:mlxptr)
+	sizex.pointee = Int32(NSScreen.main!.frame.size.width)
+	sizey.pointee = Int32(NSScreen.main!.frame.size.height)
+	return Int32(0)
+}
+
+
+@_cdecl("mlx_mouse_hide")
+public func mlx_mouse_hide_swift() -> Int32
+{
+  NSCursor.hide()
+  return Int32(0)
+}
+
+@_cdecl("mlx_mouse_show")
+public func mlx_mouse_show_swift() -> Int32
+{
+  NSCursor.unhide()
+  return Int32(0)
+}
+
+
+@_cdecl("mlx_mouse_move")
+public func mlx_mouse_move_swift(_ winptr:UnsafeRawPointer, _ x:Int32, _ y:Int32) -> Int32
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	let frame = win.getWinEFrame()
+///	let sframe = win.getScreenFrame()
+	var pt = CGPoint()
+	pt.x = frame.origin.x + CGFloat(x)
+///	pt.y = sframe.size.y - frame.size.y - frame.origin.y + 1 + y
+	pt.y = frame.origin.y + frame.size.height - 1.0 - CGFloat(y)
+	CGWarpMouseCursorPosition(pt)
+	CGAssociateMouseAndMouseCursorPosition(UInt32(1))
+	return Int32(0);
+}
+
+
+
+@_cdecl("mlx_mouse_get_pos")
+public func mlx_mouse_get_pos_swift(_ winptr:UnsafeRawPointer, _ x:UnsafeMutablePointer<Int32>, _ y:UnsafeMutablePointer<Int32>) -> Int32
+{
+	let win:MlxWin = _mlx_bridge(ptr:winptr)
+	let frame = win.getWinEFrame()
+	let point = win.getMouseLoc()
+	x.pointee = Int32(point.x)
+	y.pointee = Int32(frame.size.height - 1.0 - point.y)
+	return Int32(0)
+}
diff --git a/minilibx_beta/man/man3/mlx.3 b/minilibx_beta/man/man3/mlx.3
new file mode 100644
index 0000000..4c7e29b
--- /dev/null
+++ b/minilibx_beta/man/man3/mlx.3
@@ -0,0 +1,110 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Simple Window Interface Library for students
+.SH SYNOPSYS
+#include <mlx.h>
+
+.nf
+.I void *
+.fi
+.B mlx_init
+();
+
+.SH DESCRIPTION
+MiniLibX is an easy way to create graphical software,
+without any X-Window/X11 programming knowledge under Unix/Linux, nor
+any AppKit programming knowledge under MacOS. It provides
+simple window creation, a drawing tool, image and basic events
+management.
+
+.SH Unix/Linux: X-WINDOW CONCEPT
+
+X-Window is a network-oriented graphical system for Unix.
+It is based on two main parts:
+.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 X-Server manages the screen, keyboard and mouse
+(It is often refered to as a "display").
+.br
+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).
+.br
+Nowadays, most of the time, both run on the same computer.
+
+.SH MacOS: WINDOW SERVER AND GPU
+
+Your software interacts directly with the Window server who handles the
+cohabitation on the screen with other software and the event system,
+and interacts with the GPU to handle all drawing stuff.
+
+.SH INCLUDE FILE
+.B mlx.h
+should be included for a correct use of the MiniLibX API.
+It only contains function prototypes, no structure is needed.
+
+.SH LIBRARY FUNCTIONS
+.P
+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 and receive the messages from
+the display, like "I want to draw a yellow pixel in this window" or
+"did the user hit a key?".
+.P
+The
+.B mlx_init
+function will create this connection. No parameters are needed, ant it will
+return a
+.I "void *"
+identifier, used for further calls to the library routines.
+.P
+All other MiniLibX functions are described in the following man pages:
+
+.TP 20
+.B mlx_new_window
+: manage windows
+.TP 20
+.B mlx_pixel_put
+: draw inside window
+.TP 20
+.B mlx_new_image
+: manipulate images
+.TP 20
+.B mlx_loop
+: handle keyboard or mouse events
+
+.SH LINKING MiniLibX
+To use MiniLibX functions, you may need to link
+your software with several libraries, including the MiniLibX library itself.
+On Unix/Linux, simply add the following arguments at linking time:
+
+.B -lmlx -lXext -lX11
+
+On MacOS, the dynamic Metal library will find on its own the missing components:
+
+.B -lmlx
+
+and still on MacOS, the static OpenGL version will need:
+
+.B -lmlx -framework OpenGL -framework AppKit -lz
+
+You may also need to specify the path to these libraries, using
+the
+.B -L
+flag.
+
+
+.SH RETURN VALUES
+If
+.B mlx_init()
+fails to set up the connection to the display, 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-2019 - Olivier Crouzet
diff --git a/minilibx_beta/man/man3/mlx_loop.3 b/minilibx_beta/man/man3/mlx_loop.3
new file mode 100644
index 0000000..ab3798c
--- /dev/null
+++ b/minilibx_beta/man/man3/mlx_loop.3
@@ -0,0 +1,144 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Handle events
+.SH SYNOPSYS
+
+.nf
+.I int
+.fi
+.B mlx_loop
+(
+.I void *mlx_ptr
+);
+
+.nf
+.I int
+.fi
+.B mlx_key_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_mouse_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_expose_hook
+(
+.I void *win_ptr, int (*funct_ptr)(), void *param
+);
+
+.nf
+.I int
+.fi
+.B mlx_loop_hook
+(
+.I void *mlx_ptr, int (*funct_ptr)(), void *param
+);
+
+.SH EVENTS
+
+The graphical system is 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
+mouse.
+
+.SH DESCRIPTION
+
+To receive events, you must use
+.B mlx_loop
+(). This function never returns. It is an infinite loop that waits for
+an event, and then calls a user-defined function associated with this event.
+A single parameter is needed, the connection identifier
+.I mlx_ptr
+(see the
+.B mlx manual).
+
+You can assign different functions to the three following events:
+.br
+- A key is pressed
+.br
+- The mouse button is pressed
+.br
+- A part of the window should be re-drawn
+(this is called an "expose" event, and it is your program's job to handle it in the
+Unix/Linux X11 environment, but at the opposite it never happens on MacOS).
+.br
+
+Each window can define a different function for the same event.
+
+The three functions
+.B mlx_key_hook
+(),
+.B mlx_mouse_hook
+() and
+.B mlx_expose_hook
+() work exactly the same way.
+.I funct_ptr
+is a pointer to the function you want to be called
+when an event occurs. This assignment is specific to the window defined by the
+.I win_ptr
+identifier. The
+.I param
+adress will be passed to the function everytime it is called, and should be
+used to store the parameters it might need.
+
+The syntax for the
+.B mlx_loop_hook
+() function is identical to the previous ones, but the given function will be
+called when no event occurs.
+
+When it catches an event, the MiniLibX calls the corresponding function
+with fixed parameters:
+.nf
+
+  expose_hook(void *param);
+  key_hook(int keycode, void *param);
+  mouse_hook(int button, int x, int y, void *param);
+  loop_hook(void *param);
+
+.fi
+These function names are arbitrary. They here are used to distinguish
+parameters according to the event. These functions are NOT part of the
+MiniLibX.
+
+.I param
+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 (with X11, look for the include file "keysymdef.h",
+with MacOS, just try :) ),
+(
+.I x
+,
+.I y
+) are the coordinates of the mouse click in the window, and
+.I button
+tells you which mouse button was pressed.
+
+.SH GOING FURTHER WITH EVENTS
+The MiniLibX provides a much generic access to other available 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". Some MacOS events are mapped
+to these values, when it makes sense, and the mask is not used in MacOS.
+
+See source code of the MiniLibX to find out how it will
+call your own function for a specific event.
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2019 - Olivier Crouzet
diff --git a/minilibx_beta/man/man3/mlx_new_image.3 b/minilibx_beta/man/man3/mlx_new_image.3
new file mode 100644
index 0000000..ecea0ee
--- /dev/null
+++ b/minilibx_beta/man/man3/mlx_new_image.3
@@ -0,0 +1,206 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Manipulating images
+.SH SYNOPSYS
+
+.nf
+.I void *
+.fi
+.B mlx_new_image
+(
+.I void *mlx_ptr, int width, int height
+);
+
+.nf
+.I char *
+.fi
+.B mlx_get_data_addr
+(
+.I void *img_ptr, int *bits_per_pixel, int *size_line, int *endian
+);
+
+.nf
+.I int
+.fi
+.B mlx_put_image_to_window
+(
+.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y
+);
+
+.nf
+.I unsigned int
+.fi
+.B mlx_get_color_value
+(
+.I void *mlx_ptr, int color
+);
+
+.nf
+.I void *
+.fi
+.B mlx_xpm_to_image
+(
+.I void *mlx_ptr, char **xpm_data, int *width, int *height
+);
+
+.nf
+.I void *
+.fi
+.B mlx_xpm_file_to_image
+(
+.I void *mlx_ptr, char *filename, int *width, int *height
+);
+
+.nf
+.I void *
+.fi
+.B mlx_png_file_to_image
+(
+.I void *mlx_ptr, char *filename, int *width, int *height
+);
+
+.nf
+.I int
+.fi
+.B mlx_destroy_image
+(
+.I void *mlx_ptr, void *img_ptr
+);
+
+
+.SH DESCRIPTION
+
+.B mlx_new_image
+() creates a new image in memory. It returns a
+.I void *
+identifier needed to manipulate this image later. It only needs
+the size of the image to be created, using the
+.I width
+and
+.I height
+parameters, and the
+.I mlx_ptr
+connection identifier (see the
+.B mlx
+manual).
+
+The user can draw inside the image (see below), and
+can dump the image inside a specified window at any time to
+display it on the screen. This is done using
+.B mlx_put_image_to_window
+(). Three identifiers are needed here, for the connection to the
+display, the window to use, and the image (respectively
+.I mlx_ptr
+,
+.I win_ptr
+and
+.I img_ptr
+). The (
+.I x
+,
+.I y
+) coordinates define where the image should be placed in the window.
+
+.B mlx_get_data_addr
+() returns information about the created image, allowing a user
+to modify it later. The
+.I img_ptr
+parameter specifies the image to use. The three next parameters should
+be the addresses of three different valid integers.
+.I bits_per_pixel
+will be filled with the number of bits needed to represent a pixel color
+(also called the depth of the image).
+.I size_line
+is the number of bytes used to store one line of the image in memory.
+This information is needed to move from one line to another in the image.
+.I endian
+tells you wether the pixel color in the image needs to be stored in
+little endian (
+.I endian
+== 0), or big endian (
+.I endian
+== 1).
+
+.B mlx_get_data_addr
+returns a
+.I char *
+address that represents the begining of the memory area where the image
+is stored. From this adress, the first
+.I bits_per_pixel
+bits represent the color of the first pixel in the first line of
+the image. The second group of
+.I bits_per_pixel
+bits represent the second pixel of the first line, and so on.
+Add
+.I size_line
+to the adress to get the begining of the second line. You can reach any
+pixels of the image that way.
+
+.B mlx_destroy_image
+destroys the given image (
+.I img_ptr
+).
+
+.SH STORING COLOR INSIDE IMAGES
+
+Depending on the display, the number of bits used to store a pixel color
+can change. The user usually represents a color in RGB mode, using
+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 display.
+That is the purpose of the
+.B mlx_get_color_value
+() function. It takes a standard RGB
+.I color
+parameter, and returns an
+.I unsigned int
+value.
+The
+.I bits_per_pixel
+least significant bits of this value can be stored in the image. You can
+avoid using this function if there is no conversion needed (eg. in case of
+24 bits depth, or 32 bits depth).
+
+Keep in mind that the least significant bits position depends on the local
+computer's endian. If the endian of the image differs from the local endian
+(which shoud only occurs in a X11 network environment), then the value should
+be transformed before being used.
+
+.SH XPM AND PNG IMAGES
+
+The
+.B mlx_xpm_to_image
+() ,
+.B mlx_xpm_file_to_image
+() and
+.B mlx_png_file_to_image
+() functions will create a new image the same way.
+They will fill it using the specified
+.I xpm_data
+or
+.I filename
+, depending on which function is used.
+Note that MiniLibX does not use the standard
+Xpm and png libraries to deal with xpm and png images. You may not be able to
+read all types of xpm and png images. It however handles transparency.
+
+.SH RETURN VALUES
+The four functions that create images,
+.B mlx_new_image()
+,
+.B mlx_xpm_to_image()
+,
+.B mlx_xpm_file_to_image()
+and
+.B mlx_png_file_to_image()
+, will return NULL if an error occurs. Otherwise they return a non-null pointer
+as an image identifier.
+
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2019 - Olivier Crouzet
diff --git a/minilibx_beta/man/man3/mlx_new_window.3 b/minilibx_beta/man/man3/mlx_new_window.3
new file mode 100644
index 0000000..cdfc098
--- /dev/null
+++ b/minilibx_beta/man/man3/mlx_new_window.3
@@ -0,0 +1,79 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Managing windows
+.SH SYNOPSYS
+
+.nf
+.I void *
+.fi
+.B mlx_new_window
+(
+.I void *mlx_ptr, int size_x, int size_y, char *title
+);
+
+.nf
+.I int
+.fi
+.B mlx_clear_window
+(
+.I void *mlx_ptr, void *win_ptr
+);
+
+.nf
+.I int
+.fi
+.B mlx_destroy_window
+(
+.I void *mlx_ptr, void *win_ptr
+);
+
+
+.SH DESCRIPTION
+The
+.B mlx_new_window
+() function creates a new window on the screen, using the
+.I size_x
+and
+.I size_y
+parameters to determine its size, and
+.I title
+as the text that should be displayed in the window's title bar.
+The
+.I mlx_ptr
+parameter is the connection identifier returned by
+.B mlx_init
+() (see the
+.B mlx
+man page).
+.B mlx_new_window
+() returns a
+.I void *
+window identifier that can be used by other MiniLibX calls.
+Note that the MiniLibX
+can handle an arbitrary number of separate windows.
+
+.B mlx_clear_window
+() and
+.B mlx_destroy_window
+() respectively clear (in black) and destroy the given window. They both have
+the same parameters:
+.I mlx_ptr
+is the screen connection identifier, and
+.I win_ptr
+is a window identifier.
+
+.SH RETURN VALUES
+If
+.B mlx_new_window()
+fails to create a new window (for wathever reason), it will return NULL,
+otherwise a non-null pointer is returned as a window identifier.
+.B mlx_clear_window
+and
+.B mlx_destroy_window
+right now return nothing.
+
+.SH SEE ALSO
+mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3)
+
+.SH AUTHOR
+Copyright ol@ - 2002-2019 - Olivier Crouzet
diff --git a/minilibx_beta/man/man3/mlx_pixel_put.3 b/minilibx_beta/man/man3/mlx_pixel_put.3
new file mode 100644
index 0000000..52670a6
--- /dev/null
+++ b/minilibx_beta/man/man3/mlx_pixel_put.3
@@ -0,0 +1,85 @@
+.TH MiniLibX 3 "September 19, 2002"
+.SH NAME
+MiniLibX - Drawing inside windows
+.SH SYNOPSYS
+
+.nf
+.I int
+.fi
+.B mlx_pixel_put
+(
+.I void *mlx_ptr, void *win_ptr, int x, int y, int color
+);
+
+.nf
+.I int
+.fi
+.B mlx_string_put
+(
+.I void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string
+);
+
+
+.SH DESCRIPTION
+The
+.B mlx_pixel_put
+() function draws a defined pixel in the window
+.I win_ptr
+using the (
+.I x
+,
+.I y
+) coordinates, and the specified
+.I color
+\&. The origin (0,0) is the upper left corner of the window, the x and y axis
+respectively pointing right and down. The connection
+identifier,
+.I mlx_ptr
+, is needed (see the
+.B mlx
+man page).
+
+Parameters for
+.B mlx_string_put
+() have the same meaning. Instead of a simple pixel, the specified
+.I string
+will be displayed at (
+.I x
+,
+.I y
+).
+
+Both functions will discard any display outside the window. This makes
+.B mlx_pixel_put
+slow. Consider using images instead.
+
+.SH COLOR MANAGEMENT
+The
+.I color
+parameter has an integer type. The displayed color needs to be encoded
+in this integer, following a defined scheme. All displayable colors
+can be split in 3 basic colors: red, green and blue. Three associated
+values, in the 0-255 range, represent how much of each color is mixed up
+to create the original color. Theses three values must be set inside the
+integer to display the right color. The three least significant bytes of
+this integer are filled as shown in the picture below:
+
+.nf
+        | 0 | R | G | B |   color integer
+        +---+---+---+---+
+.fi
+
+
+While filling the integer, make sure you avoid endian problems. Remember
+that the "blue" byte should always be the least significant one.
+
+Depending on hardware capabilities, the most significant bit can handle
+transparency. Beware, at the opposite of the OpenGL classics, it does
+not represent opacity.
+
+.SH SEE ALSO
+mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3)
+
+
+.SH AUTHOR
+Copyright ol@ - 2002-2019 - Olivier Crouzet
diff --git a/minilibx_beta/mlx.h b/minilibx_beta/mlx.h
new file mode 100644
index 0000000..f24a7f7
--- /dev/null
+++ b/minilibx_beta/mlx.h
@@ -0,0 +1,157 @@
+/*
+** mlx.h for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@42.fr>
+** 
+** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
+** Last update Tue Oct 14 16:23:28 2019 Olivier Crouzet
+*/
+
+/*
+**   MinilibX -  Please report bugs
+*/
+
+
+/*
+**
+** This library is a simple framework to help 42 students
+** create simple graphical apps.
+** It only provides the minimum functions, it's students' job
+** to create the missing pieces for their own project :)
+**
+** The MinilibX can load XPM and PNG images.
+** Please note that both image loaders are incomplete, some
+** image may not load.
+**
+** For historical reasons, the alpha byte represent transparency
+** instead of opacity.
+** Also, for compatibility reasons, prototypes may show inconsistant
+** types.
+**
+** Only the dynamic library is available. It must be placed in an appropriate path.
+** ./ is one of them. You can also use DYLD_LIBRARY_PATH
+**
+*/
+
+
+#ifndef MLX_H
+
+#define	MLX_H
+
+
+void	*mlx_init();
+/*
+**  needed before everything else.
+**  return (void *)0 if failed
+*/
+
+
+/*
+** Basic actions
+*/
+
+void	*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);
+/*
+**  return void *0 if failed
+*/
+int	mlx_clear_window(void *mlx_ptr, void *win_ptr);
+int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
+/*
+**  origin for x & y is top left corner of the window
+**  y down is positive
+**  color is 0xAARRGGBB format
+**  x and y must fit into the size of the window, no control is done on the values
+*/
+
+
+/*
+** Image stuff
+*/
+
+void	*mlx_new_image(void *mlx_ptr,int width,int height);
+/*
+**  return void *0 if failed
+*/
+char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
+			   int *size_line, int *endian);
+/*
+**  endian : 0 = graphical sever is little endian, 1 = big endian
+**  usefull in a network environment where graphical app show on a remote monitor that can have a different endian
+*/
+int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
+				int x, int y);
+unsigned int	mlx_get_color_value(void *mlx_ptr, int color);
+
+
+/*
+** dealing with Events
+*/
+
+int	mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+
+int	mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
+int	mlx_loop (void *mlx_ptr);
+
+
+/*
+**  hook funct are called as follow :
+**
+**   expose_hook(void *param);
+**   key_hook(int keycode, void *param);
+**   mouse_hook(int button, int x,int y, void *param);
+**   loop_hook(void *param);
+**
+*/
+
+
+/*
+**  Usually asked...
+**   mlx_string_put display may vary in size between OS and between mlx implementations
+*/
+
+int	mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color,
+		       char *string);
+void	*mlx_xpm_to_image(void *mlx_ptr, char **xpm_data,
+			  int *width, int *height);
+void	*mlx_xpm_file_to_image(void *mlx_ptr, char *filename,
+			       int *width, int *height);
+void    *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height);
+
+int	mlx_destroy_window(void *mlx_ptr, void *win_ptr);
+
+int	mlx_destroy_image(void *mlx_ptr, void *img_ptr);
+
+/*
+**  generic hook system for all events, and minilibX functions that
+**    can be hooked. Some macro and defines from X11/X.h are needed here.
+*/
+
+int	mlx_hook(void *win_ptr, int x_event, int x_mask,
+                 int (*funct)(), void *param);
+
+int     mlx_mouse_hide();
+int     mlx_mouse_show();
+int     mlx_mouse_move(void *win_ptr, int x, int y);
+int     mlx_mouse_get_pos(void *win_ptr, int *x, int *y);
+
+int	mlx_do_key_autorepeatoff(void *mlx_ptr);
+int	mlx_do_key_autorepeaton(void *mlx_ptr);
+int	mlx_do_sync(void *mlx_ptr);
+
+#define MLX_SYNC_IMAGE_WRITABLE		1
+#define MLX_SYNC_WIN_FLUSH_CMD		2
+#define MLX_SYNC_WIN_CMD_COMPLETED	3
+int	mlx_sync(int cmd, void *param);
+/*
+** image_writable can loop forever if no flush occurred. Flush is always done by mlx_loop.
+** cmd_completed first flush then wait for completion.
+** mlx_do_sync equals cmd_completed for all windows.
+** cmd is one of the define, param will be img_ptr or win_ptr accordingly
+*/
+
+int	mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey);
+
+#endif /* MLX_H */
diff --git a/minilibx_beta/mlx_image.swift b/minilibx_beta/mlx_image.swift
new file mode 100644
index 0000000..7c1fa9b
--- /dev/null
+++ b/minilibx_beta/mlx_image.swift
@@ -0,0 +1,48 @@
+
+
+import Metal
+
+
+public class MlxImg
+{
+    public var texture: MTLTexture
+///    var texture_buff: MTLBuffer
+
+    public var texture_sizeline: Int
+    public var texture_data: UnsafeMutablePointer<UInt32>
+    public var texture_width: Int
+    public var texture_height: Int
+
+    public var onGPU = 0
+
+     convenience public init(d device:MTLDevice, w width:Int, h height:Int)
+     {
+	self.init(d:device, w:width, h:height, t:0)
+     }
+
+     public init(d device:MTLDevice, w width:Int, h height:Int, t target:Int)
+     {
+	 texture_width = width
+    	 texture_height = height
+    	 texture_sizeline = width * 4
+    	 texture_sizeline = 256 * (texture_sizeline / 256 + (texture_sizeline%256 >= 1 ? 1 : 0) )
+
+         let textureDesc = MTLTextureDescriptor()
+    	 textureDesc.width = texture_width
+    	 textureDesc.height = texture_height
+	 textureDesc.usage = .shaderRead
+	 if (target == 1)
+	  {
+		textureDesc.usage = .renderTarget
+		textureDesc.storageMode = .private
+	  }
+    	 textureDesc.pixelFormat = MTLPixelFormat.bgra8Unorm
+    	 let texture_buff = device.makeBuffer(length: texture_sizeline * height)!
+    	 texture = texture_buff.makeTexture(descriptor:textureDesc, offset:0, bytesPerRow:texture_sizeline)!	
+
+	let tmpptr = texture_buff.contents()
+	texture_data = tmpptr.assumingMemoryBound(to:UInt32.self)
+     }
+
+
+}
\ No newline at end of file
diff --git a/minilibx_beta/mlx_image.swiftdoc b/minilibx_beta/mlx_image.swiftdoc
new file mode 100644
index 0000000..f13ee3f
Binary files /dev/null and b/minilibx_beta/mlx_image.swiftdoc differ
diff --git a/minilibx_beta/mlx_image.swiftmodule b/minilibx_beta/mlx_image.swiftmodule
new file mode 100644
index 0000000..4d4ce55
Binary files /dev/null and b/minilibx_beta/mlx_image.swiftmodule differ
diff --git a/minilibx_beta/mlx_init.swift b/minilibx_beta/mlx_init.swift
new file mode 100644
index 0000000..de6edf2
--- /dev/null
+++ b/minilibx_beta/mlx_init.swift
@@ -0,0 +1,100 @@
+
+import Cocoa
+import Metal
+import mlx_window
+import mlx_image
+
+
+func _mlx_bridge<T : AnyObject>(obj : T) -> UnsafeMutableRawPointer? {
+    return UnsafeMutableRawPointer(Unmanaged.passUnretained(obj).toOpaque())
+}
+
+func _mlx_bridge<T : AnyObject>(ptr : UnsafeRawPointer) -> T {
+    return Unmanaged<T>.fromOpaque(ptr).takeUnretainedValue()
+}
+
+
+
+public class MlxMain {
+
+      public var winList = [MlxWin]()
+      public var imgList = [MlxImg]()
+      var myMlxApp:NSApplication?
+      public var device:MTLDevice!
+      var loopHook:UnsafeMutableRawPointer?
+      var loopParam:UnsafeMutableRawPointer
+      var loopHookTimer:CFRunLoopTimer?
+      public var inLoop = false
+
+      public init(_ flag:Int = 0)
+      {
+	/// make app with top menubar
+        myMlxApp = NSApplication.shared
+	if (flag == 1)
+	{
+		NSApp.setActivationPolicy(NSApplication.ActivationPolicy.prohibited)   /// for non clickable win, no top menu
+	}
+	else
+	{
+		NSApp.setActivationPolicy(NSApplication.ActivationPolicy.regular)
+	}
+
+	device = MTLCreateSystemDefaultDevice()!
+	loopParam = UnsafeMutableRawPointer(&inLoop)  /// dummy addr init
+
+	/// Add observer anyway to flush pixels every loop. If loop_hook exists, call it.
+        var ocontext = CFRunLoopObserverContext(version:0, info:_mlx_bridge(obj:self), retain:nil, release:nil, copyDescription:nil)
+	let observer = CFRunLoopObserverCreate(kCFAllocatorDefault, CFRunLoopActivity.beforeWaiting.rawValue, true, 0, createOCallback(), &ocontext)
+	CFRunLoopAddObserver(CFRunLoopGetMain(), observer, CFRunLoopMode.commonModes)
+
+      }
+
+      public func addWinToList(_ win:MlxWin)
+      { winList.append(win) }
+      public func addImgToList(_ img:MlxImg)
+      { imgList.append(img) }
+
+
+    func doCallLoopHook()
+    {
+///	if (loopHook != nil)
+///	{
+	   _ = (unsafeBitCast(loopHook!,to:(@convention(c)(UnsafeRawPointer)->Void).self))(loopParam)
+///	}
+    }
+
+    func createOCallback() -> CFRunLoopObserverCallBack
+    {
+        return { (cfRunloopObserver, cfrunloopactivity, info) -> Void in
+	    let mlx:MlxMain = _mlx_bridge(ptr:info!)
+	    mlx.winList.forEach { $0.flushImages() }
+///         mlx.doCallLoopHook()
+        }
+    }
+
+    func createTCallback() -> CFRunLoopTimerCallBack
+    {
+        return { (cfRunloopTimer, info) -> Void in
+	    let mlx:MlxMain = _mlx_bridge(ptr:info!)
+            mlx.doCallLoopHook()
+        }
+    }
+
+    public func addLoopHook(_ f:UnsafeMutableRawPointer?, _ p:UnsafeMutableRawPointer)
+      {
+        var tcontext = CFRunLoopTimerContext(version:0, info:_mlx_bridge(obj:self), retain:nil, release:nil, copyDescription:nil)
+	if (loopHook != nil)
+	{
+		CFRunLoopTimerInvalidate(loopHookTimer)
+	}
+
+	loopHook = f
+	loopParam = p
+	if (loopHook != nil)
+	{
+	   loopHookTimer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, createTCallback(), &tcontext)
+	   CFRunLoopAddTimer(CFRunLoopGetMain(), loopHookTimer, CFRunLoopMode.commonModes)
+	}
+      }
+
+}
diff --git a/minilibx_beta/mlx_init.swiftdoc b/minilibx_beta/mlx_init.swiftdoc
new file mode 100644
index 0000000..922e521
Binary files /dev/null and b/minilibx_beta/mlx_init.swiftdoc differ
diff --git a/minilibx_beta/mlx_init.swiftmodule b/minilibx_beta/mlx_init.swiftmodule
new file mode 100644
index 0000000..9565cfc
Binary files /dev/null and b/minilibx_beta/mlx_init.swiftmodule differ
diff --git a/minilibx_beta/mlx_png.c b/minilibx_beta/mlx_png.c
new file mode 100644
index 0000000..48e82de
--- /dev/null
+++ b/minilibx_beta/mlx_png.c
@@ -0,0 +1,431 @@
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <err.h>
+#include <string.h>
+#include <arpa/inet.h>
+
+#include "zlib.h"
+
+#include "mlx.h"
+
+#define UNIQ_BPP 4
+
+#define	PNG_MAGIC_SIZE	8
+unsigned char magic[PNG_MAGIC_SIZE] = {137, 80, 78, 71, 13, 10, 26, 10};
+#define PNG_HDR_SIZE	13
+
+#define	Z_CHUNK	32768
+
+#define	ERR_MAGIC_SIZE	1
+#define	ERR_MAGIC_WRONG	2
+#define	ERR_STRUCT_INCOMPLETE	3
+#define	ERR_STRUCT_HDR	4
+#define	ERR_STRUCT_END	5
+#define	ERR_STRUCT_CRC	6
+#define	ERR_STRUCT_INCIMPL 7
+#define	ERR_STRUCT_DAT	8
+#define	ERR_STRUCT_MISSCHK	9
+#define	ERR_ZLIB	10
+#define	ERR_DATA_MISMATCH	11
+#define	ERR_DATA_FILTER	12
+#define ERR_MALLOC	13
+char *(mipng_err[]) =
+{
+  "No error",
+  "Not enough size for magic",
+  "Wrong magic",
+  "Incomplete chunk structure",
+  "Duplicate or incorrect header",
+  "Duplicate or incorrect end",
+  "Invalid CRC in chunk",
+  "Incorrect header or configuration not implemented",
+  "Non consecutive dat chunks",
+  "Missing header/dat/end chunk(s)",
+  "Zlib inflate error",
+  "Inflated data size mismatch",
+  "Unknown scanline filter",
+  "Can't malloc"
+};
+
+typedef struct png_info_s
+{
+  unsigned int	width;
+  unsigned int	height;
+  int		depth;
+  int		color;
+  int		interlace;
+  int		bpp;
+} png_info_t;
+
+
+int	mipng_is_type(unsigned char *ptr, char *type)
+{
+  if (ptr[4] == type[0] && ptr[5] == type[1] && ptr[6] == type[2] && ptr[7] == type[3])
+    return (1);
+  return (0);
+}
+
+
+unsigned char mipng_defilter_none(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]); }
+unsigned char mipng_defilter_sub(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+(unsigned int)a); }
+unsigned char mipng_defilter_up(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+(unsigned int)b); }
+unsigned char mipng_defilter_average(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+((unsigned int)a+(unsigned int)b)/2); }
+unsigned char mipng_defilter_paeth(unsigned char *buff, int pos, int a, int b, int c)
+{
+  int	p;
+  int	result;
+
+  p = a + b - c;
+  if (abs(b - c) <= abs(a - c) && abs(b - c) <= abs(a + b - c - c))
+    result = a;
+  else
+    if (abs(a - c) <= abs(a + b - c - c))
+      result = b;
+    else
+      result = c;
+ return (buff[pos]+result);
+}
+
+
+
+unsigned char (*(mipng_defilter[]))(unsigned char *buff, int pos, int a, int b, int c) =
+{
+  mipng_defilter_none,
+  mipng_defilter_sub,
+  mipng_defilter_up,
+  mipng_defilter_average,
+  mipng_defilter_paeth
+};
+
+// only work for mlx mac or img 32bpp
+int	mipng_fill_img(void *img, unsigned char *buf, png_info_t *pi)
+{
+  unsigned int	current_filter;
+  int	ipos;
+  int	bpos;
+  int	ilen;
+  int	iline;
+  int	blen;
+  int   bpp;
+  int   endian;
+  unsigned char tmp;
+  unsigned char *ibuf;
+
+  ibuf = (unsigned char *)mlx_get_data_addr(img, &bpp, &iline, &endian);
+  //  iline = img->width * UNIQ_BPP;
+  // ilen = img->width * img->height * UNIQ_BPP;
+  ilen = iline*pi->height;
+  ipos = 0;
+  blen = pi->width * pi->height * pi->bpp + pi->height;  // ??? why + pi->height ??
+  bpos = 0;
+  while (ipos < ilen && bpos < blen)
+    {
+      if (ipos % iline == 0)
+	{
+	  // printf("ipos %d iline %d pi->width %d bpos %d\n", ipos, iline, pi->width, bpos);
+	  if ((current_filter = buf[bpos++]) > 4)
+	    {  
+	    return (ERR_DATA_FILTER);
+	    }
+	}
+      ibuf[ipos] = mipng_defilter[current_filter](buf, bpos,
+						  ipos%iline>3?ibuf[ipos-UNIQ_BPP]:0,
+				 (ipos>=iline)?ibuf[ipos-iline]:0,
+						  (ipos>=iline && ipos%iline>3)?ibuf[ipos-iline-UNIQ_BPP]:0);
+      ipos ++;
+      bpos ++;
+      if (pi->depth == 16)
+	bpos ++;
+      if (ipos % 4 == 3 && pi->color == 2)  // no alpha
+	ibuf[ipos++] = 0xFF;
+      if (ipos % iline == pi->width * 4)
+	ipos += iline-pi->width*4;
+    }
+  if (ipos != ilen || bpos != blen)
+    {
+      //      printf("fill err ipos %d vs %d, bpos %d vs %d\n", ipos, ilen, bpos, blen);
+      return (ERR_DATA_MISMATCH);
+    }
+  ipos = 0;
+  while (ipos < ilen)
+    {
+      tmp = ibuf[ipos];
+      ibuf[ipos] = ibuf[ipos+2];
+      ibuf[ipos+2] = tmp;
+      ibuf[ipos+3] = 0xFF - ibuf[ipos+3];
+      ipos += UNIQ_BPP;
+    }
+  return (0);
+}
+
+
+int	mipng_data(void *img, unsigned char *dat, png_info_t *pi)
+{
+  unsigned int	len;
+  int		b_pos;
+  unsigned char *buffer;
+  int		ret;
+  int z_ret;
+  unsigned z_have;
+  z_stream z_strm;
+  unsigned char z_out[Z_CHUNK];
+
+  b_pos = 0;
+  if (!(buffer = malloc((long long)pi->width*(long long)pi->height*(long long)pi->bpp + pi->height)))
+    return (ERR_MALLOC);
+  z_strm.zalloc = Z_NULL;
+  z_strm.zfree = Z_NULL;
+  z_strm.opaque = Z_NULL;
+  z_strm.avail_in = 0;
+  z_strm.next_in = Z_NULL;
+  z_ret = inflateInit(&z_strm);
+  if (z_ret != Z_OK)
+    {
+      free(buffer);
+      return (ERR_ZLIB);
+    }
+
+  while (mipng_is_type(dat, "IDAT"))
+    {
+      len = *((unsigned int *)dat);
+      len = ntohl(len);
+      z_strm.avail_in = len;
+      z_strm.next_in = dat + 8;
+      z_strm.avail_out = 0;
+      while (z_strm.avail_out == 0)
+	{
+	  z_strm.avail_out = Z_CHUNK;
+	  z_strm.next_out = z_out;
+	  z_ret = inflate(&z_strm, Z_NO_FLUSH);
+	  //	  printf("inflate ret %d avail_out %d\n", z_ret, z_strm.avail_out);
+	  if (z_ret != Z_OK && z_ret != Z_STREAM_END)
+	    {
+	      inflateEnd(&z_strm);
+	      free(buffer);
+	      return (ERR_ZLIB);
+	    }
+	  if (b_pos + Z_CHUNK - z_strm.avail_out > pi->width*pi->height*pi->bpp+pi->height)
+	    {
+	      inflateEnd(&z_strm);
+	      free(buffer);
+	      return (ERR_DATA_MISMATCH);
+	    }
+	  bcopy(z_out, buffer+b_pos, Z_CHUNK - z_strm.avail_out);
+	  b_pos += Z_CHUNK - z_strm.avail_out;
+	}
+      dat += len + 4 + 4 + 4;
+    } 
+  inflateEnd(&z_strm);
+  if (b_pos != pi->width*pi->height*pi->bpp+pi->height)
+    {
+      //      printf("pb : bpos %d vs expected %d\n", b_pos, img->width*img->height*pi->bpp+img->height);
+      free(buffer);
+      return (ERR_DATA_MISMATCH);
+    }
+  ret = mipng_fill_img(img, buffer, pi);
+  free(buffer);
+  return (ret);
+}
+
+
+
+int	mipng_magic(unsigned char *ptr, int size)
+{
+  int	i;
+
+  if (size < PNG_MAGIC_SIZE)
+    return (ERR_MAGIC_SIZE);
+  i = 0;
+  while (i < PNG_MAGIC_SIZE)
+    if (*(ptr++) != magic[i++])
+      return (ERR_MAGIC_WRONG);
+  return (0);
+}
+
+
+unsigned long crc_table[256] = { 0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };
+
+// From http://www.w3.org/TR/PNG/#D-CRCAppendix
+int	mipng_crc(unsigned char *ptr, int len)
+{
+  unsigned int	file_crc;
+  unsigned long crc;
+  int		i;
+
+  file_crc = *((unsigned int *)(ptr+4+4+len));
+  file_crc = ntohl(file_crc);
+  
+  crc = 0xffffffffL;
+  i = 0;
+  while (i < len+4)
+    crc = crc_table[(crc ^ ptr[(i++)+4]) & 0xff] ^ (crc >> 8);
+  crc ^= 0xffffffffL;
+
+  if (file_crc != crc)
+    return (1);
+  return (0);
+}
+
+
+int	mipng_structure(unsigned char *ptr, int size, unsigned char **hdr, unsigned char **dat)
+{
+  unsigned int	len;
+  int		dat_state;
+  int		end;
+
+  dat_state = 0;
+  *hdr = NULL;
+  *dat = NULL;
+  end = 0;
+  while (size)
+    {
+      if (size >= 4) // length present
+	{
+	  len = *((unsigned int *)ptr);
+	  len = ntohl(len);
+	  if (size < 4 + 4 + 4 + len)
+	    return (ERR_STRUCT_INCOMPLETE);
+	  if (mipng_crc(ptr, len))
+	    return (ERR_STRUCT_CRC);
+	  //	  printf("found chunk len %d type %c%c%c%c\n", len, *(ptr+4), *(ptr+5), *(ptr+6), *(ptr+7));
+	  if (mipng_is_type(ptr, "IHDR"))
+	    {
+	      if (*hdr || len != PNG_HDR_SIZE)
+		return (ERR_STRUCT_HDR);
+	      *hdr = ptr;
+	    }
+	  if (mipng_is_type(ptr, "IEND"))
+	    {
+	      if (len != 0 || size != 4+4+4)
+		return (ERR_STRUCT_END);
+	      end = 1;
+	    }
+	  if (mipng_is_type(ptr, "IDAT"))
+	    {
+	      if (dat_state == 0)
+		{
+		  dat_state = 1;
+		  *dat = ptr;
+		}
+	      if (dat_state == 2)
+		return (ERR_STRUCT_DAT);
+	    }
+	  else
+	    if (dat_state == 1)
+	      dat_state = 2;
+	  size -= 4+4+4+len;
+	  ptr += 4+4+4+len;
+	}
+      else
+	return (ERR_STRUCT_INCOMPLETE);
+    }
+  if (*hdr == 0 || *dat == 0 || end == 0)
+    return (ERR_STRUCT_MISSCHK);
+  return (0);
+}
+
+
+int	mipng_verif_hdr(unsigned char *hdr, png_info_t *pi)
+{
+  unsigned int	compress;
+  unsigned int	filter;
+
+  hdr += 8;
+  pi->width = ntohl(*((unsigned long *)hdr));
+  pi->height = ntohl(*((unsigned long *)(hdr+4)));
+  pi->depth = *(hdr+8);
+  pi->color = *(hdr+9);
+  compress = *(hdr+10);
+  filter = *(hdr+11);
+  pi->interlace = *(hdr+12);
+  if (pi->width <= 0 || pi->height <= 0 || (pi->depth != 8 && pi->depth != 16)
+      || (pi->color != 2 && pi->color != 6) || compress != 0 || filter != 0 || pi->interlace != 0)
+    return (ERR_STRUCT_INCIMPL);
+  pi->bpp = pi->depth / 8;
+  if (pi->color == 2)
+    pi->bpp *= 3;
+  if (pi->color == 6)
+    pi->bpp *= 4;
+  //  printf("hdr info : %d x %d, depth %d, col type %d, comp %d, filter %d, interlace %d\nbpp is %d\n",
+  //	 pi->width, pi->height, pi->depth, pi->color, compress, filter, pi->interlace, pi->bpp);
+  return (0);
+}
+
+
+void	*mlx_int_parse_png(void *xvar, unsigned char *fptr, int size, int *width, int *height)
+{
+  int		err;
+  unsigned char *hdr;
+  unsigned char *dat;
+  png_info_t	pi;
+  void          *img;
+
+  if ((err = mipng_magic(fptr, size)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((void *)0);
+    }
+  fptr += PNG_MAGIC_SIZE;
+  size -= PNG_MAGIC_SIZE;
+  if ((err = mipng_structure(fptr, size, &hdr, &dat)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((void *)0);
+    }
+  if ((err = mipng_verif_hdr(hdr, &pi)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((void *)0);
+    }
+  if (!(img = mlx_new_image(xvar, pi.width, pi.height)))
+    {
+      warnx("mlx PNG error : Can't create mlx image");
+      return ((void *)0);
+    }
+  *width = pi.width;
+  *height = pi.height;
+  if ((err = mipng_data(img, dat, &pi)))
+    {
+      mlx_destroy_image(xvar, img);
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((void *)0);
+    }
+  return (img);
+}
+
+
+
+
+void	*mlx_png_file_to_image(void *xvar, char *file, int *width, int *height)
+{
+  int			fd;
+  int			size;
+  unsigned char		*ptr;
+  void                  *img;
+
+  if ((fd = open(file, O_RDONLY)) == -1 || (size = lseek(fd, 0, SEEK_END)) == -1 ||
+      (ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)MAP_FAILED)
+    {
+      if (fd >= 0)
+        close(fd);
+      warnx("Can't map png file '%s'", file);
+      return ((void *)0);
+    }
+  if (!(img = mlx_int_parse_png(xvar, ptr, size, width, height)))
+    {
+      *width = 0;
+      *height = 0;
+    }
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
diff --git a/minilibx_beta/mlx_rgb.c b/minilibx_beta/mlx_rgb.c
new file mode 100644
index 0000000..3f98717
--- /dev/null
+++ b/minilibx_beta/mlx_rgb.c
@@ -0,0 +1,763 @@
+/*
+** This is a generated file with rgb2c.pl and rgb.txt from
+** the XFree86 distribution.
+*/
+
+
+struct s_col_name mlx_col_name[] =
+{
+ { "snow" , 0xfffafa },
+ { "ghost white" , 0xf8f8ff },
+ { "ghostwhite" , 0xf8f8ff },
+ { "white smoke" , 0xf5f5f5 },
+ { "whitesmoke" , 0xf5f5f5 },
+ { "gainsboro" , 0xdcdcdc },
+ { "floral white" , 0xfffaf0 },
+ { "floralwhite" , 0xfffaf0 },
+ { "old lace" , 0xfdf5e6 },
+ { "oldlace" , 0xfdf5e6 },
+ { "linen" , 0xfaf0e6 },
+ { "antique white" , 0xfaebd7 },
+ { "antiquewhite" , 0xfaebd7 },
+ { "papaya whip" , 0xffefd5 },
+ { "papayawhip" , 0xffefd5 },
+ { "blanched almond" , 0xffebcd },
+ { "blanchedalmond" , 0xffebcd },
+ { "bisque" , 0xffe4c4 },
+ { "peach puff" , 0xffdab9 },
+ { "peachpuff" , 0xffdab9 },
+ { "navajo white" , 0xffdead },
+ { "navajowhite" , 0xffdead },
+ { "moccasin" , 0xffe4b5 },
+ { "cornsilk" , 0xfff8dc },
+ { "ivory" , 0xfffff0 },
+ { "lemon chiffon" , 0xfffacd },
+ { "lemonchiffon" , 0xfffacd },
+ { "seashell" , 0xfff5ee },
+ { "honeydew" , 0xf0fff0 },
+ { "mint cream" , 0xf5fffa },
+ { "mintcream" , 0xf5fffa },
+ { "azure" , 0xf0ffff },
+ { "alice blue" , 0xf0f8ff },
+ { "aliceblue" , 0xf0f8ff },
+ { "lavender" , 0xe6e6fa },
+ { "lavender blush" , 0xfff0f5 },
+ { "lavenderblush" , 0xfff0f5 },
+ { "misty rose" , 0xffe4e1 },
+ { "mistyrose" , 0xffe4e1 },
+ { "white" , 0xffffff },
+ { "black" , 0x0 },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategray" , 0x2f4f4f },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategrey" , 0x2f4f4f },
+ { "dim gray" , 0x696969 },
+ { "dimgray" , 0x696969 },
+ { "dim grey" , 0x696969 },
+ { "dimgrey" , 0x696969 },
+ { "slate gray" , 0x708090 },
+ { "slategray" , 0x708090 },
+ { "slate grey" , 0x708090 },
+ { "slategrey" , 0x708090 },
+ { "light slate" , 0x778899 },
+ { "lightslategray" , 0x778899 },
+ { "light slate" , 0x778899 },
+ { "lightslategrey" , 0x778899 },
+ { "gray" , 0xbebebe },
+ { "grey" , 0xbebebe },
+ { "light grey" , 0xd3d3d3 },
+ { "lightgrey" , 0xd3d3d3 },
+ { "light gray" , 0xd3d3d3 },
+ { "lightgray" , 0xd3d3d3 },
+ { "midnight blue" , 0x191970 },
+ { "midnightblue" , 0x191970 },
+ { "navy" , 0x80 },
+ { "navy blue" , 0x80 },
+ { "navyblue" , 0x80 },
+ { "cornflower blue" , 0x6495ed },
+ { "cornflowerblue" , 0x6495ed },
+ { "dark slate" , 0x483d8b },
+ { "darkslateblue" , 0x483d8b },
+ { "slate blue" , 0x6a5acd },
+ { "slateblue" , 0x6a5acd },
+ { "medium slate" , 0x7b68ee },
+ { "mediumslateblue" , 0x7b68ee },
+ { "light slate" , 0x8470ff },
+ { "lightslateblue" , 0x8470ff },
+ { "medium blue" , 0xcd },
+ { "mediumblue" , 0xcd },
+ { "royal blue" , 0x4169e1 },
+ { "royalblue" , 0x4169e1 },
+ { "blue" , 0xff },
+ { "dodger blue" , 0x1e90ff },
+ { "dodgerblue" , 0x1e90ff },
+ { "deep sky" , 0xbfff },
+ { "deepskyblue" , 0xbfff },
+ { "sky blue" , 0x87ceeb },
+ { "skyblue" , 0x87ceeb },
+ { "light sky" , 0x87cefa },
+ { "lightskyblue" , 0x87cefa },
+ { "steel blue" , 0x4682b4 },
+ { "steelblue" , 0x4682b4 },
+ { "light steel" , 0xb0c4de },
+ { "lightsteelblue" , 0xb0c4de },
+ { "light blue" , 0xadd8e6 },
+ { "lightblue" , 0xadd8e6 },
+ { "powder blue" , 0xb0e0e6 },
+ { "powderblue" , 0xb0e0e6 },
+ { "pale turquoise" , 0xafeeee },
+ { "paleturquoise" , 0xafeeee },
+ { "dark turquoise" , 0xced1 },
+ { "darkturquoise" , 0xced1 },
+ { "medium turquoise" , 0x48d1cc },
+ { "mediumturquoise" , 0x48d1cc },
+ { "turquoise" , 0x40e0d0 },
+ { "cyan" , 0xffff },
+ { "light cyan" , 0xe0ffff },
+ { "lightcyan" , 0xe0ffff },
+ { "cadet blue" , 0x5f9ea0 },
+ { "cadetblue" , 0x5f9ea0 },
+ { "medium aquamarine" , 0x66cdaa },
+ { "mediumaquamarine" , 0x66cdaa },
+ { "aquamarine" , 0x7fffd4 },
+ { "dark green" , 0x6400 },
+ { "darkgreen" , 0x6400 },
+ { "dark olive" , 0x556b2f },
+ { "darkolivegreen" , 0x556b2f },
+ { "dark sea" , 0x8fbc8f },
+ { "darkseagreen" , 0x8fbc8f },
+ { "sea green" , 0x2e8b57 },
+ { "seagreen" , 0x2e8b57 },
+ { "medium sea" , 0x3cb371 },
+ { "mediumseagreen" , 0x3cb371 },
+ { "light sea" , 0x20b2aa },
+ { "lightseagreen" , 0x20b2aa },
+ { "pale green" , 0x98fb98 },
+ { "palegreen" , 0x98fb98 },
+ { "spring green" , 0xff7f },
+ { "springgreen" , 0xff7f },
+ { "lawn green" , 0x7cfc00 },
+ { "lawngreen" , 0x7cfc00 },
+ { "green" , 0xff00 },
+ { "chartreuse" , 0x7fff00 },
+ { "medium spring" , 0xfa9a },
+ { "mediumspringgreen" , 0xfa9a },
+ { "green yellow" , 0xadff2f },
+ { "greenyellow" , 0xadff2f },
+ { "lime green" , 0x32cd32 },
+ { "limegreen" , 0x32cd32 },
+ { "yellow green" , 0x9acd32 },
+ { "yellowgreen" , 0x9acd32 },
+ { "forest green" , 0x228b22 },
+ { "forestgreen" , 0x228b22 },
+ { "olive drab" , 0x6b8e23 },
+ { "olivedrab" , 0x6b8e23 },
+ { "dark khaki" , 0xbdb76b },
+ { "darkkhaki" , 0xbdb76b },
+ { "khaki" , 0xf0e68c },
+ { "pale goldenrod" , 0xeee8aa },
+ { "palegoldenrod" , 0xeee8aa },
+ { "light goldenrod" , 0xfafad2 },
+ { "lightgoldenrodyellow" , 0xfafad2 },
+ { "light yellow" , 0xffffe0 },
+ { "lightyellow" , 0xffffe0 },
+ { "yellow" , 0xffff00 },
+ { "gold" , 0xffd700 },
+ { "light goldenrod" , 0xeedd82 },
+ { "lightgoldenrod" , 0xeedd82 },
+ { "goldenrod" , 0xdaa520 },
+ { "dark goldenrod" , 0xb8860b },
+ { "darkgoldenrod" , 0xb8860b },
+ { "rosy brown" , 0xbc8f8f },
+ { "rosybrown" , 0xbc8f8f },
+ { "indian red" , 0xcd5c5c },
+ { "indianred" , 0xcd5c5c },
+ { "saddle brown" , 0x8b4513 },
+ { "saddlebrown" , 0x8b4513 },
+ { "sienna" , 0xa0522d },
+ { "peru" , 0xcd853f },
+ { "burlywood" , 0xdeb887 },
+ { "beige" , 0xf5f5dc },
+ { "wheat" , 0xf5deb3 },
+ { "sandy brown" , 0xf4a460 },
+ { "sandybrown" , 0xf4a460 },
+ { "tan" , 0xd2b48c },
+ { "chocolate" , 0xd2691e },
+ { "firebrick" , 0xb22222 },
+ { "brown" , 0xa52a2a },
+ { "dark salmon" , 0xe9967a },
+ { "darksalmon" , 0xe9967a },
+ { "salmon" , 0xfa8072 },
+ { "light salmon" , 0xffa07a },
+ { "lightsalmon" , 0xffa07a },
+ { "orange" , 0xffa500 },
+ { "dark orange" , 0xff8c00 },
+ { "darkorange" , 0xff8c00 },
+ { "coral" , 0xff7f50 },
+ { "light coral" , 0xf08080 },
+ { "lightcoral" , 0xf08080 },
+ { "tomato" , 0xff6347 },
+ { "orange red" , 0xff4500 },
+ { "orangered" , 0xff4500 },
+ { "red" , 0xff0000 },
+ { "hot pink" , 0xff69b4 },
+ { "hotpink" , 0xff69b4 },
+ { "deep pink" , 0xff1493 },
+ { "deeppink" , 0xff1493 },
+ { "pink" , 0xffc0cb },
+ { "light pink" , 0xffb6c1 },
+ { "lightpink" , 0xffb6c1 },
+ { "pale violet" , 0xdb7093 },
+ { "palevioletred" , 0xdb7093 },
+ { "maroon" , 0xb03060 },
+ { "medium violet" , 0xc71585 },
+ { "mediumvioletred" , 0xc71585 },
+ { "violet red" , 0xd02090 },
+ { "violetred" , 0xd02090 },
+ { "magenta" , 0xff00ff },
+ { "violet" , 0xee82ee },
+ { "plum" , 0xdda0dd },
+ { "orchid" , 0xda70d6 },
+ { "medium orchid" , 0xba55d3 },
+ { "mediumorchid" , 0xba55d3 },
+ { "dark orchid" , 0x9932cc },
+ { "darkorchid" , 0x9932cc },
+ { "dark violet" , 0x9400d3 },
+ { "darkviolet" , 0x9400d3 },
+ { "blue violet" , 0x8a2be2 },
+ { "blueviolet" , 0x8a2be2 },
+ { "purple" , 0xa020f0 },
+ { "medium purple" , 0x9370db },
+ { "mediumpurple" , 0x9370db },
+ { "thistle" , 0xd8bfd8 },
+ { "snow1" , 0xfffafa },
+ { "snow2" , 0xeee9e9 },
+ { "snow3" , 0xcdc9c9 },
+ { "snow4" , 0x8b8989 },
+ { "seashell1" , 0xfff5ee },
+ { "seashell2" , 0xeee5de },
+ { "seashell3" , 0xcdc5bf },
+ { "seashell4" , 0x8b8682 },
+ { "antiquewhite1" , 0xffefdb },
+ { "antiquewhite2" , 0xeedfcc },
+ { "antiquewhite3" , 0xcdc0b0 },
+ { "antiquewhite4" , 0x8b8378 },
+ { "bisque1" , 0xffe4c4 },
+ { "bisque2" , 0xeed5b7 },
+ { "bisque3" , 0xcdb79e },
+ { "bisque4" , 0x8b7d6b },
+ { "peachpuff1" , 0xffdab9 },
+ { "peachpuff2" , 0xeecbad },
+ { "peachpuff3" , 0xcdaf95 },
+ { "peachpuff4" , 0x8b7765 },
+ { "navajowhite1" , 0xffdead },
+ { "navajowhite2" , 0xeecfa1 },
+ { "navajowhite3" , 0xcdb38b },
+ { "navajowhite4" , 0x8b795e },
+ { "lemonchiffon1" , 0xfffacd },
+ { "lemonchiffon2" , 0xeee9bf },
+ { "lemonchiffon3" , 0xcdc9a5 },
+ { "lemonchiffon4" , 0x8b8970 },
+ { "cornsilk1" , 0xfff8dc },
+ { "cornsilk2" , 0xeee8cd },
+ { "cornsilk3" , 0xcdc8b1 },
+ { "cornsilk4" , 0x8b8878 },
+ { "ivory1" , 0xfffff0 },
+ { "ivory2" , 0xeeeee0 },
+ { "ivory3" , 0xcdcdc1 },
+ { "ivory4" , 0x8b8b83 },
+ { "honeydew1" , 0xf0fff0 },
+ { "honeydew2" , 0xe0eee0 },
+ { "honeydew3" , 0xc1cdc1 },
+ { "honeydew4" , 0x838b83 },
+ { "lavenderblush1" , 0xfff0f5 },
+ { "lavenderblush2" , 0xeee0e5 },
+ { "lavenderblush3" , 0xcdc1c5 },
+ { "lavenderblush4" , 0x8b8386 },
+ { "mistyrose1" , 0xffe4e1 },
+ { "mistyrose2" , 0xeed5d2 },
+ { "mistyrose3" , 0xcdb7b5 },
+ { "mistyrose4" , 0x8b7d7b },
+ { "azure1" , 0xf0ffff },
+ { "azure2" , 0xe0eeee },
+ { "azure3" , 0xc1cdcd },
+ { "azure4" , 0x838b8b },
+ { "slateblue1" , 0x836fff },
+ { "slateblue2" , 0x7a67ee },
+ { "slateblue3" , 0x6959cd },
+ { "slateblue4" , 0x473c8b },
+ { "royalblue1" , 0x4876ff },
+ { "royalblue2" , 0x436eee },
+ { "royalblue3" , 0x3a5fcd },
+ { "royalblue4" , 0x27408b },
+ { "blue1" , 0xff },
+ { "blue2" , 0xee },
+ { "blue3" , 0xcd },
+ { "blue4" , 0x8b },
+ { "dodgerblue1" , 0x1e90ff },
+ { "dodgerblue2" , 0x1c86ee },
+ { "dodgerblue3" , 0x1874cd },
+ { "dodgerblue4" , 0x104e8b },
+ { "steelblue1" , 0x63b8ff },
+ { "steelblue2" , 0x5cacee },
+ { "steelblue3" , 0x4f94cd },
+ { "steelblue4" , 0x36648b },
+ { "deepskyblue1" , 0xbfff },
+ { "deepskyblue2" , 0xb2ee },
+ { "deepskyblue3" , 0x9acd },
+ { "deepskyblue4" , 0x688b },
+ { "skyblue1" , 0x87ceff },
+ { "skyblue2" , 0x7ec0ee },
+ { "skyblue3" , 0x6ca6cd },
+ { "skyblue4" , 0x4a708b },
+ { "lightskyblue1" , 0xb0e2ff },
+ { "lightskyblue2" , 0xa4d3ee },
+ { "lightskyblue3" , 0x8db6cd },
+ { "lightskyblue4" , 0x607b8b },
+ { "slategray1" , 0xc6e2ff },
+ { "slategray2" , 0xb9d3ee },
+ { "slategray3" , 0x9fb6cd },
+ { "slategray4" , 0x6c7b8b },
+ { "lightsteelblue1" , 0xcae1ff },
+ { "lightsteelblue2" , 0xbcd2ee },
+ { "lightsteelblue3" , 0xa2b5cd },
+ { "lightsteelblue4" , 0x6e7b8b },
+ { "lightblue1" , 0xbfefff },
+ { "lightblue2" , 0xb2dfee },
+ { "lightblue3" , 0x9ac0cd },
+ { "lightblue4" , 0x68838b },
+ { "lightcyan1" , 0xe0ffff },
+ { "lightcyan2" , 0xd1eeee },
+ { "lightcyan3" , 0xb4cdcd },
+ { "lightcyan4" , 0x7a8b8b },
+ { "paleturquoise1" , 0xbbffff },
+ { "paleturquoise2" , 0xaeeeee },
+ { "paleturquoise3" , 0x96cdcd },
+ { "paleturquoise4" , 0x668b8b },
+ { "cadetblue1" , 0x98f5ff },
+ { "cadetblue2" , 0x8ee5ee },
+ { "cadetblue3" , 0x7ac5cd },
+ { "cadetblue4" , 0x53868b },
+ { "turquoise1" , 0xf5ff },
+ { "turquoise2" , 0xe5ee },
+ { "turquoise3" , 0xc5cd },
+ { "turquoise4" , 0x868b },
+ { "cyan1" , 0xffff },
+ { "cyan2" , 0xeeee },
+ { "cyan3" , 0xcdcd },
+ { "cyan4" , 0x8b8b },
+ { "darkslategray1" , 0x97ffff },
+ { "darkslategray2" , 0x8deeee },
+ { "darkslategray3" , 0x79cdcd },
+ { "darkslategray4" , 0x528b8b },
+ { "aquamarine1" , 0x7fffd4 },
+ { "aquamarine2" , 0x76eec6 },
+ { "aquamarine3" , 0x66cdaa },
+ { "aquamarine4" , 0x458b74 },
+ { "darkseagreen1" , 0xc1ffc1 },
+ { "darkseagreen2" , 0xb4eeb4 },
+ { "darkseagreen3" , 0x9bcd9b },
+ { "darkseagreen4" , 0x698b69 },
+ { "seagreen1" , 0x54ff9f },
+ { "seagreen2" , 0x4eee94 },
+ { "seagreen3" , 0x43cd80 },
+ { "seagreen4" , 0x2e8b57 },
+ { "palegreen1" , 0x9aff9a },
+ { "palegreen2" , 0x90ee90 },
+ { "palegreen3" , 0x7ccd7c },
+ { "palegreen4" , 0x548b54 },
+ { "springgreen1" , 0xff7f },
+ { "springgreen2" , 0xee76 },
+ { "springgreen3" , 0xcd66 },
+ { "springgreen4" , 0x8b45 },
+ { "green1" , 0xff00 },
+ { "green2" , 0xee00 },
+ { "green3" , 0xcd00 },
+ { "green4" , 0x8b00 },
+ { "chartreuse1" , 0x7fff00 },
+ { "chartreuse2" , 0x76ee00 },
+ { "chartreuse3" , 0x66cd00 },
+ { "chartreuse4" , 0x458b00 },
+ { "olivedrab1" , 0xc0ff3e },
+ { "olivedrab2" , 0xb3ee3a },
+ { "olivedrab3" , 0x9acd32 },
+ { "olivedrab4" , 0x698b22 },
+ { "darkolivegreen1" , 0xcaff70 },
+ { "darkolivegreen2" , 0xbcee68 },
+ { "darkolivegreen3" , 0xa2cd5a },
+ { "darkolivegreen4" , 0x6e8b3d },
+ { "khaki1" , 0xfff68f },
+ { "khaki2" , 0xeee685 },
+ { "khaki3" , 0xcdc673 },
+ { "khaki4" , 0x8b864e },
+ { "lightgoldenrod1" , 0xffec8b },
+ { "lightgoldenrod2" , 0xeedc82 },
+ { "lightgoldenrod3" , 0xcdbe70 },
+ { "lightgoldenrod4" , 0x8b814c },
+ { "lightyellow1" , 0xffffe0 },
+ { "lightyellow2" , 0xeeeed1 },
+ { "lightyellow3" , 0xcdcdb4 },
+ { "lightyellow4" , 0x8b8b7a },
+ { "yellow1" , 0xffff00 },
+ { "yellow2" , 0xeeee00 },
+ { "yellow3" , 0xcdcd00 },
+ { "yellow4" , 0x8b8b00 },
+ { "gold1" , 0xffd700 },
+ { "gold2" , 0xeec900 },
+ { "gold3" , 0xcdad00 },
+ { "gold4" , 0x8b7500 },
+ { "goldenrod1" , 0xffc125 },
+ { "goldenrod2" , 0xeeb422 },
+ { "goldenrod3" , 0xcd9b1d },
+ { "goldenrod4" , 0x8b6914 },
+ { "darkgoldenrod1" , 0xffb90f },
+ { "darkgoldenrod2" , 0xeead0e },
+ { "darkgoldenrod3" , 0xcd950c },
+ { "darkgoldenrod4" , 0x8b6508 },
+ { "rosybrown1" , 0xffc1c1 },
+ { "rosybrown2" , 0xeeb4b4 },
+ { "rosybrown3" , 0xcd9b9b },
+ { "rosybrown4" , 0x8b6969 },
+ { "indianred1" , 0xff6a6a },
+ { "indianred2" , 0xee6363 },
+ { "indianred3" , 0xcd5555 },
+ { "indianred4" , 0x8b3a3a },
+ { "sienna1" , 0xff8247 },
+ { "sienna2" , 0xee7942 },
+ { "sienna3" , 0xcd6839 },
+ { "sienna4" , 0x8b4726 },
+ { "burlywood1" , 0xffd39b },
+ { "burlywood2" , 0xeec591 },
+ { "burlywood3" , 0xcdaa7d },
+ { "burlywood4" , 0x8b7355 },
+ { "wheat1" , 0xffe7ba },
+ { "wheat2" , 0xeed8ae },
+ { "wheat3" , 0xcdba96 },
+ { "wheat4" , 0x8b7e66 },
+ { "tan1" , 0xffa54f },
+ { "tan2" , 0xee9a49 },
+ { "tan3" , 0xcd853f },
+ { "tan4" , 0x8b5a2b },
+ { "chocolate1" , 0xff7f24 },
+ { "chocolate2" , 0xee7621 },
+ { "chocolate3" , 0xcd661d },
+ { "chocolate4" , 0x8b4513 },
+ { "firebrick1" , 0xff3030 },
+ { "firebrick2" , 0xee2c2c },
+ { "firebrick3" , 0xcd2626 },
+ { "firebrick4" , 0x8b1a1a },
+ { "brown1" , 0xff4040 },
+ { "brown2" , 0xee3b3b },
+ { "brown3" , 0xcd3333 },
+ { "brown4" , 0x8b2323 },
+ { "salmon1" , 0xff8c69 },
+ { "salmon2" , 0xee8262 },
+ { "salmon3" , 0xcd7054 },
+ { "salmon4" , 0x8b4c39 },
+ { "lightsalmon1" , 0xffa07a },
+ { "lightsalmon2" , 0xee9572 },
+ { "lightsalmon3" , 0xcd8162 },
+ { "lightsalmon4" , 0x8b5742 },
+ { "orange1" , 0xffa500 },
+ { "orange2" , 0xee9a00 },
+ { "orange3" , 0xcd8500 },
+ { "orange4" , 0x8b5a00 },
+ { "darkorange1" , 0xff7f00 },
+ { "darkorange2" , 0xee7600 },
+ { "darkorange3" , 0xcd6600 },
+ { "darkorange4" , 0x8b4500 },
+ { "coral1" , 0xff7256 },
+ { "coral2" , 0xee6a50 },
+ { "coral3" , 0xcd5b45 },
+ { "coral4" , 0x8b3e2f },
+ { "tomato1" , 0xff6347 },
+ { "tomato2" , 0xee5c42 },
+ { "tomato3" , 0xcd4f39 },
+ { "tomato4" , 0x8b3626 },
+ { "orangered1" , 0xff4500 },
+ { "orangered2" , 0xee4000 },
+ { "orangered3" , 0xcd3700 },
+ { "orangered4" , 0x8b2500 },
+ { "red1" , 0xff0000 },
+ { "red2" , 0xee0000 },
+ { "red3" , 0xcd0000 },
+ { "red4" , 0x8b0000 },
+ { "deeppink1" , 0xff1493 },
+ { "deeppink2" , 0xee1289 },
+ { "deeppink3" , 0xcd1076 },
+ { "deeppink4" , 0x8b0a50 },
+ { "hotpink1" , 0xff6eb4 },
+ { "hotpink2" , 0xee6aa7 },
+ { "hotpink3" , 0xcd6090 },
+ { "hotpink4" , 0x8b3a62 },
+ { "pink1" , 0xffb5c5 },
+ { "pink2" , 0xeea9b8 },
+ { "pink3" , 0xcd919e },
+ { "pink4" , 0x8b636c },
+ { "lightpink1" , 0xffaeb9 },
+ { "lightpink2" , 0xeea2ad },
+ { "lightpink3" , 0xcd8c95 },
+ { "lightpink4" , 0x8b5f65 },
+ { "palevioletred1" , 0xff82ab },
+ { "palevioletred2" , 0xee799f },
+ { "palevioletred3" , 0xcd6889 },
+ { "palevioletred4" , 0x8b475d },
+ { "maroon1" , 0xff34b3 },
+ { "maroon2" , 0xee30a7 },
+ { "maroon3" , 0xcd2990 },
+ { "maroon4" , 0x8b1c62 },
+ { "violetred1" , 0xff3e96 },
+ { "violetred2" , 0xee3a8c },
+ { "violetred3" , 0xcd3278 },
+ { "violetred4" , 0x8b2252 },
+ { "magenta1" , 0xff00ff },
+ { "magenta2" , 0xee00ee },
+ { "magenta3" , 0xcd00cd },
+ { "magenta4" , 0x8b008b },
+ { "orchid1" , 0xff83fa },
+ { "orchid2" , 0xee7ae9 },
+ { "orchid3" , 0xcd69c9 },
+ { "orchid4" , 0x8b4789 },
+ { "plum1" , 0xffbbff },
+ { "plum2" , 0xeeaeee },
+ { "plum3" , 0xcd96cd },
+ { "plum4" , 0x8b668b },
+ { "mediumorchid1" , 0xe066ff },
+ { "mediumorchid2" , 0xd15fee },
+ { "mediumorchid3" , 0xb452cd },
+ { "mediumorchid4" , 0x7a378b },
+ { "darkorchid1" , 0xbf3eff },
+ { "darkorchid2" , 0xb23aee },
+ { "darkorchid3" , 0x9a32cd },
+ { "darkorchid4" , 0x68228b },
+ { "purple1" , 0x9b30ff },
+ { "purple2" , 0x912cee },
+ { "purple3" , 0x7d26cd },
+ { "purple4" , 0x551a8b },
+ { "mediumpurple1" , 0xab82ff },
+ { "mediumpurple2" , 0x9f79ee },
+ { "mediumpurple3" , 0x8968cd },
+ { "mediumpurple4" , 0x5d478b },
+ { "thistle1" , 0xffe1ff },
+ { "thistle2" , 0xeed2ee },
+ { "thistle3" , 0xcdb5cd },
+ { "thistle4" , 0x8b7b8b },
+ { "gray0" , 0x0 },
+ { "grey0" , 0x0 },
+ { "gray1" , 0x30303 },
+ { "grey1" , 0x30303 },
+ { "gray2" , 0x50505 },
+ { "grey2" , 0x50505 },
+ { "gray3" , 0x80808 },
+ { "grey3" , 0x80808 },
+ { "gray4" , 0xa0a0a },
+ { "grey4" , 0xa0a0a },
+ { "gray5" , 0xd0d0d },
+ { "grey5" , 0xd0d0d },
+ { "gray6" , 0xf0f0f },
+ { "grey6" , 0xf0f0f },
+ { "gray7" , 0x121212 },
+ { "grey7" , 0x121212 },
+ { "gray8" , 0x141414 },
+ { "grey8" , 0x141414 },
+ { "gray9" , 0x171717 },
+ { "grey9" , 0x171717 },
+ { "gray10" , 0x1a1a1a },
+ { "grey10" , 0x1a1a1a },
+ { "gray11" , 0x1c1c1c },
+ { "grey11" , 0x1c1c1c },
+ { "gray12" , 0x1f1f1f },
+ { "grey12" , 0x1f1f1f },
+ { "gray13" , 0x212121 },
+ { "grey13" , 0x212121 },
+ { "gray14" , 0x242424 },
+ { "grey14" , 0x242424 },
+ { "gray15" , 0x262626 },
+ { "grey15" , 0x262626 },
+ { "gray16" , 0x292929 },
+ { "grey16" , 0x292929 },
+ { "gray17" , 0x2b2b2b },
+ { "grey17" , 0x2b2b2b },
+ { "gray18" , 0x2e2e2e },
+ { "grey18" , 0x2e2e2e },
+ { "gray19" , 0x303030 },
+ { "grey19" , 0x303030 },
+ { "gray20" , 0x333333 },
+ { "grey20" , 0x333333 },
+ { "gray21" , 0x363636 },
+ { "grey21" , 0x363636 },
+ { "gray22" , 0x383838 },
+ { "grey22" , 0x383838 },
+ { "gray23" , 0x3b3b3b },
+ { "grey23" , 0x3b3b3b },
+ { "gray24" , 0x3d3d3d },
+ { "grey24" , 0x3d3d3d },
+ { "gray25" , 0x404040 },
+ { "grey25" , 0x404040 },
+ { "gray26" , 0x424242 },
+ { "grey26" , 0x424242 },
+ { "gray27" , 0x454545 },
+ { "grey27" , 0x454545 },
+ { "gray28" , 0x474747 },
+ { "grey28" , 0x474747 },
+ { "gray29" , 0x4a4a4a },
+ { "grey29" , 0x4a4a4a },
+ { "gray30" , 0x4d4d4d },
+ { "grey30" , 0x4d4d4d },
+ { "gray31" , 0x4f4f4f },
+ { "grey31" , 0x4f4f4f },
+ { "gray32" , 0x525252 },
+ { "grey32" , 0x525252 },
+ { "gray33" , 0x545454 },
+ { "grey33" , 0x545454 },
+ { "gray34" , 0x575757 },
+ { "grey34" , 0x575757 },
+ { "gray35" , 0x595959 },
+ { "grey35" , 0x595959 },
+ { "gray36" , 0x5c5c5c },
+ { "grey36" , 0x5c5c5c },
+ { "gray37" , 0x5e5e5e },
+ { "grey37" , 0x5e5e5e },
+ { "gray38" , 0x616161 },
+ { "grey38" , 0x616161 },
+ { "gray39" , 0x636363 },
+ { "grey39" , 0x636363 },
+ { "gray40" , 0x666666 },
+ { "grey40" , 0x666666 },
+ { "gray41" , 0x696969 },
+ { "grey41" , 0x696969 },
+ { "gray42" , 0x6b6b6b },
+ { "grey42" , 0x6b6b6b },
+ { "gray43" , 0x6e6e6e },
+ { "grey43" , 0x6e6e6e },
+ { "gray44" , 0x707070 },
+ { "grey44" , 0x707070 },
+ { "gray45" , 0x737373 },
+ { "grey45" , 0x737373 },
+ { "gray46" , 0x757575 },
+ { "grey46" , 0x757575 },
+ { "gray47" , 0x787878 },
+ { "grey47" , 0x787878 },
+ { "gray48" , 0x7a7a7a },
+ { "grey48" , 0x7a7a7a },
+ { "gray49" , 0x7d7d7d },
+ { "grey49" , 0x7d7d7d },
+ { "gray50" , 0x7f7f7f },
+ { "grey50" , 0x7f7f7f },
+ { "gray51" , 0x828282 },
+ { "grey51" , 0x828282 },
+ { "gray52" , 0x858585 },
+ { "grey52" , 0x858585 },
+ { "gray53" , 0x878787 },
+ { "grey53" , 0x878787 },
+ { "gray54" , 0x8a8a8a },
+ { "grey54" , 0x8a8a8a },
+ { "gray55" , 0x8c8c8c },
+ { "grey55" , 0x8c8c8c },
+ { "gray56" , 0x8f8f8f },
+ { "grey56" , 0x8f8f8f },
+ { "gray57" , 0x919191 },
+ { "grey57" , 0x919191 },
+ { "gray58" , 0x949494 },
+ { "grey58" , 0x949494 },
+ { "gray59" , 0x969696 },
+ { "grey59" , 0x969696 },
+ { "gray60" , 0x999999 },
+ { "grey60" , 0x999999 },
+ { "gray61" , 0x9c9c9c },
+ { "grey61" , 0x9c9c9c },
+ { "gray62" , 0x9e9e9e },
+ { "grey62" , 0x9e9e9e },
+ { "gray63" , 0xa1a1a1 },
+ { "grey63" , 0xa1a1a1 },
+ { "gray64" , 0xa3a3a3 },
+ { "grey64" , 0xa3a3a3 },
+ { "gray65" , 0xa6a6a6 },
+ { "grey65" , 0xa6a6a6 },
+ { "gray66" , 0xa8a8a8 },
+ { "grey66" , 0xa8a8a8 },
+ { "gray67" , 0xababab },
+ { "grey67" , 0xababab },
+ { "gray68" , 0xadadad },
+ { "grey68" , 0xadadad },
+ { "gray69" , 0xb0b0b0 },
+ { "grey69" , 0xb0b0b0 },
+ { "gray70" , 0xb3b3b3 },
+ { "grey70" , 0xb3b3b3 },
+ { "gray71" , 0xb5b5b5 },
+ { "grey71" , 0xb5b5b5 },
+ { "gray72" , 0xb8b8b8 },
+ { "grey72" , 0xb8b8b8 },
+ { "gray73" , 0xbababa },
+ { "grey73" , 0xbababa },
+ { "gray74" , 0xbdbdbd },
+ { "grey74" , 0xbdbdbd },
+ { "gray75" , 0xbfbfbf },
+ { "grey75" , 0xbfbfbf },
+ { "gray76" , 0xc2c2c2 },
+ { "grey76" , 0xc2c2c2 },
+ { "gray77" , 0xc4c4c4 },
+ { "grey77" , 0xc4c4c4 },
+ { "gray78" , 0xc7c7c7 },
+ { "grey78" , 0xc7c7c7 },
+ { "gray79" , 0xc9c9c9 },
+ { "grey79" , 0xc9c9c9 },
+ { "gray80" , 0xcccccc },
+ { "grey80" , 0xcccccc },
+ { "gray81" , 0xcfcfcf },
+ { "grey81" , 0xcfcfcf },
+ { "gray82" , 0xd1d1d1 },
+ { "grey82" , 0xd1d1d1 },
+ { "gray83" , 0xd4d4d4 },
+ { "grey83" , 0xd4d4d4 },
+ { "gray84" , 0xd6d6d6 },
+ { "grey84" , 0xd6d6d6 },
+ { "gray85" , 0xd9d9d9 },
+ { "grey85" , 0xd9d9d9 },
+ { "gray86" , 0xdbdbdb },
+ { "grey86" , 0xdbdbdb },
+ { "gray87" , 0xdedede },
+ { "grey87" , 0xdedede },
+ { "gray88" , 0xe0e0e0 },
+ { "grey88" , 0xe0e0e0 },
+ { "gray89" , 0xe3e3e3 },
+ { "grey89" , 0xe3e3e3 },
+ { "gray90" , 0xe5e5e5 },
+ { "grey90" , 0xe5e5e5 },
+ { "gray91" , 0xe8e8e8 },
+ { "grey91" , 0xe8e8e8 },
+ { "gray92" , 0xebebeb },
+ { "grey92" , 0xebebeb },
+ { "gray93" , 0xededed },
+ { "grey93" , 0xededed },
+ { "gray94" , 0xf0f0f0 },
+ { "grey94" , 0xf0f0f0 },
+ { "gray95" , 0xf2f2f2 },
+ { "grey95" , 0xf2f2f2 },
+ { "gray96" , 0xf5f5f5 },
+ { "grey96" , 0xf5f5f5 },
+ { "gray97" , 0xf7f7f7 },
+ { "grey97" , 0xf7f7f7 },
+ { "gray98" , 0xfafafa },
+ { "grey98" , 0xfafafa },
+ { "gray99" , 0xfcfcfc },
+ { "grey99" , 0xfcfcfc },
+ { "gray100" , 0xffffff },
+ { "grey100" , 0xffffff },
+ { "dark grey" , 0xa9a9a9 },
+ { "darkgrey" , 0xa9a9a9 },
+ { "dark gray" , 0xa9a9a9 },
+ { "darkgray" , 0xa9a9a9 },
+ { "dark blue" , 0x8b },
+ { "darkblue" , 0x8b },
+ { "dark cyan" , 0x8b8b },
+ { "darkcyan" , 0x8b8b },
+ { "dark magenta" , 0x8b008b },
+ { "darkmagenta" , 0x8b008b },
+ { "dark red" , 0x8b0000 },
+ { "darkred" , 0x8b0000 },
+ { "light green" , 0x90ee90 },
+ { "lightgreen" , 0x90ee90 },
+ { "none", -1 },
+ { 0, 0 }
+};
diff --git a/minilibx_beta/mlx_string_put.c b/minilibx_beta/mlx_string_put.c
new file mode 100644
index 0000000..435493c
--- /dev/null
+++ b/minilibx_beta/mlx_string_put.c
@@ -0,0 +1,72 @@
+
+#include "mlx.h"
+
+#include "font.c"
+
+#define ATLAS_NB_CHAR 95
+
+#define FONT_WIDTH	((font_atlas.width/(ATLAS_NB_CHAR))-2)
+
+
+int mlx_put_image_to_window_scale(void *mlx_ptr, void *win_ptr, void *img_ptr, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, unsigned int color);
+
+void mlx_int_fill(unsigned char *data, int sl)
+{
+  int i, j;
+  j = 0;
+  while (j < font_atlas.height)
+    {
+      i = 0;
+      while (i < font_atlas.width)
+	{
+	  data[j*sl+i*4] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+2];
+	  data[j*sl+i*4+1] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+1];
+	  data[j*sl+i*4+2] = font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4];
+	  data[j*sl+i*4+3] = 0xFF - font_atlas.pixel_data[j*font_atlas.width*font_atlas.bytes_per_pixel+i*4+3];
+	  i ++;
+	}
+      j ++;
+    }
+    
+}
+
+int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string)
+{
+  static void *font = (void *)0;
+  static unsigned char *data = (void *)0;
+  static int size_line = 0;
+  int bpp;
+  int endian;
+  int pos;
+  int val;
+  int dest_w;
+  int dest_h;
+
+  if (font == (void *)0)
+    {
+      font = mlx_new_image(mlx_ptr, font_atlas.width, font_atlas.height);
+      data = (unsigned char *)mlx_get_data_addr(font, &bpp, &size_line, &endian);
+      mlx_int_fill(data, size_line);
+    }
+
+  color = (color&0xFFFFFF)|0xFF000000;
+
+  //  dest_w = (FONT_WIDTH*5)/7;   /// ratio with X11 standard mlx_string_put
+  //  dest_h = (font_atlas.height*5)/7;
+  dest_w = FONT_WIDTH;
+  dest_h = font_atlas.height;
+  y = y - (dest_h*3)/4;
+
+  pos = 0;
+  while (*string)
+    {
+      if (*string >= 32 && *string <= 127)
+	val = *string - 32;
+      else
+	val = 31;
+      mlx_put_image_to_window_scale(mlx_ptr, win_ptr, font, val*(FONT_WIDTH+2), 0, FONT_WIDTH, font_atlas.height, x+pos*dest_w, y, dest_w, dest_h, color);
+      pos ++;
+      string ++;
+    }
+  return (0);
+}
diff --git a/minilibx_beta/mlx_window.swift b/minilibx_beta/mlx_window.swift
new file mode 100644
index 0000000..0b578d8
--- /dev/null
+++ b/minilibx_beta/mlx_window.swift
@@ -0,0 +1,541 @@
+
+import Cocoa
+import Metal
+import MetalKit
+import Darwin
+
+import mlx_image
+
+
+class WinEvent: NSWindow
+{
+  var eventFuncts = [UnsafeMutableRawPointer?]()
+  var eventParams = [UnsafeMutableRawPointer]()
+
+  var keyrepeat = 1
+  var keyflag:UInt32 = 0
+
+  var size_y:Int
+
+  init(frame rect:CGRect)
+  {
+    for _ in 0...31
+    {
+      eventFuncts.append(Optional.none)
+      eventParams.append(UnsafeMutableRawPointer(&keyrepeat)) /// dummy address here, null not needed
+    }
+
+    let wsm = NSWindow.StyleMask(rawValue: NSWindow.StyleMask.titled.rawValue|NSWindow.StyleMask.closable.rawValue|NSWindow.StyleMask.miniaturizable.rawValue)
+    let bck = NSWindow.BackingStoreType.buffered
+    size_y = Int(rect.size.height)
+    super.init(contentRect: rect, styleMask: wsm, backing: bck, defer: false)
+  }
+
+  func setNotifs()
+  {
+      NotificationCenter.default.addObserver(self, selector: #selector(exposeNotification(_:)), name: NSWindow.didBecomeKeyNotification, object: nil)
+      NotificationCenter.default.addObserver(self, selector: #selector(deminiaturizeNotification(_:)), name: NSWindow.didDeminiaturizeNotification, object: nil)
+      NotificationCenter.default.addObserver(self, selector: #selector(closeNotification(_:)), name: NSWindow.willCloseNotification, 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];
+***/
+
+  }
+
+  func delNotifs()
+  {
+      NotificationCenter.default.removeObserver(self, name: NSWindow.willCloseNotification, object: nil)
+  }
+
+  public func setKeyRepeat(_ mode:Int)
+  {
+	keyrepeat = mode;
+  }
+
+
+  func addHook(index idx:Int, fct fptr:UnsafeMutableRawPointer?, param pptr:UnsafeMutableRawPointer)
+  {
+	eventFuncts[idx] = fptr;
+	eventParams[idx] = pptr;
+	if (idx == 6 || idx == 32)
+	{
+		if (fptr != nil) ///  == nullptr)
+		   { self.acceptsMouseMovedEvents = true }
+		else { self.acceptsMouseMovedEvents = false }
+	}
+  }
+
+
+  override func keyDown(with event: NSEvent)
+  {
+	/// print("got keydown with code: \(event.keyCode) ")
+	if (event.isARepeat && keyrepeat == 0)
+	 { return }
+	if (eventFuncts[2] != nil)
+	{
+	  _ = unsafeBitCast(eventFuncts[2],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(Int32(event.keyCode), eventParams[2])
+	}
+  }
+
+
+  override func keyUp(with event: NSEvent)
+  {
+	/// print("got keyup with code: \(event.keyCode) and calling key hook")
+	if (event.isARepeat && keyrepeat == 0)
+	 { return }
+	if (eventFuncts[3] != nil)
+	{
+	  _ = unsafeBitCast(eventFuncts[3],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(Int32(event.keyCode), eventParams[3])
+	}
+  }
+
+
+  func get_mouse_button(with ev:NSEvent) -> Int
+  {
+	switch (ev.type) {
+  	       case NSEvent.EventType.leftMouseDown,
+	       	    NSEvent.EventType.leftMouseUp,
+	       	    NSEvent.EventType.leftMouseDragged:
+	           return 1;
+	       case NSEvent.EventType.rightMouseDown,
+	       	    NSEvent.EventType.rightMouseUp,
+	            NSEvent.EventType.rightMouseDragged:
+	           return 2;
+	       case NSEvent.EventType.otherMouseDown,
+	            NSEvent.EventType.otherMouseUp,
+	            NSEvent.EventType.otherMouseDragged:
+	           return 3;
+	       default:
+	           return 0;
+        }
+  }
+
+
+
+  func mouse(with event: NSEvent, index idx:Int, type t:Int)
+  {
+	var thepoint:NSPoint
+	var button:Int
+
+	thepoint = event.locationInWindow
+	button = get_mouse_button(with:event)
+	/// button = event.buttonNumber
+	/// print(" mouse down button \(event.buttonNumber) at location \(thepoint.x) x \(thepoint.y)")
+	if (eventFuncts[idx] != nil)
+	{
+	  if (t == 0)
+	   { _ = unsafeBitCast(eventFuncts[idx],to:(@convention(c)(Int32, Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(button), Int32(thepoint.x), Int32(size_y-1-Int(thepoint.y)), eventParams[idx]) }
+	  if (t == 1)
+	   { _ = unsafeBitCast(eventFuncts[idx],to:(@convention(c)(Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(thepoint.x), Int32(size_y-1-Int(thepoint.y)), eventParams[idx]) }
+	}
+  }
+
+  override func mouseDown(with event: NSEvent)  { mouse(with:event, index:4, type:0)  }
+  override func rightMouseDown(with event: NSEvent)   {	mouse(with:event, index:4, type:0)  }
+  override func otherMouseDown(with event: NSEvent)   {	mouse(with:event, index:4, type:0)  }
+
+  override func mouseUp(with event: NSEvent)  { mouse(with:event, index:5, type:0)  }
+  override func rightMouseUp(with event: NSEvent)   { mouse(with:event, index:5, type:0)  }
+  override func otherMouseUp(with event: NSEvent)   { mouse(with:event, index:5, type:0)  }
+
+  override func mouseMoved(with event: NSEvent)   { mouse(with:event, index:6, type:1)  }
+  override func mouseDragged(with event: NSEvent)   { mouse(with:event, index:6, type:1)  }
+  override func rightMouseDragged(with event: NSEvent)   { mouse(with:event, index:6, type:1)  }
+  override func otherMouseDragged(with event: NSEvent)   { mouse(with:event, index:6, type:1)  }
+
+
+  override func scrollWheel(with event: NSEvent)
+  {
+	var thepoint:NSPoint
+	var button = 0;
+
+	thepoint = event.locationInWindow
+	if (event.deltaY > 0.2) { button = 4; }
+	if (event.deltaY < -0.2) { button = 5; }
+	if (event.deltaX > 0.2) { button = 6; }
+	if (event.deltaX < -0.2) { button = 7; }
+        if (button != 0 && eventFuncts[4] != nil)
+        {
+          _ = unsafeBitCast(eventFuncts[4],to:(@convention(c)(Int32, Int32, Int32, UnsafeRawPointer)->Int32).self)(Int32(button), Int32(thepoint.x), Int32(thepoint.y), eventParams[4])
+        }
+  } 
+
+
+  override func flagsChanged(with event: NSEvent)
+  {
+	var flag:UInt32
+	var the_key:Int32
+	var val:UInt32
+
+	flag = UInt32(event.modifierFlags.rawValue)
+	val = (keyflag|flag)&(~(keyflag&flag))
+	if (val == 0)
+	    { 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 += 1 }
+	 if (flag > keyflag && eventFuncts[2] != nil)
+	   { _ = unsafeBitCast(eventFuncts[2],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(0xFF+the_key, eventParams[2]) }
+	 if (flag < keyflag && eventFuncts[3] != nil)
+	   { _ = unsafeBitCast(eventFuncts[3],to:(@convention(c)(Int32, UnsafeRawPointer)->Int32).self)(0xFF+the_key, eventParams[3]) }
+	 keyflag = flag
+  }
+
+
+  @objc func exposeNotification(_ notification:Notification)
+  {
+	if (eventFuncts[12] != nil)
+	{
+	  _ = unsafeBitCast(eventFuncts[12],to:(@convention(c)(UnsafeRawPointer)->Int32).self)(eventParams[12])
+	}
+  }
+
+  @objc func closeNotification(_ notification:Notification)
+  {
+	if (eventFuncts[17] != nil)
+	{
+	  _ = unsafeBitCast(eventFuncts[17],to:(@convention(c)(UnsafeRawPointer)->Int32).self)(eventParams[17])
+	}
+  }
+
+  @objc func deminiaturizeNotification(_ notification:Notification)
+  {
+	exposeNotification(notification)
+  }
+
+}
+
+
+
+
+
+struct textureList
+{
+   var uniformBuffer: MTLBuffer!
+   var uniform_data:UnsafeMutablePointer<Float>
+   unowned var image:MlxImg
+}
+
+
+public class MlxWin
+{
+  let vrect: CGRect
+  var winE: WinEvent
+  var mlayer: CAMetalLayer
+
+  unowned var device: MTLDevice
+  var commandQueue: MTLCommandQueue!
+  var pipelineState: MTLRenderPipelineState!
+  var vertexBuffer: MTLBuffer!
+
+  var texture_list: Array<textureList> = Array()
+  var texture_list_count = 0
+
+  var pixel_image:MlxImg
+  var pixel_count:Int
+
+  var drawable_image: MlxImg
+  var uniq_renderPassDescriptor: MTLRenderPassDescriptor
+  var mtl_origin_null : MTLOrigin
+  var mtl_size_all : MTLSize
+  var doClear = false
+  var GPUbatch = 0
+
+
+  public init(device d:MTLDevice, width w:Int, height h:Int, title t:String)
+  {
+    vrect = CGRect(x: 100, y: 100, width: w, height: h)
+    winE = WinEvent(frame: vrect)
+
+    device = d
+    mlayer = CAMetalLayer()
+    mlayer.device = device
+    mlayer.pixelFormat = .bgra8Unorm
+    mlayer.framebufferOnly = true
+    mlayer.contentsScale = 1.0 /// winE.screen!.backingScaleFactor
+    mlayer.frame = vrect
+    winE.contentView! = NSView(frame: vrect)
+    winE.contentView!.wantsLayer = true
+    winE.contentView!.layer = mlayer
+    winE.title = t
+    winE.isReleasedWhenClosed = false
+    winE.makeKeyAndOrderFront(nil)
+
+
+    /// drawable_image = MlxImg(d: device, w:Int(CGFloat(vrect.size.width)*winE.screen!.backingScaleFactor), h:Int(CGFloat(vrect.size.height)*winE.screen!.backingScaleFactor), t:1)
+    drawable_image = MlxImg(d: device, w:Int(vrect.size.width), h:Int(vrect.size.height), t:1)
+    pixel_image = MlxImg(d: device, w:Int(vrect.size.width), h:Int(vrect.size.height))
+    for i in 0...(pixel_image.texture_height*pixel_image.texture_sizeline/4-1)
+      { pixel_image.texture_data[i] = UInt32(0xFF000000) }
+    pixel_count = 0
+
+    mtl_origin_null = MTLOriginMake(0,0,0)
+    mtl_size_all = MTLSizeMake(drawable_image.texture.width, drawable_image.texture.height, 1)
+
+    uniq_renderPassDescriptor = MTLRenderPassDescriptor()
+    uniq_renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColor(red: 0.0, green: 0.0, blue: 0.0, alpha:0.0)
+    uniq_renderPassDescriptor.colorAttachments[0].texture = drawable_image.texture
+    uniq_renderPassDescriptor.colorAttachments[0].storeAction = .store
+    uniq_renderPassDescriptor.colorAttachments[0].loadAction = .load
+  }
+
+
+/// winEvent calls
+  public func getWinEFrame() -> NSRect  { return winE.frame }
+  public func getScreenFrame() -> NSRect { return winE.screen!.frame }
+  public func getMouseLoc() -> NSPoint { return winE.mouseLocationOutsideOfEventStream }
+  public func addHook(index idx:Int, fct fptr:UnsafeMutableRawPointer, param pptr:UnsafeMutableRawPointer)
+  {  winE.addHook(index: idx, fct: fptr, param: pptr)  }
+  public func setKeyRepeat(_ mode:Int)  { winE.setKeyRepeat(mode) }
+  public func destroyWinE()  { winE.close() }
+  public func setNotifs() { winE.setNotifs() }
+  public func delNotifs() { winE.delNotifs() }
+
+
+  public func initMetal()
+  {
+    commandQueue = device.makeCommandQueue()!
+
+    /// vertex buffer & shaders stay the always the same.
+    let lib = try! device.makeLibrary(source: shaders, options: nil)
+    let vertexFunction = lib.makeFunction(name: "basic_vertex_function")
+    let fragmentFunction = lib.makeFunction(name: "basic_fragment_function")
+    let pipelineDesc = MTLRenderPipelineDescriptor()
+    pipelineDesc.colorAttachments[0].pixelFormat = .bgra8Unorm
+    pipelineDesc.colorAttachments[0].isBlendingEnabled = true
+    pipelineDesc.colorAttachments[0].rgbBlendOperation = .add
+    pipelineDesc.colorAttachments[0].alphaBlendOperation = .add
+    pipelineDesc.colorAttachments[0].sourceRGBBlendFactor = .oneMinusSourceAlpha
+    pipelineDesc.colorAttachments[0].sourceAlphaBlendFactor = .oneMinusSourceAlpha
+    pipelineDesc.colorAttachments[0].destinationRGBBlendFactor = .sourceAlpha
+    pipelineDesc.colorAttachments[0].destinationAlphaBlendFactor = .sourceAlpha
+    pipelineDesc.vertexFunction = vertexFunction
+    pipelineDesc.fragmentFunction = fragmentFunction
+    pipelineState = try! device.makeRenderPipelineState(descriptor: pipelineDesc)
+
+    let vertexData: [Float] = [
+       -1.0, -1.0, 0.0, 1.0,  0.0, 1.0, 0.0, 0.0,
+       -1.0, 1.0, 0.0, 1.0,   0.0, 0.0, 0.0, 0.0,
+       1.0, -1.0, 0.0, 1.0,   1.0, 1.0, 0.0, 0.0,
+       1.0, -1.0, 0.0, 1.0,   1.0, 1.0, 0.0, 0.0,
+       -1.0, 1.0, 0.0, 1.0,   0.0, 0.0, 0.0, 0.0,
+       1.0, 1.0, 0.0, 1.0,    1.0, 0.0, 0.0, 0.0  ]
+    var dataSize = vertexData.count * MemoryLayout.size(ofValue: vertexData[0])
+    vertexBuffer = device.makeBuffer(bytes: vertexData, length: dataSize, options: []) 
+
+    let uniformData: [Float] = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Float(vrect.size.width), Float(vrect.size.height), 0.0, 0.0, 0.0, 0.0,
+    		     	       1.0, 1.0, 1.0, 1.0 ]
+    dataSize = uniformData.count * MemoryLayout.size(ofValue: uniformData[0])
+    for _ in 0...255
+    { 
+      let uniformBuffer = device.makeBuffer(bytes: uniformData, length: dataSize, options: [])!
+      let uniform_data = (uniformBuffer.contents()).assumingMemoryBound(to:Float.self)
+      texture_list.append(textureList(uniformBuffer:uniformBuffer, uniform_data:uniform_data, image:pixel_image))
+    }
+
+    self.clearWin();
+  }
+
+
+  public func clearWin()
+  {
+	/// discard previous put_images, doClear become first operation in next render pass.
+	var i = 0
+	while i < texture_list_count
+	{
+		texture_list[i].image.onGPU -= 1
+		i += 1
+	}
+	texture_list_count = 0
+	doClear = true
+	///  next flush images should call draw(), even if there is no image to put
+  }
+
+  func flushPixels()
+  {
+	if (pixel_count > 0)
+	{
+	  pixel_count = 0
+	  self.putImage(image:pixel_image, x:0, y:0)
+	}
+  }
+
+  public func flushImages()
+  {
+	flushPixels()
+	if (texture_list_count > 0 || doClear)
+	 {
+	    self.draw()
+	 }
+  }
+
+  public func waitForGPU()
+  {
+	while (GPUbatch > 0) { }
+  }
+
+
+  public func pixelPut(_ x:Int32, _ y:Int32, _ color:UInt32)
+  {
+	if (pixel_count == 0)
+	{
+	  while (pixel_image.onGPU > 0)
+	  {
+	     if (GPUbatch > 0) { waitForGPU() }
+	     else { flushImages() }
+	  }
+	  for i in 0...pixel_image.texture_height*pixel_image.texture_sizeline/4-1
+	    { pixel_image.texture_data[i] = UInt32(0xFF000000) }
+	}
+	let t = (x&(Int32(vrect.size.width-1)-x))&(y&(Int32(vrect.size.height-1)-y))
+	if t >= 0
+	{
+		pixel_image.texture_data[Int(y)*pixel_image.texture_sizeline/4+Int(x)] = color
+		pixel_count += 1
+	}
+  }
+
+  public func putImage(image img:MlxImg, x posx:Int32, y posy:Int32)
+  {
+	flushPixels()
+	putImageScale(image:img, sx:0, sy:0, sw:Int32(img.texture_width), sh:Int32(img.texture_height), 
+			   dx:posx, dy:posy, dw:Int32(img.texture_width), dh:Int32(img.texture_height),
+			   c:UInt32(0xFFFFFFFF))
+  }
+
+  public func putImageScale(image img:MlxImg, sx src_x:Int32, sy src_y:Int32, sw src_w:Int32, sh src_h:Int32, dx dest_x:Int32, dy dest_y:Int32, dw dest_w:Int32, dh dest_h:Int32, c color:UInt32)
+  {
+	flushPixels()
+	if (texture_list_count == 0) /// means  I just draw
+	{
+		waitForGPU()    /// to be able to write again in uniforms
+	}
+	texture_list[texture_list_count].uniform_data[0] = Float(img.texture_width)
+	texture_list[texture_list_count].uniform_data[1] = Float(img.texture_height)
+	texture_list[texture_list_count].uniform_data[2] = Float(src_x)
+	texture_list[texture_list_count].uniform_data[3] = Float(src_y)
+	texture_list[texture_list_count].uniform_data[4] = Float(src_w)
+	texture_list[texture_list_count].uniform_data[5] = Float(src_h)
+
+	texture_list[texture_list_count].uniform_data[8] = Float(dest_x)
+	texture_list[texture_list_count].uniform_data[9] = Float(dest_y)
+	texture_list[texture_list_count].uniform_data[10] = Float(dest_w)
+	texture_list[texture_list_count].uniform_data[11] = Float(dest_h)
+
+	texture_list[texture_list_count].uniform_data[12] = Float((color>>16)&0xFF)/255.0;
+	texture_list[texture_list_count].uniform_data[13] = Float((color>>8)&0xFF)/255.0;
+	texture_list[texture_list_count].uniform_data[14] = Float((color>>0)&0xFF)/255.0;
+	texture_list[texture_list_count].uniform_data[15] = Float((color>>24)&0xFF)/255.0;
+
+	texture_list[texture_list_count].image = img
+	img.onGPU += 1
+	
+	texture_list_count += 1
+	if (texture_list_count == 255) /// keep 1 slot for put_pixels image
+	{
+		flushImages()
+	}
+  }
+
+
+  func draw()
+  {
+	var commandBuffer = commandQueue.makeCommandBuffer()!
+
+/// clear if asked
+	if (doClear)
+	{
+	  uniq_renderPassDescriptor.colorAttachments[0].loadAction = .clear
+	  let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: uniq_renderPassDescriptor)!
+	  commandEncoder.endEncoding()
+	  uniq_renderPassDescriptor.colorAttachments[0].loadAction = .load
+	  doClear = false
+	}
+
+/// then draw the images if any.
+	var i = 0
+	while i < texture_list_count
+	{
+		let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: uniq_renderPassDescriptor)!
+		commandEncoder.setRenderPipelineState(pipelineState)
+		commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
+		commandEncoder.setVertexBuffer(texture_list[i].uniformBuffer, offset: 0, index: 1)
+		commandEncoder.setFragmentTexture(texture_list[i].image.texture, index: 0)
+		commandEncoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: 6, instanceCount:2)
+		commandEncoder.endEncoding()
+		({ j in
+		      commandBuffer.addCompletedHandler { cb in self.texture_list[j].image.onGPU -= 1 }
+		})(i)
+		i += 1
+	}
+	texture_list_count = 0
+	commandBuffer.addCompletedHandler { cb in self.GPUbatch -= 1 }
+        commandBuffer.commit()
+	GPUbatch += 1
+
+/// finally copy to MTLdrawable to present, using a new commandqueue
+    	commandBuffer = commandQueue.makeCommandBuffer()!
+	let curdraw = mlayer.nextDrawable()!
+
+	let commandBEncoder = commandBuffer.makeBlitCommandEncoder()!
+	commandBEncoder.copy(from:drawable_image.texture, sourceSlice:0, sourceLevel:0, sourceOrigin: mtl_origin_null, sourceSize: mtl_size_all,  to:curdraw.texture, destinationSlice:0, destinationLevel:0, destinationOrigin: mtl_origin_null)
+	commandBEncoder.endEncoding()
+
+	commandBuffer.addCompletedHandler { cb in self.GPUbatch -= 1 }
+	commandBuffer.present(curdraw)
+        commandBuffer.commit()
+	GPUbatch += 1
+  }
+
+
+}
+
+
+
+
+let shaders = """
+#include <metal_stdlib>
+using namespace metal;
+
+struct VertexIn {
+    float4 position;
+    float4 UV;
+};
+struct VertexOut {
+    float4 position [[ position ]];
+    float4 color;
+    float2 UV;
+};
+struct uniforms {
+   packed_float2 origin_size;
+   packed_float2 origin_pos;
+   packed_float2 origin_sub;
+   packed_float2 dest_size;
+   packed_float2 dest_pos;
+   packed_float2 dest_sub;
+   packed_float4 color;
+};
+vertex VertexOut basic_vertex_function(const device VertexIn *vertices [[ buffer(0) ]], constant uniforms& uni [[ buffer(1) ]],
+uint vertexID [[ vertex_id ]])
+{
+    VertexOut vOut;
+    float4 start = float4((2.0*uni.dest_pos.x)/(uni.dest_size.x-1.0) - 1.0, 1.0 - (2.0*uni.dest_pos.y)/(uni.dest_size.y-1.0) - (uni.dest_sub.y*2.0)/uni.dest_size.y, 0.0, 0.0);
+ /*   vOut.position = (start + (vertices[vertexID].position + 1.0) * float4(uni.dest_sub, 0.0, 0.0))/float4(uni.dest_size, 1.0, 1.0); */
+
+    vOut.position = float4(start.x+((vertices[vertexID].position.x + 1.0)*uni.dest_sub.x)/(uni.dest_size.x),
+    		    	   start.y+((vertices[vertexID].position.y + 1.0)*uni.dest_sub.y)/(uni.dest_size.y), 0.0, 1.0);
+
+    vOut.UV = (uni.origin_pos + float2(vertices[vertexID].UV.x, vertices[vertexID].UV.y)*(uni.origin_sub-1.0))/(uni.origin_size-1.0);
+    vOut.color = uni.color;
+    return vOut;
+}
+fragment float4 basic_fragment_function(VertexOut vIn [[ stage_in ]], texture2d<float> texture [[ texture(0) ]])
+{
+    constexpr sampler textureSampler(address::clamp_to_edge);
+    return vIn.color*texture.sample(textureSampler, vIn.UV);
+}
+"""
+
diff --git a/minilibx_beta/mlx_window.swiftdoc b/minilibx_beta/mlx_window.swiftdoc
new file mode 100644
index 0000000..71bb8c8
Binary files /dev/null and b/minilibx_beta/mlx_window.swiftdoc differ
diff --git a/minilibx_beta/mlx_window.swiftmodule b/minilibx_beta/mlx_window.swiftmodule
new file mode 100644
index 0000000..8f3f8a3
Binary files /dev/null and b/minilibx_beta/mlx_window.swiftmodule differ
diff --git a/minilibx_beta/mlx_xpm.c b/minilibx_beta/mlx_xpm.c
new file mode 100644
index 0000000..25fdafe
--- /dev/null
+++ b/minilibx_beta/mlx_xpm.c
@@ -0,0 +1,384 @@
+// mlx xpm
+// by ol
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+
+#include "mlx.h"
+
+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) mlx_destroy_image(xvar, img);   \
+                  return ((void *)0); }
+
+
+
+
+//
+// str 2 wordtab & co
+
+int	mlx_int_str_str(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      s = str;
+      f = find;
+      while (*(f++) == *(s++))
+        if (!*f)
+          return (pos);
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+
+int	mlx_int_str_str_cote(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+  int	cote;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  cote = 0;
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      if (*str=='"')
+	cote = 1-cote;
+      if (!cote)
+	{
+	  s = str;
+	  f = find;
+	  while (*(f++) == *(s++))
+	    if (!*f)
+	      return (pos);
+	}
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+char	**mlx_int_str_to_wordtab(char *str)
+{
+  char	**tab;
+  int	pos;
+  int	nb_word;
+  int	len;
+
+  len = strlen(str);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+  {
+    while (*(str+pos)==' ' || *(str+pos)=='\t')
+      pos ++;
+    if (*(str+pos))
+      nb_word ++;
+    while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+      pos ++;
+  }
+  if (!(tab = malloc((1+nb_word)*sizeof(*tab))))
+    return ((char **)0);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+    {
+      while (*(str+pos)==' ' || *(str+pos)=='\t')
+	{
+	  *(str+pos) = 0;
+	  pos ++;
+	}
+      if (*(str+pos))
+	{
+	  tab[nb_word] = str+pos;
+	  nb_word ++;
+	}
+      while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+	pos ++;
+    }
+  tab[nb_word] = 0;
+  return (tab);
+}
+
+
+// back to mlx_xpm
+
+
+
+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, char *end)
+{
+  int	i;
+  char	buff[64];
+
+  if (*name == '#')
+    return (strtol(name+1,0,16));
+  if (end)
+    {
+      snprintf(buff, 64, "%s %s", name, end);
+      name = buff;
+    }
+  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);
+}
+
+
+void	mlx_int_xpm_set_pixel(char *data, int opp, int col, int x)
+{
+  *((unsigned int *)(data+4*x)) = col;
+}
+
+
+void	*mlx_int_parse_xpm(void *xvar,void *info,int info_size,char *(*f)(), int *width, int *height)
+{
+  int	pos;
+  char	*line;
+  char	**tab;
+  char	*data;
+  char	*clip_data;
+  int	nc;
+  int	opp;
+  int   sl;
+  int   endian;
+  int	cpp;
+  int	col;
+  int	rgb_col;
+  int	col_name;
+  int	method;
+  int	x;
+  int	i;
+  int	j;
+  void	*img;
+  t_xpm_col	*colors;
+  int		*colors_direct;
+
+  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;
+
+      rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]);
+      if (method)
+	colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col;
+      else
+	{
+	  colors[i].name = mlx_int_get_col_name(line,cpp);
+	  colors[i].col = rgb_col;
+	}
+      free(tab);
+      tab = 0;
+    }
+
+  if (!(img = mlx_new_image(xvar,*width,*height)))
+    RETURN;
+  data = mlx_get_data_addr(img, &opp, &sl, &endian);
+  opp = 4;
+
+  i = *height;
+  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)
+	    col = 0xFF000000;
+	  mlx_int_xpm_set_pixel(data, opp, col, x);
+	  x ++;
+	}
+      data += sl; //img->width*4;
+    }
+  if (colors)
+    free(colors);
+  if (colors_direct)
+    free(colors_direct);
+  return (img);
+}
+
+
+void	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(void *xvar,char *file,int *width,int *height)
+{
+  int	fd;
+  int	size;
+  char	*ptr;
+  void	*img;
+
+  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);
+  img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line, width, height);
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
+
+void	*mlx_xpm_to_image(void *xvar,char **xpm_data,int *width,int *height)
+{
+  return (mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line, width, height));
+}
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index a2ce3b1..3d3595a 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -21,11 +21,9 @@ void
 	int32_t	x;
 	int32_t	y;
 	int8_t	i;
-	int32_t col;
 
 	i = -1;
-	col = 0x00ce2524;
-	while (++i < 100)
+	while (++i < 15)
 	{
 		cl->red_scr.img = mlx_new_image(cl->wlist.wlx,
 			cl->wlist.x_size, cl->wlist.y_size);
@@ -37,7 +35,7 @@ void
 		{
 			while (++x < (int32_t)cl->wlist.x_size)
 				*(int*)(cl->red_scr.ptr +
-					(x * 4 + (y * cl->red_scr.sizeline))) = col;
+					(x * 4 + (y * cl->red_scr.sizeline))) = 0x00ce2524;
 			x = -1;
 		}
 		mlx_put_image_to_window(cl->wlist.wlx,
-- 
cgit v1.2.3


From 114df1314a69161e5802ce6192aa8f1599867f3e Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p3.le-101.fr>
Date: Wed, 11 Mar 2020 15:30:51 +0100
Subject: qweqwe

---
 src/ft_draw_scene.c       | 12 ++++++------
 src/ft_exit.c             |  1 +
 src/ft_suffer_animation.c | 33 ++++++++++++++++-----------------
 src/ft_treat_args.c       |  9 +++++----
 4 files changed, 28 insertions(+), 27 deletions(-)

diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c
index 4d15df2..9664363 100644
--- a/src/ft_draw_scene.c
+++ b/src/ft_draw_scene.c
@@ -41,10 +41,10 @@ static int8_t
 void
 	ft_draw_scene(t_cub *clist)
 {
-	clist->img.img = mlx_new_image(clist->wlist.wlx,
-				clist->wlist.x_size, clist->wlist.y_size);
-	clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp,
-				&clist->img.sizeline, &clist->img.endian);
+	/* clist->img.img = mlx_new_image(clist->wlist.wlx, */
+	/* 			clist->wlist.x_size, clist->wlist.y_size); */
+	/* clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, */
+	/* 			&clist->img.sizeline, &clist->img.endian); */
 	ft_castray(clist);
 	if (clist->ishud)
 	{
@@ -53,7 +53,7 @@ void
 	if (clist->mlist.isskybox)
 		ft_draw_skybox(clist);
 	mlx_put_image_to_window(clist->wlist.wlx,
-							clist->wlist.winptr, clist->img.img, 0, 0);
+		clist->wlist.winptr, clist->img.img, 0, 0);
 	if (clist->ishud && clist->mlist.isnlvl)
 	{
 		if (ft_put_stage(clist) < 0)
@@ -61,7 +61,7 @@ void
 			ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist);
 		}
 	}
-	mlx_destroy_image(clist->wlist.wlx, clist->img.img);
+	/* mlx_destroy_image(clist->wlist.wlx, clist->img.img); */
 }
 
 void
diff --git a/src/ft_exit.c b/src/ft_exit.c
index 4a131c8..e0093da 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -73,6 +73,7 @@ int
 		ft_del_tex(clist);
 	if (clist->wlist.inited)
 	{
+		mlx_destroy_image(clist->wlist.wlx, clist->img.img);
 		mlx_destroy_window(clist->wlist.wlx, clist->wlist.winptr);
 		clist->wlist.winptr = NULL;
 	}
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index 3d3595a..2a1beb4 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -14,6 +14,7 @@
 #include <cub3d.h>
 #include <mlx.h>
 #include <stdint.h>
+#include <unistd.h>
 
 void
 	ft_suffer_animation(t_cub *cl)
@@ -22,24 +23,22 @@ void
 	int32_t	y;
 	int8_t	i;
 
-	i = -1;
-	while (++i < 15)
+	/* cl->red_scr.img = mlx_new_image(cl->wlist.wlx, */
+	/* 				cl->wlist.x_size, cl->wlist.y_size); */
+	/* cl->red_scr.ptr = mlx_get_data_addr(cl->red_scr.img, &cl->red_scr.bpp, */
+	/* 				&cl->red_scr.sizeline, &cl->red_scr.endian); */
+	y = -1;
+	while (++y < (int32_t)cl->wlist.y_size)
 	{
-		cl->red_scr.img = mlx_new_image(cl->wlist.wlx,
-			cl->wlist.x_size, cl->wlist.y_size);
-		cl->red_scr.ptr = mlx_get_data_addr(cl->red_scr.img, &cl->red_scr.bpp,
-			&cl->red_scr.sizeline, &cl->red_scr.endian);
 		x = -1;
-		y = -1;
-		while (++y < (int32_t)cl->wlist.y_size)
-		{
-			while (++x < (int32_t)cl->wlist.x_size)
-				*(int*)(cl->red_scr.ptr +
-					(x * 4 + (y * cl->red_scr.sizeline))) = 0x00ce2524;
-			x = -1;
-		}
-		mlx_put_image_to_window(cl->wlist.wlx,
-			cl->wlist.winptr, cl->red_scr.img, 0, 0);
-		mlx_destroy_image(cl->wlist.wlx, cl->red_scr.img);
+		while (++x < (int32_t)cl->wlist.x_size)
+			*(int*)(cl->img.ptr +
+					(x * 4 + (y * cl->img.sizeline))) = 0x00ffffff;
 	}
+	i = -1;
+		mlx_put_image_to_window(cl->wlist.wlx,
+			cl->wlist.winptr, cl->img.img, 0, 0);
+		sleep(5);
+	/* while (++i < 120) */
+	/* mlx_destroy_image(cl->wlist.wlx, cl->red_scr.img); */
 }
diff --git a/src/ft_treat_args.c b/src/ft_treat_args.c
index a47f9f7..fe794d8 100644
--- a/src/ft_treat_args.c
+++ b/src/ft_treat_args.c
@@ -12,6 +12,7 @@
 
 #include <libft.h>
 #include <cub3d.h>
+#include <mlx.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <unistd.h>
@@ -35,14 +36,14 @@ uint8_t
 	if (argc < 3)
 	{
 		if (ft_init_winptr(clist) < 0)
-		{
 			return (ft_exit(FT_RET_FAILED_MLX, clist));
-		}
+		clist->img.img = mlx_new_image(clist->wlist.wlx,
+				clist->wlist.x_size, clist->wlist.y_size);
+		clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp,
+				&clist->img.sizeline, &clist->img.endian);
 		ft_draw_scene(clist);
 		if (clist->mlist.ismusic)
-		{
 			ft_enable_music(clist);
-		}
 		ft_hooks_and_loops(&clist->wlist, clist);
 	}
 	else if (argc == 3 && !ft_strncmp("--save", argv[2], 7))
-- 
cgit v1.2.3


From 7f77c9bc922fb608f689385d642304956afe0492 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p1.le-101.fr>
Date: Wed, 11 Mar 2020 16:07:29 +0100
Subject: Performance

---
 Makefile                  |  2 --
 inc/cub3d.h               |  1 +
 inc/cub3d_structs.h       |  1 +
 src/ft_draw_scene.c       | 11 ++++-------
 src/ft_hex_to_rgb.c       | 11 +++++++++++
 src/ft_init_lists.c       |  1 +
 src/ft_key_loop.c         |  7 +++----
 src/ft_suffer_animation.c | 26 ++++++++++++++------------
 8 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/Makefile b/Makefile
index 9fbd0f2..c3c4e0e 100644
--- a/Makefile
+++ b/Makefile
@@ -183,9 +183,7 @@ all: ${NAME}
 clean: 
 ifeq (${OS}, Darwin)
 	@$(MAKE) --no-print-directory -C ${MLX_DIR} clean
-ifdef BETA
 	${RM} libmlx.dylib
-endif
 endif
 	@$(MAKE) --no-print-directory -C ${LFT_DIR} clean
 	${RM} ${OBJS_DIR}
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 4172c9d..ae353ae 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -33,6 +33,7 @@ t_rgb			ft_init_rgb(void);
 int8_t			ft_init_map(t_map *mlist);
 t_bmp_file		ft_init_bmp(void);
 t_bmp_info		ft_init_bmp_info(void);
+t_rgb			ft_hex_to_og_rgb(uint32_t color);
 
 /*
 ** ====== HOOKS ======
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 310ba90..957d154 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -208,6 +208,7 @@ typedef struct			s_cub
 	uint8_t				ishud;
 	uint8_t				walltexgood;
 	uint8_t				isoldmus;
+	uint8_t				doicast;
 	uint16_t			currlvl;
 	uint16_t			i;
 	char *const			*envp;
diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c
index 9664363..39cdadc 100644
--- a/src/ft_draw_scene.c
+++ b/src/ft_draw_scene.c
@@ -45,22 +45,19 @@ void
 	/* 			clist->wlist.x_size, clist->wlist.y_size); */
 	/* clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, */
 	/* 			&clist->img.sizeline, &clist->img.endian); */
-	ft_castray(clist);
+	if (clist->doicast)
+		ft_castray(clist);
+	else
+		clist->doicast = 1;
 	if (clist->ishud)
-	{
 		ft_draw_hud(clist);
-	}
 	if (clist->mlist.isskybox)
 		ft_draw_skybox(clist);
 	mlx_put_image_to_window(clist->wlist.wlx,
 		clist->wlist.winptr, clist->img.img, 0, 0);
 	if (clist->ishud && clist->mlist.isnlvl)
-	{
 		if (ft_put_stage(clist) < 0)
-		{
 			ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist);
-		}
-	}
 	/* mlx_destroy_image(clist->wlist.wlx, clist->img.img); */
 }
 
diff --git a/src/ft_hex_to_rgb.c b/src/ft_hex_to_rgb.c
index 30332cc..1732473 100644
--- a/src/ft_hex_to_rgb.c
+++ b/src/ft_hex_to_rgb.c
@@ -13,6 +13,17 @@
 #include <cub3d.h>
 #include <stdint.h>
 
+t_rgb
+	ft_hex_to_og_rgb(uint32_t color)
+{
+	t_rgb	rgb;
+
+	rgb.r = (color >> 16) & 255;
+	rgb.g = (color >> 8) & 255;
+	rgb.b = color & 255;
+	return (rgb);
+}
+
 t_bmp_rgb
 	ft_hex_to_rgb(uint32_t color)
 {
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index 79b0d14..d480912 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -74,6 +74,7 @@ static int8_t
 		cl->key_input[i] = -1;
 	cl->ishud = 0;
 	cl->isoldmus = 0;
+	cl->doicast = 1;
 	cl->f_rgb = ft_init_rgb();
 	cl->c_rgb = ft_init_rgb();
 	cl->rlist = ft_init_s_ray();
diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index e0c2c28..45ed379 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -12,6 +12,7 @@
 
 #include <libft.h>
 #include <cub3d.h>
+#include <mlx.h>
 #include <stdint.h>
 #include <stddef.h>
 
@@ -55,8 +56,8 @@ static void
 	y = ft_find_y(key, pl);
 	if (cl->mlist.map[y][x] == 'T')
 	{
-		pl->pos_x = old_x + ((old_x - x) / 4);
-		pl->pos_y = old_y + ((old_y - y) / 4);
+		pl->pos_x = old_x + ((old_x - x) / 3);
+		pl->pos_y = old_y + ((old_y - y) / 3);
 		ft_suffer_animation(cl);
 		x = ft_find_x(key, pl);
 		y = ft_find_y(key, pl);
@@ -93,8 +94,6 @@ int
 		i++;
 	}
 	if (cl->key_input[0] != -1)
-	{
 		ft_draw_scene(cl);
-	}
 	return (0);
 }
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index 2a1beb4..1a9b51a 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -21,24 +21,26 @@ void
 {
 	int32_t	x;
 	int32_t	y;
-	int8_t	i;
+	int32_t	col;
+	t_rgb	rgb;
 
-	/* cl->red_scr.img = mlx_new_image(cl->wlist.wlx, */
-	/* 				cl->wlist.x_size, cl->wlist.y_size); */
-	/* cl->red_scr.ptr = mlx_get_data_addr(cl->red_scr.img, &cl->red_scr.bpp, */
-	/* 				&cl->red_scr.sizeline, &cl->red_scr.endian); */
 	y = -1;
+	col = 0x00880000;
 	while (++y < (int32_t)cl->wlist.y_size)
 	{
 		x = -1;
 		while (++x < (int32_t)cl->wlist.x_size)
+		{
+			rgb = ft_hex_to_og_rgb(*(int*)(cl->img.ptr +
+				(x * 4 + (y * cl->img.sizeline))));
+			rgb.r += 120;
 			*(int*)(cl->img.ptr +
-					(x * 4 + (y * cl->img.sizeline))) = 0x00ffffff;
+				(x * 4 + (y * cl->img.sizeline))) = ft_rgb_to_hex(rgb);
+		}
+		/* if (y < (int32_t)cl->wlist.y_size / 2) */
+		/* 	col += 0x00000000; */
+		/* else */
+		/* 	col -= 0x00000000; */
 	}
-	i = -1;
-		mlx_put_image_to_window(cl->wlist.wlx,
-			cl->wlist.winptr, cl->img.img, 0, 0);
-		sleep(5);
-	/* while (++i < 120) */
-	/* mlx_destroy_image(cl->wlist.wlx, cl->red_scr.img); */
+	cl->doicast = 0;
 }
-- 
cgit v1.2.3


From 7b61072321c71c1612a7b33d2e8d722a49c5bc99 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p1.le-101.fr>
Date: Wed, 11 Mar 2020 18:06:17 +0100
Subject: ca tue

---
 Makefile                  |   2 +
 inc/cub3d.h               |   2 +
 inc/cub3d_structs.h       |   4 +-
 map/lvl_five.cub          |  13 +-
 map/map_one.cub           |   2 +-
 media/img/spikes.xpm      | 451 ++++++++++++++++++++++++++++++++++++++++++++++
 src/ft_draw_scene.c       |   5 -
 src/ft_draw_traps.c       | 110 +++++++++++
 src/ft_draw_traps_extra.c |  44 +++++
 src/ft_get_player_spawn.c |   1 +
 src/ft_raycasting.c       |   1 +
 src/ft_suffer_animation.c |  14 +-
 12 files changed, 628 insertions(+), 21 deletions(-)
 create mode 100644 media/img/spikes.xpm
 create mode 100644 src/ft_draw_traps.c
 create mode 100644 src/ft_draw_traps_extra.c

diff --git a/Makefile b/Makefile
index c3c4e0e..d00464f 100644
--- a/Makefile
+++ b/Makefile
@@ -88,6 +88,8 @@ SRCS_NAME	+= ft_init_bmp.c
 SRCS_NAME	+= ft_floor_cast.c
 SRCS_NAME	+= ft_floor_cast_inits.c
 SRCS_NAME	+= ft_suffer_animation.c
+SRCS_NAME	+= ft_draw_traps.c
+SRCS_NAME	+= ft_draw_traps_extra.c
 #--------------------------------------------------------------------------------------------------#
 SRCS		= $(addprefix ${SRCS_DIR},${SRCS_NAME})
 #--------------------------------------------------------------------------------------------------#
diff --git a/inc/cub3d.h b/inc/cub3d.h
index ae353ae..016677a 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -78,6 +78,8 @@ void			ft_sprite_width(t_cub *cl, t_sprite *sprite);
 void			ft_sprite_height(t_cub *cl, t_sprite *sprite);
 void			ft_calc_sprite(t_cub *cl);
 void			ft_draw_sprite(t_cub *cl, t_sprite *sprite);
+void			ft_calc_trap(t_cub *cl);
+void			ft_draw_traps(t_cub *cl, t_sprite *sprite);
 void			ft_draw_skybox(t_cub *cl);
 void			ft_suffer_animation(t_cub *cl);
 
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index 957d154..7a30d09 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -182,9 +182,9 @@ typedef struct			s_map
 	size_t				map_h;
 	size_t				mapl_len;
 	int32_t				sprite_nbr;
-	int32_t				sprite_order[12];
+	int32_t				sprite_order[4096];
 	int32_t				traps_nbr;
-	int32_t				traps_order[12];
+	int32_t				traps_order[512];
 	size_t				line_chk;
 	size_t				map_start;
 	uint8_t				isspawn;
diff --git a/map/lvl_five.cub b/map/lvl_five.cub
index 02df893..bd8acab 100644
--- a/map/lvl_five.cub
+++ b/map/lvl_five.cub
@@ -12,24 +12,25 @@ F ./media/img/plate_small.xpm
 LT ./media/img/larry_world.xpm
 L ./map/map_four.cub
 
+T ./media/img/spikes.xpm
 SH 16
 MU ./media/sound/TAPE-DU-PIED-ET-FRAPPE-TA-TANTE.wav
 
 111111111111111111111111111111
-100000000000000000000000000001
+1T0000000000000000000000000001
 11111101111110110111111110111111
- 1111101    101001      10000001
+ 1111101    101T01      10000001
  1000001  11101101 1111110111111
- 1101101  10000001 1000000000001
+ 11T1101  10000001 1T00000000001
   101101 111111101 1111111111101
   111101 101   101   1000001 101
      1011101   101   1011101 101
-  11110000011111N1   1010001 101
+  11110000011111N1   101T001 101
   1011011111101111   10111111101
   101101  1L0011     10000000001
   100001   110111111111111111101
   101101 11110000000000000000001
-  101101 10111111111110011111101
+  101101 1011111111111T011111101
 111011111101111111111110111111011
-100000000000000000000000000000001
+1T00000000000000000000000000000T1
 111111111111111111111111111111111
diff --git a/map/map_one.cub b/map/map_one.cub
index 285fbf0..a774b0a 100644
--- a/map/map_one.cub
+++ b/map/map_one.cub
@@ -9,7 +9,7 @@ S ./media/img/pillar.xpm
 C 50,100,200
 F 50,190,124
 
-T ./media/img/linus.xpm
+T ./media/img/spikes.xpm
 SH 4
 
 111111111111111111
diff --git a/media/img/spikes.xpm b/media/img/spikes.xpm
new file mode 100644
index 0000000..2aef2ea
--- /dev/null
+++ b/media/img/spikes.xpm
@@ -0,0 +1,451 @@
+/* XPM */
+static char *spikes[] = {
+/* columns rows colors chars-per-pixel */
+"316 316 129 2 ",
+"   c #000000",
+".  c #080705",
+"X  c #0A0906",
+"o  c #0C0C0B",
+"O  c #100D06",
+"+  c #100F0C",
+"@  c #12110E",
+"#  c #18160E",
+"$  c #151412",
+"%  c #181713",
+"&  c #1B1A15",
+"*  c #1D1C1A",
+"=  c #211E16",
+"-  c #201F1A",
+";  c #252116",
+":  c #24221C",
+">  c #29261E",
+",  c #2D291F",
+"<  c #312D1E",
+"1  c #252422",
+"2  c #292721",
+"3  c #2C2A23",
+"4  c #2D2D2A",
+"5  c #312D24",
+"6  c #312F29",
+"7  c #353126",
+"8  c #3A3526",
+"9  c #3D3927",
+"0  c #34322B",
+"q  c #3A362B",
+"w  c #3D392C",
+"e  c #353432",
+"r  c #383732",
+"t  c #3C3A33",
+"y  c #3D3C3A",
+"u  c #413B27",
+"i  c #423C2C",
+"p  c #483F2F",
+"a  c #423E33",
+"s  c #413F39",
+"d  c #46412D",
+"f  c #4A442E",
+"g  c #454135",
+"h  c #4E4935",
+"j  c #434138",
+"k  c #44423B",
+"l  c #474539",
+"z  c #46443E",
+"x  c #494738",
+"c  c #484639",
+"v  c #4E4B3A",
+"b  c #504735",
+"n  c #534B35",
+"m  c #534C3C",
+"M  c #504E3C",
+"N  c #504C3F",
+"B  c #594F3C",
+"V  c #575035",
+"C  c #595136",
+"Z  c #57523D",
+"A  c #55523E",
+"S  c #59543F",
+"D  c #5F593C",
+"F  c #62573F",
+"G  c #635B3D",
+"H  c #695E3F",
+"J  c #444443",
+"K  c #474642",
+"L  c #484540",
+"P  c #4C4940",
+"I  c #4D4C42",
+"U  c #494844",
+"Y  c #4E4C45",
+"T  c #4D4C4B",
+"R  c #514E40",
+"E  c #514F4A",
+"W  c #504F4D",
+"Q  c #555144",
+"!  c #595540",
+"~  c #585443",
+"^  c #5D5640",
+"/  c #5D5741",
+"(  c #5B5444",
+")  c #51504A",
+"_  c #54534F",
+"`  c #585648",
+"'  c #5A5649",
+"]  c #5D5A4B",
+"[  c #525252",
+"{  c #595755",
+"}  c #5E5B52",
+"|  c #605642",
+" . c #635B44",
+".. c #605B46",
+"X. c #6A5E45",
+"o. c #635C4B",
+"O. c #695E4A",
+"+. c #625E52",
+"@. c #635F53",
+"#. c #676046",
+"$. c #6C6345",
+"%. c #6B634C",
+"&. c #716746",
+"*. c #72664B",
+"=. c #756A4B",
+"-. c #796D4C",
+";. c #77704C",
+":. c #7C724E",
+">. c #656253",
+",. c #6B6553",
+"<. c #6E6955",
+"1. c #666358",
+"2. c #6A6759",
+"3. c #6D695A",
+"4. c #706751",
+"5. c #736B54",
+"6. c #7A6D53",
+"7. c #736D5B",
+"8. c #796F59",
+"9. c #7D7353",
+"0. c #76705D",
+"q. c #7B735C",
+"w. c #6F6C61",
+"e. c #736E60",
+"r. c #757061",
+"t. c #7B7561",
+"y. c #7E7862",
+"u. c #817551",
+"i. c #827B63",
+/* pixels */
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                              .                                                     o                                                                                                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                                                      o * o                                                 + * o                                                   * .                                                 o o                                                                                                                                                                                                                                                               ",
+"                                                                                                                                                                                                                                    o 1 4 *                                                 * e %                                                 * e %                                               o 1 : o                                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                                    $ e e 1 o                                             o 1 e *                                                 1 y *                                               $ e 4 o                                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                                    $ 0 e e *                                             & t r * .                                             + e e *                                               $ e 4 &                                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                                    : e t e $                                             * y t 4 +                                             1 J t :                                               * 0 r 3 o                                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                                  & t y t 0 $                                           o 4 j j y %                                             4 [ j 4 o                                             $ 0 t t &                                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                                  1 W c t 3 o                                           % y I j y &                                             3 [ j 0 $                                             @ 7 t t &                                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                                  : I c g 3 o                                           % y x j 0 $                                           + e I x 0 -                                             @ 0 x t =                                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                                  : c v g > o                                           & t v v q $                                           * J I v g 0 o                                           & w x x 0 &                                                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                                                                X 2 v M h 3 &                                           : R v v g &                                           * I N N h 0 o                                           * w v v I 6 o                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                                : w Z Z N 7 * $                                       o 6 ' ~ ~ h =                                           1 I ~ S N t @                                         $ : g Z Z ~ x *                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                              * r Z Q Z n t 1 1 $                                     X 6 ~ ~ S v :                                           3 } ' S ~ v :                                       o 1 3 h Z Z ~ j *                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                              * I ~ ~ S S i 1 1 o                                     @ w S G ~ Z 7 X                                         6 >.] / ~ ~ >                                       + 2 7 n S S S g &                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                              0 >. . . .D t : * .                                     : N  .~  .~ w @                                         4 o.$./  .G 5                                       * e 0 S  . .~ Z ;                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                            * I <.$.$. .#.x : * o                                     ; ~ $.$.$. .n &                                       o q o.#.#.#.X.0 o                                     $ 0 0 S  . .$.D 7                                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                            4 3.7.$.$.$.#.x > 0 * .                                   >  .$.$.$.$.N ;                                       @ w  .$.$.$.$.v &                                     o : 8  .$.$.$. .w @                                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                                            0 3.=.=.$.=.$.n 3 0 * .                                 X 8 $.*.=.*.$.S >                                       @ w $.&.&.&.$. .>                                     o * 7  .&.=.=.$.V ;                                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                                            5 o.&.-.-.=.*.~ 3 1 @                                   & x $.=.-.=.&.$.<                                       & j $.=.;.5.=.$.5                                   . % * w $.=.=.=.=.X.9 +                                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                                          X 8 $.=.-.:.=.=. .5 * $                                   ; n $.-.:.-.=.=.8                                       3 #.=.=.:.:.=.5.8                                   o 4 : g 6.-.-.:.-.=.o.2                                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                                          : S 9.:.u.u.9.9.$.0 - 4 $                                 ; S &.u.u.u.:.9.i X                                     w q.u.:.u.u.:.:.w                                   @ 3 ; x u.:.u.u.9.:.u.w                                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                                        . 0 5.9.:.:.u.:.u.H < 2 s 4 +                               5 $.:.:.:.:.:.:.u X                                     w 9.9.:.u.u.:.;.d O                                 $ 4 > n 9.:.u.u.u.9.u.w                                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                                        . a 9.-.:.:.:.:.:.G < > y J *                             o 8 &.$.:.:.:.:.&.f O                                     8 *.=.:.:.:.:.:.f #                                 * 2 > f -.:.u.:.9.=.;.g @                                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                                          q 3.F D G &.=.-.G 8 : e J &                             + q S G G G G G G 9 X                                   o 3 n G #.$.&.;.;.f #                               $ 4 - & u &.:.=.&.$.G  .a %                                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                                          4 [ x f C G $.$.V 8 > 2 4 +                             o 0 v d d d b V f < X                                   $ 0 i d V D G $.&.h =                               $ e 1 % 8 G $.G S n x a 5 @                                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                                        o 5 L x n G  .G C d < = * +                               + 2 q i 9 u u 9 w 0 $                                   % e t d h C D D G D :                               o 2 2 & < C F n n i 8 5 - %                                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                                      + 4 s R ~ S $. .| N q > & $ .                               $ > 5 5 5 7 < 3 5 0 $                                   @ 6 q 9 i d d f V v >                               $ 4 2 & 5 i f u u 8 8 3 3 4 $                                                                                                                                                                                                                                               ",
+"                                                                                                                                                                                                                    . 2 E R +.4.#.o.$.X.S 8 : # $ o .                           $ 4 6 5 5 5 5 5 < > 3 $                                   + 4 3 < 7 0 0 w w t 0 @                             $ 4 & % 5 i i u q 8 q 0 4 y *                                                                                                                                                                                                                                               ",
+"                                                                                                                                                                                                                    + y [ o.7.7.<.$.5.<.H i > % $ % $ .                         + 6 q q q u u q 7 5 > 3 o                               . + * 2 < 7 7 0 w w g t *                             * * + & 0 i p d p i i q 0 e %                                                                                                                                                                                                                                               ",
+"                                                                                                                                                                                                                    $ e I O.7.7.4.8.6.u.X.p > & % * 1 o .                       + 5 p a p x p a 8 5 > 2 + .                             + 1 > 5 5 8 q q a i x s :                         . . 1 % % * r a N N B b p i 5 3 1 o                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                    o 1 x O.<.O.7.u.8.8.%.p > & * 1 y *                         $ 8 N Q Q Q x a q 5 2 > % .                             $ e 8 6 8 q t a a v x p 4 o                       . * e * % 2 t p Q F F N p i 7 6 e &                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                    o 3 j %.7.O.7.u.i.q.*.x 2 = % 1 y *                         & a Q ' | R x p w 6 2 > 4 .                             1 E y 5 i i a g s p x a 0 o                         * e - & 6 t s ~ $.o.R p i 7 6 y 1 o                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                    * t ' O.O.3.4.i.u.6.4.N 3 - & * 4 1 +                     X * x ' O. .R N g a q 5 3 e *                           X 1 [ s a a g x j x b s a 6 $                         o * % & 0 t x ' 4.o.Q N p 7 6 e *                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                  $ e j / o.O.e.4.7.7.u.8.N 5 - % $ 4 J *                       5 { 4.+.' ~ v x t q 5 6 y *                             - J a p s x L L N N s a e $                         . % $ - t t v S <.o.B N s i 6 2 $                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                . 1 y Z +. .+.7.w.7.7.e.i.' 6 - % $ e T 4                     X e +.8.O.] ~ I g a q 0 6 e %                             $ e r x I R R R R L s a t :                     . . + % $ : q a I ~ o.o.R B s a 6 5 $                                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                $ e y ~ ] / >.7.7.7.u.i.i.' e 1 * $ 4 J 1                     + a +.4.@.] ] ~ j a t 0 3 4 +                           X % 6 s L N E R R N N B a y 3 +                   . . 1 $ @ : t g N ~ o.' Q N B p r 6 - .                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                % y J R ] ~ >.w.4.e.w.w.y.[ e * % $ 4 T 4                   X $ e I o.+.] ' R I s a q 4 1 +                             & 8 x R Q ' ' R Q N s a y y %                   . o 1 $ $ : a g h v o.>.Q Q a s r 6 2 %                                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                                * J j R ~ [ ' 7.7.e.e.e.i.} 0 - * $ 4 T 1 o                   & e s N ~ ' ] Q I j t 0 6 1 o                             $ 0 L ~ [ ~ ~ T v x x s y j *                     + 1 $ $ 3 x I x ' @.@.' R x s r 6 2 4 $                                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                                              o 4 j j I R ~ ' +.+.1.1.1.e.} 0 * * @ 1 e *                   X - 6 r a R ~ ' I j j t r 4 : o                             $ 0 x [ ~ ~ R I I j j j t j *                     % 1 $ $ 6 R R R R @.@.E L x s r 5 e e $                                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                                              1 T y j I I R E o.+.+.e.e.w.' e - * @ @ * % .                 $ 1 0 0 t y x I ~ j j a e 6 1 $ .                           $ q I [ ] ] ~ I v j j j t t &                   . * * $ + 2 j R R ' +.' E R x s r 6 5 2 *                                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                                              1 E J j x I I ~ o.+.+.w.e.e.} a - % @ @ * 4 +               + 4 4 0 0 0 t t x I I j j t 4 1 &                           X & r R S o.~ [ ~ I I L j y r &                   o * * + @ : a x R  .+.[ ' E I s r 6 6 2 4 $                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                              4 J j j j x x R ' +.@.e.w.e.} a * % + $ * e * .             @ e 0 0 0 0 0 r t v I L j y e 2 %                           o 2 t [ o.+.+.' I I R L t t 0 :                   . o + @ $ : t g L O.O.+.[ R R x a e 5 2 r *                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                            $ e j s t s a x R ' +.@.1.4.e.} s - * $ o 1 y *               % e 0 6 6 3 6 7 7 t v j j t 0 4 - o                         + 3 t ' +.>.>.+.I I R x s 0 0 3 o                 . o o @ @ - t g I  .+.+.' [ I L s e 6 5 4 *                                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                            $ t y a a a s x N | ' o.O.7.u.+.s - % $ + * e %               * t 6 4 3 3 4 6 7 w t g g t t 4 1 o                         o 2 a o.+.#.} ] [ R I x x t w 0 $                 . . o @ $ : q j N O.O. .N N x L s 7 e 2 1 * .                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                            & e t a t g p b B Q ' ' O.4.4.4.s - % $ + % 4 %               + 4 3 3 3 3 3 6 7 7 w a a i q 6 1 o                         o 3 a | o.] ] ] ' E R N x g t r : o               . o + @ @ - i x ~ O.+.~ R N N x a e 5 2 1 1 o                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                            1 e q w a g x b n B F X.X.*.<.5.j 3 % $ + $ * o               + 1 1 2 5 2 5 < 7 5 8 q i i 7 5 * O .                       $ 3 i | O.o.] ] _ M I c h g a w 2 o                 + + @ $ * 0 x | X.| F B N b p i i 5 2 1 * o                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                          . : 0 q q i a f b C B | X.*.*.$.5.~ 3 * $ @ + o                 $ - - = = > 5 5 < 7 7 q i i i 5 > + .                       @ 3 i ~ o.o.o.} ~ Q g R s g i q : X                 o + @ $ = 7 x F | | B B B b p i 8 5 5 2 * .                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                          o 1 0 0 0 w i p h h B | X.O.X.o.<.~ q * $ $ o o               . % * - - 2 2 , > , 7 8 q i q i 4 4 % .                       & 3 w B  .S _ ] ~ W I c c a a w 5 +               . @ @ @ @ & 0 x N B B B V N b a i 5 5 5 2 : @                                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                          * 4 4 5 0 w w i i j b N B ' S S o. .g 1 $ @ $ % o             . * * * - - = = > > > < 5 7 7 7 6 2 %                         & 3 t N R ~ ~ ~ _ I Z c c a a t q %               @ * $ @ @ : q j x p x p p x a a 5 8 6 5 1 1 $ .                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                        @ 4 4 4 7 7 0 q q q i i p h S  .~ o.S h 5 & @ & 1 +               @ & & - = = > > > > > 5 8 i q 0 3 %                       X * 0 g N v N n v v g v j v x p a w %               * 1 $ o @ : w x p f i i u i i i q 7 7 3 1 1 1 o                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                        $ 4 1 1 > < 7 7 8 8 i u i p R | S S N g < ; & * 1 +             X * ; > , , 5 < < 8 8 8 8 i i i q > % .                     X : w h n n c h h h h v n n n n n i &             o % * $ o @ & 0 n n C b b f d d d i 9 9 7 7 7 0 $                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                        o & & : < 7 8 9 9 u u f i f b n n n d 8 > ; * $ % + o           * t q 9 u u p u u d d d d x d d u > +                       $ : 8 x h n n S G G D  .$.$.$.H F u &               @ @ + + @ = 8 G $.$.H H G C C V f d u u 8 w e $                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                      . % : & > 7 7 8 8 9 9 i u u i i p d i 8 3 > : * % % $ +         + e j a p d x b d x h h n n B N n i 3 % $ .                 $ 4 3 w d x n S G $.*.$. .$.$.&.X.F i 6 @           o + + + + & 8 n *.-.6.=.&.G C n f d d 9 8 < 3 1 o                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                      . * 4 & * : > > > > > 3 > 7 7 7 7 6 6 6 2 2 ; * & $ & & o     . * e e 0 0 w a a g j v R N | +.<.' a 7 * $ .                 & y q w g g I ~ ] >.<.<.~ ~ o.| R x t y *         o * $ + @ + - x  .5.5.;.<. .h w w 7 7 6 > > > - & @                                                                                                                                                                                                                                   ",
+"                                                                                                                                                                                                      . * * * * - - : - : : : 1 3 3 6 6 6 6 < 4 1 : & & $ & 1 $ .   + e e e 0 0 t a a g I R ~ ' o.4.7.$.g 0 : o .                 * y t t j v ' >.<.<.<.<.+.o.3.O.R x t r 1 o       + * $ + @ @ = a  .5.>.<.<. .g 3 0 3 3 > > > : - - % +                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                      + * * % * - - - 1 : : 3 3 3 6 6 6 6 6 4 4 1 : * & $ * 1 1 o   * e e 0 0 r t g g j v R ~ ] >.7.7.] t w 1 $                   * y t a v ~ ] <.0.q.<.7.<.>.3.3.' v t 0 4 o     . + % + + @ $ * t ] o.%.3.<.] g 0 0 6 6 4 2 > 1 - - * %                                                                                                                                                                                                                                 ",
+"                                                                                                                                                                                                    + 4 * * * * * * - - : 3 1 2 3 3 4 6 6 6 2 > 1 ; * & $ $ 1 e %   * T t 0 r r t j j j N ~ _ ] +.7.3._ t 0 2 $                   & e t j j I ] 3.r.7.7.1.+.#.3.7.[ I t 0 1 o     . $ $ o $ + $ & t ]  .>.3.<.>.j w 0 3 4 2 2 2 1 - - * & +                                                                                                                                                                                                                               ",
+"                                                                                                                                                                                                  . * e 1 & * & * - : : 1 4 2 2 2 6 6 4 4 6 4 > : : * * $ $ 1 J * . * y q r r r a j x j I R [ o.+.1.7.I w r > @ .               . % e e j x T ' >.3.3.3.<. .>.<.<.{ I a 0 : X       o + + @ $ @ & t >.0.0.3.3.3.Z t 6 6 6 4 > 2 1 - - * * 1 +                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                  + e e 1 * * * * - - : 1 2 2 2 3 4 6 2 6 6 2 4 1 * # $ & $ * e % . * e t t t a j j J v R [ [ } 1.1.<.x w r 6 &                   $ 4 t j x ~ } >.3.3.3.>.>.3.7.<.+._ a 0 1 o     . $ + + + @ $ & w #.t.t.q.3.1.W a 6 6 3 2 2 2 1 1 1 * 4 e %                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                  % e 4 - * * * - * - 1 1 1 2 2 4 4 6 4 3 3 3 2 1 ; * * & o * 1 * % e y a t y s x j j x ~ ' ] +.1.7.+.t 7 r 7 &                 . * e t j v _ >.>.3.1.1.>.>.3.e.3.>.~ j r 4 % .   . % @ + @ @ @ & w $.q.t.r.3.+.I t 0 6 6 2 4 2 1 1 1 * 1 e * .                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                  % 0 1 * * * - * - - - 1 1 2 2 3 6 4 6 6 6 6 > 1 : * & & $ * e J e [ j a a s x L x v I R o.+.>.1.w.<.t r t 0 = o               o 2 r t j x ~ ] 1.3.>.>.' ] 3.3.3.1.' x e e e %   . + + + @ @ % & g $.q.;.3.3.} W t 7 6 6 4 2 4 1 1 1 1 * 1 * X                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                  $ e * * * : : * : ; : > 2 5 > < 6 5 2 3 3 4 4 2 1 ; * $ $ # e { y { L s j x v N N N N ]  .o.4.7.0.>.g q q 0 ; o               $ 4 q a x I ' o.+.O.O.O. .+.3.3.>.>.' N a r J *   . o + + + @ % : v >.%.o.<.7.1.S c w r 7 7 0 > = 2 > > - 2 0 $                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                  $ 1 * * & : : : : : : > > > 5 2 2 4 4 3 6 4 2 2 ; ; * # # $ : y 4 I J j x I R R Q ~ | O.O.O.6.&.5.O.g 0 q 0 : +               $ 0 i p N B ' ] ' O.>.O.O.O.O.+.>.o.| B p a r % X $ + + + $ @ @ : N >.>.+.5.7.4./ x g w 7 7 7 5 5 , 2 = - 2 e *                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                                  * * * : : : : > : > > , , < > 3 3 3 < 6 6 4 > 2 ; ; * * # $ $ - 2 s j I I I R F | | X.O.%.*.*.*.*.X.x q 8 7 2 + o             $ q a x N S  .}  .o.X.O.O.O.>.+.o. .| F b a e $ o * $ + + @ $ # 3 ~ 7.r.<.7.8.<. .M c t i 9 7 7 , , , = , - 2 $                                                                                                                                                                                                                           ",
+"                                                                                                                                                                                              . % 4 1 1 : : : : : > > > > , 5 5 3 3 2 6 2 6 6 6 2 1 : * # # $ $ % 6 s x I I ~ R ~ | X.X.O.*.6.6.u.*.X.x 7 6 6 2 % : o           + 5 p b B ~ o.[  .O.X.%.o./ ] +.o.]  .| n a q %   $ + + + $ $ $ 3 F u.7.1.q.7.$.>.! c d i w 7 7 5 5 5 > , - 2 2 +                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                              $ e 4 1 * : : : : > > > > > > 5 5 < 6 3 3 3 6 6 > > : : = = # & $ - r p R R ~ N ~ | o.O.o.O.*.*.5.8.6.O.s 5 7 6 2 - e %           + 5 p b N N F ~  .] O.~ ~ ~ o. .' | | | N p q 2 o . o + @ @ @ % 5 o.0.5.5.q.:.<.O.N N p d w 7 w 5 5 5 5 > : 2 6 $                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                            . 1 T e : * * : : : > : > > > > 3 5 < 7 3 3 6 7 6 > 2 > = : = * & : 2 x L R R R _ o. .O.O.O.O.O.O.X.u.8.4.p 5 7 7 5 * e %           # q h b N B ' '  .o. .Q | Q ' Q ' '  .B N p a t -   . + @ @ # # 5 ] $.<.5.6.8.7.O.F N N h t q q 5 5 > > 2 2 2 2 $                                                                                                                                                                                                                         ",
+"                                                                                                                                                                                            + e T e * - : : : : > > > > > > < 7 7 < 3 7 3 3 6 2 2 > : = * * & : 0 x N N [ ~ ' o.o.<.<.X.O.*.O.*.u.u.4.N 7 6 7 6 1 e %         . = i h N Q Q R | F | | B Q Q Q R R Q | B N x x L 1     + @ # @ % 3 ~ ] >.7.5.8.8.$.' R R R d q q 7 7 5 > 5 > > - * o                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                            % e y 1 - : : : : > > > > > > < > 5 < 3 6 < 6 3 6 6 2 > : : * $ $ * j S N ~ ' ] o.O. .X.<.O.&.*.*.*.6.6.%.| p 7 6 6 * * o           = i b B S R R ~ ~ F B F B B Q R B Q B n B N x j -     X @ @ # % 5 Q ] >.t.q.7.%.<.| B v n c i i i i 5 < 5 > > 2 e $                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                            * e 0 : : : : > > > > > > , < > 2 5 < 7 < 7 5 5 5 2 2 2 > - + X . 2  ./ Q ' / o.%.<.%.O.O.O.*.*.*.*.*.-.*.X.b 0 5 7 : o             = p b B B B ~ ~ | N F B b B N N N b n n n b a a =     . $ @ $ & t <.+.<.0.r.<.<.4.O.| Q R b p p p i q 5 5 2 > 5 r &                                                                                                                                                                                                                       ",
+"                                                                                                                                                                                            4 T 6 : : : : > > 3 2 2 , > 5 5 5 5 7 > < 7 7 5 6 5 2 2 2 & X . . 2 o. .| o./ >.%.5.6.*.4.7.6.6.6.6.6.-.-.*.S w 3 3 : o           . = p B B R ~ N B F B N F B N B n B N N n N B N p - .     o o $ - g 7.<.7.t.7.0.q.8.5.O./ Q R p N p p i 5 5 5 < > 2 * .                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                          . 1 s 6 > : : : > > 2 3 2 5 5 5 5 3 5 5 5 5 8 7 8 6 6 6 6 6 +       4 +.O.O.+.%.+.O.O.4.7.<.7.6.6.8.q.8.6.5.5.X.i 3 3 *             X > x Q B Q N L Q N N n n B ~ p x N n h N N B p a :           $ 1 g <.<.q.q.q.u.i.r.6.O. .| Q N h h i p a e 8 5 = 3 4 $                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                          + 4 e 2 > 1 : : : > 2 2 2 2 2 2 5 0 5 5 5 7 5 5 0 q r e r 1 X       2 o.X.<.<.+.+.] +.O.O.1.o.<.6.8.q.8.6.6.q.*.x 3 1 @             X 5 x R N B x N R N B N B N L p s j b h N p a s p 2 o         o 1 j o.<.5.q.t.i.i.t.7.O.o.' Q N N h y s p a 5 5 5 4 t &                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                          * y 6 : > 1 : : : 2 > 2 2 > 3 3 5 3 3 6 6 6 8 5 6 r J e : o         2 S $.7.7.1.+.>.O.O.7.<.o.<.4.5.7.7.4.u.r.5.~ t 1 o             X 5 s x x x N x x b N N x s s p s x x x x x a a a 0 @           1 g Z S  .0.t.t.0.<.$.O.o.~ _ I v x x a a a 5 5 5 5 4 $                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                          * y 4 - * * - - : : : - : - : > > 3 : > 2 > 3 3 2 r T 4 o           > N ~ _ S ' ' ' ~ | R _ ~ ~ o. .o. .| o.<.o.~ t *               o > i a i r a a a a a i q q q a p t q q q q 0 0 q 5 +           o : 3 > t <.7.<.~ N S S I N v j t a i q q 5 5 > 2 > : o                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                          o 1 $ o @ o o @ @ @ @ o @ + @ @ @ @ $ @ @ # % # $ - 6 $             + 3 5 5 5 6 6 0 8 6 2 5 6 3 8 5 q 7 7 q q q 7 2 o                 + - - = - - - = = - - = - - - % - = - = = & & = $ X             X X X & t g r 6 , 5 5 3 : 3 > : = - = % % % % $ @ @ .                                                                                                                                                                                                                     ",
+"                                                                                                                                                                                            .                                     .           +                 . . X . X + o X O . o . o . X + O O + + o X .                     . . .   . . . .   . .     X     .     .                               o @ X X X X X   o   X   . . .   .   .                                                                                                                                                                                                                             ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "
+};
diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c
index 39cdadc..80cd1bc 100644
--- a/src/ft_draw_scene.c
+++ b/src/ft_draw_scene.c
@@ -41,10 +41,6 @@ static int8_t
 void
 	ft_draw_scene(t_cub *clist)
 {
-	/* clist->img.img = mlx_new_image(clist->wlist.wlx, */
-	/* 			clist->wlist.x_size, clist->wlist.y_size); */
-	/* clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, */
-	/* 			&clist->img.sizeline, &clist->img.endian); */
 	if (clist->doicast)
 		ft_castray(clist);
 	else
@@ -58,7 +54,6 @@ void
 	if (clist->ishud && clist->mlist.isnlvl)
 		if (ft_put_stage(clist) < 0)
 			ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist);
-	/* mlx_destroy_image(clist->wlist.wlx, clist->img.img); */
 }
 
 void
diff --git a/src/ft_draw_traps.c b/src/ft_draw_traps.c
new file mode 100644
index 0000000..42f837b
--- /dev/null
+++ b/src/ft_draw_traps.c
@@ -0,0 +1,110 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_draw_traps.c                                    :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2020/02/24 20:22:45 by rbousset          #+#    #+#             */
+/*   Updated: 2020/03/09 18:56:01 by rbousset         ###   ########lyon.fr   */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <cub3d.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <math.h>
+
+static void
+	ft_sort_traps_norme(float *dist_tab, int32_t it, t_cub *cl)
+{
+	uint32_t	tmp;
+
+	tmp = 0;
+	if (dist_tab[it] > dist_tab[it + 1])
+	{
+		tmp = dist_tab[it];
+		dist_tab[it] = dist_tab[it + 1];
+		dist_tab[it + 1] = tmp;
+		tmp = cl->mlist.traps_order[it];
+		cl->mlist.traps_order[it] = cl->mlist.traps_order[it + 1];
+		cl->mlist.traps_order[it + 1] = tmp;
+		it = 0;
+	}
+}
+
+void
+	ft_sort_traps(t_cub *cl)
+{
+	float		dist_tab[4096];
+	int32_t		it;
+
+	it = 0;
+	while (it < cl->mlist.sprite_nbr)
+	{
+		dist_tab[it] = ((cl->plist.pos_x - cl->traps[it].s_pos_x) *
+				(cl->plist.pos_x - cl->traps[it].s_pos_x) +
+				(cl->plist.pos_y - cl->traps[it].s_pos_y) *
+				(cl->plist.pos_y - cl->traps[it].s_pos_y));
+		cl->mlist.traps_order[it] = it;
+		it++;
+	}
+	it = 0;
+	while (it < cl->mlist.traps_nbr)
+	{
+		ft_sort_traps_norme(dist_tab, it, cl);
+	}
+}
+
+static void
+	ft_put_trap(t_sprite *sprite, t_cub *cl)
+{
+	float		dist;
+	float		calc;
+
+	if ((dist = cl->rlist.wall_dist_tab[sprite->x]) <= 0)
+		dist = 0.0001;
+	calc = (dist * 0.1 * cl->mlist.darklvl);
+	calc = (calc >= 255) ? (255) : (calc);
+	calc = (calc < 1) ? (1) : (calc);
+	cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] =
+		(uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 *
+		cl->tlist[15].img_h * sprite->tex_y] / calc;
+	cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 1] =
+		(uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 *
+		cl->tlist[15].img_h * sprite->tex_y + 1] / calc;
+	cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 2] =
+		(uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 *
+		cl->tlist[15].img_h * sprite->tex_y + 2] / calc;
+	cl->img.ptr[sprite->x * 4 + cl->wlist.x_size * sprite->y + 3] = (char)0;
+}
+
+void
+	ft_draw_traps(t_cub *cl, t_sprite *sprite)
+{
+	int32_t	d;
+
+	sprite->x = sprite->drawstartx;
+	while (sprite->x < sprite->drawendx)
+	{
+		sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 +
+			sprite->spritescreenx)) * cl->tlist[15].img_w / sprite->spritewidth);
+		sprite->y = sprite->drawstarty;
+		while (sprite->y < sprite->drawendy)
+		{
+			d = sprite->y * 256 - cl->wlist.y_size * 128 +
+				sprite->spriteheight * 128;
+			sprite->tex_y = ((d * cl->tlist[15].img_h / 2) /
+					sprite->spriteheight) / 128;
+			if (sprite->transformy > 0 && cl->tlist[15].ptr[sprite->tex_x * 4 + 4 *
+				cl->tlist[15].img_h * sprite->tex_y]
+				&& cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy)
+			{
+				ft_put_trap(sprite, cl);
+			}
+			sprite->y++;
+		}
+		sprite->x++;
+	}
+}
diff --git a/src/ft_draw_traps_extra.c b/src/ft_draw_traps_extra.c
new file mode 100644
index 0000000..a2fd0ab
--- /dev/null
+++ b/src/ft_draw_traps_extra.c
@@ -0,0 +1,44 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_draw_traps_extra.c                              :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2020/02/24 20:22:45 by rbousset          #+#    #+#             */
+/*   Updated: 2020/03/09 18:56:01 by rbousset         ###   ########lyon.fr   */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <cub3d.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <math.h>
+
+void
+	ft_calc_trap(t_cub *cl)
+{
+	t_sprite	sprite;
+	int32_t		i;
+
+	i = 0;
+	while (i < cl->mlist.traps_nbr)
+	{
+		sprite = cl->traps[i];
+		sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5);
+		sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5);
+		sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist.dir_y
+			- cl->plist.dir_x * cl->plist.plane_y);
+		sprite.transformx = sprite.invdet * (cl->plist.dir_y * sprite.spritex
+			- cl->plist.dir_x * sprite.spritey);
+		sprite.transformy = sprite.invdet * (-cl->plist.plane_y * sprite.spritex
+			+ cl->plist.plane_x * sprite.spritey);
+		sprite.spritescreenx = (int)(cl->wlist.x_size / 2) *
+			(1 + sprite.transformx / sprite.transformy);
+		ft_sprite_height(cl, &sprite);
+		ft_sprite_width(cl, &sprite);
+		ft_draw_traps(cl, &sprite);
+		i++;
+	}
+}
diff --git a/src/ft_get_player_spawn.c b/src/ft_get_player_spawn.c
index 6853313..ef2edd9 100644
--- a/src/ft_get_player_spawn.c
+++ b/src/ft_get_player_spawn.c
@@ -83,6 +83,7 @@ void
 				plist->start_y = plist->pos_y;
 				ft_get_start_side(clist->mlist.map[y][x], plist);
 				ft_get_sprite_spawn(clist);
+				ft_get_trap_spawn(clist);
 				return ;
 			}
 			x++;
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index 2d6d197..a0720ea 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -106,6 +106,7 @@ void
 	}
 	ft_floor_cast(cl);
 	ft_calc_sprite(cl);
+	ft_calc_trap(cl);
 	ft_memdel((void**)&cl->rlist.wall_dist_tab);
 	ft_memdel((void**)&cl->rlist.wall_bz);
 }
diff --git a/src/ft_suffer_animation.c b/src/ft_suffer_animation.c
index 1a9b51a..b800a39 100644
--- a/src/ft_suffer_animation.c
+++ b/src/ft_suffer_animation.c
@@ -21,11 +21,9 @@ void
 {
 	int32_t	x;
 	int32_t	y;
-	int32_t	col;
 	t_rgb	rgb;
 
 	y = -1;
-	col = 0x00880000;
 	while (++y < (int32_t)cl->wlist.y_size)
 	{
 		x = -1;
@@ -33,14 +31,16 @@ void
 		{
 			rgb = ft_hex_to_og_rgb(*(int*)(cl->img.ptr +
 				(x * 4 + (y * cl->img.sizeline))));
-			rgb.r += 120;
+			rgb.r += 150;
+			rgb.g += 20;
+			rgb.b += 20;
 			*(int*)(cl->img.ptr +
 				(x * 4 + (y * cl->img.sizeline))) = ft_rgb_to_hex(rgb);
 		}
-		/* if (y < (int32_t)cl->wlist.y_size / 2) */
-		/* 	col += 0x00000000; */
-		/* else */
-		/* 	col -= 0x00000000; */
 	}
+	cl->plist.life -= 20;
+	if (cl->plist.life <= 0)
+		ft_exit(0, cl);
+	/* TODO death screen here */
 	cl->doicast = 0;
 }
-- 
cgit v1.2.3