From 8df95b831296ae4d48148177292b59d6b15183c5 Mon Sep 17 00:00:00 2001
From: Anthony <bouillant.anthony@gmail.com>
Date: Thu, 3 Apr 2025 21:43:00 +0200
Subject: [PATCH] Create computer file

---
 Makefile            |  21 +++++++---
 puissance4.c        |  77 ----------------------------------
 puissance4.h        |  13 ++----
 src/computer.c      |  67 ++++++++++++++++++++++++++++++
 src/computer.h      |  14 +++++++
 src/game.h          |   1 +
 src/test_board.c    |   2 +-
 src/test_computer.c |  99 ++++++++++++++++++++++++++++++++++++++++++++
 tests_board         | Bin 26728 -> 26616 bytes
 tests_computer      | Bin 0 -> 36680 bytes
 tests_game          | Bin 0 -> 36952 bytes
 11 files changed, 201 insertions(+), 93 deletions(-)
 create mode 100644 src/computer.c
 create mode 100644 src/computer.h
 create mode 100644 src/test_computer.c
 create mode 100755 tests_computer
 create mode 100755 tests_game

diff --git a/Makefile b/Makefile
index bc8b3ac..727325a 100644
--- a/Makefile
+++ b/Makefile
@@ -3,17 +3,18 @@ CFLAGS  = -g -Wall -Wextra -Wpedantic
 LDLIBS  = -lm
 LDFLAGS = -fsanitize=address -fsanitize=leak
 
-puissance4: puissance4.o src/board.o src/game.o
+puissance4: puissance4.o src/board.o src/computer.o src/game.o
 	$(CC) $(CFLAGS) $^ -o $@ $(LDLIBS) $(LDFLAGS)
 
 board.o: src/board.h
-game.o: src/game.h
-puissance4.o: puissance4.h
+game.o: src/game.h src/computer.h
+computer.o: src/computer.h src/board.h
+puissance4.o: puissance4.h src/game.h src/board.h
 
 clean:
 	@echo "this rule must clean everything up (including candidate files in testbed)"
 	$(MAKE) -C testbed clean
-	$(RM) -rf puissance4 *.o *.cand
+	$(RM) -rf puissance4 *.o tests_game tests_board tests_computer
 
 run: puissance4 
 	./$< 3 5 6
@@ -30,7 +31,7 @@ tests_rand_ai: puissance4
 tests_smart_ai: puissance4
 	$(MAKE) -C testbed/smart_ai
 
-tests_game: src/test_game.o src/game.o src/board.o
+tests_game: src/test_game.o src/board.o src/game.o src/computer.o
 	$(CC) $(CFLAGS) $^ -o tests_game $(LDLIBS) $(LDFLAGS)
 	./tests_game
 
@@ -38,5 +39,13 @@ tests_board: src/test_board.o src/board.o
 	$(CC) $(CFLAGS) $^ -o tests_board $(LDLIBS) $(LDFLAGS)
 	./tests_board
 
-run_tests: tests_game tests_board
+tests_computer: src/test_computer.o src/computer.o src/board.o src/game.o
+	$(CC) $(CFLAGS) $^ -o tests_computer $(LDLIBS) $(LDFLAGS)
+	./tests_computer
+
+run_tests: tests_game tests_board tests_computer
+	@echo "Running all tests..."
+	./tests_game
+	./tests_board
+	./tests_computer
 	@echo "All tests executed successfully."
\ No newline at end of file
diff --git a/puissance4.c b/puissance4.c
index f216479..9f100df 100644
--- a/puissance4.c
+++ b/puissance4.c
@@ -1,17 +1,5 @@
 #include "puissance4.h"
 
-// #define AI_SEED 0
-// #define MIN_COLUMN 4
-// #define MIN_ROW 4
-
-// void flush_input();
-// bool is_valid_game_mode(int game_mode);
-// bool is_valid_board_size(int rows, int cols);
-// bool is_column_full(int col, int rows, int** board);
-// int select_random_column(int number_of_columns, int number_of_rows, int** board);
-// int select_smart_column(int number_of_columns, int number_of_rows, int** board);
-// void announce_winner(enum GAME_MODE game_mode, int current_turn);
-
 int main(int argc, char const* argv[]) {
     if (argc != 4 || !is_valid_game_mode(atoi(argv[1])) || !is_valid_board_size(atoi(argv[2]), atoi(argv[3]))) {
         printf("Usage: %s <mode> <row> <col>\n", argv[0]);
@@ -90,71 +78,6 @@ bool is_valid_board_size(int rows, int cols) {
     return rows >= MIN_ROW && cols >= MIN_COLUMN;
 }
 
-int select_random_column(int number_of_columns, int number_of_rows, int** board) {
-    int robot_selected_column = -999;
-    do {
-        robot_selected_column = rand() % number_of_columns + 1;
-    } while (is_column_full(robot_selected_column, number_of_rows, board));
-
-    return robot_selected_column;
-}
-
-int select_smart_column(int number_of_columns, int number_of_rows, int** board) {
-    int robot_selected_column = -999;
-
-    // Check if the AI can win in the next move, if so, play it
-    for (int col = 0; col < number_of_columns; col++) {
-        if (!is_column_full(col + 1, number_of_rows, board)) {
-            struct coordinate temp_coordinate = find_empty_slot(col, number_of_rows, board);
-
-            board[temp_coordinate.x][temp_coordinate.y] = PLAYER2;
-            if (does_player_win(temp_coordinate, number_of_rows, number_of_columns, board)) {
-                robot_selected_column = col + 1;
-                board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
-                break;
-            }
-            board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
-        }
-
-    }
-
-    if (robot_selected_column != -999) {
-        return robot_selected_column;
-    }
-
-    // Check if the player can win in the next move, if so, block it
-    for (int col = 0; col < number_of_columns; col++) {
-        if (!is_column_full(col + 1, number_of_rows, board)) {
-            struct coordinate temp_coordinate = find_empty_slot(col, number_of_rows, board);
-
-            // Check if the player can win in the next move
-            board[temp_coordinate.x][temp_coordinate.y] = PLAYER1;
-            if (does_player_win(temp_coordinate, number_of_rows, number_of_columns, board)) {
-                robot_selected_column = col + 1;
-                board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
-                break;
-            }
-            board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
-        }
-    }
-
-    // If no winning move is found, select a random column
-    if (robot_selected_column == -999) {
-        robot_selected_column = select_random_column(number_of_columns, number_of_rows, board);
-    }
-
-    return robot_selected_column;
-}
-
-bool is_column_full(int col, int rows, int** board) {
-    for (int i = 0; i < rows; i++) {
-        if (board[i][col - 1] == EMPTY) {
-            return false;
-        }
-    }
-    return true;
-}
-
 void flush_input() {
     int c;
     while ((c = getchar()) != '\n' && c != EOF);
diff --git a/puissance4.h b/puissance4.h
index ba2d9cc..7ebd437 100644
--- a/puissance4.h
+++ b/puissance4.h
@@ -7,23 +7,18 @@
 #include <stdbool.h>
 #include "src/game.h"
 #include "src/board.h"
+#include "src/computer.h"
 
 #define AI_SEED 0
 #define MIN_COLUMN 4
 #define MIN_ROW 4
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include "src/game.h"
-#include "src/board.h"
-
 void announce_winner(enum GAME_MODE game_mode, int current_turn);
 bool is_valid_game_mode(int game_mode);
 bool is_valid_board_size(int rows, int cols);
-int select_random_column(int number_of_columns, int number_of_rows, int** board);
-int select_smart_column(int number_of_columns, int number_of_rows, int** board);
-bool is_column_full(int col, int rows, int** board);
+// int select_random_column(int number_of_columns, int number_of_rows, int** board);
+// int select_smart_column(int number_of_columns, int number_of_rows, int** board);
+// bool is_column_full(int col, int rows, int** board);
 void flush_input();
 
 #endif
diff --git a/src/computer.c b/src/computer.c
new file mode 100644
index 0000000..6f22569
--- /dev/null
+++ b/src/computer.c
@@ -0,0 +1,67 @@
+
+#include "computer.h"
+
+int select_smart_column(int number_of_columns, int number_of_rows, int** board) {
+    int robot_selected_column = -999;
+
+    // 1. Check if the AI can win in the next move, if so, play it
+    for (int col = 0; col < number_of_columns; col++) {
+        if (!is_column_full(col + 1, number_of_rows, board)) {
+            struct coordinate temp_coordinate = find_empty_slot(col, number_of_rows, board);
+
+            board[temp_coordinate.x][temp_coordinate.y] = PLAYER2;
+            if (does_player_win(temp_coordinate, number_of_rows, number_of_columns, board)) {
+                robot_selected_column = col + 1;
+                board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
+                break;
+            }
+            board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
+        }
+
+    }
+
+    if (robot_selected_column != -999) {
+        return robot_selected_column;
+    }
+
+    // 2. Check if the player can win in the next move, if so, block it
+    for (int col = 0; col < number_of_columns; col++) {
+        if (!is_column_full(col + 1, number_of_rows, board)) {
+            struct coordinate temp_coordinate = find_empty_slot(col, number_of_rows, board);
+
+            // Check if the player can win in the next move
+            board[temp_coordinate.x][temp_coordinate.y] = PLAYER1;
+            if (does_player_win(temp_coordinate, number_of_rows, number_of_columns, board)) {
+                robot_selected_column = col + 1;
+                board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
+                break;
+            }
+            board[temp_coordinate.x][temp_coordinate.y] = EMPTY;
+        }
+    }
+
+    // 3. If no winning move is found, select a random column
+    if (robot_selected_column == -999) {
+        robot_selected_column = select_random_column(number_of_columns, number_of_rows, board);
+    }
+
+    return robot_selected_column;
+}
+
+int select_random_column(int number_of_columns, int number_of_rows, int** board) {
+    int robot_selected_column = -999;
+    do {
+        robot_selected_column = rand() % number_of_columns + 1;
+    } while (is_column_full(robot_selected_column, number_of_rows, board));
+
+    return robot_selected_column;
+}
+
+bool is_column_full(int col, int rows, int** board) {
+    for (int i = 0; i < rows; i++) {
+        if (board[i][col - 1] == EMPTY) {
+            return false;
+        }
+    }
+    return true;
+}
\ No newline at end of file
diff --git a/src/computer.h b/src/computer.h
new file mode 100644
index 0000000..491015b
--- /dev/null
+++ b/src/computer.h
@@ -0,0 +1,14 @@
+#ifndef _COMPUTER_H
+#define _COMPUTER_H
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "computer.h"
+#include "game.h"
+#include "board.h"
+
+int select_random_column(int number_of_columns, int number_of_rows, int** board);
+int select_smart_column(int number_of_columns, int number_of_rows, int** board);
+bool is_column_full(int col, int rows, int** board);
+#endif
diff --git a/src/game.h b/src/game.h
index 75d431c..4e31cb1 100644
--- a/src/game.h
+++ b/src/game.h
@@ -3,6 +3,7 @@
 
 #include <stdbool.h>
 #include "board.h"
+#include "computer.h"
 
 enum GAME_MODE {
     PLAYER_VS_RANDOM_AI = 1,
diff --git a/src/test_board.c b/src/test_board.c
index 018c493..5e351ae 100644
--- a/src/test_board.c
+++ b/src/test_board.c
@@ -2,7 +2,7 @@
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
-#include "../src/board.h"
+#include "board.h"
 
 #define GREEN "\033[1;32m"
 #define RED "\033[1;31m"
diff --git a/src/test_computer.c b/src/test_computer.c
new file mode 100644
index 0000000..63a111d
--- /dev/null
+++ b/src/test_computer.c
@@ -0,0 +1,99 @@
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "computer.h"
+#include "game.h"
+
+int** setup_board(int rows, int cols, int default_value) {
+    int** board = create_board(rows, cols);
+    if (board == NULL) {
+        fprintf(stderr, "Error: Unable to allocate memory for the board.\n");
+        exit(EXIT_FAILURE);
+    }
+
+    for (int i = 0; i < rows; i++) {
+        for (int j = 0; j < cols; j++) {
+            board[i][j] = default_value;
+        }
+    }
+
+    return board;
+}
+
+void reset_board(int rows, int cols, int** board) {
+    for (int i = 0; i < rows; i++) {
+        for (int j = 0; j < cols; j++) {
+            board[i][j] = EMPTY;
+        }
+    }
+}
+
+void test_is_column_full() {
+    int rows = 6, cols = 7;
+    int** board = setup_board(rows, cols, EMPTY);
+
+    // An empty column should not be considered full
+    assert(is_column_full(1, rows, board) == false);
+
+    // Fill a column completely and test again
+    for (int i = 0; i < rows; i++) {
+        board[i][0] = PLAYER1;
+    }
+    assert(is_column_full(1, rows, board) == true);
+
+    destroy_board(rows, board);
+}
+
+void test_select_smart_column() {
+    int rows = 6, cols = 7;
+    int** board = setup_board(rows, cols, EMPTY);
+
+    // Simulate a situation where the AI can win immediately
+    board[5][0] = PLAYER2;
+    board[4][0] = PLAYER2;
+    board[3][0] = PLAYER2;
+
+    assert(select_smart_column(cols, rows, board) == 1);
+    reset_board(rows, cols, board);
+
+    // Simulate a situation where the player can win on the next move
+    board[5][1] = PLAYER1;
+    board[4][1] = PLAYER1;
+    board[3][1] = PLAYER1;
+    assert(select_smart_column(cols, rows, board) == 2);
+
+    destroy_board(rows, board);
+}
+
+void test_select_random_column() {
+    int rows = 6, cols = 7;
+    int** board = setup_board(rows, cols, EMPTY);
+
+    // Select a random column on an empty board
+    int col = select_random_column(cols, rows, board);
+
+    assert(col == 2);  // The expected value based on the random seed
+
+    // Fill all columns except one
+    for (int j = 0; j < cols - 1; j++) {
+        for (int i = 0; i < rows; i++) {
+            board[i][j] = PLAYER1;
+        }
+    }
+
+    // The AI should select the only non-full column, which is column 7 (the last one)
+    col = select_random_column(cols, rows, board);
+    assert(col == 7);  // The last remaining column
+
+    destroy_board(rows, board);
+}
+
+
+int main() {
+    test_is_column_full();
+    test_select_smart_column();
+    test_select_random_column();
+
+    printf("All computer tests passed successfully.\n");
+    return EXIT_SUCCESS;
+}
diff --git a/tests_board b/tests_board
index 74e2f07dd6600edda11e746f20c1c567898064ad..4963c645ce1583ee18bdcea9857c70d6a42b9165 100755
GIT binary patch
delta 2323
zcmaEHf$_(A#t9mX6%#e@a~g6ofPvv=LB@0@k>ye|#FDx!pZD`H`zy4IuDkrF=+EXJ
z=J$Mzy_0K%@)#8+zZQy+KFY$t;L+*&!=t(O2ScfbM=z^6A4ufjE{(}?!aj`JlUECu
zGQOCsC?d&dHrZOFl+kAMMiDK>dWFu~H=U&~JUT-k9C!Wj|NsC0FYhoiFf`YG_+KjK
z(aU;}8)VG!9Uv#Y5c&Q8|7)Xe*ALdNZ@{uEkY&I9`v3p6h(|B$G-S~SzyAL}?)n9!
z|K)ZDh{+`!Ff-~sdRcRjm2UzWV%F{Y!DEI;ugFo5Hji%C2Of+UJh}zCUB7tD@HqH@
z$%FAiH$&&~7coo>4E*~JbRK`<_3QutZr2yhFBmOdztsA{-7k!6cqqtlWcUB9=R)$H
zIY=7hf$PYkiogE<Z+88{*zNko+Vus0kL~~e|G~zCRPKeSe8KbU|NoZ@85kI#9s|iO
zh01;S`TzgRRt5$Jk6zYVsMwvKAm_emt_QjILv6N4FKabK3KG(5e}Y2o2gv)c%{_Wq
zy^tj*fHgz>`lA+Pl{2z*;ZKl*e=v5t{;+m^QFG9vmsK4i{~`@6^??!MO8!0xoqr&E
z{xC8yFua!ScKy?N%%hj}A16|vsDQQnVeEE&F_}d|lkvi2JqdTlj>%;bZj6DG_ezK}
zT28(y5wKZ9@&?=F157NN6pk~hPGNX7rHSFulm>=JQ`Rs%nzDuA(Ub`ckEYCEcr;}W
z!=ovC7#>YoGWm^S4yVMo|NlV=j%9PAQZ%Ei4HE+cgDamv8<R6H8?!MJ4?72g0s{j>
z4kH7D$>f{L%8Y+D|5cvN$*8h<rY;vVlQ_%djZ9*jcN;wCur&HD3<@s>1|g7l7#J8B
z=e%HMU|?-wXJ9bqOk-eRV49e~dY6-d!34@nVa?@WU@)D0+ftv=YBIN#45RgA4J%bf
zmC1fq(z2>hRS-RDP##2&`s6k%eMYUx+pJU=#U|gjl9m;R%0pC3KzR_=l9Pq4&FlGD
zL2l3#f;dtaLNPGTVMqtLl7W%qGBX1M_c3+`2H9991_nPy1_oYHh$?Xw2)&Atfq|!(
zoq>VnqPP{vLmcd)%nS^?EUcM%B@9d)tP9y0K-3%%#mI4*iGhKMi9LaZfq{voo?VKW
zfq{vU?JQW7)t!@pfsccUk?jg76IDY@6JTaw5MbhDU|?l&WB`$Dn;94w*r&0B$WI&$
z42*)mI2ah}88}qA7#NsjnD{Cg7#L20l<I+;$YIOQz`&fs$OF>-2qX+5gc#VG7?c<o
zgcU%Vw3&E+fn-2B8ALd^7#JAi*g*FGn4D!JB^IaO2Xf2A90txb4h9Av_AMY!Po8BX
zRqrDKGL~tg4<jfReUu<P4^dDoGWv3Z6f#YWU~!cIIfa2?C4^#N&SVJWgQyK)nGTgS
zfk|dDgor^TLl_ts*mg29FtCC6Vt+Up7#Ky_E<oeJhN&K+g>g<V69WSyC|QX@b;f`l
zB&q<?$22j55#%6I9f*4ZxSl~x_ySFrc}xrp%tiU-3}R4MC2%>2LCii6p%{EYN|N()
z7?gw{W~MN(6x)kKWIZ4h12ag0jTA&d1_J}jEvN!;R4_1rJnjy)B8P#2bF!tK4AV=d
z$>DbTjLehU?UERoC%>|jVPxLSZvU0pL4|>v+m4%=kAZ>Ngn^mEN|Di;+mhQ;m`Q?x
zfrXn<kWq-8fq|8k!Bd!lfsLPmTag3AV%K0`=9A%OVBnaX?<B^^IXTW*mYoZtd~><8
zAtR?hBLf2~0|!Ie<c%&8^=zPYJ&lopVHP6;!(m1ShG&cn4E&%Z$tcgn&*jL-z`zJ5
zWI$r7pm5M-Vqjn~0TI?r3=FK!Ai@U}1tB07D-Q!F6D(IT^D(lrHqW2W$}^vpF_Kl<
zfR%H1DXVZPD+h-@D`zQ_@?;-ZaYnnzX|A(5<v_X_I2gP@?lNS7xeMeLklUC*?qN#=
z*#jm(mN9`Gzyxv`v(MyUw~l%~j!0J45>}o_R^AL&VU9>v-WHB%Rv`|1R?ZSufk;+q
z1|}B9G*-c8R%?zZRtJtWR=HiQf)iL}7P1PYv5G{pil(zlb40R=HgiO=YB4aeFfkW%
z*s#ijw0W`eFbnNs<xOW5=CEbuZRW6Jm3a!%CK$;o#bL`TSi)*7s?VyzVaqC!#wr=f
zY6Q~HVaciv(Jk1)ssR#V4tc^V0}<k5Hr%y&rF#Sqb8%7fq>z@${UMo?<ylxa{|ULm
z#Hcd)Vz@b@&1BAq|B^h=Z1M)0)<9`ih(Uni$7aRI=bVgBCUYk1bE-%}WK}jhCc85;
z3Qz7#GiN$yH~CPS9Ve#?MDEOF&UAC8tL~GX((O1IgCK&LlRMMR84D&KOt)wH5jmMD
R!;b5J3`DAuak5vu902@VHqQV6

delta 2495
zcmexyp7F&6#t9mXFD7c<=QQPH00Yy_f{f`*B4MskrhC}e$ogKhaDP#vKf&7P@X^gZ
z%<uUa`zF^2<uR&Gek~LseT;>H!K2glhevbm4~9|=k6u=DK9I=4T|txMgnbx8C$APR
zWqdhVQACn4VY0PIDP!8^jUrl%^#+}_cREXNcyxwd@aSc|%nj0Xd<Vz@FVuej|9{-|
z1&ICH+@qIuH?kz>@Bjb1U2inMV6=37Q7hun%enwr`qi)h|C?Q3Fm}7Xuy(ysbI_xg
zwFM&o;{Gp?v2Q@ezGSawWMJ^<WzB`iLF`=*R`3C&;B{oT>l=?59=#$*L0pe+*9#tu
z7d*NJx?Mkb%<wq)fXRdLLN`O_@fX2N3=I7H4s;%W;qVLLvJYUF@gtia2zJ>A#%|XS
z)~+||Yvz0OvcBg6d;5hOSnD0Ir{2_Nd-Ss2gvdY~CJuJk7m!Q90kQ^J^4Cv<wO_#2
zE<~2T{Sy=*Ul_YxzrX^dm5YI)-lOyQiwj`6H;mn`Z>(MK@b|p^_y4~~FKZUE{y9HE
zq4ooAw;{4*J(Ar&z;+uUODBNM|H0Vp`U7US7)1VsZYbE?Ka30v46kLoUH^0*^XO&$
z%Lxt-h_98wy8keCyWW`0ETPGGezLBFJ7fFgQVBQ7fFB@VJz?y2ePZqUpysMax9ba#
zk1Qr%kq8iAU|{&nFZau%`3;9h^AV22n;kh$vu#p1&ZyeJ@My{!hDTE-Fg%*l#PDd!
z9EL|z_Aoq}vV`H$lqn34rfgw&G-bx*H;Or&lHdOSzr)DDz`8k6DVkB%mWhFZ!Ie*-
zjmeppjoE~Whn<5#fq{V`hmnE7bn;DQWyZgo|0>VsWYpL^Q<saGNrGkaMkcY%yA7Um
zSjPMo1_d7jgAmBK3=9m6b6zkrFtE0;Gcd$*rZF%uFilKgz01kK5C`R@u;y|wFvL&3
zZK=<gGMU>-hB0-rhLtL#-(){4X<2`$Du|u{C=a41aB`cKK4Zw_ZB{Cb(vxpnNz2MW
z<sqtNp*)Ccxyi!T=Jmp?AU9|VK^&<Ip%@tFFsui;l7W%qGBX1M_c3+`2H6xQ1_nPy
z1_oYHh$;yd2)%)kfq|!(oq>VnqPP_U0|PS$yC^dQ11}3}W?l&cGY9KJc90<J91z9G
zahi#NftiUtfrWvAnWdgxikX3dnUU=*Sd`VBlYxPcgPD=-3Mgw;LrfE3W?&Ft;$&c8
zWpQKxk!+h87#KLFv4hA@91IMMg1<Nz80r}~Rk;`#m}HpvDj66UPBAbru<3!E$Y~3*
zIfao2r27#_7(@s$us1O%F)#=#fHY|{@%{qIfOIm5aBwj&Fh;Y1?Eg7A%SK8pTE7n*
zRXGe?X&ej;p6pvd0Wo=&ja0p-1jtyXi9U>=SoBna@H|98vB>Df4N}N7F@nWS0^}41
zhLsSCfhm*0j}M|YfMo_$(gY@%#Skb4kqlvAU|`?L$iTo3;*0&^WME(vWxD{416!tg
zh!(~<SD6?X7(vNO6si;AAW;R7KBkEtj35Vz>OkD%!1@bnf(JxDgBBA515<K-4ub^L
zRS^uVfnpFzd1%_51X5F!U(TQiRTINnSPxZ`1yRaS2vP$wM^y-7aRLJir#M6sW*68V
zL#Q)TK)C@;!8Vv7wor>Q7+7vY)qtZE6d9QeE_{v*9H1PO!@$5b`J=52lOgkDemi|e
zrpfkpNpeh?3~Vs{EE-V%+CiMcz_fY4-B;!$69#4uD@8_YZcA=YVI~O%24)ooZf-kn
zW<CZ67H&pCMj>_v2381zQJ8^&jg`Sun1O+vpMhJE1H|IcU|{Bx;bvgq)MK=lWahKt
zwq~{DR+sb?wvhyB;F`?sEW6p*S(lMB6jY=za4=*|-s37!&ko8<@=Od2(-;{T_A@dt
zJYr;E;AUcAkN|m}QJ#sP%aM_Rfe}n7gT!<|dBlW?fq}&uL^v@qFtB=o2v9x577b#t
z@-T2R!E!UR5F;yV^Zfa&JPTMEBUz;lSUGo>vI>{7a&YLgPX6N}&CINBGg-oQHlx+#
zEv~9MAjg0l0CEr$$N_8_pfm+0K&CT+Y-9pCg*kXKt6N7sD@PP7ABQa~YY8i-KC1+W
zEh|qND{myL8Uqsx6Ne?MGy@Y0qZcb{2P@xmu%akdAr3oM&JtF0eO4QeG*+oyth^Ig
zW#+RAq_GM{vT8x~$wTyUcCt!5hZ-ryVav)}!YZiGs=#5(Dw4)38p-Of2UV{OQP0}}
zv6(sR3EXOC>0QJ+@#$uJ_XwWJvxA#Ci<0&A^z@61k|)cAWKULLVcFaha)pUeV{&4+
zIiv05nc@E>d7)Vr+@@e)V8~-)U=U&uVEDOtW5jb##;22KCh2o(NJ3JZ#^#Gj?#ztQ
zlO@y4nZ)cT2c_9@2D(7x-c6pFX3k{qG5J!O9cOkBM6h78WV$)ygUNyE_DmU3lP9Iy
QaplKCq$(LF--?q109eFKXaE2J

diff --git a/tests_computer b/tests_computer
new file mode 100755
index 0000000000000000000000000000000000000000..a1c01814781908237943a909f10aeff832497a61
GIT binary patch
literal 36680
zcmb<-^>JfjWMqH=W(GS35O0AXM8p9?F`Q_HG8h;b92hJZco`fR)EHD5*cccXSioWs
zd6;?_eS--i4x>3BTn1*SJ_!(mfq?;?mVv5+(I7X0gg`XNJ`fulR^Wt)!e|Bo2p^=6
z6~u({Vd60Qs|ZMvfdNLt#6kMN_8CCr8PI4SPyjG6Fu-VJeIO|XTZlddUsU=7G+YFr
z{)g!U34`=mK=oNb^}%QZkOBq<1{e(sPmmiy*aB)EI*sOR26TNHP<`mM3&hzBFdAeB
zNGSMeNeYOKZV!x)%f0}pzAuI#Qy3V~=_e3j1{e*p10)pqv?K)-E+95B7#7VzQ2TJj
z!vkn|!e~%@gUr{@$xJdc(a%ZI&B@Fwt<bHoFw-?N(JRi^GXhD2)4T!$0|O{cx%-7O
zFflM30J#+!j0{W-5I)R2kQ^w9f#gBz7w$>PKfZp_zN>RvH_S8@_L%xw=mba&$lV}4
zAT=P1K<c4R1aU$3Fo3cqNDVkV7#l(2Odv5K1_p+UspoPnKXt>h4M+|J2Qe@(fYhM~
zGB7Z>;SdMe1M(-j`olQX_u~-XjYB*Ohd3x4u-U7_z`%e_yby;uCvb?z;SgVsLp&LW
z_*@*~kvPN~7#J9o&;yf!fnf^+1A`!gG=o9_L=u)i8RFy9bMy1!i%SxVO5)=g;ypur
z<5N<LQqwbwOHzwMe4TUh^HM_+lX6laa@b|!6N?k`;xqFyOBmA1i!w`6845~EiW$<1
zQd1cUiZb&`(in0Rb8_;N8RFwJi}RB$E#r%m6Z6s-;^UJm664b{^AdA1t5O-_;}eUE
zQ;SOC(-Jdt7~<n|GLw>_Zp%%~%ws4@%u8V?E=fr(DgxP%oRL_>kXn&h!VnKqm7E=)
zoRJODo0FLYauX;=nK9&KCgs9e$q<&ikEfG!ypf)<2?LCYU>WI|g2IWB0R)*CKoG<N
zVP*zK1||kZ1{N?4%R7t=%nTnG7+}RL!<LED*g!ScFQ}MEW+pEK12Y3FBScN9R3;|_
z0}}&3C<8DsFla!_VOYF0Kr@j6nz#d0oC7T$VSHFU05TTlHjqzl_=89WaD58O^AH{b
z!viF7nB5?`7f9mJDi0*g@Bv92R3?B085kITAc^zC1VMQT>P}EO26Z}EwgIZ1oq++|
z9smn6Ffeo=iG#{3nD_)FagbRs@fk?s;PMJ8u>eUNWCv83VFi*n7fg_WfnfuZI5(2`
z4kU3NB=G}C;=D-WCy>PXki;(_iG#`>B&kv6Xb6mkz-S1JhQMeD47(8c%rE!LqxlVo
zM>p$9dj<xN)&nI>|1WqnAK?JC@EI8Xn|j$ZFns#2>TS=!z%S1LQl9||g-<UZ{{R1f
z0+<hK%zS!z5zYrSY(Bj_2<L+uG@o8>g!4fShfgmT!ug;E!>5-M;e1d-;nT}TI3LtN
z`1G<6&IdJwKD|tY^Fa-uPcH-Ed{D#T(@RGf|I>d}R<P?`7{KoT^k22r4&)mIzZQ*O
zipI}H<ENtWW6}7bXnbEZzAGBv7L9L;%r|`N*?BR}qw|qR^OFw&A+Cl83{QIW+WNCH
zF#H!awqs!UlBUNm-vWvi29I7_OFISzk6u<I5M}wJMAW03^_wjuYB~Qu;Fkw=K^P80
zX^&o8PLRT0Qzj6l`Ol;CgU7*l_8td+Fncf_^SJo0M8u<;buZKaj{gtR_~l&~;QB%F
z-(Y(eG+I%r9qQ3+I}610=zLnj<I!!q%$9-SMdiQ$|6ip1|Ns9O>sDI^2FBRK{PHOJ
zUzY#>{~u&fs7L2hkLEWDowaW|OJ8(`KIsm9(e3)C^IGTe7foCY3?7}XKRlXie=wBl
zdUUfUg51=3a2IH(VIL?7di1i|%7RoKe<Aws|Ns3Uu@}<+{{KJj3TpZ@ymmb9`UMn9
zuXVazKX}aW=oL8%;(Bzu{_tSD;L$D6?fS)IhR4ANOdgDfx?P`iGBvw?VeEGOV(t2(
z=1jBe2gYvK57w@4YPN&4oIDJ3GsL|fouLnoyZ!)~_}b~X>mM*f7i2cFO%Gr;{ejtZ
z;W$VoL$m82#%|X?AgfL{yZ&J8cKrdeYTJYfv2cq(fpgsT11NtScl`p&7TvyIx?Ml)
z0-4ZxuJibdt^fZ22M1Gk=#OsK51q##q41cMfuZ>WW6Ob34Ub+{cW@{j+@-<*PAQf$
zpg=q3(aY)vW*vX=?GGr>-hfPft=R4Q21{5m90&IcnqA*8cDuf@cKuLu-2>Imd{zbq
zsD;<S<{sRo1+nmiG|a-kVAk;$t$+Uihidl#NB3V=28IcU5cX((BY@xId;Y>a4oV{j
zG(5T)jx+rK4>A@kpnxtQfg}+6qucjGx9b;h5E?TvFf{*QECGd-E!5!_5Qp=FoeK)7
z95Czni!;ALHh}bl;sLDx8OSA|Xm19)!lU^B3nZ*SiN>S(0LUd6f*{u*3xZ69yJ#UJ
z$VE(G7p(?cd~laN#6`7Iu%P4uOB{b;1#^+>2S`wEVnGi|h2ySoAZh3WBn^G&c720L
zLxrHo0A)2$eEPltB_mMM3T0+s=yd(kT>Ay$5=XFw2X}cxT=H2G=8`pFHywYm;TI?s
zfk*N{8R7*vIq7!0zQB^41iD?HAY}+p)@^ou!PxEk0+b0(H@iLo<-O(?jFzrXYBqzD
z3c_W(nP4ts2ZzyeumcY63WK;T67Di-u*C5fV!xoV=K2N_Mt#gEVYCC})E8}k{{M%t
zO8>%G+d%oNm-Q~#$m1`3e?cWs@~A;)?VZlj8y=mZ7mmBWkpyQZa0&GC4g&*2x9f*q
z4@Qsf&<owJH#(1Xo`2yAN^zjv$=|Xa<YbVP?+sYE|78OOtm_X@l0q&?E?_H3ASvGW
zLU-t$?$R6J6xVtD#aRweRxB~;cKy(NfU(o{4N+!+0^zkK(MsXv;~oAUiU0rqH`ao^
zUc%As`sSq=BLf4p^o0h(7qmcd03~uPfdI*rKUhf!1W@Yn=td8O6YQ`+_(ID-fL0i&
zflw+2j&D$;-T@a9pe77B9^Rl7a?q*|QkDDxrJNV1zW@I}^Ly=^&I@2y|MBP!ebDXu
zqTBTk*dS2br{zHDjc(UJ2$PU2BuG7E(d`PVa1b>fydDA-?w}g4`2~vy<ArX9)&r&N
z;8g!w5UEN!umcpRh*XYj1I??v&e}H~ouv<8b*eIUzc6@o9)HpE?f-wcv)|NQ_2_ne
z01_|x2F<95Kmt{!$lmw>$~!ObfRbVDhySHw9=)s;VxUxa92^`k0>AzL|Jn%B0sza#
zBg-0tWJNrBS$&a3Wxs)nKyahuB`9k**M9g9$`GJd1lSB^WYzD#{{R2l483gvk12TD
z<U%(?=kXUYObiVC`wny-e-Zxm|Nm~+7vR$IORXQs60qT?M3J0731m33^EV*NmVjhI
z&hJAOjr$4;O=yaK!QW&1|Nnom=^&LQ5S1@HzyAOKav`K(vvz$`3X+R~%ISjSKvRbv
zy{slsF-fp%-+*2Fp*9=TRE5Yug89`KP>?~=l(|PQD<iVx*)Is6{-_1n^h*TEkL$jG
z+zV|xy{I|p(aU-dBL8ABSPIsH<L{FIw+sJ(QuS+DP-X(v>RTa-Ar46d>i{*%URb;S
zsl7b`sXY?x(fmdOQp$I`-T_x!%%Eg;_cOQ^^1`FJ_60*J7ucYeYZ*Xg-vdx_`f?&T
zoNj=1Fm;DM@JPPo(aUocB<Il``og1EMi6AqRIoYBpu~$@<i7wH`Ji4}srzwPNX@DY
zsW}lj8>Xo9_=~#Fpzr`yolmS?AAobi3y|??pP{+owMet;1IBLG2iC54_<NEe&7~I}
z-LXFq`J}V<Pjl^`|0TT5wSO2(`F2DwFfhF40S~;sX59grj6p6I{&;kje(~r8HQc{6
z|M*{G-|hMXM4LC){$VI(-vthE)?J{y25D{g^1vG5FFY7ecyx0>DjZOe#CW1p0IBth
zoLPT>3^?xk2Shd3zG0{U)iTzuFY4Gpb>8a$NOtIS{qouxY7M-t56@4qk`G$y@qrqE
zplbF_r|X~BT+O*(7@KRqFjVdbnTX=W&e9(s-_-Gg+v`8-*};Y5YgTY{H$PxRC<e7#
zQ#`s^R5d{LdZ+6T!vh|@tl>gPY4+F0|NlLDUB7sAf>K~Kvef*Kpw#{a)Y?h$&=vt3
zQo{OT#>fBvQKF}_^hamtmu}ZTy#b(Z1OIy0FP4Y+ryM|WheBuVABe(E-w!^Wt}j5X
zJJ&zp*0vf0xN779d*Frr|NsAAi+F%4na~g2r67YlkG}v-*rMCoT>FQ)gbNhI4;aDq
z1|)XD#-N7-!hVlV-xr{?RKn3*`-iDS{IwP+>4SSRKfra`>mUFBzm`H1oC7LgS$BXU
z9N`R)&e|KDrB^ybFL-qNp6GVH(R!eQz1#Ip>w!vW=3`_5wYWeT4v|AnfU}VREax(T
z>%C6bKhP}o@)$Uig4&}5^jNz7;cuM+SKWMo5vfm!)fP+FKc#7q9NT<=i5S%uFxAY&
zsOADE#h2X73=EJq^Ofco%$BZC_<OYfgUVHKBOK~M9DxFAo`ZAWg>D8U58_b`@;8zW
zkO%RqW`cCFA?BA_bi3kJ&5WWN>On0~lNsDWxB&Lx3z!GNoz|Bh!9^~l&3y?RKcLKx
zB{o6B07y>fZ(RUa4e}KZ9Uv(rU8Q-DJ~ECN1=#_TLe^me(}6WsAv&;n+z`}00gpsL
zJpO^dM;=rwgZtr-$bQ4$1M2z0n%l3zVetbr2>0?l*mt0Y1QwtDfYeIh+yIVv(Bw9x
z^aObrj}BPd5tO>KVLGs;ZkQd-FF0WKlv=`cU=0g|4j#A;Xo0H%A1ArM-=hi+1yEZB
z5(;1Vd)WR%t2szP2p;Ezk8Faf+)+Fl0;3@?8UmvsFd71*Aut*OqaiRF0wXH~Kx-wD
zee7CPlwV|}5Sj;CQL0dquK->Znpl#mkeiyDUsS1(mS3b$l98&Al%H6XqQ}KhT$HR|
zl3H96pPZjtP+F2&qz76m%aB<dpPZjlnwuA&R+^KeVW^`}lwV$~1JS0bU~8+8mY7qV
zN`$(SqS90bhT_zm)Z~)*;#|-&Scu6Q$@w|OnC61UDM(Ro#E_hy19A|YVa~w7;Fy!6
z0P~Ro$bZEO1)!y`DGJ4<$;qk3#UO80>M?+%;!!<|9Gnn&ERKgM0_%s$7bWJU<mW=e
zje+aYlpcmhQ>HLHn$pDZXi5XaqbX|`9!=T8@My{ehDTFoFg%(vhvCtbJq(YgEMZVk
zO@Wxm<qQsWg}l<-q|_pN1r6}R;bMiv5(Ps|D+aJKMrmei&}gJI0|SH3z5oA37#SGe
z-24CEhLM5c&%OWuLl_wt*4+R9A2f3?^}+xDIgAVpo)7>3?_p$M*!1xK|22#Z467gg
z|9^&&f#KWZ|Nq}GGB8Lz{r{hbiGd;P>Hq&aObiSYp8x;v!^FUF>-qoxIZO-;HZT7F
z?_pwKSo-4s|20eu4F6yJ|9^&wfx-Iq|Nn287#P&w{QnQy3laS0|9=x^28Io9{{IhQ
zW?(RT`~QClGXq2N+yDQkFf%Y5d;9<Y7G?&9*Khy-zrxJGVDs+(|1Zo84B7Ag{}*9l
zU^x8l|9=w}1_sbtdr*ilRs}IIRtPXk^RRPFV1$T+7RRr+_y0d=)QiD|9lYEVG!<?F
zS_^#l|NjFZjeG)bd=g&#+~ph%4E9o1TE;5iW!oTgV;C41R^0vnAFL6imH}dJ2?GPe
zg1i6!Z-9z{D3Dz}3=9m4_y7L~t?_1X<r8RQa^_`YTFt}G!N35LU&Fw_u=W1`|Ct~S
zaQOtd{22xYhJW|}|Nn_1{{b!!8uGaQ;QxPb(C8aXKeH1fNCC)v9!3TRrbqw(tDwkB
z!{v1t85r0e|Nn1;Y<@9FH^hBDj0_A)kN^L-0<G(Tn{UVjQUNj_ls;^p{{QcVte?pd
zBn|c-DBYwz{r^7+MLrTP4@yrfp5pO8BLl<7r~m&)q392U>j$Mj?Pvf0+n~7580<dK
z@H8l0y1)4U9~4gT@ON!yX1WJ90=%C9w4a9m<^TVn{RMC}$q;#vwIF|nFflNQzx@9{
z79;=*2c{6PB9MFu69YrY%m4q|P~>aj@>7@?7<Rq<|6dnbJ_Rfd4yP?l3=GF#{{Igy
zK;h;`ffazvzrw`8!1e0?e^q4tF<@!1{x6^jp;!O^2O`Ted4Lsw^ouYvFgU#W|6d<j
zJ`F4l)(^^e{;&T32MzGU!+^;jtN^4Rlpot){r_(WTE7KzAF~DvSOLh)Q9K#~qaiRF
z0;3@?8Un*C1YrBUVEem3O(~EUZ-NM<JyOrm_~0oh1_lQB-Xv(F5w<7k1*qW(+J^<z
zrvTkgrU>PO)(L@_k{|+U9~!9b4ibXNOMy6`eZf%up!yml1e5>z?|(jszX3E21l_j^
z;x7QLy=H*yI|K1=K;=P8s6l*bs7GOYt|UN$3=9mSP#Q)-wJ~Hs_fdhGVjwvVsD4np
z8N>&zHw4k*AOf`S8|pxqxCWE~6$bCw11SY9a{|#Y`{h6!1_t;(=HLGz{$qp+{e$vf
zfYv!OFo5R6!2X9ihv5TMeh*asCzKEK2h@0~QLz2n=mr`<(}M$)4uH}LP`Ut0H$dqL
zP<jEB-T<W!K<Num8r>d3eAxa(cV}lS1&z?8(!7#V1w%tU6Fmc6!%{HUu+GRx&%i_z
zDhzHiLZTTKS*VtPn$k=R6Ih`!!q5rbUw9DId_+|W=0Vgm^T5=5LDR@Hh$Ub($OJ_F
z5k8oD185!)$7{a65KO&0Gz~3;CIMu#LF^t@(DrUdu;+xou`)1#^Q19I3e@2%W?^7p
zY~}`aZbd(`GB7Z9iPx|&FtCHxIP(=78!^lhDFE@U85kJ&N{x*erip>nvV)e(@|BvI
zFie-30g{hqU|?VhWMN=nQsXfLrD!Hskcc{%<G>^i>bz+}IQ*d9(oEW54ub&43MK{y
zCS3@Rfx&?z7sS^W1{ng{v?;a+#5d+ngSr^hyA=nmMPiC(<SqvV5{m$6hW7>&NQb~-
zRtAQfV5Y=ZkZbNUbAvX8*Yo$WFfcHS34s>VGB8TsVP;?uVAkY_WMW_tY-M6#(Bl69
zGD|R;g@HjE>^lyrlEicdW*snxhm)U`fk6+{_X69=xs#QFLEn~{fdRy2<n&}>U@%C9
za+x@{urM$fdND#|Q@B9388h!^VPKfX$iOg%k%565<TwVfgb8yc0|Uc)Mh1rcFbP(W
zTUbFs3{hgr{Fae{;SwVQ!*fg}P<75s3=EbW@(c_Nzd)q}69WVHFOZLft}rq%So2R{
zW?)ESVPKGCVqjneF&Lx`m>C$Do%ult1QgpsASo9y2UZ3K5Z4K$5X4}R+0Veh!0gHo
zT7v=-U<DBj4D6zyI6VY1WF9!S1Q^&@*rk{m7+63<F!LC@KvMG=LFto+#RjbUJSzhO
z%Or5L{bH&FaVCQ~f0;@c85mfmfH@zTo`VdT3g&!b0xbn$nFi*3W-?=8U|^XJ=6q!m
zXJ=qwnE~c}W0D4$HWSSG&h(y%fq`WfnDd9J8^oCn=KNr~0y?o{4w&<kX)egLxnRye
zrkfyT^T3=nO#L9|%m;IJGd%z)TL9*qVp0RiECh2-Go1xFbP1Sqh67aQvn&G##pbT9
zjvS#N1DAvOd}a?^8CaYd85kBa&IJX_B5<%Uu)JhtU|7Nks?L~~LWMx-d^zJ`kg63>
zp=XQ?467KgfrM5=h18iD7}hd=012%F3o#!6Qw%K285tNhFfxOZ`$njcDLVthW=1iP
z&=#nW1uFx?Hbza5&~~Vh5EBE#PDUG$&@QM@JqrWF9!7tV&|av}Iz|SDLyVvl#C#Yc
z#Ky>E#KgeB#>fWh+RL)AX6BVJu!BksHV$@CW(Ec}4%SudAO#$!LF$;;6Ieik?4Xe{
z#%xftqXI;L7FaS)0<l1=R~SL#PmG{JEJjeAF+K)KyaN%S0VEz)2~aBJVU+|GJUpyY
zpv=O^&d9*P3n~V9L8*-wl(`w>m>3x3cv(P28))Q?aV8T31LHCfu^B`h01;<F#4Ql<
z97KRdAQ%~$85kJ(K!h}i&;SvpAi@bm_=AWT5RnNYDw!D=<k|QIi<uZ06hc7_5pgb7
zRt5%6W_U};9F(8r)fn>GAmuSX69a?Ld3FW{SzAU1hCoIJjG84J)ZmI_XJBBuC~gJH
zf{@T;hGa5f4rWGhcrru6lbMkX<PByf)^bh;1`$XsFhfF~$CjOefq8~xF37|UoD2-i
zGo?Xn7SK9QW=Op8g4m+2oD2*%SPVJXLE+HM!N6e54lZ~ZUD+8J%s4?~fE<iv91INR
zV736`E=~pp3ou)PQICs(!4k|?V0^~Gz+eStYcT3?GB8+!*#?X)><kPxV73Kg7Y74_
zEtu`V_=SUk!2!(nVEo0&z~BgG2QZ%CWMFUtvm+S&I2jmR#1xnq7!nwR*clkyL{ym=
z7%~`-vokPwfZbWZ$id0L;0b1zFs|cZVDRDwjb~OcPUB!;@D&1$DK#+mb22da@q@;P
zni#9t85sOI!0WIWnK&630{KDXgB^^UI2afrc|n`ZCNM7LU|@(AcVS{+n8Db>$-odJ
z>Bq#tuz-<^i-92)?1mMLH#ry>;y67RKzZ*fCj&z~mmUKH!wyDmZU%+~uzL<LzT#wH
zNa6@)VqiGJz~jluz`)8b397optT-7MShV^0&T%j>ut<Z74UjM=C`Lf8;R3}z0|SdN
z69WU^B9Iz;5UUZS3smud6()m*)j$e`8CXEEC;pj}fq`oxA4r^;gLNq=1#p0~oCN4p
zAyyVpyt1>fEeF+r6G3H{pa3TW1EZt_Cj&!019vJY$8xiRR2>J^z#s+_m;iAZSU|(x
zU^BRrI2ah%c)%(@Vo}LGot=S!ofj<6!_2^dWQbHaCj$eAE3Ym{7(qCKS`HvC1Ir8s
z1_ti^APacef|wZ?Kp0{G!YRy*OsSj<4AS#B85lSVn0RwQrh%jxxEFIWFtBs6gIwGW
z69sE$kkRB~U|@^^yNVCmL<5f;gG!h={0Zy~3@)#r-2?E5Gg#b{g@J)Jl8b@Cl@nwE
z)5I872@p>h!b@OX#mT_n#tpKMX<`Oja()hjCsbvMz-D#^hDa7rq0j)C-C<x)5CfI=
z3=H5_38>h}V({aGm=(gF36->is9|8sWbhY)NP^NXCn#({=7E!kBm*zVas06y3=I17
zq5Tx_P&(M*J75ksfI24u>~I69!&ATxH-tGH>{QS}KAg-6P^U70tpkaHt&?Ej1sTb|
zi-Undewi@Dg`k2N#A2M|3TkwM!bt(eIt3K#6j7`T1s9hNQ0v&Gpk9ESQ^WxBygD>w
zVi+Kf0qFocMwo#YWT9*}DE*4F*+QKIo`?YZ{ywPn4swpT7$p2+I6%=Rt^nahaDbvs
zTn7?u0qp)z1A;-G0mVutg9Oy>4E6}9Bs^BK7$l*wlEc8jASVk-SM1;<2kR<;XH38j
z;Q%>;T^wR9#1ZU@5MBhw9Z+J`hVVkb5yAlrA@--xUI*ylBao}uG8y=wPD)^Z2bBcv
zSp`dGG4Mm31fEaZ3#xh;7&%@tGca(2tDI~mNR@-$IavfM_94{_Bcz&Pgj6z&kV=LT
zQpqqvDj6O~CBq1*WEdg!2qUDdVT6=5ypXa6lwO%x*g*9<JGiW22bVQ`kg|q9nTvse
zgNc^|RNHe@Fz|ttGjLQgfXiqW27x793=AyC7<oYAoOxUf48m-nrLiE)3^J1$Bmp77
zJ1!U@B?8x91_lN$kR0a}E(Qi6VUSuyMg|6mQji2QSiK;qgkiJ+8+r~pMggAY0Y@5W
z;ztOSl^Ja$L3)@b#xQ~6(MAcvi(mpJ9~(W8QA`s9SRO!4@C3yLB>C7vROT=+2!qO1
zMq^fxKnqkMc*Y5A6{va7WXr|CU@Qkx0J6y+#50BPAT}9$Lv3QM<6>Yi;e^QLFo=K(
zVn!CQ(XfaGRUaT{FwOxR%OVR=?85{ymc<0Z^8kB*#S3Dr1K3zrsIf7k>Cn;<y#0rP
zfuRA^h64o$2Sj%Q%M_@J?I4>#qcU+^3=CZIpwMQTn8Conk^>#@fEfWU7-b;ZQ&?s~
zWl^-tA+$3vq%%X>OunqJ1l$Ns!05eYeHI1=9#ET!1=40>f+S{MNJ?dbq*NwI5@muU
zZ6-+4W`d-5CP)frf~0Uh4kk#d=C20TNsu%x07=uJT8fp0Z8HM{19F-cgrsSXS6mDX
zOfpP-pw8VXP@sU?0}LFGxfmFjQy6(bx*vgrL4*(kTN48VgYZ3&9&ILG&~Z+zAdL(n
z$3VqN92>}bX;4oJG}#ReX2v<%j0_BnE4dgL;`IAK?wgpyzzM4IeAu@zGBD`NLKK2J
ztsoZT9FQm@DCzo0fb3_Q=)(vq2Yr+vJP%P&LT2>k2B~A37{QVOHDM)4JE#Sk$q>i~
zQ5(Rr3n~ekZwARTXEB6`K_o*!seUJDJ{H6m+XeE2DBEY~$Od?V6P(<8LB$QoJ)%&J
zF<|$IDuA>xO^jd!xkpq7;+z03PUvvq7f=V6fq@~9iGhK+D8HOR4C<%^u4JeZ&<b&o
zqkKV1K#5gJ2x4Xm1Isk%s3NGb22#TelDCn9$b*vWU#J3bj6uBZ4z(eNfq@g$p5bK$
zDW3`T5qL@$?4y@3AMuKV6fjMU0sDbh8R`cX(5_;TrSMP#732`5ISdTq>p?-q$_7i;
zh$;*mZLFdYm5^X!m51;k!NjT!v%(4LDp>W!oXNljb$$kmH&hZ<eKBV-utS3eRDCh9
zgKBODMvkp)3=9I`x&jnQpzaC!KvN(a0|PXB!SfEdLjucCC^<<GH3vd+6{M1a=0-^7
z;s$3faM8fB7?eN2)defKx)6qBE$)Zh3=Hg`lhc?vKzm$RKY{~|m79TqiS-ya==?Jg
zaE-#u#{nA1=Ba>GBn&*23<4mNSr~XhMJ2d8VL`19KwJh6PSE%(NF^_*wB`n}K&uOo
zstvF@QAKVB2G*^NJQCat3?M}wAj3ce9|H%de<cRW?W`$~iYpZ%$p)&!?AiL57#OyL
zruG>a7{Ig9;3NbRWdyn3UIXMirimWlxVN_e*}yc>1)N3fogh31aPqSE1G$HJ;*NUG
zLT&~I7iig?!^I08>|<bf2ugAc3=Ho<gBO_$uHYJ$X<`Ti*E=*7f}q|9D4Rpfk6_?B
z4_-0CzyMl*0Wu~Kq9Ph<MhyFHsDig3S<vuG7DJ2>M0)}Q1N&`dh&UTG*Ro_Xq(k+l
zus?@NK8L7bV98?0fa(RE&%y+$$ob>A85qEoRXjAfK*oc#FwS`g%5mx-c?D2<VVao3
zcpb#k2Pt8in8DZ$;@LrXDd6BT@dpJL)5Hh{wg7Gh1_N+J7(h)1FDn2?gbt`@4>H+6
z8D{cMka8o4Ss4ucOSu^sG(o)kpm8?_1_n_765_1MFwL48$eK0HLCQhS0y$FC6T(XY
zJ5n<O!b<=<QZp0oNJDN0234>lcR}p|ublup@;=BOkh4@JAi8tFW~pjHcp2cpP_=~c
zQW(VTxfvK3<-l!(aHwJ6g&JVP1VFu$P23C&^3W8N!oW6_n}I<JY`GRxJ$T^<SiK);
z@ED|CN(y2DB<!WsAiN9)Hc-2ZTNsp%mq2ST@UjxH?xQRW3=$O#jNIxF<uTxN&aDUG
zK}t1lD@Z5=aDs9Kk2uIArimHsH=w5ZfI=IT<}w)sV2O%>L9!m?OI9{mkp*7r0=APe
z3zTKWAXemnvl*)a#861uV0D667{S26Xu{ww%)r28!obXD#cj=P$?Yj@BPjzaV5}Id
z6dA2qEfobNgc%rEEE$>kpaR^C!VC<otPGyQ3=C{44BXsy+{}Co4D4!P5e_u7*ccc%
z!9t46*4&ngB6)nC!uFC7OStqH?Il6xf~2_f_-rIogh7ULgA6y3WMJUoU;sNyQ3T`&
zUVa8{MGla)d}0jD93ba_UChA154Hi}0agYE0kDuF6UYlZU|%T;Ffa)6f_w^g3b&`Q
z1vdkO5Skl6N<nTA7GzZA6Xs@?mzEb0XJ8Nk2LRXxkgTW}$Q&>i<Q_4wWl*k-qzpR)
zgE&-(6&j|j3=9%zLc9zNlERG4eB9h%PlCf$iWlTFs7WCAN$W9y!w4({3OpN01_l|Z
zqfrE9p>e^%z#s?e*2`N#0*@OMb_!6t!2xD3$t1zRponZT$W#VKNa(OY5(3C}CQwW;
zFfc=n=3`)Bfky%>*hoc2h-#3DY$hPbBa5(eGYT>au`@7muz~^%S&Ea9(GwioT#5{y
z!us3{4BW`RQkR6q1P^Lh^Fq=YpD+V6AIR1GP+efN71==6IY`t<f?^4r20VpLz}^+q
zU|{A0C2b)@%z_kyVpo`-ft#CwK?Lee4h9BM^oS8dxB?Nm(9i@qLxP2ona_@!o7+<u
z5u1`=J9!xxq@a!jN0_=~JENox*oD$?aaK!iBykz!xbYMQxfA3m1_oKU25yiBh(s0G
zEICvuWL*r5P@nOE8W89)!3>FH7Fb;2jaWrKPhn78vxB|H&A`9`PO*wipxn&~$y1zA
zmw*Mi5i!XHPdnV0aliw0A_oHlFSfAc16#<;z`&0lH3IO!0tX@}-7qi+Lfrrjaad?T
zf=Y-Llu*G^5Z?%6R}D!<BDf?O7(^jq21;xUj2KCr3F;+21_ow~tbqt_Nbs}40|ybb
zaEsv{1K9)*UU1d}1urBSKwQg(a1ypqMkHfU!Nm)8AqN8kA0!X(L$a3uwkUvPAzlUs
zAy9u75oTc5K@v2Mu!01;D7eHx3U)EL2a!@U#2ez+q^dx}3HZYq5|}I)!OaRzKHLlp
zY*2&2<pnr#LP8JXL_~oFj}B<{1rBUTYC#TSXgDddK=ZvK8z_o+AejPGuPH(^1ux8A
zQ1PnB3W_#Jknw>66SWir%R-z52@L_v{33{mIw44$34^`J%fKLlo<l^Tc5_>^T5{*{
zA?!v(05}doSqJ2Nl)#5&9f(UL(6f#t+-#&c1V<F8cgD)V!2q7PVr2Zy$IHOT2)@Dq
z)Tw7=lxGIb(bqFDFn|svVPceL;%5gnv>8ENTc($w?mlQ`JCiU-xiW|V%esTd`ZyTC
z(`wj^Wdrr)W->A`%w=R?IL64p@RE^%0W|dowu0LcWD=N=2aV-xfcnp%RmCiz`70JX
zP-7c3<-iE)1+YeeECWq2u(Db)a5BNhJ0)0!IlNgpIP_ULOPQ2~S@{;SvX-z4>9cZ{
zunI9Su`uhiih?MPG*(Fvy^B=^M1`|TGcd6*da)`nFtIQ-vWi1^JRPiz-mJz3tb81b
zM46L{-5kbtRv8~w&fToSC8eya9OWR>**GS!^06^#h=L5}133cWG>|KpQ(>-PZH1^$
zV`I_~VP)hHW>vI<8OFs?&MLTul`9=VvSvV(m#{Hu2(xl=7_#!NVHNZOsX=3~rXy5B
z3|4|0%+FEI%E}Q1R*;5pD8Z0~hX5#CnHpK;Kqh!WypqPs9nZ?j5eX7vL->Zro|UzE
z{`>{3JWp8}Bbk^O7#TYmL8ERQ44_d4Mr=um8J3jb$%i!`lt92l6^I2+Dxg%t#2U!J
z$pjmf6lLY)h-Bp}2ZwqjD=$X`D~}DUVKb`|M+U1<1gj~B0;_5St7QqRU^=S+M+B?7
zH>=u2R<Q_HOAZBA%?MW85>};FRF%e{M8jN`28(<SX8v8Q0ux#J+OXJ?iK>@WTS}2^
z5!l75IFXfyBbt@bmNm!#>@!7B;Fhs!fT##oc@UMx3QAs#>8v~)86cIW$mv;>BaM}Z
zLxEMq8<O^mAW`MT%F_;u3^`C%W8h!_jTK{!3>M_b0Of6Per5x$ZD9lx;AjA4Rwhu+
zW(G$Ms}Tby6Kt?aj0!nS%ZHVZLmw34!jRm=38FY`!2V)h4f7XkD=W`#R>nw3wvGg;
z=ZR$H&0rPgh-Bq$;fQ7x;;;u57Xp!x_)KFJY-Y9Qh+=i%NMn`T#VR;~Rc0ZpKpLw^
zB&%pTt29R>t7tPv6ss0E6%=#WKtkP%m4{hq7b|Z%t1yQxD{nK09jnY!kT$_cRw)i!
zR>2ZhQGHew4qH}<G*-z-RwIyh4og;bP?UMG3U+|wkcm0u39Af5h>zKD7s$C_f9XRC
zE)IBE#n{TK;lnD-q0h>};ms;g%F4F@q*x@9m2U#82uB2~P?Iey4@VlSSR^ZN3D|4Q
z`mBP`Fj584t6?tZZDkeN4GuRZ=E@RS$nh|9?E;mDW*MxkYgq;Ml$WzIMuW4fJ$R6u
z1AGSt))a!7UD+mrGAWn<CkJqz1()&Qbi(S%z{v#bLyJMYWy7io3Wx|uc-XKyLkkj6
zz?FcDa~8G;a9U@H00$!rhXPnFO9ZPn0}~5N2`i%ktD_yOIENxD$8}bIkZEbG0?n*^
z8LX@mK(z!oH(X<t@=gau94Jtjv|vRTPcADXNQXD8p#iJJbr6#+4HRrmV6z#RK(>Qa
zu(8>)N*L^7Wqrm03i0`%Jm<m@#VW}m%&L{fDq8|deFdQGx|WsW39EoNE6*NQMh;t6
z2Lo2E>#TMl|D-{Z6WDw<FDw>>8L+Z)G_wla;PBz_VP%YB4K)C#U=ACw*BQN7r9dvU
z0U58kkX0^%)tp0tRVM<JviZQNUMPxHfg_DoG=i090;}jmR&|bftTGX-yc1YOBXMy=
zqQJ?HiMetfELgx*Wg06VGtUH2dXtR=m2V0h3amWWSQRFMj92DRVCCgdU{#33%@c`)
z7(5fhST3-!LXjYci$$_Za-^{eTw@gjd2S-BEQsQm$EpXW<ypm|SY<ipv6^w9FeRcO
zd1)rA5=fmFIPo*4L2T^Duo2=BN^Jz!fB6urydYNXM6-&AnQH>9kd2SeDNf8|$aXF*
zDoV{O2`))Y&UPzG%uV%8OwUYah>!B~HZ+WnFHX$MEXk}&EiyC!D+wt|Oinco09`=h
zTE>tao?ny_oLQCXndg*QQVhCYBtJPZ2Xc2wK~XCB`jTwl#EO8#k_?~Jy!4U`kjXd=
zb~bSh@XpO*$o9=oDa}a@4fS*Zna%(*BDgd+H?gP^YKnVmiC=0(iDzDMNl|HXNoIat
zKr%zNV{u}hdrp2*Vop$MN>zRy!ZSFnG&BrxbdL}9^Y-%(_j6^)c1}#rNcG9gONCer
zGSLxq%}QcWW_m^mG;qKkWQdPX0R>@vlpk)>4M3(lhX#lE`?^Bh2M$J`)U*;5CxV^s
znO9Pj=%198nhcX<h>tG;+Yz6enp;qmpN3=x*g+_UglFdDgchf|B^H;2=9OpWr7*<D
z=YqB4aUwL#vl!yzD~b{;8QfD#0*X@0GV@D|QA0N=KOb~~4CoFR$h|b+RKNi8po^=c
zkB`4ILv~PVNoG-M3fPZGsVN)0N!d5GxHvIA)u}WsEwu<7yd|L2gyf~r;#9}9lGLK$
z<op6?+<~G#B%>%b5n?D<TefRONorAEVordwQ)UT6X<l(=dR}UZ0{HS8a7a296(v?W
z=jUf<!i)h$q;q~=NoIO!erYj?m6(~ATIBEV1c}p}{JeApFab9Xw6-rkKBFAuV^FX_
zvq}Isci@b2OHhD-gTobXT8AV&Xvh&zYK{@Ju1O4#><S4Gkne&s5>xWa-4hEKz`+mB
zsYqe#o0)==SnwrVBLi&t%QY9tIB+}#rIwTy<v{`vUKTJEgYF$F&d4t+Q9uhzcxeK<
zv?#A6wJ15Y0F-wbvJp=9O{{=e;|Wrbmzd*`npgm_0u-{4yo5JoolQVR6DUX^ITw`K
zAO>UyrRJn27N>^f`v-%KFH6kvOD#(+0;ghVApo&Gv^cdWAV0G>KQA@K7rc=kVnlp=
zX%e9<Wn_XY6TyNI<R`bHRA}PF7Zrv^?x`j4l;>Iob}2Y{K}yBcbic&hREV2Frh+_+
z8qe`5X&?ue7L*h*xch}FIBRPgnn1S%DCp)EXB3xYE9mByl;)+{rl;nm7G)+Y=;kIC
zC1=<|?od<EO;^zMH&W0oE=jRX&npG%*G&uXbXL$!%gfhID$UF($;^XrQY)ZwS`6VA
zm6T*E=%(f8W|rutf$A6Cg8WQS%qr-nm4XW?-4f8r1t8^RnZ=n&nK_vym9`m~DJiK?
zBQpyUbu*LG6m-*)({u}p@=H>|1->n4L%)J<T4Hf!UUEiJeqMfQu`ari#h`i(rYXNj
zx45JTl+kt5AQH(riNzT(>CF5*NH}_e>O9c(S&5*;>0gwRS_F&y;^fkle1`b={Is<A
z5{7tB|9DW*6b}m9_~Z=Gg<7E0A76rUi~#B}0rB9hkyM%n)}B<F7N3+@oXX(p8xRu7
zkdg{=VP$+0=&%L`aCrnKAZ1ZNkZVXtWV~CbpL2+(zaQv!v9!#b)VzF1#2T6-qLn~&
zQZ>}jV+O_Z$Ok}xeGCq;R8ZxVmXnxX3>E{00$3=yv<P;b0w{2k^HWlj%SssH^K()_
zVP2dH4Oz4U96)Mw6N|D_ix}cTSELoC7RSRv7<_vgB!)cw<BJo^QXv5zpOc@Q%@7ZE
zgb_o4k7J~3kRg;dVsP?z404GN4si@|1-lSp3fPUF{$Q=p_;>U4ab<{ySPp6dfzF(O
zU$^E2sxymHi&IOWF$#`*1#oP7`p1`NrliKFB$gyH#Fv3{0nCr!8`zSIQWHy3p&G$S
z&ddaADL4$l$p++eu%EzAi!Vq_F=a?eO-n4zDTyyj%qdM}h%e16Ely1_g5B~4(vg&y
zoLyP~4F_0&<zyC@fR5HEW++ZA0m*{XAo!LzkRC_~fGvfbRS}<`292v?280Oc)DVV}
z)ZBvj<ox`il+3)ul2nG2{M6$3f}F(4)S~!u(5-X%N%<x5kW(~LQ=q0Wq-Ex%#HZ#K
zlvKtS=j4~b?xq77kd~Q~0}ToA?RQXiNl{{6aaw*+ZhUbGD6C5ILAkI9+ckNR2#ya6
zjt_G5bMg0$cl3ltHb^Yk*D)vrB!qUGUV36~YJ6^f3i#X;aHa$wkHV0iS_1P=W?n&Q
z3FugqjMCi1ym(NJ2$oLFjL*$4OJ#s~n;{v}(2g(2Oicz0Ca1=i<Y%YmF%;#O$0z5P
z=79|<OU%iH2MEX(^gx1{1GWd@DF_P`eNeO99erKnef?cr8T9n@;Rtm2OHL-J27@%~
z^+AmrFcA-Juj?fj6fo$6%JdZd^yFk+Lqpw&)DX*@NEi>Y#|)~X!on=x%tRM*<z{+b
zDd-kXcr6b$m$3EtRlrRHomZ2apT~d@0M{dVi8=8pscFS}8Avk8`MJ6Ic_>2Q0w3Jq
z)XQK1`8pn^9fhBkn4F3%0}3$kkuR{bW%QC6^fU5vQ}q+`N|N$R^>e{pm16y3&tT_x
zLnEX3f};HNqQu->aODwSoLX3#npcvUnv;`is9#c`Ur?G^T%4GfoN59(iHAYIw73Wq
zXrR#5#|TYBL;cLW<ebu!RER<-2UB4ZsQU#r3$GIWlFEYAVidDL#X?GInqCG2SPm3s
z;4W1>s9@8}V1WBOg8`iW!J!4ZQ4*{&B_}fp!pO`A(M8Gna1F@}pxgr$h3HKN`B@(<
z3|oo;UDbd=F@lylFns)vE&<wC3c4$@2fFbSx|W3jv{sn~i+a%N2_^;sh6~7-D?<10
zg2d4;R|QQ)fW%?@hGF)Dmbfx9NHb_a?_UJD4<rZL0>j84&H%et5+nw~HK1t=1_1`x
zK4g#>2zP)MXE2B{!0x96iGlEP9R39z&5X@opnFmo8H5;M%gCXN$QkZ|%@<;Tt!4+!
zl!43#El35ahb_p5E{<c^i^E<n(E2GX;VFbe99Q^Df@WD5L>N5GK(0W=*!-mq4p?FM
zJ;N{^R$y}^;ro?g;sIcB2?h)3K5CfwLeTys1}O#xXneuMBSCXO3<3=3OM<eX;^@n+
zmV!1fF$gfg?$-vNLBznoPzF{HGZjJCg2e?G&=&#qg2fT)U@Xx5ln{de18is-whnR$
zBldf9H{&qp2oCXkAaN!^2H3uJn7vOx;xG;p&C3kBZ&-i<eZ}?<uzCRo^rfvV(C|TD
zuLYVYfiBiZG99ujQ;<oN0k&HVyjz!nfnhq-Uf9G5Y&o|c)O^^C8*GOGNFJ8=ku3;=
zsz=`%kp$ZO1Ip~6+o!;39-^xdsvdo32WTPzoB8vZK=;jJrYq1HS)gf2h^Yt?w9`V6
zNs2)LEgfD4xra%L0k)4DrUP`ZH7GrxFKK=Yb|*{~g8l;*7hrG)6?6;?46p@Y9MJGY
z-`S%C6-QrUZ3WsU%pi^7PB*A}^wpbTU~z;yV5~x@IR<F{Ed#3;U_f7d*a8(tUtl~5
zDvrLvXEiee)_a%tfz`uYfuKRVOF`j@zNGIm4)ssK?#GO;*I@Mm4Cw10|AWO5_Q6<e
zETDV@;~{8e9O7lrctqcnp#fGez<|DUYceQ5GVy>CBf@YHD>%8R#83~^Nli@3j0bJ(
zPA)1bE-6h*(@SPRTtppTk{h24x{4aqX-UbCPX~{i#;26z7Zt}RmR5i({+!g3)D%4f
z&`>9)3eY9fnemCBp|<$cypp0y25<*IKBY7_w~`?~9*GAYFho%bZh;{;Inf(g@$neF
zT|FZPY@&u(MGY8WO%7;tBR<|O2-GHa^>YDroa5d7LgQUMpn@JQK@9QkKK@RQKJor;
zZo#f0@ga^*KCbZ$@h*{mj=rAG;5I#^EguhQ@`GCEutq-gj&AfG4CwalMA$Xnh%OA;
z72%-Xo&)U4Y|us7AZ?%~Ry^p^Zd94H%)Ct4McpVe$lapMVo3i8(pQ1s6P|-PIFH=Z
z!*^3Tavv7d87wYI$;^uf^(!HreT@Eih;KZOi_Jm(T~K$e2z1AIGSXe;DBg*W5Ak)5
zhs9M&aejP8VqQv4Dg#=t80GHsf*erm9nz};rzc3~DIRqI23MysK0c|q80s?g4lDX?
z=y121FvNp;-kHVmNZr2_lu;aHm!OP>6oao_hZ_Zoc~D;*)R#o*27;WAqAETW6o}vy
z3GpGK4-HNRpj+V4E_#RSH#Pw!pJE1Zzn(#_xH7jSF^NI1xTFX|XTVtC?ok1QUS57l
zs$P0tsa`=*enDzcNhOjHxSOb(nF1AZbn?^%6*yq!8HvRi40<V*dBv5v5W1v@0W4FN
zT2u@gY(wV67cuA+rRF4pG(cGeIVB8w;3*`%f}9e)^!ySAFrzp%nL)24wW5SU51bqH
zit@q1p_iHgEpswbiWuNL20dso6Avz`AV$L2AOm3Rl*+us+{|PKJ&0*Z#l;MIppIl}
zUI~L<N@`MRdVFG0VqSV`F^rp;mzED>CnhBorIx{XIhlE>Fm^G>-w^#E;dl@qR8Uif
zLA!rIO=Z|wD-zKD5R8Uy?15VXQVZuWFfb^CHgkddC=gK#sD2m?Z6-k^L8qL+Sr7)O
zIS<-O4YNN3svkx}k4b_kMrv=t1VH^MWc{%I9E?V9dw~x4fawL%pd$mm{r?YIfCJ((
zfDV=bF<`U?hy&W31*Ku_OemKj5wzVJ$^Wo(lwkA;Xn=v-2x7wYOF#_(wbMafhWQ_M
zE)$G~ox=oG4!(O6#s<-a&@+x;`eEl9!Dv`N19sL8OdX7_1D!F7<bT+?Nif<0WC=8m
zk=+j!X6S{+3Cuj$IZiMdb`BQIesup&hw68N8Ylr(0Ha~&NP+Z&`k+v023YukmimF*
z1(F9F0Xqi?N`uljSR6{A$NwB~KNoQhmI72Cj0SD6g=z&;P-zAj4eD<r+y4M60i&T@
zuwD=W<HKn1nH@;!>jP8*MuX%*`d}C;4Yz+Mn)_k>OBn3|>QKWpgH8fMVuP5VlWLIN
z59{B-XkL&aB#a(@pgX)k`eE_U0L$=D`V&YJNk7c}Frl+h_rvsmfo^Aq(crtzV2Yt>
z1&PaW8%_TW==OIQ4LU;@Sv@TMz{H+H!vvHEL1M7}qyltnIJ$ZmA4Y@5L-;^D9zmLs
z&S}#iQa>m|^CRhpjsF-BsUNh*43zd^?uU(ESU~lIR-%HO1}c9*G|b(wcvuY$KbU^l
zIc^!CduACJ7(hoRfb_vIOh1eU9UB9RVwisTI0>}ifZ2ntAI1ljZy>W^`W2x4Jpmm0
z(aUoM@VE^FJlVm_h3VIZ2|#I(TR}`1tqIi+5<|w;Q2RmWWh0Bj^ufd|aOjtIgs8BB
z?(~N6K*w{zSP<F;hyGB|hARdJhB#2*K$L<>bo+yF=--?GR?aX5G|&lQf=P7!aZvrx
z><U%`BHTeojxjJWyoMbB2oi**6%Z3<P9_fhMr9yX3=A`185_a{C3i3jrXNJ3DFMr0
zr~p$80nmgCY6oB||3Th^r5%V42&n)%h=zfIK^LvS0@(*q0U<%dx!Cmkwm{@7(KMiO
F831^&LAn3{

literal 0
HcmV?d00001

diff --git a/tests_game b/tests_game
new file mode 100755
index 0000000000000000000000000000000000000000..f1cfa60e87bb4232589ffc7d78236e1434260775
GIT binary patch
literal 36952
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

literal 0
HcmV?d00001

-- 
GitLab