From 951799b7c6346d0cdb705ed16118ca83ad056760 Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Wed, 12 Oct 2016 13:43:45 +1100 Subject: [PATCH 1/9] added basic board with blocks, solids the hero and arrow controle to move Signed-off-by: Dominik Wilkowski --- dev/010-constructor.js | 148 +++++++++++ dev/010-init.js | 0 dev/020-scaffolding.js | 95 +++++++ dev/030-draw.js | 127 ++++++++++ dev/040-move.js | 68 +++++ dev/999-init.js | 119 +++++++++ dev/dev.js | 557 +++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- prod/index.js | 557 +++++++++++++++++++++++++++++++++++++++++ 9 files changed, 1674 insertions(+), 3 deletions(-) create mode 100644 dev/010-constructor.js delete mode 100644 dev/010-init.js create mode 100644 dev/020-scaffolding.js create mode 100644 dev/030-draw.js create mode 100644 dev/040-move.js create mode 100644 dev/999-init.js diff --git a/dev/010-constructor.js b/dev/010-constructor.js new file mode 100644 index 0000000..90d9c61 --- /dev/null +++ b/dev/010-constructor.js @@ -0,0 +1,148 @@ +/*************************************************************************************************************************************************************** + * + * Beast, and ANSI node game + * + * Beast is a node adaptation from the original written by Dan Baker, Alan Brown, Mark Hamilton and Derrick Shadel in 1984 + * https://en.wikipedia.org/wiki/Beast_(video_game) + * + * @license https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE GNU-GPLv3 + * @author Dominik Wilkowski hi@dominik-wilkowski.com + * @repository https://github.com/dominikwilkowski/beast.js + * + **************************************************************************************************************************************************************/ + +'use strict'; + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const CFonts = require(`cfonts`); +const Chalk = require(`chalk`); +const Fs = require(`fs`); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const BEAST = (() => { //constructor factory + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// settings +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + DEBUG: [Debug], //debug settings + DEBUGLEVEL: 2, //debug level setting + MINWIDTH: 120, //width of the game canvas + MINHEIGHT: 40, //height of the game canvas + BOARD: [], //the board representation in integers + HERO: { //the start position of the player + x: 1, //left aligned + y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom + }, + LEVEL: 1, //the current level (we start with 1 duh) + LEVELS: { //the amount of elements per level + 1: { //start easy + beast: 10, + block: 200, + solid: 10, + }, + 2: { //increase beasts and solids, decrease blocks + beast: 30, + block: 150, + solid: 50, + }, + 3: { //increase beasts and solids, decrease blocks + beast: 50, + block: 100, + solid: 100, + }, + }, + SYMBOLS: { //symbols for element + hero: Chalk.cyan('¶'), + beast: 'Θ', + block: '░', + solid: '▓', + }, + RL: {}, //The readline object for reuse in all modules + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Debugging prettiness +// +// debugging, Print debug message that will be logged to console. +// +// @method headline Return a headline preferably at the beginning of your app +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method report Return a message to report starting a process +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method error Return a message to report an error +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method interaction Return a message to report an interaction +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method send Return a message to report data has been sent +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method received Return a message to report data has been received +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + debugging: { + + headline: ( text ) => { + if( BEAST.DEBUG ) { + CFonts.say(text, { + 'font': 'chrome', + 'align': 'center', + 'colors': ['green', 'cyan', 'white'], + }); + } + }, + + report: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.green(' \u2611 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + error: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.red(' \u2612 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + interaction: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.blue(' \u261C ')} ${Chalk.black(`${text} `)}`)); + } + }, + + send: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219D ')} ${Chalk.black(`${text} `)}`)); + } + }, + + received: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219C ')} ${Chalk.black(`${text} `)}`)); + } + } + } + } + +})(); \ No newline at end of file diff --git a/dev/010-init.js b/dev/010-init.js deleted file mode 100644 index e69de29..0000000 diff --git a/dev/020-scaffolding.js b/dev/020-scaffolding.js new file mode 100644 index 0000000..8ef3d1c --- /dev/null +++ b/dev/020-scaffolding.js @@ -0,0 +1,95 @@ +/*************************************************************************************************************************************************************** + * + * Scaffolding + * + * Scaffold the game canvas + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.scaffolding = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`scaffolding: running init`, 1); + + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD + BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// cords, Scaffold the coordinates for the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + cords: () => { + BEAST.debugging.report(`scaffolding: running cords`, 1); + + for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { + BEAST.BOARD[ i ] = []; //add array per row + }; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Scaffold the hero onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: () => { + BEAST.debugging.report(`scaffolding: running hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// element, Randomly create and distribute elements on the board +// +// @param element {keyword} We can only scaffold 'beast', 'block', 'solid' +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + element: ( element ) => { + BEAST.debugging.report(`scaffolding: running blocks`, 1); + + let blocks = 0; //keep track of blocks we distribute + + while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { + let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); + let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + + if( + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x ) && //row after + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row after one column after + + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x - 1 ) && //same row one column before + randomY + '-' + randomX != BEAST.HERO.y + '-' + BEAST.HERO.x && //hero position + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x + 1 ) && //same row one column after + + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row before one column before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x ) && //row before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row before one column after + + BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot + ) { + BEAST.BOARD[ randomY ][ randomX ] = element; + blocks ++; + } + } + }, + } +})(); \ No newline at end of file diff --git a/dev/030-draw.js b/dev/030-draw.js new file mode 100644 index 0000000..e665cf6 --- /dev/null +++ b/dev/030-draw.js @@ -0,0 +1,127 @@ +/*************************************************************************************************************************************************************** + * + * Draw + * + * Drawing out the board to the terminal + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.draw = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// printLine, Print a row inside the board +// +// @param item {string} The string to be written +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const printLine = ( item ) => { + BEAST.debugging.report(`draw: running printLine`, 1); + + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// frame, Draw canvas with logo and score +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + frame: () => { + BEAST.debugging.report(`draw: frame`, 1); + + customStdout.muted = false; + + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + // Readline.clearLine( BEAST.RL, 0 ); //clear current line + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error !== '' ) { + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + BEAST.RL.write(`\n\n${error}`); + } + else { + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment + spacetop = `\n`.repeat( spacetop ); + + BEAST.RL.write( spacetop ); + BEAST.RL.write( + `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + + BEAST.RL.write( spacetop ); + } + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// board, Drawing the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + board: () => { + BEAST.debugging.report(`draw: board`, 1); + + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board + + for(let boardLine of BEAST.BOARD) { //iterate over each row + let line = ''; //translate BEAST.BOARD to ASCII + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row + let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + + if( element ) { //if there was an element found + line += element; + } + else { //add space + line += ' '; + } + } + + printLine( line ); //print the compiled line onto the board + } + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`draw: init`, 1); + + BEAST.draw.frame(); //draw frame, + BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. + }, + } +})(); \ No newline at end of file diff --git a/dev/040-move.js b/dev/040-move.js new file mode 100644 index 0000000..919c638 --- /dev/null +++ b/dev/040-move.js @@ -0,0 +1,68 @@ +/*************************************************************************************************************************************************************** + * + * Move + * + * Moving the hero and checking for collisions and blocks + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.move = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// _isOutOfBounds, Check that the move does not go outside the bounds of the board +// +// @param position {object} The position object: { x: 1, y: 1 } +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const _isOutOfBounds = ( position ) => { + BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + + let outofbounds = false; //let's assume the best + + if( position.x < 0 || position.y < 0 ) { //left and top bounds + outofbounds = true; + } + + if( position.x > (BEAST.MINWIDTH - 3) || position.y > (BEAST.MINHEIGHT - 8) ) { //right and bottom bounds + outofbounds = true; + } + + return outofbounds; + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Move hero +// +// @param dir {string} The direction we are moving +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: ( dir, step ) => { + BEAST.debugging.report(`move: hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position + BEAST.HERO[ dir ] += step; //move + + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + + BEAST.draw.board(); + }, + } +})(); \ No newline at end of file diff --git a/dev/999-init.js b/dev/999-init.js new file mode 100644 index 0000000..87a70c3 --- /dev/null +++ b/dev/999-init.js @@ -0,0 +1,119 @@ +/*************************************************************************************************************************************************************** + * + * Application initialization + * + * Start the game via scaffolding + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const Writable = require('stream').Writable; +const Readline = require('readline'); +const CliSize = require("cli-size"); + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// customStdout, A custom stdout so we can disable output display +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const customStdout = new Writable({ + write: function(chunk, encoding, callback) { + BEAST.debugging.report(`Running customStdout with ${this.muted}`, 1); + + if( !this.muted ) { + process.stdout.write( chunk, encoding ); + } + + callback(); + } +}); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// checkSize, Check the size of the terminal space +// +// @return error {string} The error if there is any +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.checkSize = () => { + BEAST.debugging.report(`Running checkSize`, 1); + + let error = ''; //undefined is overrated + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) || CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) ) { + error = ` Your console is not wide enough for this game\n (It is ${CliSize().columns} wide but needs to be ${( BEAST.MINWIDTH + 4 )})\n`; + } + + if( CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + error = ` Your console is not tall enough for this game\n (It is ${CliSize().rows} tall but needs to be ${( BEAST.MINHEIGHT + 1 )})\n`; + } + } + + return error; +} + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Initiate application +// +// Do your thing +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.init = () => { + BEAST.debugging.headline(`DEBUG|INFO`, 99); + + //testing screen size and exiting on error + let error = BEAST.checkSize(); + if( error !== '' ) { + console.log( error ); + process.exit( 1 ); + } + + BEAST.RL = Readline.createInterface({ //create the readline interface + input: process.stdin, + output: customStdout, + terminal: true, + historySize: 0, + }); + + Readline.emitKeypressEvents( process.stdin ); + process.stdin.setEncoding('utf8'); + + if(process.stdin.isTTY) { + process.stdin.setRawMode( true ); + } + + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize + BEAST.draw.frame(); + BEAST.draw.board(); + }); + + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize + BEAST.RL.clearLine(); + + if( key.name === 'right' ) { + BEAST.move.hero( 'x', 1 ); + } + else if( key.name === 'left' ) { + BEAST.move.hero( 'x', -1 ); + } + else if( key.name === 'up' ) { + BEAST.move.hero( 'y', -1 ); + } + else if( key.name === 'down' ) { + BEAST.move.hero( 'y', 1 ); + } + else { + return; + } + }); + + BEAST.scaffolding.init(); + BEAST.draw.init(); +}; + + +BEAST.init(); \ No newline at end of file diff --git a/dev/dev.js b/dev/dev.js index e69de29..226fee9 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -0,0 +1,557 @@ +/*************************************************************************************************************************************************************** + * + * Beast, and ANSI node game + * + * Beast is a node adaptation from the original written by Dan Baker, Alan Brown, Mark Hamilton and Derrick Shadel in 1984 + * https://en.wikipedia.org/wiki/Beast_(video_game) + * + * @license https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE GNU-GPLv3 + * @author Dominik Wilkowski hi@dominik-wilkowski.com + * @repository https://github.com/dominikwilkowski/beast.js + * + **************************************************************************************************************************************************************/ + +'use strict'; + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const CFonts = require(`cfonts`); +const Chalk = require(`chalk`); +const Fs = require(`fs`); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const BEAST = (() => { //constructor factory + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// settings +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + DEBUG: true, //debug settings + DEBUGLEVEL: 2, //debug level setting + MINWIDTH: 120, //width of the game canvas + MINHEIGHT: 40, //height of the game canvas + BOARD: [], //the board representation in integers + HERO: { //the start position of the player + x: 1, //left aligned + y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom + }, + LEVEL: 1, //the current level (we start with 1 duh) + LEVELS: { //the amount of elements per level + 1: { //start easy + beast: 10, + block: 200, + solid: 10, + }, + 2: { //increase beasts and solids, decrease blocks + beast: 30, + block: 150, + solid: 50, + }, + 3: { //increase beasts and solids, decrease blocks + beast: 50, + block: 100, + solid: 100, + }, + }, + SYMBOLS: { //symbols for element + hero: Chalk.cyan('¶'), + beast: 'Θ', + block: '░', + solid: '▓', + }, + RL: {}, //The readline object for reuse in all modules + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Debugging prettiness +// +// debugging, Print debug message that will be logged to console. +// +// @method headline Return a headline preferably at the beginning of your app +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method report Return a message to report starting a process +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method error Return a message to report an error +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method interaction Return a message to report an interaction +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method send Return a message to report data has been sent +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method received Return a message to report data has been received +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + debugging: { + + headline: ( text ) => { + if( BEAST.DEBUG ) { + CFonts.say(text, { + 'font': 'chrome', + 'align': 'center', + 'colors': ['green', 'cyan', 'white'], + }); + } + }, + + report: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.green(' \u2611 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + error: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.red(' \u2612 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + interaction: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.blue(' \u261C ')} ${Chalk.black(`${text} `)}`)); + } + }, + + send: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219D ')} ${Chalk.black(`${text} `)}`)); + } + }, + + received: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219C ')} ${Chalk.black(`${text} `)}`)); + } + } + } + } + +})(); +/*************************************************************************************************************************************************************** + * + * Scaffolding + * + * Scaffold the game canvas + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.scaffolding = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`scaffolding: running init`, 1); + + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD + BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// cords, Scaffold the coordinates for the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + cords: () => { + BEAST.debugging.report(`scaffolding: running cords`, 1); + + for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { + BEAST.BOARD[ i ] = []; //add array per row + }; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Scaffold the hero onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: () => { + BEAST.debugging.report(`scaffolding: running hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// element, Randomly create and distribute elements on the board +// +// @param element {keyword} We can only scaffold 'beast', 'block', 'solid' +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + element: ( element ) => { + BEAST.debugging.report(`scaffolding: running blocks`, 1); + + let blocks = 0; //keep track of blocks we distribute + + while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { + let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); + let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + + if( + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x ) && //row after + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row after one column after + + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x - 1 ) && //same row one column before + randomY + '-' + randomX != BEAST.HERO.y + '-' + BEAST.HERO.x && //hero position + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x + 1 ) && //same row one column after + + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row before one column before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x ) && //row before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row before one column after + + BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot + ) { + BEAST.BOARD[ randomY ][ randomX ] = element; + blocks ++; + } + } + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Draw + * + * Drawing out the board to the terminal + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.draw = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// printLine, Print a row inside the board +// +// @param item {string} The string to be written +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const printLine = ( item ) => { + BEAST.debugging.report(`draw: running printLine`, 1); + + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// frame, Draw canvas with logo and score +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + frame: () => { + BEAST.debugging.report(`draw: frame`, 1); + + customStdout.muted = false; + + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + // Readline.clearLine( BEAST.RL, 0 ); //clear current line + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error !== '' ) { + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + BEAST.RL.write(`\n\n${error}`); + } + else { + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment + spacetop = `\n`.repeat( spacetop ); + + BEAST.RL.write( spacetop ); + BEAST.RL.write( + `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + + BEAST.RL.write( spacetop ); + } + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// board, Drawing the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + board: () => { + BEAST.debugging.report(`draw: board`, 1); + + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board + + for(let boardLine of BEAST.BOARD) { //iterate over each row + let line = ''; //translate BEAST.BOARD to ASCII + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row + let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + + if( element ) { //if there was an element found + line += element; + } + else { //add space + line += ' '; + } + } + + printLine( line ); //print the compiled line onto the board + } + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`draw: init`, 1); + + BEAST.draw.frame(); //draw frame, + BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Move + * + * Moving the hero and checking for collisions and blocks + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.move = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// _isOutOfBounds, Check that the move does not go outside the bounds of the board +// +// @param position {object} The position object: { x: 1, y: 1 } +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const _isOutOfBounds = ( position ) => { + BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + + let outofbounds = false; //let's assume the best + + if( position.x < 0 || position.y < 0 ) { //left and top bounds + outofbounds = true; + } + + if( position.x > (BEAST.MINWIDTH - 3) || position.y > (BEAST.MINHEIGHT - 8) ) { //right and bottom bounds + outofbounds = true; + } + + return outofbounds; + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Move hero +// +// @param dir {string} The direction we are moving +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: ( dir, step ) => { + BEAST.debugging.report(`move: hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position + BEAST.HERO[ dir ] += step; //move + + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + + BEAST.draw.board(); + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Application initialization + * + * Start the game via scaffolding + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const Writable = require('stream').Writable; +const Readline = require('readline'); +const CliSize = require("cli-size"); + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// customStdout, A custom stdout so we can disable output display +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const customStdout = new Writable({ + write: function(chunk, encoding, callback) { + BEAST.debugging.report(`Running customStdout with ${this.muted}`, 1); + + if( !this.muted ) { + process.stdout.write( chunk, encoding ); + } + + callback(); + } +}); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// checkSize, Check the size of the terminal space +// +// @return error {string} The error if there is any +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.checkSize = () => { + BEAST.debugging.report(`Running checkSize`, 1); + + let error = ''; //undefined is overrated + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) || CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) ) { + error = ` Your console is not wide enough for this game\n (It is ${CliSize().columns} wide but needs to be ${( BEAST.MINWIDTH + 4 )})\n`; + } + + if( CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + error = ` Your console is not tall enough for this game\n (It is ${CliSize().rows} tall but needs to be ${( BEAST.MINHEIGHT + 1 )})\n`; + } + } + + return error; +} + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Initiate application +// +// Do your thing +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.init = () => { + BEAST.debugging.headline(`DEBUG|INFO`, 99); + + //testing screen size and exiting on error + let error = BEAST.checkSize(); + if( error !== '' ) { + console.log( error ); + process.exit( 1 ); + } + + BEAST.RL = Readline.createInterface({ //create the readline interface + input: process.stdin, + output: customStdout, + terminal: true, + historySize: 0, + }); + + Readline.emitKeypressEvents( process.stdin ); + process.stdin.setEncoding('utf8'); + + if(process.stdin.isTTY) { + process.stdin.setRawMode( true ); + } + + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize + BEAST.draw.frame(); + BEAST.draw.board(); + }); + + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize + BEAST.RL.clearLine(); + + if( key.name === 'right' ) { + BEAST.move.hero( 'x', 1 ); + } + else if( key.name === 'left' ) { + BEAST.move.hero( 'x', -1 ); + } + else if( key.name === 'up' ) { + BEAST.move.hero( 'y', -1 ); + } + else if( key.name === 'down' ) { + BEAST.move.hero( 'y', 1 ); + } + else { + return; + } + }); + + BEAST.scaffolding.init(); + BEAST.draw.init(); +}; + + +BEAST.init(); \ No newline at end of file diff --git a/package.json b/package.json index a6a0ca4..2f6ea54 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "peerDependencies": {}, "dependencies": { "chalk": "^1.0.0", - "window-size": "^0.2.0" + "cli-size": "^1.0.0" }, "keywords": [ "game", @@ -50,9 +50,9 @@ }, "licenses": [ { - "type": "GNU-GPL", + "type": "GPL-3.0", "url": "https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE" } ], - "license": "GNU-GPLv3" + "license": "GPL-3.0" } \ No newline at end of file diff --git a/prod/index.js b/prod/index.js index e69de29..ea5e1de 100644 --- a/prod/index.js +++ b/prod/index.js @@ -0,0 +1,557 @@ +/*************************************************************************************************************************************************************** + * + * Beast, and ANSI node game + * + * Beast is a node adaptation from the original written by Dan Baker, Alan Brown, Mark Hamilton and Derrick Shadel in 1984 + * https://en.wikipedia.org/wiki/Beast_(video_game) + * + * @license https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE GNU-GPLv3 + * @author Dominik Wilkowski hi@dominik-wilkowski.com + * @repository https://github.com/dominikwilkowski/beast.js + * + **************************************************************************************************************************************************************/ + +'use strict'; + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const CFonts = require(`cfonts`); +const Chalk = require(`chalk`); +const Fs = require(`fs`); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const BEAST = (() => { //constructor factory + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// settings +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + DEBUG: false, //debug settings + DEBUGLEVEL: 2, //debug level setting + MINWIDTH: 120, //width of the game canvas + MINHEIGHT: 40, //height of the game canvas + BOARD: [], //the board representation in integers + HERO: { //the start position of the player + x: 1, //left aligned + y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom + }, + LEVEL: 1, //the current level (we start with 1 duh) + LEVELS: { //the amount of elements per level + 1: { //start easy + beast: 10, + block: 200, + solid: 10, + }, + 2: { //increase beasts and solids, decrease blocks + beast: 30, + block: 150, + solid: 50, + }, + 3: { //increase beasts and solids, decrease blocks + beast: 50, + block: 100, + solid: 100, + }, + }, + SYMBOLS: { //symbols for element + hero: Chalk.cyan('¶'), + beast: 'Θ', + block: '░', + solid: '▓', + }, + RL: {}, //The readline object for reuse in all modules + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Debugging prettiness +// +// debugging, Print debug message that will be logged to console. +// +// @method headline Return a headline preferably at the beginning of your app +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method report Return a message to report starting a process +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method error Return a message to report an error +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method interaction Return a message to report an interaction +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method send Return a message to report data has been sent +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +// +// @method received Return a message to report data has been received +// @param [text] {string} The sting you want to log +// @param [level] {integer} (optional) The debug level. Show equal and greater levels. Default: 99 +// @return [ansi] {output} +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + debugging: { + + headline: ( text ) => { + if( BEAST.DEBUG ) { + CFonts.say(text, { + 'font': 'chrome', + 'align': 'center', + 'colors': ['green', 'cyan', 'white'], + }); + } + }, + + report: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.green(' \u2611 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + error: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.red(' \u2612 ')} ${Chalk.black(`${text} `)}`)); + } + }, + + interaction: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.blue(' \u261C ')} ${Chalk.black(`${text} `)}`)); + } + }, + + send: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219D ')} ${Chalk.black(`${text} `)}`)); + } + }, + + received: ( text, level = 99 ) => { + if( BEAST.DEBUG && level >= BEAST.DEBUGLEVEL ) { + console.log(Chalk.bgWhite(`\n${Chalk.bold.cyan(' \u219C ')} ${Chalk.black(`${text} `)}`)); + } + } + } + } + +})(); +/*************************************************************************************************************************************************************** + * + * Scaffolding + * + * Scaffold the game canvas + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.scaffolding = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`scaffolding: running init`, 1); + + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD + BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// cords, Scaffold the coordinates for the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + cords: () => { + BEAST.debugging.report(`scaffolding: running cords`, 1); + + for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { + BEAST.BOARD[ i ] = []; //add array per row + }; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Scaffold the hero onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: () => { + BEAST.debugging.report(`scaffolding: running hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// element, Randomly create and distribute elements on the board +// +// @param element {keyword} We can only scaffold 'beast', 'block', 'solid' +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + element: ( element ) => { + BEAST.debugging.report(`scaffolding: running blocks`, 1); + + let blocks = 0; //keep track of blocks we distribute + + while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { + let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); + let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + + if( + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x ) && //row after + randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row after one column after + + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x - 1 ) && //same row one column before + randomY + '-' + randomX != BEAST.HERO.y + '-' + BEAST.HERO.x && //hero position + randomY + '-' + randomX != BEAST.HERO.y + '-' + ( BEAST.HERO.x + 1 ) && //same row one column after + + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row before one column before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x ) && //row before + randomY + '-' + randomX != ( BEAST.HERO.y - 1 ) + '-' + ( BEAST.HERO.x + 1 ) && //row before one column after + + BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot + ) { + BEAST.BOARD[ randomY ][ randomX ] = element; + blocks ++; + } + } + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Draw + * + * Drawing out the board to the terminal + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.draw = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// printLine, Print a row inside the board +// +// @param item {string} The string to be written +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const printLine = ( item ) => { + BEAST.debugging.report(`draw: running printLine`, 1); + + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// frame, Draw canvas with logo and score +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + frame: () => { + BEAST.debugging.report(`draw: frame`, 1); + + customStdout.muted = false; + + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + // Readline.clearLine( BEAST.RL, 0 ); //clear current line + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error !== '' ) { + Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + Readline.clearScreenDown( BEAST.RL ); //clear screen + BEAST.RL.write(`\n\n${error}`); + } + else { + let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceleft = ' '.repeat( spaceleft ); + + let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment + spacetop = `\n`.repeat( spacetop ); + + BEAST.RL.write( spacetop ); + BEAST.RL.write( + `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + ); + + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + + BEAST.RL.write( spacetop ); + } + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// board, Drawing the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + board: () => { + BEAST.debugging.report(`draw: board`, 1); + + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board + + for(let boardLine of BEAST.BOARD) { //iterate over each row + let line = ''; //translate BEAST.BOARD to ASCII + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row + let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + + if( element ) { //if there was an element found + line += element; + } + else { //add space + line += ' '; + } + } + + printLine( line ); //print the compiled line onto the board + } + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Scaffold the canvas +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`draw: init`, 1); + + BEAST.draw.frame(); //draw frame, + BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Move + * + * Moving the hero and checking for collisions and blocks + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.move = (() => { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// _isOutOfBounds, Check that the move does not go outside the bounds of the board +// +// @param position {object} The position object: { x: 1, y: 1 } +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const _isOutOfBounds = ( position ) => { + BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + + let outofbounds = false; //let's assume the best + + if( position.x < 0 || position.y < 0 ) { //left and top bounds + outofbounds = true; + } + + if( position.x > (BEAST.MINWIDTH - 3) || position.y > (BEAST.MINHEIGHT - 8) ) { //right and bottom bounds + outofbounds = true; + } + + return outofbounds; + } + + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// hero, Move hero +// +// @param dir {string} The direction we are moving +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + hero: ( dir, step ) => { + BEAST.debugging.report(`move: hero`, 1); + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position + BEAST.HERO[ dir ] += step; //move + + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + + BEAST.draw.board(); + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Application initialization + * + * Start the game via scaffolding + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const Writable = require('stream').Writable; +const Readline = require('readline'); +const CliSize = require("cli-size"); + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// customStdout, A custom stdout so we can disable output display +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const customStdout = new Writable({ + write: function(chunk, encoding, callback) { + BEAST.debugging.report(`Running customStdout with ${this.muted}`, 1); + + if( !this.muted ) { + process.stdout.write( chunk, encoding ); + } + + callback(); + } +}); + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// checkSize, Check the size of the terminal space +// +// @return error {string} The error if there is any +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.checkSize = () => { + BEAST.debugging.report(`Running checkSize`, 1); + + let error = ''; //undefined is overrated + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) || CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + + if( CliSize().columns < ( BEAST.MINWIDTH + 4 ) ) { + error = ` Your console is not wide enough for this game\n (It is ${CliSize().columns} wide but needs to be ${( BEAST.MINWIDTH + 4 )})\n`; + } + + if( CliSize().rows < ( BEAST.MINHEIGHT + 1 ) ) { + error = ` Your console is not tall enough for this game\n (It is ${CliSize().rows} tall but needs to be ${( BEAST.MINHEIGHT + 1 )})\n`; + } + } + + return error; +} + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Initiate application +// +// Do your thing +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.init = () => { + BEAST.debugging.headline(`DEBUG|INFO`, 99); + + //testing screen size and exiting on error + let error = BEAST.checkSize(); + if( error !== '' ) { + console.log( error ); + process.exit( 1 ); + } + + BEAST.RL = Readline.createInterface({ //create the readline interface + input: process.stdin, + output: customStdout, + terminal: true, + historySize: 0, + }); + + Readline.emitKeypressEvents( process.stdin ); + process.stdin.setEncoding('utf8'); + + if(process.stdin.isTTY) { + process.stdin.setRawMode( true ); + } + + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize + BEAST.draw.frame(); + BEAST.draw.board(); + }); + + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize + BEAST.RL.clearLine(); + + if( key.name === 'right' ) { + BEAST.move.hero( 'x', 1 ); + } + else if( key.name === 'left' ) { + BEAST.move.hero( 'x', -1 ); + } + else if( key.name === 'up' ) { + BEAST.move.hero( 'y', -1 ); + } + else if( key.name === 'down' ) { + BEAST.move.hero( 'y', 1 ); + } + else { + return; + } + }); + + BEAST.scaffolding.init(); + BEAST.draw.init(); +}; + + +BEAST.init(); \ No newline at end of file From 7385cfad27f818149fbe2e0d99c4b465ba88fec9 Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Thu, 13 Oct 2016 12:57:54 +1100 Subject: [PATCH 2/9] added pushing blocks Signed-off-by: Dominik Wilkowski --- dev/030-draw.js | 2 +- dev/040-move.js | 84 ++++++++++++++++++++++++++++++++++++++++++----- dev/dev.js | 86 +++++++++++++++++++++++++++++++++++++++++++------ prod/index.js | 86 +++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 231 insertions(+), 27 deletions(-) diff --git a/dev/030-draw.js b/dev/030-draw.js index e665cf6..be50109 100644 --- a/dev/030-draw.js +++ b/dev/030-draw.js @@ -71,7 +71,7 @@ BEAST.draw = (() => { BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); BEAST.RL.write( spacetop ); } diff --git a/dev/040-move.js b/dev/040-move.js index 919c638..27b5471 100644 --- a/dev/040-move.js +++ b/dev/040-move.js @@ -42,27 +42,95 @@ BEAST.move = (() => { } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// push, Check the environment and push blocks, return false if the move can't be done +// +// @param dir {string} The direction we are moving towards +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const push = ( dir, step ) => { + BEAST.debugging.report(`move: running push`, 1); + + let element = ''; + let canMove = true; + let elements = []; + let position = { //our current position as clone + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + + while( element !== undefined && !_isOutOfBounds( position ) ) { //stop when we encounter a space or the end of the frame + position[ dir ] += step; //go one step forward and see + + if( BEAST.BOARD[ position.y ] === undefined ) { //if we're peaking beyond the bounds + canMove = false; + break + } + + element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? + + if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + canMove = false; + } + + if( element !== undefined ) { + elements.push( element ); //save each element on the way to a free space + } + } + + if( canMove ) { //if there is pushing + let i = 1; + + while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started + element = elements[ elements.length - i ]; //get the saved element + + BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board + + position[ dir ] -= step; //step backwards + i ++; //count steps + } + } + + return canMove; + } + + return { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // hero, Move hero // -// @param dir {string} The direction we are moving +// @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: ( dir, step ) => { BEAST.debugging.report(`move: hero`, 1); - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position - BEAST.HERO[ dir ] += step; //move + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - BEAST.draw.board(); + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + + BEAST.draw.board(); + } + } }, } })(); \ No newline at end of file diff --git a/dev/dev.js b/dev/dev.js index 226fee9..0697dec 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -314,7 +314,7 @@ BEAST.draw = (() => { BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); BEAST.RL.write( spacetop ); } @@ -412,27 +412,95 @@ BEAST.move = (() => { } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// push, Check the environment and push blocks, return false if the move can't be done +// +// @param dir {string} The direction we are moving towards +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const push = ( dir, step ) => { + BEAST.debugging.report(`move: running push`, 1); + + let element = ''; + let canMove = true; + let elements = []; + let position = { //our current position as clone + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + + while( element !== undefined && !_isOutOfBounds( position ) ) { //stop when we encounter a space or the end of the frame + position[ dir ] += step; //go one step forward and see + + if( BEAST.BOARD[ position.y ] === undefined ) { //if we're peaking beyond the bounds + canMove = false; + break + } + + element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? + + if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + canMove = false; + } + + if( element !== undefined ) { + elements.push( element ); //save each element on the way to a free space + } + } + + if( canMove ) { //if there is pushing + let i = 1; + + while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started + element = elements[ elements.length - i ]; //get the saved element + + BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board + + position[ dir ] -= step; //step backwards + i ++; //count steps + } + } + + return canMove; + } + + return { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // hero, Move hero // -// @param dir {string} The direction we are moving +// @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: ( dir, step ) => { BEAST.debugging.report(`move: hero`, 1); - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position - BEAST.HERO[ dir ] += step; //move + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move + + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position - BEAST.draw.board(); + BEAST.draw.board(); + } + } }, } })(); diff --git a/prod/index.js b/prod/index.js index ea5e1de..09dcfaa 100644 --- a/prod/index.js +++ b/prod/index.js @@ -314,7 +314,7 @@ BEAST.draw = (() => { BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n${spaceleft} ??`); + BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); BEAST.RL.write( spacetop ); } @@ -412,27 +412,95 @@ BEAST.move = (() => { } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// push, Check the environment and push blocks, return false if the move can't be done +// +// @param dir {string} The direction we are moving towards +// @param step {integer} The increment of the movement. 1 = move right, -1 = move left +// +// @return {boolean} True or false +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const push = ( dir, step ) => { + BEAST.debugging.report(`move: running push`, 1); + + let element = ''; + let canMove = true; + let elements = []; + let position = { //our current position as clone + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + + while( element !== undefined && !_isOutOfBounds( position ) ) { //stop when we encounter a space or the end of the frame + position[ dir ] += step; //go one step forward and see + + if( BEAST.BOARD[ position.y ] === undefined ) { //if we're peaking beyond the bounds + canMove = false; + break + } + + element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? + + if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + canMove = false; + } + + if( element !== undefined ) { + elements.push( element ); //save each element on the way to a free space + } + } + + if( canMove ) { //if there is pushing + let i = 1; + + while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started + element = elements[ elements.length - i ]; //get the saved element + + BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board + + position[ dir ] -= step; //step backwards + i ++; //count steps + } + } + + return canMove; + } + + return { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // hero, Move hero // -// @param dir {string} The direction we are moving +// @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: ( dir, step ) => { BEAST.debugging.report(`move: hero`, 1); - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = ''; //clear old position - BEAST.HERO[ dir ] += step; //move + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move + + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds + BEAST.HERO[ dir ] -= step; //reset move + } + + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position - BEAST.draw.board(); + BEAST.draw.board(); + } + } }, } })(); From 34efcc5c7392c2dd3e15cb6c706087906cfdcd66 Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Thu, 13 Oct 2016 13:39:37 +1100 Subject: [PATCH 3/9] fixed level bug Signed-off-by: Dominik Wilkowski --- dev/020-scaffolding.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/020-scaffolding.js b/dev/020-scaffolding.js index 8ef3d1c..9b632a7 100644 --- a/dev/020-scaffolding.js +++ b/dev/020-scaffolding.js @@ -67,7 +67,7 @@ BEAST.scaffolding = (() => { let blocks = 0; //keep track of blocks we distribute - while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { + while( blocks < BEAST.LEVELS[ BEAST.LEVEL ][ element ] ) { let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); From 2a01f7eaeec1b561cd68caed106b8bcb940c3e6f Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Fri, 14 Oct 2016 16:59:32 +1100 Subject: [PATCH 4/9] added score, death, squashing beasts Signed-off-by: Dominik Wilkowski --- dev/010-constructor.js | 27 +-- dev/020-scaffolding.js | 43 ++++- dev/030-draw.js | 89 +++++++-- dev/{040-move.js => 040-hero.js} | 107 ++++++++--- dev/050-beasts.js | 48 +++++ dev/999-init.js | 9 +- dev/dev.js | 321 +++++++++++++++++++++++++------ prod/index.js | 321 +++++++++++++++++++++++++------ 8 files changed, 787 insertions(+), 178 deletions(-) rename dev/{040-move.js => 040-hero.js} (59%) create mode 100644 dev/050-beasts.js diff --git a/dev/010-constructor.js b/dev/010-constructor.js index 90d9c61..8997f9c 100644 --- a/dev/010-constructor.js +++ b/dev/010-constructor.js @@ -33,35 +33,40 @@ const BEAST = (() => { //constructor factory DEBUG: [Debug], //debug settings DEBUGLEVEL: 2, //debug level setting MINWIDTH: 120, //width of the game canvas - MINHEIGHT: 40, //height of the game canvas + MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - HERO: { //the start position of the player + START: { //the start position of the player, the beasts start on the opposite end x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, + HERO: {}, //position tracking for our hero + DEAD: false, //when the hero dies he/she can't move no more + BEASTS: {}, //position tracking for all beasts + LIVES: 4, //how many lives do we have? + DEATHS: 0, //how many times have we died so far? LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy beast: 10, - block: 200, - solid: 10, + block: 400, + solid: 50, }, 2: { //increase beasts and solids, decrease blocks beast: 30, - block: 150, - solid: 50, + block: 250, + solid: 200, }, 3: { //increase beasts and solids, decrease blocks beast: 50, block: 100, - solid: 100, + solid: 500, }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), - beast: 'Θ', - block: '░', - solid: '▓', + hero: Chalk.cyan('¶'), //█ + beast: Chalk.green('Θ'), + block: Chalk.gray('▓'), + solid: Chalk.white('▓'), }, RL: {}, //The readline object for reuse in all modules diff --git a/dev/020-scaffolding.js b/dev/020-scaffolding.js index 9b632a7..e103eaf 100644 --- a/dev/020-scaffolding.js +++ b/dev/020-scaffolding.js @@ -25,7 +25,13 @@ BEAST.scaffolding = (() => { init: () => { BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.HERO = { + x: BEAST.START.x, + y: BEAST.START.y, + }; + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD @@ -56,6 +62,33 @@ BEAST.scaffolding = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// beasts, Scaffold beasts onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + beasts: () => { + BEAST.debugging.report(`scaffolding: running beasts`, 1); + + let beasts = 0; //keep track of the beasts we distribute + + while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); + let randomY = Math.floor( Math.random() * (((BEAST.MINHEIGHT - 7) / 2) - 0) + 0 ); + + if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot + BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board + + BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + x: randomX, + y: randomY, + } + + beasts ++; + } + } + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // element, Randomly create and distribute elements on the board @@ -65,11 +98,11 @@ BEAST.scaffolding = (() => { element: ( element ) => { BEAST.debugging.report(`scaffolding: running blocks`, 1); - let blocks = 0; //keep track of blocks we distribute + let count = 0; //keep track of elements we distribute - while( blocks < BEAST.LEVELS[ BEAST.LEVEL ][ element ] ) { - let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); - let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + while( count < BEAST.LEVELS[ BEAST.LEVEL ][ element ] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - 0 ) + 0 ); + let randomY = Math.floor( Math.random() * ((BEAST.MINHEIGHT - 7) - 0 ) + 0 ); if( randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before @@ -87,7 +120,7 @@ BEAST.scaffolding = (() => { BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot ) { BEAST.BOARD[ randomY ][ randomX ] = element; - blocks ++; + count ++; } } }, diff --git a/dev/030-draw.js b/dev/030-draw.js index be50109..c5d4ccc 100644 --- a/dev/030-draw.js +++ b/dev/030-draw.js @@ -26,10 +26,14 @@ BEAST.draw = (() => { const printLine = ( item ) => { BEAST.debugging.report(`draw: running printLine`, 1); - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); - - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); + + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${item}\n`); //print line inside the frame + } } @@ -45,7 +49,6 @@ BEAST.draw = (() => { Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board Readline.clearScreenDown( BEAST.RL ); //clear screen - // Readline.clearLine( BEAST.RL, 0 ); //clear current line //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -55,26 +58,56 @@ BEAST.draw = (() => { BEAST.RL.write(`\n\n${error}`); } else { - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment spacetop = `\n`.repeat( spacetop ); BEAST.RL.write( spacetop ); BEAST.RL.write( - `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + - `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + - `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + `${spaceLeft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceLeft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceLeft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` ); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`┌${'─'.repeat( BEAST.MINWIDTH - 2 )}┐`)}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│${' '.repeat( BEAST.MINWIDTH - 2 )}│`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`└${'─'.repeat( BEAST.MINWIDTH - 2 )}┘`)}\n\n`); BEAST.RL.write( spacetop ); } + + customStdout.muted = true; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// score, Draw the score at the bottom of the frame +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + score: () => { + customStdout.muted = false; + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + ( BEAST.MINHEIGHT - 6 )) ); //go to bottom of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); + + //calculate the space between lives and beast count + let spaceMiddle = ( BEAST.MINWIDTH - 2 ) - ( 3 * BEAST.LIVES ) - 6 - ( Object.keys( BEAST.BEASTS ).length.toString().length ); + + BEAST.RL.write(`${spaceLeft}${Chalk.red(' ❤').repeat( BEAST.LIVES - BEAST.DEATHS )}${Chalk.gray(' ❤').repeat( BEAST.DEATHS )}`); + BEAST.RL.write(`${' '.repeat( spaceMiddle )} ${ Object.keys( BEAST.BEASTS ).length } x ${BEAST.SYMBOLS.beast}`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + } + + customStdout.muted = true; }, @@ -113,6 +146,33 @@ BEAST.draw = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// message, Drawing a message in the center of the screen +// +// @param message {string} The string to be written to the screen +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + message: ( message ) => { + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceLeft = ' '.repeat( spaceLeft ); + + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // init, Scaffold the canvas @@ -121,6 +181,7 @@ BEAST.draw = (() => { BEAST.debugging.report(`draw: init`, 1); BEAST.draw.frame(); //draw frame, + BEAST.draw.score(); //draw score, BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. }, } diff --git a/dev/040-move.js b/dev/040-hero.js similarity index 59% rename from dev/040-move.js rename to dev/040-hero.js index 27b5471..963ca3f 100644 --- a/dev/040-move.js +++ b/dev/040-hero.js @@ -1,8 +1,8 @@ /*************************************************************************************************************************************************************** * - * Move + * Hero * - * Moving the hero and checking for collisions and blocks + * Moving the hero and checking for collisions, blocks and deaths * **************************************************************************************************************************************************************/ @@ -15,7 +15,7 @@ //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Module //-------------------------------------------------------------------------------------------------------------------------------------------------------------- -BEAST.move = (() => { +BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Private function @@ -26,7 +26,7 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -52,11 +52,13 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`move: running push`, 1); + BEAST.debugging.report(`hero: running push`, 1); let element = ''; let canMove = true; let elements = []; + let pushBeast = false; + let beastPosition = {}; let position = { //our current position as clone x: BEAST.HERO.x, y: BEAST.HERO.y, @@ -72,10 +74,44 @@ BEAST.move = (() => { element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? - if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + if( element === 'beast' && elements.length === 0 ) { //You just walked into a beast = you dead! + BEAST.hero.die(); //gone, done for, good bye + + return false; + } + + if( + element === 'solid' || //can't push no solid + element === 'beast' || //can't push the beast around. beast eats you + _isOutOfBounds( position ) //can't push past the bounds + ) { canMove = false; } + if( element === 'beast' && !pushBeast ) { //if we got a beast by itself + pushBeast = true; + + beastPosition = { //save the position of that beast for later squashing + x: position.x, + y: position.y, + }; + } + + if( + element === 'block' && pushBeast || //now we got a block right after a beast = squash it! + element === 'solid' && pushBeast //a solid after a beast = squash it too + ) { + if( elements[0] !== 'solid' ) { + canMove = true; //even though there is a beast in the way we can totally squash it + } + + elements.splice( (elements.length - 1), 1 ); //remove the beast from the things we will push + elements.push( element ); //move the block + BEAST.beasts.squash( beastPosition ); //squash that beast real good + + break; //no other elements need to be pushed now + } + if( element !== undefined ) { elements.push( element ); //save each element on the way to a free space } @@ -85,7 +121,7 @@ BEAST.move = (() => { let i = 1; while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started - element = elements[ elements.length - i ]; //get the saved element + element = elements[ elements.length - i ]; //get the saved element BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board @@ -99,38 +135,57 @@ BEAST.move = (() => { return { + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function -// hero, Move hero +// move, Move hero // // @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - hero: ( dir, step ) => { - BEAST.debugging.report(`move: hero`, 1); + move: ( dir, step ) => { + BEAST.debugging.report(`hero: running move`, 1); - let position = { //our current position - x: BEAST.HERO.x, - y: BEAST.HERO.y, - }; - position[ dir ] += step; //move + if( !BEAST.DEAD ) { + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move - if( !_isOutOfBounds( position ) ) { //check to stay within bounds - let _isPushable = push( dir, step ); + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); //can we even push? - if( _isPushable ) { - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position - BEAST.HERO = position; //update global position + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } - - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position - BEAST.draw.board(); + BEAST.draw.board(); //now draw it up + } } } }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// die, Hero dies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + die: ( ) => { + BEAST.debugging.report(`hero: running die`, 1); + + BEAST.DEATHS ++; + BEAST.DEAD = true; + + BEAST.draw.message('You died :`('); + + setTimeout(() => { + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, } })(); \ No newline at end of file diff --git a/dev/050-beasts.js b/dev/050-beasts.js new file mode 100644 index 0000000..3567bb5 --- /dev/null +++ b/dev/050-beasts.js @@ -0,0 +1,48 @@ +/*************************************************************************************************************************************************************** + * + * Beasts + * + * Breathing live into beasts, making them move and killing them off too + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.beasts = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// squash, Squash a beast +// +// @param position {object} The x position of the beast on the board in format: { x: 1, y: 1 } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + squash: ( position ) => { + BEAST.debugging.report(`beasts: squash`, 1); + + delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry + + //disable interval for movement + + BEAST.draw.score(); //draw the score again as it just changed! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Adding the intervals for each beast for their movements +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`beasts: init`, 1); + + // + }, + } +})(); \ No newline at end of file diff --git a/dev/999-init.js b/dev/999-init.js index 87a70c3..9f15960 100644 --- a/dev/999-init.js +++ b/dev/999-init.js @@ -88,6 +88,7 @@ BEAST.init = () => { process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); + BEAST.draw.score(); BEAST.draw.board(); }); @@ -95,16 +96,16 @@ BEAST.init = () => { BEAST.RL.clearLine(); if( key.name === 'right' ) { - BEAST.move.hero( 'x', 1 ); + BEAST.hero.move( 'x', 1 ); } else if( key.name === 'left' ) { - BEAST.move.hero( 'x', -1 ); + BEAST.hero.move( 'x', -1 ); } else if( key.name === 'up' ) { - BEAST.move.hero( 'y', -1 ); + BEAST.hero.move( 'y', -1 ); } else if( key.name === 'down' ) { - BEAST.move.hero( 'y', 1 ); + BEAST.hero.move( 'y', 1 ); } else { return; diff --git a/dev/dev.js b/dev/dev.js index 0697dec..d8bd578 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -33,35 +33,40 @@ const BEAST = (() => { //constructor factory DEBUG: true, //debug settings DEBUGLEVEL: 2, //debug level setting MINWIDTH: 120, //width of the game canvas - MINHEIGHT: 40, //height of the game canvas + MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - HERO: { //the start position of the player + START: { //the start position of the player, the beasts start on the opposite end x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, + HERO: {}, //position tracking for our hero + DEAD: false, //when the hero dies he/she can't move no more + BEASTS: {}, //position tracking for all beasts + LIVES: 4, //how many lives do we have? + DEATHS: 0, //how many times have we died so far? LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy beast: 10, - block: 200, - solid: 10, + block: 400, + solid: 50, }, 2: { //increase beasts and solids, decrease blocks beast: 30, - block: 150, - solid: 50, + block: 250, + solid: 200, }, 3: { //increase beasts and solids, decrease blocks beast: 50, block: 100, - solid: 100, + solid: 500, }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), - beast: 'Θ', - block: '░', - solid: '▓', + hero: Chalk.cyan('¶'), //█ + beast: Chalk.green('Θ'), + block: Chalk.gray('▓'), + solid: Chalk.white('▓'), }, RL: {}, //The readline object for reuse in all modules @@ -173,7 +178,13 @@ BEAST.scaffolding = (() => { init: () => { BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.HERO = { + x: BEAST.START.x, + y: BEAST.START.y, + }; + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD @@ -204,6 +215,33 @@ BEAST.scaffolding = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// beasts, Scaffold beasts onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + beasts: () => { + BEAST.debugging.report(`scaffolding: running beasts`, 1); + + let beasts = 0; //keep track of the beasts we distribute + + while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); + let randomY = Math.floor( Math.random() * (((BEAST.MINHEIGHT - 7) / 2) - 0) + 0 ); + + if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot + BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board + + BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + x: randomX, + y: randomY, + } + + beasts ++; + } + } + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // element, Randomly create and distribute elements on the board @@ -213,11 +251,11 @@ BEAST.scaffolding = (() => { element: ( element ) => { BEAST.debugging.report(`scaffolding: running blocks`, 1); - let blocks = 0; //keep track of blocks we distribute + let count = 0; //keep track of elements we distribute - while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { - let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); - let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + while( count < BEAST.LEVELS[ BEAST.LEVEL ][ element ] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - 0 ) + 0 ); + let randomY = Math.floor( Math.random() * ((BEAST.MINHEIGHT - 7) - 0 ) + 0 ); if( randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before @@ -235,7 +273,7 @@ BEAST.scaffolding = (() => { BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot ) { BEAST.BOARD[ randomY ][ randomX ] = element; - blocks ++; + count ++; } } }, @@ -269,10 +307,14 @@ BEAST.draw = (() => { const printLine = ( item ) => { BEAST.debugging.report(`draw: running printLine`, 1); - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${item}\n`); //print line inside the frame + } } @@ -288,7 +330,6 @@ BEAST.draw = (() => { Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board Readline.clearScreenDown( BEAST.RL ); //clear screen - // Readline.clearLine( BEAST.RL, 0 ); //clear current line //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -298,26 +339,56 @@ BEAST.draw = (() => { BEAST.RL.write(`\n\n${error}`); } else { - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment spacetop = `\n`.repeat( spacetop ); BEAST.RL.write( spacetop ); BEAST.RL.write( - `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + - `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + - `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + `${spaceLeft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceLeft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceLeft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` ); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`┌${'─'.repeat( BEAST.MINWIDTH - 2 )}┐`)}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│${' '.repeat( BEAST.MINWIDTH - 2 )}│`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`└${'─'.repeat( BEAST.MINWIDTH - 2 )}┘`)}\n\n`); BEAST.RL.write( spacetop ); } + + customStdout.muted = true; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// score, Draw the score at the bottom of the frame +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + score: () => { + customStdout.muted = false; + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + ( BEAST.MINHEIGHT - 6 )) ); //go to bottom of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); + + //calculate the space between lives and beast count + let spaceMiddle = ( BEAST.MINWIDTH - 2 ) - ( 3 * BEAST.LIVES ) - 6 - ( Object.keys( BEAST.BEASTS ).length.toString().length ); + + BEAST.RL.write(`${spaceLeft}${Chalk.red(' ❤').repeat( BEAST.LIVES - BEAST.DEATHS )}${Chalk.gray(' ❤').repeat( BEAST.DEATHS )}`); + BEAST.RL.write(`${' '.repeat( spaceMiddle )} ${ Object.keys( BEAST.BEASTS ).length } x ${BEAST.SYMBOLS.beast}`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + } + + customStdout.muted = true; }, @@ -356,6 +427,33 @@ BEAST.draw = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// message, Drawing a message in the center of the screen +// +// @param message {string} The string to be written to the screen +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + message: ( message ) => { + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceLeft = ' '.repeat( spaceLeft ); + + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // init, Scaffold the canvas @@ -364,15 +462,16 @@ BEAST.draw = (() => { BEAST.debugging.report(`draw: init`, 1); BEAST.draw.frame(); //draw frame, + BEAST.draw.score(); //draw score, BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. }, } })(); /*************************************************************************************************************************************************************** * - * Move + * Hero * - * Moving the hero and checking for collisions and blocks + * Moving the hero and checking for collisions, blocks and deaths * **************************************************************************************************************************************************************/ @@ -385,7 +484,7 @@ BEAST.draw = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Module //-------------------------------------------------------------------------------------------------------------------------------------------------------------- -BEAST.move = (() => { +BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Private function @@ -396,7 +495,7 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -422,11 +521,13 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`move: running push`, 1); + BEAST.debugging.report(`hero: running push`, 1); let element = ''; let canMove = true; let elements = []; + let pushBeast = false; + let beastPosition = {}; let position = { //our current position as clone x: BEAST.HERO.x, y: BEAST.HERO.y, @@ -442,10 +543,44 @@ BEAST.move = (() => { element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? - if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + if( element === 'beast' && elements.length === 0 ) { //You just walked into a beast = you dead! + BEAST.hero.die(); //gone, done for, good bye + + return false; + } + + if( + element === 'solid' || //can't push no solid + element === 'beast' || //can't push the beast around. beast eats you + _isOutOfBounds( position ) //can't push past the bounds + ) { canMove = false; } + if( element === 'beast' && !pushBeast ) { //if we got a beast by itself + pushBeast = true; + + beastPosition = { //save the position of that beast for later squashing + x: position.x, + y: position.y, + }; + } + + if( + element === 'block' && pushBeast || //now we got a block right after a beast = squash it! + element === 'solid' && pushBeast //a solid after a beast = squash it too + ) { + if( elements[0] !== 'solid' ) { + canMove = true; //even though there is a beast in the way we can totally squash it + } + + elements.splice( (elements.length - 1), 1 ); //remove the beast from the things we will push + elements.push( element ); //move the block + BEAST.beasts.squash( beastPosition ); //squash that beast real good + + break; //no other elements need to be pushed now + } + if( element !== undefined ) { elements.push( element ); //save each element on the way to a free space } @@ -455,7 +590,7 @@ BEAST.move = (() => { let i = 1; while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started - element = elements[ elements.length - i ]; //get the saved element + element = elements[ elements.length - i ]; //get the saved element BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board @@ -469,39 +604,106 @@ BEAST.move = (() => { return { + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function -// hero, Move hero +// move, Move hero // // @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - hero: ( dir, step ) => { - BEAST.debugging.report(`move: hero`, 1); - - let position = { //our current position - x: BEAST.HERO.x, - y: BEAST.HERO.y, - }; - position[ dir ] += step; //move + move: ( dir, step ) => { + BEAST.debugging.report(`hero: running move`, 1); - if( !_isOutOfBounds( position ) ) { //check to stay within bounds - let _isPushable = push( dir, step ); + if( !BEAST.DEAD ) { + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move - if( _isPushable ) { - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position - BEAST.HERO = position; //update global position + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); //can we even push? - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position - BEAST.draw.board(); + BEAST.draw.board(); //now draw it up + } } } }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// die, Hero dies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + die: ( ) => { + BEAST.debugging.report(`hero: running die`, 1); + + BEAST.DEATHS ++; + BEAST.DEAD = true; + + BEAST.draw.message('You died :`('); + + setTimeout(() => { + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Beasts + * + * Breathing live into beasts, making them move and killing them off too + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.beasts = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// squash, Squash a beast +// +// @param position {object} The x position of the beast on the board in format: { x: 1, y: 1 } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + squash: ( position ) => { + BEAST.debugging.report(`beasts: squash`, 1); + + delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry + + //disable interval for movement + + BEAST.draw.score(); //draw the score again as it just changed! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Adding the intervals for each beast for their movements +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`beasts: init`, 1); + + // + }, } })(); /*************************************************************************************************************************************************************** @@ -594,6 +796,7 @@ BEAST.init = () => { process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); + BEAST.draw.score(); BEAST.draw.board(); }); @@ -601,16 +804,16 @@ BEAST.init = () => { BEAST.RL.clearLine(); if( key.name === 'right' ) { - BEAST.move.hero( 'x', 1 ); + BEAST.hero.move( 'x', 1 ); } else if( key.name === 'left' ) { - BEAST.move.hero( 'x', -1 ); + BEAST.hero.move( 'x', -1 ); } else if( key.name === 'up' ) { - BEAST.move.hero( 'y', -1 ); + BEAST.hero.move( 'y', -1 ); } else if( key.name === 'down' ) { - BEAST.move.hero( 'y', 1 ); + BEAST.hero.move( 'y', 1 ); } else { return; diff --git a/prod/index.js b/prod/index.js index 09dcfaa..08b148f 100644 --- a/prod/index.js +++ b/prod/index.js @@ -33,35 +33,40 @@ const BEAST = (() => { //constructor factory DEBUG: false, //debug settings DEBUGLEVEL: 2, //debug level setting MINWIDTH: 120, //width of the game canvas - MINHEIGHT: 40, //height of the game canvas + MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - HERO: { //the start position of the player + START: { //the start position of the player, the beasts start on the opposite end x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, + HERO: {}, //position tracking for our hero + DEAD: false, //when the hero dies he/she can't move no more + BEASTS: {}, //position tracking for all beasts + LIVES: 4, //how many lives do we have? + DEATHS: 0, //how many times have we died so far? LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy beast: 10, - block: 200, - solid: 10, + block: 400, + solid: 50, }, 2: { //increase beasts and solids, decrease blocks beast: 30, - block: 150, - solid: 50, + block: 250, + solid: 200, }, 3: { //increase beasts and solids, decrease blocks beast: 50, block: 100, - solid: 100, + solid: 500, }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), - beast: 'Θ', - block: '░', - solid: '▓', + hero: Chalk.cyan('¶'), //█ + beast: Chalk.green('Θ'), + block: Chalk.gray('▓'), + solid: Chalk.white('▓'), }, RL: {}, //The readline object for reuse in all modules @@ -173,7 +178,13 @@ BEAST.scaffolding = (() => { init: () => { BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.HERO = { + x: BEAST.START.x, + y: BEAST.START.y, + }; + BEAST.scaffolding.cords(); //we need to fill the BEAST.BOARD with empty arrays + BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD @@ -204,6 +215,33 @@ BEAST.scaffolding = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// beasts, Scaffold beasts onto the board +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + beasts: () => { + BEAST.debugging.report(`scaffolding: running beasts`, 1); + + let beasts = 0; //keep track of the beasts we distribute + + while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); + let randomY = Math.floor( Math.random() * (((BEAST.MINHEIGHT - 7) / 2) - 0) + 0 ); + + if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot + BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board + + BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + x: randomX, + y: randomY, + } + + beasts ++; + } + } + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // element, Randomly create and distribute elements on the board @@ -213,11 +251,11 @@ BEAST.scaffolding = (() => { element: ( element ) => { BEAST.debugging.report(`scaffolding: running blocks`, 1); - let blocks = 0; //keep track of blocks we distribute + let count = 0; //keep track of elements we distribute - while( blocks < BEAST.LEVELS[ BEAST.LEVEL ].block ) { - let randomX = Math.floor( Math.random() * (BEAST.MINWIDTH - 2) + 0 ); - let randomY = Math.floor( Math.random() * (BEAST.MINHEIGHT - 7) + 0 ); + while( count < BEAST.LEVELS[ BEAST.LEVEL ][ element ] ) { + let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - 0 ) + 0 ); + let randomY = Math.floor( Math.random() * ((BEAST.MINHEIGHT - 7) - 0 ) + 0 ); if( randomY + '-' + randomX != ( BEAST.HERO.y + 1 ) + '-' + ( BEAST.HERO.x - 1 ) && //row after one column before @@ -235,7 +273,7 @@ BEAST.scaffolding = (() => { BEAST.BOARD[ randomY ][ randomX ] === undefined //no other elements on the spot ) { BEAST.BOARD[ randomY ][ randomX ] = element; - blocks ++; + count ++; } } }, @@ -269,10 +307,14 @@ BEAST.draw = (() => { const printLine = ( item ) => { BEAST.debugging.report(`draw: running printLine`, 1); - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║`)}${item}\n`); //print line inside the frame + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${item}\n`); //print line inside the frame + } } @@ -288,7 +330,6 @@ BEAST.draw = (() => { Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board Readline.clearScreenDown( BEAST.RL ); //clear screen - // Readline.clearLine( BEAST.RL, 0 ); //clear current line //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -298,26 +339,56 @@ BEAST.draw = (() => { BEAST.RL.write(`\n\n${error}`); } else { - let spaceleft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment - spaceleft = ' '.repeat( spaceleft ); + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); let spacetop = Math.ceil( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); //vertically alignment spacetop = `\n`.repeat( spacetop ); BEAST.RL.write( spacetop ); BEAST.RL.write( - `${spaceleft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + - `${spaceleft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + - `${spaceleft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` + `${spaceLeft}${Chalk.green(` ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗`)}\n` + + `${spaceLeft}${Chalk.cyan (` ╠╩╗ ║╣ ╠═╣ ╚═╗ ║`)}\n` + + `${spaceLeft}${Chalk.white(` ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩`)}\n` ); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╔${'═'.repeat( BEAST.MINWIDTH - 2 )}╗`)}\n`); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`║${' '.repeat( BEAST.MINWIDTH - 2 )}║`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); - BEAST.RL.write(`${spaceleft}${Chalk.gray(`╚${'═'.repeat( BEAST.MINWIDTH - 2 )}╝`)}\n`); - BEAST.RL.write(`${spaceleft} ${Chalk.red('❤ ❤ ❤ ❤')}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`┌${'─'.repeat( BEAST.MINWIDTH - 2 )}┐`)}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│${' '.repeat( BEAST.MINWIDTH - 2 )}│`)}\n`.repeat( BEAST.MINHEIGHT - 7 )); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`└${'─'.repeat( BEAST.MINWIDTH - 2 )}┘`)}\n\n`); BEAST.RL.write( spacetop ); } + + customStdout.muted = true; + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// score, Draw the score at the bottom of the frame +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + score: () => { + customStdout.muted = false; + + //testing screen size and just printing on error + let error = BEAST.checkSize(); + if( error === '' ) { + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + ( BEAST.MINHEIGHT - 6 )) ); //go to bottom of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //horizontal alignment + spaceLeft = ' '.repeat( spaceLeft ); + + //calculate the space between lives and beast count + let spaceMiddle = ( BEAST.MINWIDTH - 2 ) - ( 3 * BEAST.LIVES ) - 6 - ( Object.keys( BEAST.BEASTS ).length.toString().length ); + + BEAST.RL.write(`${spaceLeft}${Chalk.red(' ❤').repeat( BEAST.LIVES - BEAST.DEATHS )}${Chalk.gray(' ❤').repeat( BEAST.DEATHS )}`); + BEAST.RL.write(`${' '.repeat( spaceMiddle )} ${ Object.keys( BEAST.BEASTS ).length } x ${BEAST.SYMBOLS.beast}`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + } + + customStdout.muted = true; }, @@ -356,6 +427,33 @@ BEAST.draw = (() => { }, +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// message, Drawing a message in the center of the screen +// +// @param message {string} The string to be written to the screen +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + message: ( message ) => { + customStdout.muted = false; //allow output so we can draw + + let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + + let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceLeft = ' '.repeat( spaceLeft ); + + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + + Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there + + customStdout.muted = true; //no more user output now! + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // init, Scaffold the canvas @@ -364,15 +462,16 @@ BEAST.draw = (() => { BEAST.debugging.report(`draw: init`, 1); BEAST.draw.frame(); //draw frame, + BEAST.draw.score(); //draw score, BEAST.draw.board(); //draw board, I mean the function names are kinda obvious so this comment really doesn't help much. }, } })(); /*************************************************************************************************************************************************************** * - * Move + * Hero * - * Moving the hero and checking for collisions and blocks + * Moving the hero and checking for collisions, blocks and deaths * **************************************************************************************************************************************************************/ @@ -385,7 +484,7 @@ BEAST.draw = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Module //-------------------------------------------------------------------------------------------------------------------------------------------------------------- -BEAST.move = (() => { +BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Private function @@ -396,7 +495,7 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`move: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -422,11 +521,13 @@ BEAST.move = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`move: running push`, 1); + BEAST.debugging.report(`hero: running push`, 1); let element = ''; let canMove = true; let elements = []; + let pushBeast = false; + let beastPosition = {}; let position = { //our current position as clone x: BEAST.HERO.x, y: BEAST.HERO.y, @@ -442,10 +543,44 @@ BEAST.move = (() => { element = BEAST.BOARD[ position.y ][ position.x ]; //whats the element on the board on this step? - if( element === 'solid' || _isOutOfBounds( position ) ) { //can't push pasted the bounds or move a solid mate! + if( element === 'beast' && elements.length === 0 ) { //You just walked into a beast = you dead! + BEAST.hero.die(); //gone, done for, good bye + + return false; + } + + if( + element === 'solid' || //can't push no solid + element === 'beast' || //can't push the beast around. beast eats you + _isOutOfBounds( position ) //can't push past the bounds + ) { canMove = false; } + if( element === 'beast' && !pushBeast ) { //if we got a beast by itself + pushBeast = true; + + beastPosition = { //save the position of that beast for later squashing + x: position.x, + y: position.y, + }; + } + + if( + element === 'block' && pushBeast || //now we got a block right after a beast = squash it! + element === 'solid' && pushBeast //a solid after a beast = squash it too + ) { + if( elements[0] !== 'solid' ) { + canMove = true; //even though there is a beast in the way we can totally squash it + } + + elements.splice( (elements.length - 1), 1 ); //remove the beast from the things we will push + elements.push( element ); //move the block + BEAST.beasts.squash( beastPosition ); //squash that beast real good + + break; //no other elements need to be pushed now + } + if( element !== undefined ) { elements.push( element ); //save each element on the way to a free space } @@ -455,7 +590,7 @@ BEAST.move = (() => { let i = 1; while( position[ dir ] != BEAST.HERO[ dir ] ) { //stop when we're back where we started - element = elements[ elements.length - i ]; //get the saved element + element = elements[ elements.length - i ]; //get the saved element BEAST.BOARD[ position.y ][ position.x ] = element; //place it on the board @@ -469,39 +604,106 @@ BEAST.move = (() => { return { + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function -// hero, Move hero +// move, Move hero // // @param dir {string} The direction we are moving towards // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - hero: ( dir, step ) => { - BEAST.debugging.report(`move: hero`, 1); - - let position = { //our current position - x: BEAST.HERO.x, - y: BEAST.HERO.y, - }; - position[ dir ] += step; //move + move: ( dir, step ) => { + BEAST.debugging.report(`hero: running move`, 1); - if( !_isOutOfBounds( position ) ) { //check to stay within bounds - let _isPushable = push( dir, step ); + if( !BEAST.DEAD ) { + let position = { //our current position + x: BEAST.HERO.x, + y: BEAST.HERO.y, + }; + position[ dir ] += step; //move - if( _isPushable ) { - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position - BEAST.HERO = position; //update global position + if( !_isOutOfBounds( position ) ) { //check to stay within bounds + let _isPushable = push( dir, step ); //can we even push? - if( _isOutOfBounds( BEAST.HERO ) ) { //check to stay within bounds - BEAST.HERO[ dir ] -= step; //reset move - } + if( _isPushable ) { + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = undefined; //clear old position + BEAST.HERO = position; //update global position - BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position + BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero'; //set new position - BEAST.draw.board(); + BEAST.draw.board(); //now draw it up + } } } }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// die, Hero dies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + die: ( ) => { + BEAST.debugging.report(`hero: running die`, 1); + + BEAST.DEATHS ++; + BEAST.DEAD = true; + + BEAST.draw.message('You died :`('); + + setTimeout(() => { + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, + } +})(); +/*************************************************************************************************************************************************************** + * + * Beasts + * + * Breathing live into beasts, making them move and killing them off too + * + **************************************************************************************************************************************************************/ + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Dependencies +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Module +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +BEAST.beasts = (() => { + + return { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// squash, Squash a beast +// +// @param position {object} The x position of the beast on the board in format: { x: 1, y: 1 } +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + squash: ( position ) => { + BEAST.debugging.report(`beasts: squash`, 1); + + delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry + + //disable interval for movement + + BEAST.draw.score(); //draw the score again as it just changed! + }, + + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// init, Adding the intervals for each beast for their movements +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + init: () => { + BEAST.debugging.report(`beasts: init`, 1); + + // + }, } })(); /*************************************************************************************************************************************************************** @@ -594,6 +796,7 @@ BEAST.init = () => { process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); + BEAST.draw.score(); BEAST.draw.board(); }); @@ -601,16 +804,16 @@ BEAST.init = () => { BEAST.RL.clearLine(); if( key.name === 'right' ) { - BEAST.move.hero( 'x', 1 ); + BEAST.hero.move( 'x', 1 ); } else if( key.name === 'left' ) { - BEAST.move.hero( 'x', -1 ); + BEAST.hero.move( 'x', -1 ); } else if( key.name === 'up' ) { - BEAST.move.hero( 'y', -1 ); + BEAST.hero.move( 'y', -1 ); } else if( key.name === 'down' ) { - BEAST.move.hero( 'y', 1 ); + BEAST.hero.move( 'y', 1 ); } else { return; From b0dc9937f9a802c67b3a21b8d6536e2146712b2c Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Fri, 14 Oct 2016 22:29:59 +1100 Subject: [PATCH 5/9] added level gameplay, death count and game over Signed-off-by: Dominik Wilkowski --- dev/010-constructor.js | 8 ++-- dev/020-scaffolding.js | 1 + dev/030-draw.js | 9 ++-- dev/040-hero.js | 32 ++++++++++---- dev/050-beasts.js | 29 ++++++++++++- dev/999-init.js | 15 +++++++ dev/dev.js | 94 +++++++++++++++++++++++++++++++++++------- prod/index.js | 94 +++++++++++++++++++++++++++++++++++------- 8 files changed, 234 insertions(+), 48 deletions(-) diff --git a/dev/010-constructor.js b/dev/010-constructor.js index 8997f9c..4e80536 100644 --- a/dev/010-constructor.js +++ b/dev/010-constructor.js @@ -32,10 +32,10 @@ const BEAST = (() => { //constructor factory //-------------------------------------------------------------------------------------------------------------------------------------------------------------- DEBUG: [Debug], //debug settings DEBUGLEVEL: 2, //debug level setting - MINWIDTH: 120, //width of the game canvas + MINWIDTH: 100, //width of the game canvas MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - START: { //the start position of the player, the beasts start on the opposite end + START: { //the start position of the player, the beasts start on the right top corner x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, @@ -63,8 +63,8 @@ const BEAST = (() => { //constructor factory }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), //█ - beast: Chalk.green('Θ'), + hero: Chalk.cyan('¶'), + beast: Chalk.green('Φ'), block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, diff --git a/dev/020-scaffolding.js b/dev/020-scaffolding.js index e103eaf..98c4828 100644 --- a/dev/020-scaffolding.js +++ b/dev/020-scaffolding.js @@ -70,6 +70,7 @@ BEAST.scaffolding = (() => { BEAST.debugging.report(`scaffolding: running beasts`, 1); let beasts = 0; //keep track of the beasts we distribute + BEAST.BEASTS = []; while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); diff --git a/dev/030-draw.js b/dev/030-draw.js index c5d4ccc..453b0f0 100644 --- a/dev/030-draw.js +++ b/dev/030-draw.js @@ -150,9 +150,10 @@ BEAST.draw = (() => { // Public function // message, Drawing a message in the center of the screen // -// @param message {string} The string to be written to the screen +// @param message {string} The string to be written to the screen +// @param color {keyword} The color of the message, Default: black //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - message: ( message ) => { + message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); @@ -161,10 +162,10 @@ BEAST.draw = (() => { let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame spaceLeft = ' '.repeat( spaceLeft ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there diff --git a/dev/040-hero.js b/dev/040-hero.js index 963ca3f..488183b 100644 --- a/dev/040-hero.js +++ b/dev/040-hero.js @@ -101,7 +101,15 @@ BEAST.hero = (() => { element === 'block' && pushBeast || //now we got a block right after a beast = squash it! element === 'solid' && pushBeast //a solid after a beast = squash it too ) { - if( elements[0] !== 'solid' ) { + + let previousSolids = false; // + for(let i = elements.length - 2; i >= 0; i--) { //have we got any solids in the elements we are pushing? + if( elements[i] === 'solid' ) { + previousSolids = true; + } + }; + + if( !previousSolids ) { //can't move this if you are trying to push solids canMove = true; //even though there is a beast in the way we can totally squash it } @@ -179,13 +187,23 @@ BEAST.hero = (() => { BEAST.DEATHS ++; BEAST.DEAD = true; - BEAST.draw.message('You died :`('); + if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + BEAST.draw.message('GAME OVER...'); //sorry :`( - setTimeout(() => { - BEAST.DEAD = false; - BEAST.scaffolding.init(); - BEAST.draw.init(); - }, 3000); + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + } + else { + BEAST.draw.message('You were eaten by a beast :`('); + + setTimeout(() => { //restart with level 1 + BEAST.LEVEL = 1; + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + } }, } })(); \ No newline at end of file diff --git a/dev/050-beasts.js b/dev/050-beasts.js index 3567bb5..829435c 100644 --- a/dev/050-beasts.js +++ b/dev/050-beasts.js @@ -31,7 +31,34 @@ BEAST.beasts = (() => { //disable interval for movement - BEAST.draw.score(); //draw the score again as it just changed! + if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins + BEAST.DEAD = true; //disable controls + BEAST.LEVEL ++; //increase level + + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level + setTimeout(() => { + BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); + + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + }, 300); + } + else { //win mid levels + setTimeout(() => { + BEAST.draw.message( `YOU WIN LEVEL ${(BEAST.LEVEL - 1)}!`, 'magenta' ); + + setTimeout(() => { //next level + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, 300); + } + } + else { + BEAST.draw.score(); //draw the score again as it just changed! + } }, diff --git a/dev/999-init.js b/dev/999-init.js index 9f15960..0ef5e6d 100644 --- a/dev/999-init.js +++ b/dev/999-init.js @@ -86,12 +86,14 @@ BEAST.init = () => { process.stdin.setRawMode( true ); } + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); BEAST.draw.score(); BEAST.draw.board(); }); + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize BEAST.RL.clearLine(); @@ -112,6 +114,19 @@ BEAST.init = () => { } }); + + // BEAST.RL.on("close", () => { //redraw frame and board on terminal resize + // customStdout.muted = false; + + // Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + // Readline.clearScreenDown( BEAST.RL ); //clear screen + + // console.log(`\n Good bye\n`); + + // process.exit(0); + // }); + + BEAST.scaffolding.init(); BEAST.draw.init(); }; diff --git a/dev/dev.js b/dev/dev.js index d8bd578..c518e3a 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -32,10 +32,10 @@ const BEAST = (() => { //constructor factory //-------------------------------------------------------------------------------------------------------------------------------------------------------------- DEBUG: true, //debug settings DEBUGLEVEL: 2, //debug level setting - MINWIDTH: 120, //width of the game canvas + MINWIDTH: 100, //width of the game canvas MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - START: { //the start position of the player, the beasts start on the opposite end + START: { //the start position of the player, the beasts start on the right top corner x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, @@ -63,8 +63,8 @@ const BEAST = (() => { //constructor factory }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), //█ - beast: Chalk.green('Θ'), + hero: Chalk.cyan('¶'), + beast: Chalk.green('Φ'), block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, @@ -223,6 +223,7 @@ BEAST.scaffolding = (() => { BEAST.debugging.report(`scaffolding: running beasts`, 1); let beasts = 0; //keep track of the beasts we distribute + BEAST.BEASTS = []; while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); @@ -431,9 +432,10 @@ BEAST.draw = (() => { // Public function // message, Drawing a message in the center of the screen // -// @param message {string} The string to be written to the screen +// @param message {string} The string to be written to the screen +// @param color {keyword} The color of the message, Default: black //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - message: ( message ) => { + message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); @@ -442,10 +444,10 @@ BEAST.draw = (() => { let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame spaceLeft = ' '.repeat( spaceLeft ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there @@ -570,7 +572,15 @@ BEAST.hero = (() => { element === 'block' && pushBeast || //now we got a block right after a beast = squash it! element === 'solid' && pushBeast //a solid after a beast = squash it too ) { - if( elements[0] !== 'solid' ) { + + let previousSolids = false; // + for(let i = elements.length - 2; i >= 0; i--) { //have we got any solids in the elements we are pushing? + if( elements[i] === 'solid' ) { + previousSolids = true; + } + }; + + if( !previousSolids ) { //can't move this if you are trying to push solids canMove = true; //even though there is a beast in the way we can totally squash it } @@ -648,13 +658,23 @@ BEAST.hero = (() => { BEAST.DEATHS ++; BEAST.DEAD = true; - BEAST.draw.message('You died :`('); + if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + BEAST.draw.message('GAME OVER...'); //sorry :`( - setTimeout(() => { - BEAST.DEAD = false; - BEAST.scaffolding.init(); - BEAST.draw.init(); - }, 3000); + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + } + else { + BEAST.draw.message('You were eaten by a beast :`('); + + setTimeout(() => { //restart with level 1 + BEAST.LEVEL = 1; + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + } }, } })(); @@ -691,7 +711,34 @@ BEAST.beasts = (() => { //disable interval for movement - BEAST.draw.score(); //draw the score again as it just changed! + if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins + BEAST.DEAD = true; //disable controls + BEAST.LEVEL ++; //increase level + + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level + setTimeout(() => { + BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); + + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + }, 300); + } + else { //win mid levels + setTimeout(() => { + BEAST.draw.message( `YOU WIN LEVEL ${(BEAST.LEVEL - 1)}!`, 'magenta' ); + + setTimeout(() => { //next level + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, 300); + } + } + else { + BEAST.draw.score(); //draw the score again as it just changed! + } }, @@ -794,12 +841,14 @@ BEAST.init = () => { process.stdin.setRawMode( true ); } + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); BEAST.draw.score(); BEAST.draw.board(); }); + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize BEAST.RL.clearLine(); @@ -820,6 +869,19 @@ BEAST.init = () => { } }); + + // BEAST.RL.on("close", () => { //redraw frame and board on terminal resize + // customStdout.muted = false; + + // Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + // Readline.clearScreenDown( BEAST.RL ); //clear screen + + // console.log(`\n Good bye\n`); + + // process.exit(0); + // }); + + BEAST.scaffolding.init(); BEAST.draw.init(); }; diff --git a/prod/index.js b/prod/index.js index 08b148f..0dc31f8 100644 --- a/prod/index.js +++ b/prod/index.js @@ -32,10 +32,10 @@ const BEAST = (() => { //constructor factory //-------------------------------------------------------------------------------------------------------------------------------------------------------------- DEBUG: false, //debug settings DEBUGLEVEL: 2, //debug level setting - MINWIDTH: 120, //width of the game canvas + MINWIDTH: 100, //width of the game canvas MINHEIGHT: 40, //height of the game canvas (reuse in BEAST.HERO.y) BOARD: [], //the board representation in integers - START: { //the start position of the player, the beasts start on the opposite end + START: { //the start position of the player, the beasts start on the right top corner x: 1, //left aligned y: (40 - 8), //we take MINHEIGHT - 8 to get to the bottom }, @@ -63,8 +63,8 @@ const BEAST = (() => { //constructor factory }, }, SYMBOLS: { //symbols for element - hero: Chalk.cyan('¶'), //█ - beast: Chalk.green('Θ'), + hero: Chalk.cyan('¶'), + beast: Chalk.green('Φ'), block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, @@ -223,6 +223,7 @@ BEAST.scaffolding = (() => { BEAST.debugging.report(`scaffolding: running beasts`, 1); let beasts = 0; //keep track of the beasts we distribute + BEAST.BEASTS = []; while( beasts < BEAST.LEVELS[ BEAST.LEVEL ]['beast'] ) { let randomX = Math.floor( Math.random() * ((BEAST.MINWIDTH - 2) - ( BEAST.MINWIDTH / 2 )) + ( BEAST.MINWIDTH / 2 ) ); @@ -431,9 +432,10 @@ BEAST.draw = (() => { // Public function // message, Drawing a message in the center of the screen // -// @param message {string} The string to be written to the screen +// @param message {string} The string to be written to the screen +// @param color {keyword} The color of the message, Default: black //-------------------------------------------------------------------------------------------------------------------------------------------------------------- - message: ( message ) => { + message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); @@ -442,10 +444,10 @@ BEAST.draw = (() => { let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame spaceLeft = ' '.repeat( spaceLeft ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( message.length / 2 ) ); + let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${message}${' '.repeat( spaceCenter )}\n`); + BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there @@ -570,7 +572,15 @@ BEAST.hero = (() => { element === 'block' && pushBeast || //now we got a block right after a beast = squash it! element === 'solid' && pushBeast //a solid after a beast = squash it too ) { - if( elements[0] !== 'solid' ) { + + let previousSolids = false; // + for(let i = elements.length - 2; i >= 0; i--) { //have we got any solids in the elements we are pushing? + if( elements[i] === 'solid' ) { + previousSolids = true; + } + }; + + if( !previousSolids ) { //can't move this if you are trying to push solids canMove = true; //even though there is a beast in the way we can totally squash it } @@ -648,13 +658,23 @@ BEAST.hero = (() => { BEAST.DEATHS ++; BEAST.DEAD = true; - BEAST.draw.message('You died :`('); + if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + BEAST.draw.message('GAME OVER...'); //sorry :`( - setTimeout(() => { - BEAST.DEAD = false; - BEAST.scaffolding.init(); - BEAST.draw.init(); - }, 3000); + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + } + else { + BEAST.draw.message('You were eaten by a beast :`('); + + setTimeout(() => { //restart with level 1 + BEAST.LEVEL = 1; + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + } }, } })(); @@ -691,7 +711,34 @@ BEAST.beasts = (() => { //disable interval for movement - BEAST.draw.score(); //draw the score again as it just changed! + if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins + BEAST.DEAD = true; //disable controls + BEAST.LEVEL ++; //increase level + + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level + setTimeout(() => { + BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); + + setTimeout(() => { + process.exit(0); //exit without error + }, 2000); + }, 300); + } + else { //win mid levels + setTimeout(() => { + BEAST.draw.message( `YOU WIN LEVEL ${(BEAST.LEVEL - 1)}!`, 'magenta' ); + + setTimeout(() => { //next level + BEAST.DEAD = false; + BEAST.scaffolding.init(); + BEAST.draw.init(); + }, 3000); + }, 300); + } + } + else { + BEAST.draw.score(); //draw the score again as it just changed! + } }, @@ -794,12 +841,14 @@ BEAST.init = () => { process.stdin.setRawMode( true ); } + process.on("SIGWINCH", () => { //redraw frame and board on terminal resize BEAST.draw.frame(); BEAST.draw.score(); BEAST.draw.board(); }); + process.stdin.on("keypress", (chunk, key) => { //redraw frame and board on terminal resize BEAST.RL.clearLine(); @@ -820,6 +869,19 @@ BEAST.init = () => { } }); + + // BEAST.RL.on("close", () => { //redraw frame and board on terminal resize + // customStdout.muted = false; + + // Readline.cursorTo( BEAST.RL, 0, 0 ); //go to top of board + // Readline.clearScreenDown( BEAST.RL ); //clear screen + + // console.log(`\n Good bye\n`); + + // process.exit(0); + // }); + + BEAST.scaffolding.init(); BEAST.draw.init(); }; From 8389178f403d96ef20e1708b5d53bcd90b3068e8 Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Sun, 16 Oct 2016 17:11:36 +1100 Subject: [PATCH 6/9] added pathfinding for beasts Signed-off-by: Dominik Wilkowski --- dev/010-constructor.js | 18 +++-- dev/020-scaffolding.js | 14 ++-- dev/030-draw.js | 25 ++++--- dev/040-hero.js | 9 ++- dev/050-beasts.js | 92 +++++++++++++++++++++-- dev/999-init.js | 4 + dev/dev.js | 162 ++++++++++++++++++++++++++++++++--------- package.json | 3 +- prod/index.js | 162 ++++++++++++++++++++++++++++++++--------- 9 files changed, 386 insertions(+), 103 deletions(-) diff --git a/dev/010-constructor.js b/dev/010-constructor.js index 4e80536..75d102c 100644 --- a/dev/010-constructor.js +++ b/dev/010-constructor.js @@ -47,19 +47,22 @@ const BEAST = (() => { //constructor factory LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy - beast: 10, - block: 400, + beast: 1, + block: 600, solid: 50, + speed: 1000, }, 2: { //increase beasts and solids, decrease blocks - beast: 30, - block: 250, + beast: 3, + block: 350, solid: 200, + speed: 1000, }, - 3: { //increase beasts and solids, decrease blocks - beast: 50, + 3: { //increase beasts and solids, decrease blocks and speed + beast: 10, block: 100, solid: 500, + speed: 500, }, }, SYMBOLS: { //symbols for element @@ -68,7 +71,8 @@ const BEAST = (() => { //constructor factory block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, - RL: {}, //The readline object for reuse in all modules + RL: {}, //the readline object for reuse in all modules + INTERVAL: {}, //the interval object to clear or set the beast walking interval on //-------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/dev/020-scaffolding.js b/dev/020-scaffolding.js index 98c4828..ff33862 100644 --- a/dev/020-scaffolding.js +++ b/dev/020-scaffolding.js @@ -23,7 +23,7 @@ BEAST.scaffolding = (() => { // init, Scaffold the canvas //-------------------------------------------------------------------------------------------------------------------------------------------------------------- init: () => { - BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.debugging.report(`scaffolding: init`, 1); BEAST.HERO = { x: BEAST.START.x, @@ -34,7 +34,7 @@ BEAST.scaffolding = (() => { BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD - BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero }, @@ -43,7 +43,7 @@ BEAST.scaffolding = (() => { // cords, Scaffold the coordinates for the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- cords: () => { - BEAST.debugging.report(`scaffolding: running cords`, 1); + BEAST.debugging.report(`scaffolding: cords`, 1); for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { BEAST.BOARD[ i ] = []; //add array per row @@ -56,7 +56,7 @@ BEAST.scaffolding = (() => { // hero, Scaffold the hero onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: () => { - BEAST.debugging.report(`scaffolding: running hero`, 1); + BEAST.debugging.report(`scaffolding: hero`, 1); BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position }, @@ -67,7 +67,7 @@ BEAST.scaffolding = (() => { // beasts, Scaffold beasts onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- beasts: () => { - BEAST.debugging.report(`scaffolding: running beasts`, 1); + BEAST.debugging.report(`scaffolding: beasts`, 1); let beasts = 0; //keep track of the beasts we distribute BEAST.BEASTS = []; @@ -79,7 +79,7 @@ BEAST.scaffolding = (() => { if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board - BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + BEAST.BEASTS[`${randomX}-${randomY}`] = { //adding beast to beast registry x: randomX, y: randomY, } @@ -97,7 +97,7 @@ BEAST.scaffolding = (() => { // @param element {keyword} We can only scaffold 'beast', 'block', 'solid' //-------------------------------------------------------------------------------------------------------------------------------------------------------------- element: ( element ) => { - BEAST.debugging.report(`scaffolding: running blocks`, 1); + BEAST.debugging.report(`scaffolding: blocks`, 1); let count = 0; //keep track of elements we distribute diff --git a/dev/030-draw.js b/dev/030-draw.js index 453b0f0..30e3185 100644 --- a/dev/030-draw.js +++ b/dev/030-draw.js @@ -24,7 +24,7 @@ BEAST.draw = (() => { // @param item {string} The string to be written //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const printLine = ( item ) => { - BEAST.debugging.report(`draw: running printLine`, 1); + BEAST.debugging.report(`draw: printLine`, 1); //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -123,11 +123,11 @@ BEAST.draw = (() => { let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board - for(let boardLine of BEAST.BOARD) { //iterate over each row + for(let boardRow of BEAST.BOARD) { //iterate over each row let line = ''; //translate BEAST.BOARD to ASCII for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row - let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + let element = BEAST.SYMBOLS[ boardRow[ x ] ]; //get the symbol for the element we found if( element ) { //if there was an element found line += element; @@ -151,22 +151,25 @@ BEAST.draw = (() => { // message, Drawing a message in the center of the screen // // @param message {string} The string to be written to the screen -// @param color {keyword} The color of the message, Default: black +// @param color {keyword} The color of the message, Default: black, optional //-------------------------------------------------------------------------------------------------------------------------------------------------------------- message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); - Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 2) ); //go to middle of board - let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame - spaceLeft = ' '.repeat( spaceLeft ); + let spaceShoulder = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceShoulder = ' '.repeat( spaceShoulder ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceLeft = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceRight = Math.ceil( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( spaceLeft )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceRight )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there diff --git a/dev/040-hero.js b/dev/040-hero.js index 488183b..3c9b5b8 100644 --- a/dev/040-hero.js +++ b/dev/040-hero.js @@ -26,7 +26,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -52,7 +52,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`hero: running push`, 1); + BEAST.debugging.report(`hero: push`, 1); let element = ''; let canMove = true; @@ -152,7 +152,7 @@ BEAST.hero = (() => { // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- move: ( dir, step ) => { - BEAST.debugging.report(`hero: running move`, 1); + BEAST.debugging.report(`hero: move`, 1); if( !BEAST.DEAD ) { let position = { //our current position @@ -182,7 +182,7 @@ BEAST.hero = (() => { // die, Hero dies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- die: ( ) => { - BEAST.debugging.report(`hero: running die`, 1); + BEAST.debugging.report(`hero: die`, 1); BEAST.DEATHS ++; BEAST.DEAD = true; @@ -202,6 +202,7 @@ BEAST.hero = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); } }, diff --git a/dev/050-beasts.js b/dev/050-beasts.js index 829435c..7ea92db 100644 --- a/dev/050-beasts.js +++ b/dev/050-beasts.js @@ -2,7 +2,7 @@ * * Beasts * - * Breathing live into beasts, making them move and killing them off too + * Breathing live into beasts, making them move, seek, kill and mortal * **************************************************************************************************************************************************************/ @@ -10,6 +10,7 @@ //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dependencies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const PF = require('pathfinding'); //-------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -17,7 +18,83 @@ //-------------------------------------------------------------------------------------------------------------------------------------------------------------- BEAST.beasts = (() => { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// portBoard, Convert current board into an array the pathfinding library can understand +// +// @return {array} The presentation of the board in 0 and 1 +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const portBoard = ( position ) => { + BEAST.debugging.report(`beasts: portBoard`, 1); + + let i = 0; + let newBoard = []; //we assume always the best + + for(let boardRow of BEAST.BOARD) { //iterate over each row + newBoard[ i ] = []; //add a row + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each cell in this row + let cell = boardRow[ x ]; + + if( cell === undefined || cell === 'hero' ) { + newBoard[ i ].push( 0 ); //add the cell as walkable + } + else { + newBoard[ i ].push( 1 ); //add the cell as not walkable + } + } + + i ++; + } + + return newBoard; + } + + return { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// walk, Make all beasts walk +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + walk: () => { + BEAST.debugging.report(`beasts: walk`, 1); + + let finder = new PF.AStarFinder({ + allowDiagonal: true, + }); + + //iterate beasts + for( let beast in BEAST.BEASTS ) { + beast = BEAST.BEASTS[ beast ]; + let board = portBoard(); //we have to port the board to an binary multi dimensional array for the pathfinding library + let grid = new PF.Grid( board ); + let path = finder.findPath(beast.x, beast.y, BEAST.HERO.x, BEAST.HERO.y, grid); + + if( path[1] !== undefined ) { //if there is no path then just stand still + delete BEAST.BEASTS[`${beast.x}-${beast.y}`]; //delete this beast from the registry + BEAST.BOARD[ beast.y ][ beast.x ] = undefined; //empty the spot this beast was in + + BEAST.BEASTS[`${path[1][0]}-${path[1][1]}`] = { //add it back in with updated key and coordinates + x: path[1][0], + y: path[1][1], + }; + BEAST.BOARD[ path[1][1] ][ path[1][0] ] = 'beast'; //add the best to the new position + + BEAST.draw.board(); + + if( path[1][0] === BEAST.HERO.x && path[1][1] === BEAST.HERO.y ) { + clearInterval( BEAST.INTERVAL ); //first no more movements + BEAST.hero.die(); //you dead + + break; //no more beasts movements necessary + } + } + } + + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // squash, Squash a beast @@ -27,14 +104,14 @@ BEAST.beasts = (() => { squash: ( position ) => { BEAST.debugging.report(`beasts: squash`, 1); - delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry - - //disable interval for movement + delete BEAST.BEASTS[`${position.x}-${position.y}`]; //delete beast from the registry if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins BEAST.DEAD = true; //disable controls BEAST.LEVEL ++; //increase level + clearInterval( BEAST.INTERVAL ); //disable interval for movement + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level setTimeout(() => { BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); @@ -52,6 +129,7 @@ BEAST.beasts = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); }, 300); } @@ -69,7 +147,11 @@ BEAST.beasts = (() => { init: () => { BEAST.debugging.report(`beasts: init`, 1); - // + clearInterval( BEAST.INTERVAL ); //clear any intervals to avoid doubling up + + BEAST.INTERVAL = setInterval(() => { //set the interval in which the beasts move + BEAST.beasts.walk(); + }, BEAST.LEVELS[ BEAST.LEVEL ].speed ); }, } })(); \ No newline at end of file diff --git a/dev/999-init.js b/dev/999-init.js index 0ef5e6d..2921588 100644 --- a/dev/999-init.js +++ b/dev/999-init.js @@ -109,6 +109,9 @@ BEAST.init = () => { else if( key.name === 'down' ) { BEAST.hero.move( 'y', 1 ); } + else if( key.name === 'q' ) { + process.exit(0); + } else { return; } @@ -129,6 +132,7 @@ BEAST.init = () => { BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }; diff --git a/dev/dev.js b/dev/dev.js index c518e3a..f1ed06a 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -47,19 +47,22 @@ const BEAST = (() => { //constructor factory LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy - beast: 10, - block: 400, + beast: 1, + block: 600, solid: 50, + speed: 1000, }, 2: { //increase beasts and solids, decrease blocks - beast: 30, - block: 250, + beast: 3, + block: 350, solid: 200, + speed: 1000, }, - 3: { //increase beasts and solids, decrease blocks - beast: 50, + 3: { //increase beasts and solids, decrease blocks and speed + beast: 10, block: 100, solid: 500, + speed: 500, }, }, SYMBOLS: { //symbols for element @@ -68,7 +71,8 @@ const BEAST = (() => { //constructor factory block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, - RL: {}, //The readline object for reuse in all modules + RL: {}, //the readline object for reuse in all modules + INTERVAL: {}, //the interval object to clear or set the beast walking interval on //-------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -176,7 +180,7 @@ BEAST.scaffolding = (() => { // init, Scaffold the canvas //-------------------------------------------------------------------------------------------------------------------------------------------------------------- init: () => { - BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.debugging.report(`scaffolding: init`, 1); BEAST.HERO = { x: BEAST.START.x, @@ -187,7 +191,7 @@ BEAST.scaffolding = (() => { BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD - BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero }, @@ -196,7 +200,7 @@ BEAST.scaffolding = (() => { // cords, Scaffold the coordinates for the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- cords: () => { - BEAST.debugging.report(`scaffolding: running cords`, 1); + BEAST.debugging.report(`scaffolding: cords`, 1); for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { BEAST.BOARD[ i ] = []; //add array per row @@ -209,7 +213,7 @@ BEAST.scaffolding = (() => { // hero, Scaffold the hero onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: () => { - BEAST.debugging.report(`scaffolding: running hero`, 1); + BEAST.debugging.report(`scaffolding: hero`, 1); BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position }, @@ -220,7 +224,7 @@ BEAST.scaffolding = (() => { // beasts, Scaffold beasts onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- beasts: () => { - BEAST.debugging.report(`scaffolding: running beasts`, 1); + BEAST.debugging.report(`scaffolding: beasts`, 1); let beasts = 0; //keep track of the beasts we distribute BEAST.BEASTS = []; @@ -232,7 +236,7 @@ BEAST.scaffolding = (() => { if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board - BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + BEAST.BEASTS[`${randomX}-${randomY}`] = { //adding beast to beast registry x: randomX, y: randomY, } @@ -250,7 +254,7 @@ BEAST.scaffolding = (() => { // @param element {keyword} We can only scaffold 'beast', 'block', 'solid' //-------------------------------------------------------------------------------------------------------------------------------------------------------------- element: ( element ) => { - BEAST.debugging.report(`scaffolding: running blocks`, 1); + BEAST.debugging.report(`scaffolding: blocks`, 1); let count = 0; //keep track of elements we distribute @@ -306,7 +310,7 @@ BEAST.draw = (() => { // @param item {string} The string to be written //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const printLine = ( item ) => { - BEAST.debugging.report(`draw: running printLine`, 1); + BEAST.debugging.report(`draw: printLine`, 1); //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -405,11 +409,11 @@ BEAST.draw = (() => { let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board - for(let boardLine of BEAST.BOARD) { //iterate over each row + for(let boardRow of BEAST.BOARD) { //iterate over each row let line = ''; //translate BEAST.BOARD to ASCII for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row - let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + let element = BEAST.SYMBOLS[ boardRow[ x ] ]; //get the symbol for the element we found if( element ) { //if there was an element found line += element; @@ -433,22 +437,25 @@ BEAST.draw = (() => { // message, Drawing a message in the center of the screen // // @param message {string} The string to be written to the screen -// @param color {keyword} The color of the message, Default: black +// @param color {keyword} The color of the message, Default: black, optional //-------------------------------------------------------------------------------------------------------------------------------------------------------------- message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); - Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 2) ); //go to middle of board - let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame - spaceLeft = ' '.repeat( spaceLeft ); + let spaceShoulder = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceShoulder = ' '.repeat( spaceShoulder ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceLeft = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceRight = Math.ceil( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( spaceLeft )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceRight )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there @@ -497,7 +504,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -523,7 +530,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`hero: running push`, 1); + BEAST.debugging.report(`hero: push`, 1); let element = ''; let canMove = true; @@ -623,7 +630,7 @@ BEAST.hero = (() => { // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- move: ( dir, step ) => { - BEAST.debugging.report(`hero: running move`, 1); + BEAST.debugging.report(`hero: move`, 1); if( !BEAST.DEAD ) { let position = { //our current position @@ -653,7 +660,7 @@ BEAST.hero = (() => { // die, Hero dies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- die: ( ) => { - BEAST.debugging.report(`hero: running die`, 1); + BEAST.debugging.report(`hero: die`, 1); BEAST.DEATHS ++; BEAST.DEAD = true; @@ -673,6 +680,7 @@ BEAST.hero = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); } }, @@ -682,7 +690,7 @@ BEAST.hero = (() => { * * Beasts * - * Breathing live into beasts, making them move and killing them off too + * Breathing live into beasts, making them move, seek, kill and mortal * **************************************************************************************************************************************************************/ @@ -690,6 +698,7 @@ BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dependencies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const PF = require('pathfinding'); //-------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -697,7 +706,83 @@ BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- BEAST.beasts = (() => { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// portBoard, Convert current board into an array the pathfinding library can understand +// +// @return {array} The presentation of the board in 0 and 1 +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const portBoard = ( position ) => { + BEAST.debugging.report(`beasts: portBoard`, 1); + + let i = 0; + let newBoard = []; //we assume always the best + + for(let boardRow of BEAST.BOARD) { //iterate over each row + newBoard[ i ] = []; //add a row + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each cell in this row + let cell = boardRow[ x ]; + + if( cell === undefined || cell === 'hero' ) { + newBoard[ i ].push( 0 ); //add the cell as walkable + } + else { + newBoard[ i ].push( 1 ); //add the cell as not walkable + } + } + + i ++; + } + + return newBoard; + } + + return { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// walk, Make all beasts walk +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + walk: () => { + BEAST.debugging.report(`beasts: walk`, 1); + + let finder = new PF.AStarFinder({ + allowDiagonal: true, + }); + + //iterate beasts + for( let beast in BEAST.BEASTS ) { + beast = BEAST.BEASTS[ beast ]; + let board = portBoard(); //we have to port the board to an binary multi dimensional array for the pathfinding library + let grid = new PF.Grid( board ); + let path = finder.findPath(beast.x, beast.y, BEAST.HERO.x, BEAST.HERO.y, grid); + + if( path[1] !== undefined ) { //if there is no path then just stand still + delete BEAST.BEASTS[`${beast.x}-${beast.y}`]; //delete this beast from the registry + BEAST.BOARD[ beast.y ][ beast.x ] = undefined; //empty the spot this beast was in + + BEAST.BEASTS[`${path[1][0]}-${path[1][1]}`] = { //add it back in with updated key and coordinates + x: path[1][0], + y: path[1][1], + }; + BEAST.BOARD[ path[1][1] ][ path[1][0] ] = 'beast'; //add the best to the new position + + BEAST.draw.board(); + + if( path[1][0] === BEAST.HERO.x && path[1][1] === BEAST.HERO.y ) { + clearInterval( BEAST.INTERVAL ); //first no more movements + BEAST.hero.die(); //you dead + + break; //no more beasts movements necessary + } + } + } + + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // squash, Squash a beast @@ -707,14 +792,14 @@ BEAST.beasts = (() => { squash: ( position ) => { BEAST.debugging.report(`beasts: squash`, 1); - delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry - - //disable interval for movement + delete BEAST.BEASTS[`${position.x}-${position.y}`]; //delete beast from the registry if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins BEAST.DEAD = true; //disable controls BEAST.LEVEL ++; //increase level + clearInterval( BEAST.INTERVAL ); //disable interval for movement + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level setTimeout(() => { BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); @@ -732,6 +817,7 @@ BEAST.beasts = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); }, 300); } @@ -749,7 +835,11 @@ BEAST.beasts = (() => { init: () => { BEAST.debugging.report(`beasts: init`, 1); - // + clearInterval( BEAST.INTERVAL ); //clear any intervals to avoid doubling up + + BEAST.INTERVAL = setInterval(() => { //set the interval in which the beasts move + BEAST.beasts.walk(); + }, BEAST.LEVELS[ BEAST.LEVEL ].speed ); }, } })(); @@ -864,6 +954,9 @@ BEAST.init = () => { else if( key.name === 'down' ) { BEAST.hero.move( 'y', 1 ); } + else if( key.name === 'q' ) { + process.exit(0); + } else { return; } @@ -884,6 +977,7 @@ BEAST.init = () => { BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }; diff --git a/package.json b/package.json index 2f6ea54..67116a3 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "peerDependencies": {}, "dependencies": { "chalk": "^1.0.0", - "cli-size": "^1.0.0" + "cli-size": "^1.0.0", + "pathfinding": "^0.4.18" }, "keywords": [ "game", diff --git a/prod/index.js b/prod/index.js index 0dc31f8..1dd049e 100644 --- a/prod/index.js +++ b/prod/index.js @@ -47,19 +47,22 @@ const BEAST = (() => { //constructor factory LEVEL: 1, //the current level (we start with 1 duh) LEVELS: { //the amount of elements per level 1: { //start easy - beast: 10, - block: 400, + beast: 1, + block: 600, solid: 50, + speed: 1000, }, 2: { //increase beasts and solids, decrease blocks - beast: 30, - block: 250, + beast: 3, + block: 350, solid: 200, + speed: 1000, }, - 3: { //increase beasts and solids, decrease blocks - beast: 50, + 3: { //increase beasts and solids, decrease blocks and speed + beast: 10, block: 100, solid: 500, + speed: 500, }, }, SYMBOLS: { //symbols for element @@ -68,7 +71,8 @@ const BEAST = (() => { //constructor factory block: Chalk.gray('▓'), solid: Chalk.white('▓'), }, - RL: {}, //The readline object for reuse in all modules + RL: {}, //the readline object for reuse in all modules + INTERVAL: {}, //the interval object to clear or set the beast walking interval on //-------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -176,7 +180,7 @@ BEAST.scaffolding = (() => { // init, Scaffold the canvas //-------------------------------------------------------------------------------------------------------------------------------------------------------------- init: () => { - BEAST.debugging.report(`scaffolding: running init`, 1); + BEAST.debugging.report(`scaffolding: init`, 1); BEAST.HERO = { x: BEAST.START.x, @@ -187,7 +191,7 @@ BEAST.scaffolding = (() => { BEAST.scaffolding.beasts(); //add beasts BEAST.scaffolding.element( 'block' ); //add blocks to BEAST.BOARD BEAST.scaffolding.element( 'solid' ); //add solids to BEAST.BOARD - BEAST.scaffolding.hero(); //last but not least we need the hero in BEAST.BOARD + BEAST.scaffolding.hero(); //last but not least we need the hero }, @@ -196,7 +200,7 @@ BEAST.scaffolding = (() => { // cords, Scaffold the coordinates for the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- cords: () => { - BEAST.debugging.report(`scaffolding: running cords`, 1); + BEAST.debugging.report(`scaffolding: cords`, 1); for(let i = 0; i < ( BEAST.MINHEIGHT - 7 ); i++) { BEAST.BOARD[ i ] = []; //add array per row @@ -209,7 +213,7 @@ BEAST.scaffolding = (() => { // hero, Scaffold the hero onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- hero: () => { - BEAST.debugging.report(`scaffolding: running hero`, 1); + BEAST.debugging.report(`scaffolding: hero`, 1); BEAST.BOARD[ BEAST.HERO.y ][ BEAST.HERO.x ] = 'hero' //add the hero his/her starting position }, @@ -220,7 +224,7 @@ BEAST.scaffolding = (() => { // beasts, Scaffold beasts onto the board //-------------------------------------------------------------------------------------------------------------------------------------------------------------- beasts: () => { - BEAST.debugging.report(`scaffolding: running beasts`, 1); + BEAST.debugging.report(`scaffolding: beasts`, 1); let beasts = 0; //keep track of the beasts we distribute BEAST.BEASTS = []; @@ -232,7 +236,7 @@ BEAST.scaffolding = (() => { if( BEAST.BOARD[ randomY ][ randomX ] === undefined ) { //no other elements on the spot BEAST.BOARD[ randomY ][ randomX ] = 'beast'; //adding beast onto board - BEAST.BEASTS[`${randomX}x${randomY}`] = { //adding beast to beast registry + BEAST.BEASTS[`${randomX}-${randomY}`] = { //adding beast to beast registry x: randomX, y: randomY, } @@ -250,7 +254,7 @@ BEAST.scaffolding = (() => { // @param element {keyword} We can only scaffold 'beast', 'block', 'solid' //-------------------------------------------------------------------------------------------------------------------------------------------------------------- element: ( element ) => { - BEAST.debugging.report(`scaffolding: running blocks`, 1); + BEAST.debugging.report(`scaffolding: blocks`, 1); let count = 0; //keep track of elements we distribute @@ -306,7 +310,7 @@ BEAST.draw = (() => { // @param item {string} The string to be written //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const printLine = ( item ) => { - BEAST.debugging.report(`draw: running printLine`, 1); + BEAST.debugging.report(`draw: printLine`, 1); //testing screen size and just printing on error let error = BEAST.checkSize(); @@ -405,11 +409,11 @@ BEAST.draw = (() => { let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); Readline.cursorTo( BEAST.RL, 0, (top + 4) ); //go to top of board - for(let boardLine of BEAST.BOARD) { //iterate over each row + for(let boardRow of BEAST.BOARD) { //iterate over each row let line = ''; //translate BEAST.BOARD to ASCII for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each column in this row - let element = BEAST.SYMBOLS[ boardLine[ x ] ]; //get the symbol for the element we found + let element = BEAST.SYMBOLS[ boardRow[ x ] ]; //get the symbol for the element we found if( element ) { //if there was an element found line += element; @@ -433,22 +437,25 @@ BEAST.draw = (() => { // message, Drawing a message in the center of the screen // // @param message {string} The string to be written to the screen -// @param color {keyword} The color of the message, Default: black +// @param color {keyword} The color of the message, Default: black, optional //-------------------------------------------------------------------------------------------------------------------------------------------------------------- message: ( message, color = 'black' ) => { customStdout.muted = false; //allow output so we can draw let top = Math.floor( ( CliSize().rows - BEAST.MINHEIGHT ) / 2 ); - Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 1) ); //go to middle of board + Readline.cursorTo( BEAST.RL, 0, (top + 4 + Math.floor( ( BEAST.MINHEIGHT - 7 ) / 2 ) - 2) ); //go to middle of board - let spaceLeft = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame - spaceLeft = ' '.repeat( spaceLeft ); + let spaceShoulder = Math.floor( ( CliSize().columns - BEAST.MINWIDTH ) / 2 ); //space left from frame + spaceShoulder = ' '.repeat( spaceShoulder ); - let spaceCenter = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceLeft = Math.floor( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); + let spaceRight = Math.ceil( ( (BEAST.MINWIDTH - 2) / 2 ) - ( (message.length + 2) / 2 ) ); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( spaceCenter )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceCenter )}\n`); - BEAST.RL.write(`${spaceLeft}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( spaceLeft )}${Chalk[ color ].bgWhite.bold(` ${message} `)}${' '.repeat( spaceRight )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); + BEAST.RL.write(`${spaceShoulder}${Chalk.gray(`│`)}${' '.repeat( BEAST.MINWIDTH - 2 )}\n`); Readline.cursorTo( BEAST.RL, 0, (CliSize().rows - 1) ); //go to bottom of board and rest cursor there @@ -497,7 +504,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const _isOutOfBounds = ( position ) => { - BEAST.debugging.report(`hero: running _isOutOfBounds`, 1); + BEAST.debugging.report(`hero: _isOutOfBounds`, 1); let outofbounds = false; //let's assume the best @@ -523,7 +530,7 @@ BEAST.hero = (() => { // @return {boolean} True or false //-------------------------------------------------------------------------------------------------------------------------------------------------------------- const push = ( dir, step ) => { - BEAST.debugging.report(`hero: running push`, 1); + BEAST.debugging.report(`hero: push`, 1); let element = ''; let canMove = true; @@ -623,7 +630,7 @@ BEAST.hero = (() => { // @param step {integer} The increment of the movement. 1 = move right, -1 = move left //-------------------------------------------------------------------------------------------------------------------------------------------------------------- move: ( dir, step ) => { - BEAST.debugging.report(`hero: running move`, 1); + BEAST.debugging.report(`hero: move`, 1); if( !BEAST.DEAD ) { let position = { //our current position @@ -653,7 +660,7 @@ BEAST.hero = (() => { // die, Hero dies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- die: ( ) => { - BEAST.debugging.report(`hero: running die`, 1); + BEAST.debugging.report(`hero: die`, 1); BEAST.DEATHS ++; BEAST.DEAD = true; @@ -673,6 +680,7 @@ BEAST.hero = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); } }, @@ -682,7 +690,7 @@ BEAST.hero = (() => { * * Beasts * - * Breathing live into beasts, making them move and killing them off too + * Breathing live into beasts, making them move, seek, kill and mortal * **************************************************************************************************************************************************************/ @@ -690,6 +698,7 @@ BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dependencies //-------------------------------------------------------------------------------------------------------------------------------------------------------------- +const PF = require('pathfinding'); //-------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -697,7 +706,83 @@ BEAST.hero = (() => { //-------------------------------------------------------------------------------------------------------------------------------------------------------------- BEAST.beasts = (() => { +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Private function +// portBoard, Convert current board into an array the pathfinding library can understand +// +// @return {array} The presentation of the board in 0 and 1 +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + const portBoard = ( position ) => { + BEAST.debugging.report(`beasts: portBoard`, 1); + + let i = 0; + let newBoard = []; //we assume always the best + + for(let boardRow of BEAST.BOARD) { //iterate over each row + newBoard[ i ] = []; //add a row + + for(let x = 0; x < ( BEAST.MINWIDTH - 2 ); x++) { //iterate over each cell in this row + let cell = boardRow[ x ]; + + if( cell === undefined || cell === 'hero' ) { + newBoard[ i ].push( 0 ); //add the cell as walkable + } + else { + newBoard[ i ].push( 1 ); //add the cell as not walkable + } + } + + i ++; + } + + return newBoard; + } + + return { + +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Public function +// walk, Make all beasts walk +//-------------------------------------------------------------------------------------------------------------------------------------------------------------- + walk: () => { + BEAST.debugging.report(`beasts: walk`, 1); + + let finder = new PF.AStarFinder({ + allowDiagonal: true, + }); + + //iterate beasts + for( let beast in BEAST.BEASTS ) { + beast = BEAST.BEASTS[ beast ]; + let board = portBoard(); //we have to port the board to an binary multi dimensional array for the pathfinding library + let grid = new PF.Grid( board ); + let path = finder.findPath(beast.x, beast.y, BEAST.HERO.x, BEAST.HERO.y, grid); + + if( path[1] !== undefined ) { //if there is no path then just stand still + delete BEAST.BEASTS[`${beast.x}-${beast.y}`]; //delete this beast from the registry + BEAST.BOARD[ beast.y ][ beast.x ] = undefined; //empty the spot this beast was in + + BEAST.BEASTS[`${path[1][0]}-${path[1][1]}`] = { //add it back in with updated key and coordinates + x: path[1][0], + y: path[1][1], + }; + BEAST.BOARD[ path[1][1] ][ path[1][0] ] = 'beast'; //add the best to the new position + + BEAST.draw.board(); + + if( path[1][0] === BEAST.HERO.x && path[1][1] === BEAST.HERO.y ) { + clearInterval( BEAST.INTERVAL ); //first no more movements + BEAST.hero.die(); //you dead + + break; //no more beasts movements necessary + } + } + } + + }, + + //-------------------------------------------------------------------------------------------------------------------------------------------------------------- // Public function // squash, Squash a beast @@ -707,14 +792,14 @@ BEAST.beasts = (() => { squash: ( position ) => { BEAST.debugging.report(`beasts: squash`, 1); - delete BEAST.BEASTS[`${position.x}x${position.y}`]; //delete beast from the registry - - //disable interval for movement + delete BEAST.BEASTS[`${position.x}-${position.y}`]; //delete beast from the registry if( Object.keys( BEAST.BEASTS ).length === 0 ) { //no more beasts! The hero wins BEAST.DEAD = true; //disable controls BEAST.LEVEL ++; //increase level + clearInterval( BEAST.INTERVAL ); //disable interval for movement + if( BEAST.LEVEL > Object.keys( BEAST.LEVELS ).length ) { //won last level setTimeout(() => { BEAST.draw.message( '!! YOU WIN THE GAME !!', 'magenta' ); @@ -732,6 +817,7 @@ BEAST.beasts = (() => { BEAST.DEAD = false; BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }, 3000); }, 300); } @@ -749,7 +835,11 @@ BEAST.beasts = (() => { init: () => { BEAST.debugging.report(`beasts: init`, 1); - // + clearInterval( BEAST.INTERVAL ); //clear any intervals to avoid doubling up + + BEAST.INTERVAL = setInterval(() => { //set the interval in which the beasts move + BEAST.beasts.walk(); + }, BEAST.LEVELS[ BEAST.LEVEL ].speed ); }, } })(); @@ -864,6 +954,9 @@ BEAST.init = () => { else if( key.name === 'down' ) { BEAST.hero.move( 'y', 1 ); } + else if( key.name === 'q' ) { + process.exit(0); + } else { return; } @@ -884,6 +977,7 @@ BEAST.init = () => { BEAST.scaffolding.init(); BEAST.draw.init(); + BEAST.beasts.init(); }; From f960facc806000259999233e199faca8b4c00476 Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Sun, 16 Oct 2016 17:21:47 +1100 Subject: [PATCH 7/9] fixed lives bug Signed-off-by: Dominik Wilkowski --- dev/040-hero.js | 3 ++- dev/dev.js | 3 ++- prod/index.js | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dev/040-hero.js b/dev/040-hero.js index 3c9b5b8..7c12e3c 100644 --- a/dev/040-hero.js +++ b/dev/040-hero.js @@ -184,10 +184,11 @@ BEAST.hero = (() => { die: ( ) => { BEAST.debugging.report(`hero: die`, 1); + clearInterval( BEAST.INTERVAL ); BEAST.DEATHS ++; BEAST.DEAD = true; - if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + if( BEAST.DEATHS > BEAST.LIVES ) { //no more lives left BEAST.draw.message('GAME OVER...'); //sorry :`( setTimeout(() => { diff --git a/dev/dev.js b/dev/dev.js index f1ed06a..30a03d5 100644 --- a/dev/dev.js +++ b/dev/dev.js @@ -662,10 +662,11 @@ BEAST.hero = (() => { die: ( ) => { BEAST.debugging.report(`hero: die`, 1); + clearInterval( BEAST.INTERVAL ); BEAST.DEATHS ++; BEAST.DEAD = true; - if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + if( BEAST.DEATHS > BEAST.LIVES ) { //no more lives left BEAST.draw.message('GAME OVER...'); //sorry :`( setTimeout(() => { diff --git a/prod/index.js b/prod/index.js index 1dd049e..07284ff 100644 --- a/prod/index.js +++ b/prod/index.js @@ -662,10 +662,11 @@ BEAST.hero = (() => { die: ( ) => { BEAST.debugging.report(`hero: die`, 1); + clearInterval( BEAST.INTERVAL ); BEAST.DEATHS ++; BEAST.DEAD = true; - if( BEAST.DEATHS === BEAST.LIVES ) { //no more lives left + if( BEAST.DEATHS > BEAST.LIVES ) { //no more lives left BEAST.draw.message('GAME OVER...'); //sorry :`( setTimeout(() => { From f13e8e00c16e30424b45cdd0b41ca3c02f3e47cc Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Mon, 17 Oct 2016 10:18:24 +1100 Subject: [PATCH 8/9] added some docs Signed-off-by: Dominik Wilkowski --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++---- assets/play.gif | Bin 0 -> 633323 bytes package.json | 4 ++-- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 assets/play.gif diff --git a/README.md b/README.md index 50eba3a..19d5fea 100644 --- a/README.md +++ b/README.md @@ -4,23 +4,65 @@ ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩ ``` -[![NPM](https://nodei.co/npm/beast.js.png?downloads=true)](https://nodei.co/npm/beast.js/) +![The beast game](https://raw.githubusercontent.com/dominikwilkowski/beast.js/master/assets/play.gif) +> BEAST.js is an homage to the 1984 ASCII game "[BEAST](https://en.wikipedia.org/wiki/Beast_(video_game))" from Dan Baker, Alan Brown, Mark Hamilton and +> Derrick Shadel written in node -> TODO +# Beast.js + +- [How to install](#how-to-install) +- [How to play](#how-to-play) +- [Contributing](#contributing) +- [Test](#test) +- [Release History](#release-history) +- [License](#license) + + +## How to install + +Download the game from this repo and install it's dependencies via: + +```shell +npm i +``` + +or + +``` +yarn +``` + +Then run: + +```shell +npm start +``` + + +## How to play + +The goal is to squash all beasts in each level. To squash a beast between two or more blocks. ## Contributing + Please look at the coding style and work with it, not against it ;) +Run grunt to build and watch the project. _(gulp coming)_ + +```shell +grunt +``` ## Test + TODO ## Release History -* 0.1.0 - alpha test +* 0.1.0 - alpha release ## License -Copyright (c) 2016 Dominik Wilkowski. Licensed under the [GNU GPLv3](https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE). \ No newline at end of file +Copyright (c) Dominik Wilkowski. Licensed under the [GNU GPLv3](https://github.com/dominikwilkowski/beast.js/blob/master/LICENSE). \ No newline at end of file diff --git a/assets/play.gif b/assets/play.gif new file mode 100644 index 0000000000000000000000000000000000000000..13ab533e0bed269117437e30d1ac232975c692a5 GIT binary patch literal 633323 zcma%h`8(9#`~UO#oW&UXzH7)f2qAdzQdT#BVTLndBZ54%;HTCXw0H3?0VSU)7#hoXkhR$b!d2G^vTm_W8)K( zQ_o+#oPIT9jhLHXn6q76UYR#}ySDIdeQR^;?dzT0PvfHd`{G{?Sgl#VeqsIg?f4tN z$?wA-`D*|L#}@Mk-nV)9;u>2Lns!3Xm2~e(2KUW-B!bHj1V^gNpeV1YUmpAF>sh@5;TzG?xVEa?(^x5|jg_T#54Lnc76}fXHBrMD4F!XH23?l4G2-pP zV+OAzIAUy-g9W6lZ%o~G-OO={8OE849Y6FmR#R$8>|lxtJ~w3bg|;^YYb{{ZBUjhV zFT&kvO%xxHJSHd8;r%hI#n~x-uN~K#TzX)J_&WX<-`%I2rM{1H9(SxSP~7?Coklz2 zqsyzs(xReh{l)IteA1ZVy>Ihw_(FB8)aW_OrRi$JXWwJ=HaE@fnJ&B8i3RWJMfSZ7 z5Rswz);08Z(x~Rf!w{CU!@N9*Vvy_8>n=6l4L#g5Jg)T~baA zc`zrwp2%(;Ula!}hOe=nJRdz>j$RXB;SagY5K0W~9UYk6jFJ2M3J6_LGWM48$PRb?&Y-w@P$<_4+ySvSaW@rhPO2Idy zW$EEf5)HL)RN;+*51X``Zplwbwv36zu+)b4Ej8Em{@wLyvz$$rtQ@LR{mhe9AlcHs zmb{$VQl+~4iM1zK^7QiqtD=nEwrvx-YR|bX8oXelz8+~3zBl}2f%X!s*RfTTiuusBtU8b-2#@CNK(ACQ) zKNl6uW7&K^_@8_$6g-Kp+g2(&;rR1AuKDLu_m@G;vcju@)oS7ype_FH<(6aT(aRV9 ze4!%)U)LU+J^vCDW^Z}qsNCh1|1#VOQ}}xoF$CHl5JT}69X<8XR^>!o8syl|pW2HK zs3e#J7^KbEusmulgtKSmKV2MwzU+>5xcS@K#aRMvl`otob-ka^fRlMd0kvAJSB<#Z zI90!-ceO3~Lm6?{yLAU$1qy*T755 zf_5fWw5g?WOl37U=B?3?%+)Z0GupC@3pa#BtF|O$&*YwQYA|qE#Iwh`K&R}sRG6p1 z>tZbzs6DSih~=1w9__5VpaU4`lTG7`Y(azs z0U*z?HyR*BRS`%K%^wWPHtgzIPgrv*vBO0$nrKz#g}!-?2SK%71}tHEC^7*)+9~B? zw)U*Y&83353+HG|0eY&)8CO*ZD9(ODPnAmx5#5ORYhXLX$e9=P^Q`AR9AP|{3P(45 z@?M^>KOE?Q>EENm1u@HSCO9GG`~H`XcZulPaPVQ*xxgESP_>|I&rlLI97$SUdl2Tq zmRLm3wTvYsfB(8HmWw>GK$TY-%eyX<0TZxf?8xt}d@pOb zG`Y&GphRhTFJE8G=lud%G~V(-dSPj*wD^0`p`Vw8!^rdC2lh4^%hkd)P*U|ej_NhYU>A3;Vs|tPBQnN#Gk9i_QnjvA+5pzZb~J3$6OM-is?@V0?PNVDi*G&$E2cSh!LfwX#u4e+DV{f`Zu)~P%;#**R$nx9yWR>BHOMyu#f7Te@ zb&uY2`WkpGW({*K@=-s7e{^f?8^j%@M_u>#=`+>W`92;^Jh>Ng^RYT?|KTChQ|5E& z$Nu;8ak!T}0iR2iW0v{4ReJ7z4)r{HYvaRy|(|{`F{w=tK zUl{(~FT7l~@>V0Jr*$>3FT!E(5UKY3)%~wYBe&j#FB}gn2n2?XsO=d>^v_%=-=qFH zd54pYeSG`Hk3dbrue<9EQgi(CdiSpX%*~4YSU7c!;X7OyH5E z=*7ozKkFlInfO*jzo~HkrPB7_zQyh6_3FPr2G5`mZdSx>C_g@Gyf(N~d3sX0?fi4r zChkYnwOeJ5r@!gs{z5fha<*tH{>*>T_?{vh_q`+WWc}H|_m>s_E#7?m_kQ8y!&i6M z4oxfm`>lLif9Up?g&4R>>`oy8IEq20-ZrU>gKZPE<6}>0B4g1-w^_MwvyTyYP;tKx z0qz4e2DxYxYocs8AQUNe)|)7ea+i=GiYyZ4z1?IRi04%jR2JSC1^C5t2HQI zI!e&)G16>6JV9Ea&x%S|Ye6Yas?lR3}@xcvq7WIo6Z@`D>s=iU;1$vnSDOE%}xNf`Gc} z6{*EQFmWDY@W1OICl2IDak%1*VmJWUT|l-#keeBNiQq%8fkJ??GyriN zxcCPGY=LRZN)9Y!;Cfiv6&mp1{Xd}1DGvZiF++?vhzDmQK+zW?7<*GQ0y{v=8Z_L1 zpb1nKmb1Apf#~>|CN~Fi5CG1D)Se{ptqQU&Qdz#*aG9Z2{$iv|KT=k<9=Otw`7H!=2m?7??r@M(v;u*nNUT&3oC%ZWGU~@pAz?(* zxLwl5kk^s}f$?MzDzv;S!AAqYKB8;|agZ$Y9e*4kfJqnTNf%fH1WBN9F(}ss!m)5B z93(@6M5ZBa4k)Dy(n^EQ0niy-n%6WSLC6!KLOM%#vD*1!2R0Z2B(s*QPX=5?a(g2| zwqie5kC0Pt9wd4il6HXzKb88EXdwcLo05b7nByx~$eTtQPcGcP0t#dDv6MVgEz+eI zbUV%x^-(BD1#w=W@=pGhz{H;&Y0v>6Kq?kk0|lo+-nBd}YIezZ@x5abF%S@-fW_m* z82nwaV~7%UO>Qmy1`cRy1WU(@DYalvap}Ec^N??l)WJXDocVy#C$zAQpO7^cIdrjX z{MgwJ2Z#~M_N`nE2qgpKB?16gzEfJhRAxs8hG|QGi53@NN}3x>>&7JpQcG*bvtC>T z=Y6hi@E{u+OL~io57Q(d+KRn#5{N5qNVr3{24>s&bFCGVv2cq#zb0(@>1SFLf?9Yy z|Ie1vlg$8!UPv0_j3s1;$^q|?m5os#iwo$Q=hv79#&iMN#gH@s!eYuerXevBw3h@8 zFI8M40Oyz?`SgFlvbd$Qg42*7x=M_2Pu~T=eT-__sY0cLOHaveF2LO<|K_;L9+;8? z1H~jO!{l_VcR?4CZ1)2|rKwtiS}jGc^aN@b!z+2$sF8oMSq6w-5;wJj$CbJgfZQ$JLbrZK zr&5S8X*ZxlgCGP#3-^TdgIqoG@k_M{#gMQI#Eq*_m?)^9BYR8(ezZLbywKlN1RPf# zFJ+TJhw!G0$mQ<-BbHv&jJUDWqoof8MbU=+35zhK3A<4nl+tZ22j&^}78gp6DvD%FQ1z80QY zn3`sT)}=NA66AJE+Imi0o+FRVpHBm}fqAJM~24uxoR z>7wi1@b+^m)thv6&BATL{399NH*?1x>QWx5 zcoehk6otj+gl3Q+ue7=F(O7c#McVWye|SrH`?V2yHS|b1yC9B~G{Lod;eH{r^LI}} zpgcRH{6UEt5?v358Cvw!W}r^u4WYAhefViJe|{SWS{VOcOCO&uNv~i(yr5hf$v~|Q zz;<9rklPe0kbmOf*Tgmai#r!5Uig6VJX2V?sV7s2l;bEDMKDB4uD~`(lDC*Sd?d!b zn1M3#%Wo)kCc?9LESu6`&Xv0<&5$eF7hrD`Ld~`~jH-w%Xr?P;z~sdn_7?xB!(wK# z{g8O9jo`rJZFTq?k?OKPHd=gk6(9W?Y5h5Eo+1B3&@kJ?e|r9!o)%9(iatl9d2TH6 zM2$(VTG3#J$q7Lt_xdmyJU&-of|FN_e0(@WvA(fBK;3V123LtZ~gv-lsQQ7T1%XDUF12M9pcF=9nAD_mN?ofpa0) z^iTASOMI1;Mqr~KxA^!(;FA`f(9HJCwA7f%iXN~vdP$7o3xq6_fYhoi>e-hQUaRfOwxYA>f^i>eE-VZ z&wbp~<-@X*PE*^buG{T8H5@Kzf8V5HFVj#{#ccF@X7d+=?V}s z=xnyLDv(m(+(j@Y|5iFU>?ALq%0W-j<3y3~q5sC-cFULKz0fdAwJlEKefq$%Ujzxvg<#!vQ#mJj?)}KAN^yRzW*n!?p z067i(U1h<#0*5BF`q$v!1#UBZNn0;O*qFkjx4)jMoQbnKm4e8CrRlFTLO)nLzBg?A zy1Mq|)EL1-arSnufqub}_{W=u&QgI1sKC2T<5hLe@MzziZhdg&57ovA_)_|wcWpHp zRV)_W-?w&@&{|R5fM6p(-ryUgjCXQO3>1IaFCny}%gT`auY)Ovjn~T7o5891!D61{ zexN!+V{q8#ckYgG>w+vZ24f{41;F z5}0IfMLN#P^d+$c-i<-r6>h95kKFThDXmQ>DPoT+aeuRZXASghZPuK~H|H5$d|AVL z+J+iw2jDc;656a$dK5jvQm96y*-jq%^wJ|E9W&%sx{Dl_p{M*fcazW0lDFZHD~ZXp zQd&{+Vv1$&)I*1*WiVn&%x|_N<>a4^Ng{s>i;BY-<>p!cpzKv~c$}EVj}=~NZEc*3 zmYigr7^eght18J@4OhoV$V<4KrymWM6~qYEGNzxCR+Z-Gmsm$h$hj$C1PjPr-Mw=t z%xD3Yzg=AUyz0J;mbKp!N^Dp;db0oXmugKToSwO=gvQ!toy(O}3pt$S^t4Mn*@+vY z&Zd&H!AHk@6oy&fNEl5wC0XI0N^kJlaf#u8j*sq>iUo2Pyb&~oC^oFNh|pJ%l@B3j zUW5s{3a7hc%I>(x>^VZd)_p2wo zLb~6%6e>{oY1i*aCPCHEQ~?|nzB}J)(cKKHhp%9iV;^U~_1A&?lv}^xWg~8Bz-OK@ znO59!=8|$|e$d19uoQaCsJM;O_`7%GfEL2zO{gEBV7YV{(c-~HZpR~&%fF=QgR+p0 zE}A1CPt7*rWa7ptT@H;py=elZGwa!{7@gn_kcESv1>Kuqwz_YO6G!q5Sjt-m0Q!OV< z<=^7TlJpOGnR*Q?d)w0a-(mo@N*ptYWKldYXF&W_Nd1@fxK!d0W5X_)8Pd}~TNpZm^CAkygXj%8r^&HNUEtkrqY1}1iR@2SbT6zx?(Cf*YzE1 zp?NL`OywDNMc(%UE@n8_v+P>9rP!C*1+J;|leR@~ z$VAi0x=essak%jr^TA+!f921DSNPrPV1E}f^OO2n$Ytk#`3hn0+4JbupKr=*1g@g@rcO_S z*@>}Nf375b9N>d~AD;v>*j}Q3-;`}7n=YNFE<|h2gvMpR;==X@+W@1PI;zyVr2Nc+>vdd>|0V z|3&Y-+EdFCsJ7G?8Autq7ZaaDlP+`rSvx2L9ITKyqK&WVFW!^E$;zH59a?3M+-( ze=T|?7L*hCe)h}KCew`N1ny;SC)R`ocCzUuDl=5-FsKRecn?*khhEH2YKy$n=a_EY zIUuQnWn^l|zN=($|E{%uIf%O!)>QN259xaCbnN!k*a-6*@2^9frwXgWJK~Z>Z+_Hq zt;|+uULCj{rdW;b`CxFxZZ?gC49PQcyU?9t{(W31+uX0rvX$G6-&oQ5k^oxnxXtY5 z>~7>$MR#^To2)b8vKhfE2GUBTzFKT{w#@yf7#<;u62eGW9Q>0utF0{^&OGjlqTMwm zgyrgJHN{%3<)V^H{RU6G|Ah$=xwAD`{R>)_DgAqw7zt>#T88|&8r)d}FZ&8bGkTt* z-Rn1a1lnKFsfjhu-T$qM;3;>b6VMxao|>kMXAJ3Ma_Z`8_D1pDp0&oD|5qY?kH%~t%nni zFWaEirUD3pHdurQAPE9D6Xoj#425uGcJb*#``0@WMrXO1fTsvKc}3FGO$-fnOj|=f zS@Zpdm;%pT<%i#3TT;EqydoKnR5|d$BM%5+JMey#jom%*l80`9ZTyY6m|c-(4JXyzqhumRvI;*O1arO)I>Isyen{cigqQi{HJUY#YUmnz%bFb8?F+_Ov(`&uRQvv## z@^YQIBF`h%62*@^p>b!kAk&$o)V5vy8+vpTzqr{E;XyfcQ+@s~OWwfh%=|AHxhSPn z>Rbu^>RXyW;SsK<8LhgU3p+`=A#6*rZ%viy|931b-Z=G9ToG!!+i~H=!`U7up0+{X z?m`2ZPttOHPSQkou4KA4MIh+Iw~N+^EaP%bNuTt|2=8@s^iZ1r!|N?nr!o{hZ7s)x zwF`Q(=bwd3-O)|;j3WDN{JSFE{5iawsGvsuF!<2P0WET0i2c<1d?uq1GdlCE*FE2@n8`i{zx4Os(po z(9R`4E}a9*1MfNEmtjh;XYv&MAnFcFP-ck27k)vea0OL2aVEh6XAN1obYa0Cf(;Eq zdfy3aCrL+wXLch8zo2rzto}V)wobq9%>^)4rGBpnU?E87EwH|wy&{m8QT}rwp7mMr zTDTawPZxOrGz}(TQ0f&rmC7045f%3yJE%32`Tz1F*Q9^q0>8Ep2|;+@X|t=Er74rJ&b*4v(#xlankPGzz@Kkd{_qoiQ-v=*lx09-IG~z~wk`-Q+<6%Q znVxzD52*Cj0(r#0PemZk?fBla758SKNdoUwjrZcN5)eU2)!=uS2gDtP3|Cz}wus6YryBpDZd8 z&U9)op-02j(-u}K5hec2WJVeK0QzoY8ndrm1sQM1>m2;UGWJ>T+*}=eD=mXJ{0oFv zHQZKlR5on_qy@Y?IbD;?bK@7rfmBZ(8bo0TSVhz&Vx--%FMjVzElv_Xz9r={=Jlr7syk;h?Z zGL#BDv!~mH2_{0fJekjG3KSCsxX73c)WRnVtmiuUnv&gCb3ahDCi-z`$`7w zDHHc}ZyxK*ZtgdY@98m{#IekP|vVRA_I@^R%8#MyWt_E#>{#K z@eC5AXs2$1HeagD{`;2!HqKlo{%X3T zDdvY;jOu~+YR#PwV^|%yk3IQ%w)a_U^2iIVbN!i8IrQ1TYverTMV1;u`Pn$Tr)wT= zIZz2w?-GcdD43D2&>V{84dtr21f3k4gmBGZA2L2%)5v#ov&_SYl>5P1!D=y=3H^#s zEo8ExLuR5`f3WrfO>pSL5J-{r%wMus;tSEY)n2|Mf)^FEe+a{6>Lqq>++J%cX7`dR zVI8N6US?udsCDys@d|Y*y(AqWK@=-Sg>R#e%Cu2D0T! zu$+6R0Y<8uU9%Q>eeUjyM4|f~avcp?SI(ZlfYOMz@N)~v<6hTU_?$2dr=&6}9P4HO z`hKZvNP%Vidc!wP>);E@Y-p?32KZU&ErP*AVvxu8v!oC4byW~jA#=D6JCmS%HpC}2 z7rmO0JL)5jXJe5dn~XlYxzD<7@GM6fSdK+%gm*TScV^Wn>bMhiuot+n_VwzH=59RLqzr#KGzh6y=6~h@$wUho_pACsaW;FV(9KY zbeMvA7yiuafu0Z1dm=I{QZSJ@ll|PoIGTtlGXBcJo{@pgm7iLcvjr+YH)3_MJ$I$K zPuCw9gz=3k*xlPOl7&nEI&h|-M+-vCgz|%pTs4?PogZb(lw7YTQ!aNAr2zJOV%~Nf zn?h>tC4cX-repoc*SXWfq&x$ig)J?zeQiZ)X%+I|yQC!ZBpG$~Y*odrnkH?AJRasy zzQZ5xtFTr#ADH?Dqfr-p%tyJwq;rfHNG{FZf*fp6muX)7wT=sVZOM9>WIaQJgcc86 zP`izeDCg`2**aK3xT{qq1>8&L`mk-&OgP+{$dRq=b)u-tlZiz=`Wjos|51l8Iec} zEDaEkNJZbg9RSJsMlRh^lh}?Ar3rd@|CN-$?FC@38`xfm;{rftf+B7A z?N5idLs}f(Gy_M*T+XhbFd5kGj{6b;@*l;AOx=F}(YuB`zz*C-oc0jD3nyURZhzvs zeFk@1$d>pig7}$h^6w#o(ouYvAIMKLxwmlpvrSYEF~P<*`KBgNMXiioL}?!Rq}cwb z!zKAoCEq!^EyO)J`;b-!TEPHdXyt4m_f_H%En$%Xxt3H~lyYApqe}(&rA!2il9(r$ zn_d34S7%)yNWSUGdJ+!q%47!}ruZjaRN6vlVbt5J_a&)!I7HMw%nLG;vo~!8bzr9( zwtq%jvtVr5e8+P4T5~$8aooK*Vd1QjOSvz(BQJ&kA{VnAn(opRlPZT`5`kA70a)$C z@l18jWxG5HAg2SyFcO}@?kd^j#@mPI>C~pwz^sPJl4GYGF?Y?b&B@_Y8{Vt%h{3y^C^?3qr+24ULB&mLN|S2^3R~&pKic_Pum2#iP8m6E!0BW0t^7*Cu2G-h-pi3P%dta1-uiO7 zCZDq_mscg1vOHWp9*#Z>-;*#JI|q>}t14GQuteJH>2KH_wGe8+#k^G$Dk4++fq7a$i}O=}Hp{ zFpJ3JCBX@O$*vr<-(7vG=)+Bx-2zb0Ih@0irG-xe>}Uaw21d9Bn-x`t^-?Ph?NCLt z_|8+8ok!B8L!V2}@-8P%+sP1F67i1GsGU*LiVP5sE)5$ayLQJ5KXYlQh-|!;+h&}7 zfR|;)Yl)WI0=ehpw-3@k>Q{_WJK2;>k|+hAI$IpNFYoVv*L(Oy($tSu>)>Snr|R0} zK-2%UaM-REbT1z(O^^8961y)KPcufxmM zOKR^4+1+*%1H;5_9fv#egr2l3|8%!MXw@wj2LEXaQzRF> zla(HwKj!p~-{(dnaruUcSNcBm&`@ABwD8i?Qa<3i|_yn|j- z)o)Tkw*K_*y?FgRR?Q!O9)0{|L^)efSXE1WBQJ&E6`R(}M(L@RS|P8)-0fh#{K+3~ z1_xcF-lbK$mSh*%E2C#5wc3x&vhvyx+MT61i76sX@?^mTSOZ5#FG;`6 zlsIM9lAnF&?^&Iz&oEzu{SEc8v`ENvdwWh>;A`i*EQ;o>RL|X8-i{3h82xpI!Izh( z%;^%kq}GkUJQ`~iNcIy?5M~Sas85^a=c=Mngq3d!jBZ@kaFv?6&cr$*7`z;k!HEVTxg}*M~YCCq6D*N;U#7I3^5Up&||dj8px`W{kvggIvIe9sQJb zP0!#Rv*%YdQgzEeY8u?Sjaq+8N6YxcI|BQ_~H7wMcIa{6X| zeeAtWRnAWw@_jQ5Z^!OskfJZY8xSc!XMOF?4Ex&8c;92}k5VXawA`v`Hll4~{QcVz zXP8yP)742c%Mx=bG1@!fVr7DVN{Fw-Q{@+=8wW}Df$GPHW!p2RZSdK`} ze#ai#B*N1YK^=WIE;D#~uu&o7snhsD^UN(BcWbiO)GCi!@|vbZQ5!6&hesB_HrrN2 zw2wT!r1wb=p2{qO3)PFS8b)SDiqCF*6lF-Hbs4KuT`OcuqWYdMT~gM3P(sTlk@=Kw zjQCcuVNP0t?VGUk%S&f!>hSiGolDL#MihokKW!ISeIba=9IWXJ^07&WfWmd zAP8wuzJ?6GHX=|5{wOGp!#>vvr!dCfMXaV^3Dhz+5Y4&vvi0^U^kMdRQ~51BT%A-H zU#CN%!kDGU$V5N}cg-BhjR%qtaDpp4jQ+qm1&P7|iL6Ryt|EvGJZ08Ha7T`H2*n#a?F7?dAA;N}waycKd}o6*YOL7T zG?czK>MJV8O6Q~luSlWP9Jy@wcE(mj~yP^KcBr^ox+ ztJ`69KV$`6T#9Ix;^my#j8jPMV>$5VUCik+9=MA6<+`oZ~r{`g59&_dXKt z%tT{KBgUT$p}D*<7~YNdlWo&n$}84FziOGa(9)!7h+fKQ|DhfC!8+KHcArH2*jr`5 z4>mM2!agmiE2q-TC$AH_l(NVGAGKd6q<{XbR-8cO89Lu zk6IuzO*?{E7z6yUp1#PgekZHyJB0LpHN-%82^SihLuCeDZ7(y*IqikwKML{y(%yg< z&)6gq-q=rTiHQfk5)iySaL92Oo?0zJFWqnPw1ptv9SP_)vLeo6G^Ora=^4!p zU;Z_O6FUXUCS%XR#Ym}p9}1NnooV2@R0pnRALA=wIs{>6O*%)HaoAD2;?T)5mu(f* ze4ZZbeZ)U0^ey49f-ad5GN`o>hO zWKwVvV%~S1m2->NM!lK-P}SZsa4a!VW|o!hTyiIdn)cc@!*t#cKUgnt(bx#Xb8s2jr7Zg(f`M47t#X%ql-h3k&8apd3$P(7tMlP(0nfKBuM0 zXzh$g{59E&tQW|2&4+T>7wm4}@CBiOc+n{pN4sR?(Gyv+kvLar-NL}H{M(3&&x5PT zfIDwU$0eRpr6?@%X^wE~tF0TZg}x5mEY#Z6vs282J1MV_ZV$l4tFQjHA<*P}?7=_N zPXxx8RrW7t4b0-iYpt+Z>w^-Jj9s-bSBL<|& z-dMeb^n=xeGxrbfWuS0_M*${H$5Q%Ir^%7aF!DlwZeY@_=C=4~ELo)g;GW#OLg)S5 z5uGmsl-T8%WhUj9kKbB-iNNwcLLR!3TX5%Z!!E=NjdsTlmp#QCkydJ*l+jC0S}^a;VWC%RggPSnHAR|e1KzS*7o@vaN60z0f^rP!qIZ>~`;+3M{D92Cl#i%yImcpcYc0lMfhZYSd zS{m+w6G0H#qcRbTJeI7mq==?g=A@0Nc z9`V5DhS^62rloWVo5V-HaYY*!|H~c|5fk>#Qx_I43|ILqGuNUkwH!KyOuY&_NPV6) zf{?it$zc#giK>liWcj#X3m$`SkE$7VE+z(X<<6A%oVVE^iB+7vpm&hujByVm!y(#o!;zJCwVURu2Qt)&52WN3ihG~jZfYS=%O$gI% z8O78smr{0`2U$PA)Ud}m%KZHA!Sghhab?l^8*9Uln1&uW(#9jkb=flm{d}Wy*4lP{^>hD&V7k*W!0x*x-3J!a%{KQ!&*Sy+M$;cPit9_ zSuP_>Qvl1uCLUU*XbYW2r;#OH5&{%;ySCn@Fg&5*HFUg1^=XOcw8Rb2Bc^JHp8Mas z0~$N#{Nqrgkwh}%@H;j)Bxpp~02rw3$=P2qhMhx9j0~LKqak_apYxwlyC#*!ix!_G zB7UFglXkh4`L;G~BoCWske02B)8VrP>ae=~ow-3}MoT+o4|23PLm}f=mHVSlif{4S zbMRrHEKIhR0IuYb&^vP-J`DOFSs%woKMJBPY6GjJV!`gN43!!xODrMTm`D3y{fFkd z6ftpwA}op$90?Tu{@;*L@SCYwTdrx=fg!G$9D)ryMxPSTw>Z<_Y6H{L5x{Fj>k#4A zuOmM%)cZ4@s^}5vW;bj`jg_L$-uk>Ceqt=uIfNcwNa_V>Of(Ze7w*`-9+zH9>e9TR zWvfzG21F8+lVRsSJWti!R2p`}sV3asaTh7FRnb_SR;1?KPvBOCsh=zX&F*DAg9Lh!moz8e<|>^BF*(sDKBd*kfv{=Pb|cn7x6hDPy6721q)1-wS_# z>TUacfrX0vyeR*}L7=ya127Y)bp&FU&`!(Y3+lW*!e!dS6AuNOh3knSi>X$t z)@*ZTG%5s!TO=f&;A>!SGyH*Lj=?jINQfoW^c2e)J*qLYdiFyq*%Wq15Q zbG}5+o=rJP43Px*2omLYZQ&dv_!Cycm2Cg;G>G}`&yy>n8d_&62_G@>fdeLD{zDSR zRJ3KzZcm;fksDMu-IZW0Z+sVjoc(ip7PeRj@o?FkOWZke^J8szc24Wx&{xtULXsJ4 zCH%+M>)~8hcyclVcSog%4V{P!;vI>v^Xdp}xNyw%Ln4`_#{Id6NWGcY>G?$Mf1xXq zWa&h>+GU9|^`XN%QM-*wj4sUAYZ72539g~5=vW}B-SpuJJBuTgMqRwJaRTbm?XU#$ zB+nSQQlZiJ)-12>IJZ-BXwNCq-LSL)jWVnelWG%*c0&yjM;VGj$RCN@_q9{Fjv9ik z*>W|kkaF124_Tq<_ioOB&X%|>O5(j;lWW}1#m)it>+Xw1)I}<8$>rU@PhMSHf{{NJ zMy8@q*lEYmm*1@QNA4E-r}REgb~gg@+G}1ZA`MsRk<^tnBj3XEam{#3!mm-%y| z_kGJ117AXB4MTyZ_xy7NXSur}U+>5%c^@6{3HD%b`M=cFKSNSqj}}GA4HfchBi2Je zrzidOAsur~w)4EzmpqYFK-7_$&N3(P3A*|%9v*6eu)}+mIIvscr?k)&l5=$T_k8O- zU&%mlM<#z{3zgC7c^rwxDZl!hKaKSL0Hr&fi__y(34BA+q8|7sO5kisOJ%?-;AoF! zTza61W~{GrOex7ogxOfgUAc_&stbE$c0$DQ%|-qeD68F- zWkBnbXcwQG72SsJCqU-zWr6s2bFhb!2_i}k&eYGAD#`CzEBUgSy7^76hwGc%dm)Cs z9|m_r^?X{kd=n<|bR|=)GHbzGWE&w3I8Q(5I)HHtUV9xZb0~R+Pg^JK38t&8G1AQC zK-i|uGoxCukZQE$;NjZgH?#Zj<??oBD|OG3$gQ_uh&s8$J$}vJ73~A9*K!m@p;a$Lsd3$wx|) zTf5CasPJ4;#m?a| z!#>@X!C&F;7mgQLuF*)Y9?WQSuWsnn{gzdJcDBjWL{urgOV2Bx_?r#&-F)-mIgyAF_|ztizozI%;|rlbF4+U+`gXml z!&T4EA|y;y@UPI?=bdg{QG$3H1_Q-II}KBRNcCu665uKM`c)%k@%-N(L+OgLF86;v zg;ld?Va|a3&Tr_rzv1_^`b9%ipLgbE!IpU`x>u`kDvMWRnr-piU)%X3?1;t|pw*XQ zP9s-rxJ?Z+uTohUQj4oIZPad0!0zzVsU3GYo~w;l9idR6S*z%5XX>twdou|SUaI_Q zJ4AL-vwa${`fRAk$+Y9WWyev|Q%;HCYmTFrQ&R|*S6NgHP?A9$i@us3Mi_6&`SIt- zhAx`!SyyVl#_|nsCaFAo1Fo$+{aX^kc2X`cFZgd6Vz#dfIHGYL^Z{INZ$@hBIEH}+ zY?!oJp5ihmi~vIq1IJUqSr21#J(2FK(ap-0|5%?Vdbx^e(`a0D zb$9gP*uCk94DD1kTfL-{?rH0fw+?7xn~4=;s2pwmq@q;Yr{gh3X}9_hW4H)$BBB-> zGGwbL_;wWsdjFX(7|iEamGEbd|2~Y*@QqJ6s6%RC6SkJBFYAKL=6+ zs^lcPN0h^}MljJQ3~)tMNUr3O$XMU3Xm&XzT7+Fzfi#9@S~mKA z>M4v|KI^w>8pZD8B|62Ge@;JR`z7uvSMYD)Peyt_Klr^HeW`*Ut&xU4^ z%#ScWdwQ7c;LH_TtxYbE(Ev)y@Z}U=>)uNVENPIoUTk>+i~1~!fqUp(j9)(qm{myoIXFf8&v;Q!}$g)hNYkQu44V# zUv6BtX`fFdbNAnmvq5QVviGj5kR5I>9oC60X4z6s=~mS>>fO?b0}j@IFZa2=;B*CZ zmJh+N3`^<45jW=6_34jUkhVA(ZWi|!N{r9Pu;1h zapRNJm6iI)Zd>O79yWQ&3AmaXak7J0P~)h)N1@lmEl|$JGkU4pv{c;LaAlrVxVwON zv)ySLl_$8K`u#5ll1i!X244Ahz2tKjXF;{XtNt2B8b$F=06tdCKQ8D;`i!*Nb1ET- z5)?Krq};P$TyQE*mW@{yzk(mnCVN6varLQ8W+Q515`RsuZ3ApPErc%%r4A3K)A$vf z5{XemOuBq3grUgj_w+wpSRXqV1(?L!uA<`!~!zx{&`XV=8cc_fY+- z;0C?Q(aU9yq%_!~r%|n$z4$bk;Drh(QB`m);pqvhd?%<5> z*0;X_s7DTTGP9(u&oC>e6AZ`ihK_`N$0tUy%xx`TA@GAqydi>?Vb7anj=-Kdyh}?k z7c8aYYe@o3L^>Dy0S#mfswRC8@Y6XFKQ`G=g}%ElG(( z$+}VM+V*$^l-sLbeOkt$;v6OhyTYv;;)W4V;CkelW-HCe}TkXcPqVJhcrL`-5j zOu4w1Vt8TR1eT;cQ(C(tnt#bRLj{w1iRVSFx-%~r2PdhG5^zJc58i*W%dsfXtVfZ& z8o!n!6c43qz8KVZo<&72X}Os7*MeiG+ZDzF#D!>|A zNA3Es=XNnGKv8HLp~H=43X*>5?>DsV<_L-6ndWXIsMXuY*;RA4wy&}@Jh3Z!yANbI zZp)$wDqFv6U4GqrWZ4)7arrixKHc#qkPL8k7@mUu0w1Tpo*Vvq0Ad`0WBX(dRoJ5x zetRRdFJF5vr1D^}Qt{B_sd!9*&!)D&Q2vJSMB;$Rt8-39FQv|(o811ZL1$wPcf^{i zy)M$ar=5F~rQy6t0MAP{=|acnb@d-wM@=I&j^8QDzifN`wd*rFpsobm{KlRt>mkc} za&F1~V@-YNic`3t0T<`TzwzHfPs@$C^IIMhe{|p89gNv+3@2{Wz?l)w#sE~;#IX0KY{;*-*hLe#~12jd}b7;=ziV#tn~W&bViJ{e)U@Dns26!2l7oVLu`gtzZ&GYqk{vxo~IUySP-}6e-fI5e7ndh!OJa4RWzmI$K zT;^_hPC)lwqlu-pThU}XzecCgyF2!Airmf-1x82 zIkha7D#2%=S7_6A3Eu6~e!a+Kx{}%6Z}M3m`}Xp?&{XxTGIAiyAsECQvpj0Pb$pNUf;~bD;j6tCyiEMR%J^U!Ln#1g#6=y6F zzZlDbYPJD|dN?MjFhCA?oQ;4r35FrwuY!*X|6OT;kQwMhwbT`#Y^{S=05tDF{GmAEFQrNnS$|V!h-{{=>}Y zMzZ$Ac#bZJxd!oq)_dSdARIz`CkppKV&Lrcd4<6^Hg9S*^Ne|`x_kc3?8MapYw;3K zsrt3uXm@HH(aPT%9FpnaRz3Z_#rz@7$@7$#UqCQKbljTRKi!ZNjC-8JyJni{>1o{i zP7zHbMw}*Sy4vaVaMFoU;T53e>k%$&F-B}2jMZk3YLF_x%eGiS=C9M%Cp}KYa|_=IkN_jkgu>Mv{3>Ae`0c z+AQVi#FJtyZJ?3}iBRX`?2hFatp6xiTp^WhR|a-gImjQ)WOqE?0VyGEe^WU#7rkZAT%ltBGn1722;RZr8J!L8Wu#5jcXqye3Xi z9Pncj#ppVUFxXT6PJrT0y`KSLpPqKi|9AbC3tcPq%;-wK;B*>!de3$GarV6KB0+Ep=QF73duzFB*nn)>4H)ks4S=U^P z=^x(l2KQCjKKO*Lunm|53gl)2%GsbjA%CyZA2O=^=6aRZ(@d_+bdc_hthQzCl(;od z73>n~txbcv&KXc9sxMVVEoi)8g-fgL-%o>usXKAKe!1QX`@sIvP;z=?|LwbpHQR<^ zT9#J;mJRqb2)X5sWvCo^W}GCjVZW0X*@N#4{2G3x)|(+(Tx!An4&`;cN zySOb4pE%81H}Y@hZ_a7{F?gF{(ze`kZVL&G+tB7X&>HwGCK|WrQ_c&mx|-OQ&}ACy zTeV|*AK2x5%T8sgdl}$;bzmW!$F21?Q`lF@v)pI3_EZhMY7i#{rxl0JR7VZIC5qpg z$SAB3jx(Y~jBrfhg~64BqDE}Ap{(bin08R3xveEm&d*>GDY*Gs0}bS?~whYP?FXu}s3Wp4#jp#~ZJN?CT)G&u}#kBShP zAd`l2!L^u5aRIJ>hL)ybty|{rIMQ;#ovog1nEcQ?y`evS#p4OW=@<@>Z}01b66yRQ z;f@iYTk?$6;GkviSxaf=+BAe!QJJ0z^x+_>M}Gh}$d0cxRHHufyzBn(o~OY5BKK}L?Q})?2iS!6}p6~?xPmI7D(AR#pEzfyl$JC5sab>b;e5duWp|H z>S%bce!Pihc^g-xo0|TmRb@_(>33i6)B-ui4ItHL>cLfZ_l5TRc%Ey{wL1Ig#wTBzflsF0d7p_m8 z><}hCvbCx2m>k4&H&0JKG$n$96?%V9zH68SV}ZfXQ;(0vo$1z3UfS4NPW4C;2Q`5P zQzGmH3(%CrLBTeUy^`u{lc@cVCTeY+DU+b>DS&Q$G&kLVIy>V()#YV#M+!&}oo+HE z_TD`EuW~iT*^CNLkJU~-gw8ww&(!~(q?@ulY?>TZ0y-+E7floU`fWDCY@1{Mja*IF zBY-DIOm&4B<5;3SzBk6tQld;cwyace(oVrZhgSh?+*5G&GZ(FW!jlfLMI!cADaG45 z3YPUGcjGIpw!P?9-j{sh9l7;z4x=N3-;Kk&P-X~qP&#zX&ON^`=6Q9$7H?*@4l&_) zkyH6MFdIg~q5J-(65SI7SUPjl8AJZ~e(O@=u@{$eqGo%~J>&}ADYfbKCe-t!9h!2K z0jB}=^z?M{v;rQ;`$gmcNK8~B3XXy??8WW?Fu+hkSAq+Zg1MZ-;zo?_PE}afL>v>5 z2!Az`pVALHj1UjyCuyV(WF2&l_jrm1@RmkkjjsYk3t(sTe^8d#O+0GnW7U zKJRTqbrL|skoahe7LDirK~7)Pk_t2zW$LYX*TGCDHmQ}g7B-wpDL9>tRWY$V zq0GPqD$UB=mv(lAUwGqrI2mgxY$ow^ZuMu3y&Oee@Ked< zFB#0aE};R%$WnkC15VLRAa+8Z9V|sL(vp@cKlzgv=T)gh)9Yv?ylS~!qa4Je>g=&J z=bQHj{~X=gSTG831(SH)@@Ar)flQ^Z3hZ%TmgTYLJJq@q)+&?bDtC{^ASCxY;rP=% zc^`fAS-Y1tC1q?S2XE@y8*nURmVsw^cqup7?rG zuW}wgf#1e0KQ?rIg6@2NDVCAqTVvIqZR-_gd8^Sa zm45jMxANZes%W_Ace5h4y6=qTFnTT7=mK z5NZ$=PgbO8E9t|;9A2QlaQ%P{T;(nQwKO7Rdj1X19Ay2)Xe19Gh4<}wrCK@EDK)pC zA_+G03rsRePaR=@PV;-PfY{^;jiW%eClDXA@!22JNwk@{p(N!uHy|-`sd1l?#c+^% z?qgIi5(f8eq7r>6#2O;z0PL(bMBbK!v6d1wB4M0#C2p$RnO_Day+nmUhJ4&W1%0b2 zl0amnrN?avJ+yj3W6f4yveP4G(^wx&IwG1Lik>ZQ*7cjgPZ~*M;TVz#4``jc=wjum zvq#1XFcQ9-Rhgc2GTyTBNkP*LW7gGdQbiP$fgrmJ^&7HfvZ-gj_~gShi(?d-viW!f}a|Xu|2EGOg5VF-Tq_g zqPW2{M$bvR!c{q_n|GO9GW+=AUEv(R;P+UNsz)Bh&c)d+Uph>8UnE#o@n!2!wI_B* z8z{0Qi#qZNA&^f&Yfv5{Qs*OnF`>VxsmD)_Op8mr>yqXNI_+>A8n|0gkzlf%Bt~NB z8w{roJUHL(BK_z@BdjLzBI4ml%{S?TBmS1Ei#k!DTP}%xx_5MpNzeF-&xMt{^cW1h z%I-1z@NX8@Bcec^2$JxA%mnwIhI~Oy?7YZEkb3%Wg@o*oO2;hu)AMi>uZXptGKW6FCj5p&k(WPkvAZaIHhMQgXCGd9;**Uox@3yoF8N5_a7kOs z);rncK}!{kx&Y}M()@9&qftfcq}<&B_NL%0e$SAHy3bsEY0YC%kEE(z^{y! zv4=t~AN2=L+|M9#BAp;nS#xK$?Z*1(=FTqzKFo1W8*x*2 zr=7SuAu4xa-z|X_^j?KYlV^0U*bjdA9W5&4_4yb0DCpMb{4Pq+t3Q^KTPn<<`63w1Xa#!*dss_IcSsB2v5-$Wv83H!OAgh^(mL zhI|$%5+JS0U4l3OGWq?R+e8-KpoJPs1z1I!I6_19KjqR3L^@l`|+W^nKOJK{l=Vf_$bXVjAnGZa|F0^6T4~LlX zSN(NBtZ?XPBq^(iH}NcAv_;~6z!O;=s^M;aP!o@81NZkB)6gzJ)#Ehh>^(cuc$U8e z>4mWorU+FU`#EDMQsgM;aeg#gMws!nEg+fQjd-iaD(`b)^7B0wMy&Z%T9y>ndGJL& zrBwx+@7QIZW%!fk>Z{KOx_h$o++6w50b}Z}$cDjICTa!xqqYBmXnN(Hq1Oef35rB>$u% ztuq7u)*yHEal)eJ8zI4L#mUn_HI`3ZwVys`y(ByHJ^i;VJhfBS>hU=ijaSJd7V*tV zH)ZfwOmVZ%Pf}ViGvd9!qHkcf({60*{hSX0u8!X@ooiPV{4;v1WKA|+JMyN$KJoPj zjQ2_WRXM)IW9vr$Gjo@2><2V<++zWcr)3<=!%G)h$HArfq8F||Op-`3dC@32m6j%v zvMigf7kuKoeeG&bY9+p&Ir43L&<}RTWemkhlT^K*s%eK2p~Fmvb@LY`NgWeJ{oI)` zyfjXZCmq&S>hj`qS6_Twt}MUxe_5Ov`a(!JdEY+w#dj)}NsYus!fhX~yf>;k(Xu+2 zvy_h1){b&h0|XTG%NHXp)vka@Wv*1KE5T}(D}=eIjCp%5qqV*(v|loG{N^tgMk^^V zAa9NmP)w z0uh>yQo`p(Zj#~6e5wveQ*qyOlGo*Kx5PE?yo-4!wW=FpeXRp%ET*&LVcc z`J(K%EOHr#WB*OA%!V2WdJmy!UPNp56y32d?;F~kGysdn(s4f;PLd--*@Uzuh%AJG z1kU!4ze;j8o>{@&*luby`zg43$0dUV&Chz=z0eK+L#`D9iyGYH7$8%N*z>-S>HPvZ zFMF;#7f51;F9)N=chmH-k4-i_tz*ta;Q!Og?ne}aLN(-IB zBVwNMF|x%u9fgSotIoTMd`$$Jq0-Q{VU{taY{m z%x>B0_ci}`m06I{g=rur`xa6roMWQU7%t+=au0hjdY=uJtR1-l{)P@Uf}khgn_nQh z;l^N`jIO{3;Zomm|6Y0k2_mmA`><{%QP7+z(~feMY4hC`GiI?=3Wik1!nBh7-fgryzk9A#Q!N7hB}CnUov*8Fr8DyWmBl zmj#pV<3$=Q#!m9fy|_|j8RWynvLVjf11lF`OSw)hX4F~Znr&Sft^@J8Usf!R1S}OE)op6m%iI|H^g1K_T)|Whr1(s zapUh|*Mrew=FDvzrrD~TZsvSD2VA8?cIVSAExZk*v13vX>^87vcT|FmF8edtKygE? zF1cXOA&hu-Fp4WU){|lQ-<-(@jD^5Uq!qUaNElO%ORec) z30E1aCW~Lz zoC7C9@4`HgCfsFmP(11c1ZO&^M#I>^x0EciuM|Q}ijkJ-?RFZK-1)LhHdbBH`7D&T z8S*Uk5d#K*Y44Hrdl4VBOw9tzLmEiyVJnbY^LDrPezwk8x-!?Wzld<+8O1o&N!wgxEj@KMmQW`%DI_EBhf*0m`x=1CN#1i$~9Pp z6W56{XUOs5i0&3pn0Tnlu+CW%y;(v2RO{c%-OpmdwgK*d0G?leM!mMypD!}BQqWhD zJC<0lddJ$}giHH*K9V93pd=}>C_b5U6p4;ZQY8I$$L}89&%9jZn){!FYxmzwpn%b+ z4}_qX3j@x{VMWDJgvQg#ms5_^LX2PSvEoKQo`;W+2#zcfDCnwYR%kMKc#LUOOdJHu%ecUcck zyB{Qhv2qXGeSc|vd{Fc7?w|XPh4wB!PTED%`pVZ{M-pidyCB0$i`Y>4&cUBSkE)yU zqw+8(B<@NI)FG=Z0B7FIdglF=sPN=#;P3fua+iAcP;Z~TTxaX4?+WtjRvAZGS>#-+ zNxOE`lEUpMm1|W$&h+PgKJWD&8hbE=Ma6>ci~_j24Hz@q-eyDi77Nei)pG1}Tj$+J z+}&)S+}Jc>q}G~U59~4XcDQ@t#(yY~Jh;)zYt1Oq^rQ?WuZk%CQlK@pjA)+jAOQqbQ(wkeyI!bEyXLhIF5`PHAG1Q> zIXSw{UhH%6%<&5wSa-cu*Zkg@vk%1iFRhPne8(hxSR>Xox#riafFsRK3(IneQ^~8b zDyN!pKU%ZFt~W6{jEz&Sb^ncXTE<;9TiJWX?y}Y-+2uhj=zq)m=mq=nD||Bdx~RhU z8v@UptYL=w88JckX9CZ6j^x_s->4kSr3?I|DYyH?-Tcrt^9~v~c8^>2W!_D!?(D`q zY}u^l1v4&nfn^JPi~rec%ebl0#>pHO={s|p>@M`-GHw~wN~b``Dbo{H{L-??XTy%5 zWzN~*9KpnTdBQJ2{RWeVJ?ip99(5*R9iIwk1INPR^-j08G=wjr(o4E{8CQEF6!2On z86TQ-9tuX*2=z4U=N1Pumka)UW#>JU&1e2$CgjHtIn@|E!zXJ)f=D0Z05Q4YB$3$J zhEu)(OpXXbFn+;M1aGh#?Q7BnqUQKtv1jK7zp|?l-$QN#Of_1CFmyzLq8uJ98{1m(rX$t{`Ld-5-?#zP_j zz>Ryu;sy+NqyKRn+>hwA2duuh$+ibfT}2Eq-|V~!KxvXsKiqbv-ujXPK z{*D(n;kl;5ZZYT&y1`$JOdnS2CNB>+ayeBGrJdkUA(G#|3J@U`&r8&kC0rw6|3!N)|W4e^@ zTnaiIj~y=(S_L%o6Caw2D5)i$H4;*g;UKI?NvS6XbSLK$!VJg3xbApo0-$XyVFr?k z?7rc$5_W0ZQ~SG~gDZ5nO<9To!T=CV?sd=`3@;6ZBxoP{f&?j=cp{iTGKg7Sv^f|_ zMT5RMF!Rx|)x!co{;DVdZ>!6SuK{^EC`n*LUc~}jF%lT;|Iyz2%b3%Cpb}qF5?V@e zRD9l7dsf0Yh#`OM3rZg27pv0zvGv%+Y6f;g2s*pu`DY9{v^>*sLD+fvu2xwL!7 zD*N>o`rP1u29-=5ZqQPGC@yVQnw6C*{pcT=fdoTYko9it1r#>(;7g~zSz~Y>r$2}* z*Mc57@hc)F0dc>o0cJXwCqYt(A~}qfZ*s_6#)Djb>goAPR&^H`v#>B@1Th3Y zeu`qo3fF6zbf6WFm4K|7ysl+gZo<>kq6}kn6_>Dhj;oKD2bU-+x5TkSiuX;wGA{C)reW9;`o~+#dLMGLPF3;=XM0HEEzg&*wOm zc`4F#A~!QM3Y4%4w&4zzHj4eu#clMF4T|Ma26K7WrWwmC@l}oDnLt-Ah-h(G}2{#B`z>U$}7(mrR1ep1cF+`MO3K>Vje%)-n63%^rgo* z8zlT-AKb|zxc2`1RIp%Ot0)$idM|HuW15$m*ES z8;=%cr)Z_2xkOpSJ?Evg4^E7cI2rdy4SQp;Pw&|Ka)qq9O(qYeCIqC$F)*0XJU=Bu}{<*7q5@Id+&YU27Mdj zh{v_XeQ%g=Uo~+#_{YgIN{O6!g>&y;Ah+!dq^KaDo?|_{9T1>)7#b_$gC&5f)n&&31oV~8WTH^D{&1Z zMQASK;(jvTuvm7I_OeDwo7?1(e`zk&g}wTU!WEwbYp^M-)?&fldrRW)8qC3kUA5RI zM$-CJD+MqD!CE!F9fV(v3VI$UO3?2At2w-P?q8m4E-XaT%*5HJPNOA!mM|?_bbcQx ztv`aE%?%EhX&TeDF1%bOW_daSzgjEMk30{#we^czpf*zKVWAp2a?hx{YxTJppj+FZ z*!fWoMIG#FNankcbKG_tcK@7^C-kcR%gD0|NgRvqAgQU2SHqq0`7M8#ct+kJt3MhF z9z>p+GWI)lDsU>k(2`T0?R;Hq=M+!9Gb!3Rqar+`Q@^hr90{s_+ePQ;wqV#oH@oKj z1Fn2B3fVuYPUWfz2eia-NN{V(r+SS8bMdHR8$RMC=GKe$Yz908u#^N!+83Os=`S;K zMX^ZS-Kp%WH1!Q%@2@lyTQJw{x0gS^3wvPo_&K@n6R*+4e`p@#x`4i}ye*J8=7JJl z^6^j3nm($*e)rfClJ-y*OMGlDqx3^s>yKGX4#9+7t=9i?T+gXH84bC%7sLJr6yq*B zqMSMP|2v1)mN@zEJn&M7P76Jf3AWX5qd_DP$tdsAoVc>Ocyf3C54=QG^29Ht9W#9^ zwy5w#68I=@D$y8Iy+(VtfB&SS^uyP3EK;+1i1*r?CA585*jyPd)fM*N4tNep#xT8V|WH z)1S-aO=EOy67NmMfS{5_x2O5x4fNc5c0H~Nk%YSA`zC8_oK^;xViXNE_B}p&4x(<1 zK{oAPuLtN9TAS|lPYKy|sBsw~G)Lr>9(B51uk;Xo$|*42UTll9;u+oRb-ULO=B2q; zB`MJYToZn4);fC#sSRw{dtgD2%Mlr=)6b5chBm(JU68iE`RgGcVIrXF$usP=X`u&O z8dK2C#)~T*BetkgVU_mJ###MS)rmcs3g-$dwGPVJGSj9KM^T(hVr7_!l0ZIL;Yr&Y zC$rbD4xh)0zl)wa(QIGDYF8Kmr!U%Aa!p0$fmH1y^n{d()n+>?rh9C!d{a_x5*Fi5 zs>Sn-87NS%ITjt6%DcQncv_u1snqNH&JS053aaF~{S#|#$NGI>g0SX7YfqFeXP zWbdTo0SLM;+lg1Ve$PkQ2Nd}8f;>j?Pvzr4fl7-aG0!E?`J}*8tvnZ#pUd9Sx!Hcn z_z#c&Pum;B5bqR@<_D}a#C+6{!`tdAgqg}I631fl^G^gt)gdqj^Xx4Juw6m~Q5Uvw z#eYI2{W_a3%m|85mzjMQ28mbyusSrYSDb3+InOn*mWgHEb69SL-J(NpbIk@|Pe3K% za+$P{e38|Nfw%$YH40{}`t;40R|_6fVQ2S1X*i}BtoFD%Q?dh-KNi-{5A@5f#YL|t zFm7n|xZKHFd(O()j$5m+awxd7=C85VrwlL?R+~?2cOzJ)Hf|iM!MozuXQMWLU0wGD zHe&WnU(Bp)qLn!JUN)Z}dxO2%HFM+V@3e7c#SHiw<<3SWX_el*YS8m?<-EY2@~UDM zbYSd8|5*lPaJ`xBWy65gKlS?8foQ$RYTIze=ksd=*Er@K@=#bVC@yRSV7xAc7dogi zsC*^MalI7KqAyc_x`JEvR&pDNmMV2s92~y~7Gw0kA+nn0!@p2xlc*;^AQ1FZL@Hb2 z?FnVF>%VZ8E$cw}^qGF$hG7&< z7bI~L10^U8Y-Nhy2i%!p5*W=(&GO8IE!8;?3OQm$QwYQ|1vyn+-?dhaGB>yk>~vjx7q!NCQ^JDF;fxB0Q4MHQ8al76=K{7$r|eiy z?1*pfq{wRa?I1kvvgEzh?V`Jr*~_a`TyB=c@F2OWID)%vi|Kwy-l}Q?FDY}D>$kt9 z-M;FO6(AWa10H^}l(PBW$`AQy@pIIcSTp{w>`$so=c=Q^ z*jTRfu5;9Y?%joQB6;wFBYA?>dUq-NAH<$l4-Z6hD~LSNtD>|H5*@xOe|3u>3A5d+ zf>{IKURC`V+^t;RMOI^`ZB`SpfQS`x_Xxy8)`urc!y-qOQ_fov0ndX(B|t`0m6Zv5 z6tcb7r_pS7eDsz$NE``-#5CyoCN+GsVd7&B$aW zswh3?pql>uql>JQ2lq236O;X#S8d0QLWf4tN3BaIm40rAasTF#lk}OtFcrMEDD*ze zf4TjB9pIuivXKjIUA5Y`po~fA7o=6{{5d64pYQW>XIw?tDT)=W3iFlnq7k2#N?$n- zARf4>bmEpS+W)py1C5_M*Gu@das18sh4bf0&N6L8FL$mS7K~*454`#@xtT?1p4_L$B2fen!QoO;GMAi)`4yH zh+OB!{an^~V@jr_n*pK4!l=f<<Lw9bb;-ye*wQp)jTf_8`5V=cv zYDD@Tn9G>!AplL_OnfVy*tXx^N(1|5lTUmh5KwF<0X$6Ks;)7ak#hwLhbwET#9B$7#L?RS90}m3iHT72T9Y@uJH)tMGOC8S z;Zh}SDwQN9=?|;UF+_>zCsG`8?hsGM<2&F-K6wCZ?bdkpyHA;hXEnvBNOcWyKlwm5@yr!@?M0!$mp^v_5n+Eg-9L~J9kE^X7G?iAR9`;WpU@@MUr)q z(!N2stX2TF&SkaRQsaXY;%y4U%4Zl7BvUU*jhy8#}Xz&UN{i2W)u}s7ge6=R0L^et?6w zg}-e@?j0+Im$=9TW=Lj;g{l}LXcNKlEdU<#{1bv zl|5N)BQvjF^5Ra`K-jC2?+QNHr47oGzF#;UtNYTO2zw{{Nypo4L!Xao;*<1c(ZpDo z5ByXmsV_nggWJMKf|BQu`SAXi@Pn^32{=HK+4LX|!BB87BU3biSU>VQ(WF(E^@8M= zzV(PT%z!xufdoUj2OF8^_?y&>`W52*(I$)gS?pj5lTcl5(_>2RXnr3JwgGrox|N5r(OA-YvOv-`%R8mDGYv5h;QPPlU?YO%Sq*TV=2+EBJJz|wT zNu7YXy2nDYb?0`7b~Zs-(QM*I65Pv?qV%uN1Ijm>6!|CBm=jr)w=pwpGW17hzi}{l z^Dl0iQ2)h^w@v2RZ3%5F60uLV+>ez)`i|p*4QZ1$C zvTIf{S<2->txoIeoQKLHLGoOM;LRoG3oB#7oP4tfXB^4tusrzQ7rIq+v3?3P+IY_d zn(j!&`mUUWYSjgx2spPaf4mhp`IcCrW};!WmhH+|YV#_)w2Mbr>3$^4{z0$hF@~=l zKMeSf!RZg1+Ls+DITPCrg&`8wCZ9r_+P-`ww)1Ix3ID)BasA|Nah*rDQiZXq0K(A! zdwo?Xgz_0B^{Mp}$MaIF{WHQH?*PMwS3wKc!`OtHS+^f*Jn0P-(MaNWpFWYpX=nFi z#Qo!rqGa?vJq6o0s&KV*El*dGEG#rLKOGsoY;{|*@?lf;E zB?-idDX8kpOk#2znO13n?V!m^?@Wyd#JY8f8h^gJ73{_;mkiF7pJQhpN6qT*wcfRq zLf_6GeNA5}E0k|>#s-(McyyxDTXBh_9^$jv4@MOVnUWQ)s#UKfwinO6#rCsp!o_Nc zx6ilTID4J@e5lraRNu$(?A&3EYucDzc2%h9J>9`Bmw@jyyZR0=1~&tT>r55 ziRlit@){_Vz=`ova_Am~NLf2%tOf9XB~2zZAMmu1xgVM$Pl1?J!_KW_*2~};+|4pz zLb%BW4_>1ORs{tPy-PxoKRXbwR3J}w-tOY+lUMQc_QOxl#-)}pGvF4wntB|u_0o6D zCxQ$a;;h6LNB&@QrMO?Vb}}M<6Y&oc&r*HQC9CJo9mdP*g|t2gU0S%yzLdw#UeAHE zIimYY2OAZYy;N94R}xv}a?yHbS$5a)oQc7@QVL6vakUalb6@Y7^44oj5$vh9iDhUyWUZ|v+zzTnqy z>{=I=_*{m4UEL#c!h<@^ZUr+N7Hp6+-rT(CHKI$J&dhEtY|QjWlRMU=o+X+qJ&36^ z)#oXy&nXmnqkX#s#v>nLTkUQdvMq=h=zVHheSa#rX-5v!&xc}jBZ6W*0mzEFFnC4z zQhXl(r8u2uy+#9z0{<>8g7QD?B8rVjWVZd0wR*`V;9Ru*B@cMei^>#?!Th~K5}CDp?&r7AFbh=S&R)GR@eU7Kh4h73~z|$ zj~ENLOILeOZPuYFy~pu15S#))kgiYo%yX}_ub;Q)K8C*u*uBh!aXXQ+E$RL}s^V+a zKg#M?`|MvUDq<;V$eRbFj&7B_~@T{#-Cqc03>axcudZ*rh2P z15}E3(6%A`5DsMj8dukPmnPX3#5hW1)4a-foN6KNH57sKBMFxihLk36Cdpwd!R-Q89?*?{E$_NXby2EfZA1{P#G#IBNjela{+qNOOPnO$#|btife5y+Hbsg z=K*LecKC5H{7MQ;ddX#^wbu5O#Fn+Z47QwOKOVZQ?IUe;BhCc|#Pa0s3(I4|DNDy^ z25x+Y#Row)){~9(GL^Vvo4_FT`#*}qjSo)ZHVs$}#G1#SL@g;|YGzybu5>htNBk0m zG4Wv$w6UsXW`%zc0OP+GjZ?zcb5`va|FYZz8H(QeGXTqYggK-79%cPz!8z^J4iB z%U#C8tNIo5K!KO<`iYQrr!T@(3(%3ta&Y*|*^n38GroA*>rf_Rj9j2LfOu;sUI{PR zqM;;k>E&Nmzkh{!Nw3#uC5K8c8OR_I*bj!B4t$T0XXUMql{es3ER4+!{U}~tA_Pnm zsM?1n=fT@R>sP+K!bIN)_Me_s!A_>DRIuiM_}Dq1zQ!KUSVZn?=FYIx+Lp!+v$*+QW?)3w97G5( z(Wzu-{c3GdirBSnCwk=11BloH`Mbi_xg(RC`ZdtItsD>>#}j*D+r(Jxdrko(K-3}o zXkW-#PIv~hz;uy)MCOP-B~>jcUHClCZ6pl!oJ_55!9^!xAe!3}Fj~Z18=&dtCtOz} zTsN(>R((aC7MU%t7&IkO0$>edRwN%G0fI@sa1A zA#WdTA|4&W11E&9-50(baMo#0P>KRoU*x!YaPd`pWhs}odARG!f>G-N_J*x?UxN3% zl%BAL#QYa){4k!Ls~zx3+e%XTZLR(dN3zF1inaiTE7(_0YCG}?vU4;KaMB7`Oto%) zsr|t6#Ad;4Gq4TcsOgB3a>=rY<$)OzElN1@b`DrXao#QxdR~oY9{Jb`p35>%Ver`N z(N1dg4$~iBP16{6n?NSt-$*^^2%&~d>Zcntj*)za4L3;Fib{XHQzH$yYFSb*|QfVH(0P4b!w{+R17`@d02wUnikL|+GkBg~_!rJX-%a^)3CEu0lU zsd;AXyd?O_U*1o~b;PGQ*O{-r)9$vjFxMQ5ug`nIR&DsE5}FHK*`eqrEw(e0bwCi( zi9+c`yr96Kq3`?_%(7~w0tYGl%%4C8SzNM2una~`aQW|GZGoK{Z;UEpH4$8cqEeuV97 zUz+$HbNffkl=i0<;N^_2zNAx$L{V+99e`YYYK`01jQ!o%@N+jKsr|!~l-a%i9njMTwxzK{j{qi+mr*zI=jfbDSnESrVA6 z_U%5^xrNk#O368xci=e38qK-Tq8}nXqsVmjlpRw;#3<6M1tLnZ7_K!$BhQWbz>2HI zbZ9oeqP=z5(;ke1Zav6qY`MUDR`~O~6@NAGZXS!Rc;Rm=^AD8G@fE>-aEbr2zO$eF zm3>a{)GP}h4-6*zCm}n=RJ;_Nb0at>$T9a#)s84G<)5{wg8R7mj%z(@@xLqa*i}Mh zR>+NK?#HQ66@vebW5KrX*mgI((1HWLF8Sg$9T8N$eXb>tdi*4_sh!_s7`1 zR@I8<%uu<}KiLw{TBUp6epc8g>OL*2bPiQb^#eiHOg>Yp3jDzR;<~+Gt7a*8Hz3R( zuKl&c-&-PGZe4(4dVc{E>6~hfd=!|%bzM1F%^A=nx}4sy%EwByp(VIlKNcklf^8I% zd?a+Ci4H)Dq++>DWVs+SranqC$-M|un<6MiS;snx$kE1G8~kq@Ps-s-dLz-(9*q{m z+#U=VxnY9bYls&I7jD(~5FJcYALz+9{EwmYj)(e>JI85Yjtcc@p^1bej zARU{);~T)E*1tUk68tOOg`4MsTW6e*t^dc;$44Ttz_Kjeo0li2m1$+?{xI~(SG{tt zK8=w1xJ>cyca`~jElX03F)otn`oNfZg)b3mO+9x4n%F99Jgz0G;lF;FB8w9%%`+zv$2vh$blo!W`A|1s{^|W8t1jzLMi_ z0HFeDqj}58`m>v+yYdxfA6?eC4den@wVBd#w?D_|pMyo=b|uaYnEX?g|fUC(AVWB;sj7F|>={wA}a!v&SkU74`=lO!-F)b7_I zZPl;e4?5RruKZ+@>l>%EfCgcU{`5ajbw9ZVxL1_w1S=rqTnR7>kmS3*H2WPtKm0lr zzT>WV0*tNohrYRHZTvdSfY|AJWqbN+37hb@!r-R$jVlS)crsbpFJzm&j;ypT)$ux0 z1NG(i&DiVHzjf{3p9M9)V4xgC1@&%R$E|tr77n=Swx7re^`Aa8{p+J)WNa#f9r~iJ zOl`ipMNoc>d2qkELhMzZuLnr$IL3S9kuj_G%JCAxm{wceLAS#-60l^gF8xhU2gmAy zf!{~TVeV};jHbYZ;Zd!R> zg+67Twl?=x_J;j(lTXap^)QZk`lg*Dl2`{x()_Ofv0$fQWam-&7N1G0g(0qAu?=V_ zVQEZ`xT?oKJwJJRHSa+u{<*9aRG|z*MI{!p-(mOzCHAD=?yMj9`^L48d%h>1oQI&g zQqw3171S{J!3)uuW|7Ft*}@aq34d5ECW4~ZBCn>cir(Kn^wrMX8K(vOM^PqdRR%BU zk1B0V6aalDb>#57hTdW3{I8uIC;XRPsbBb-jft=y9uGf%KMR^l@!a{m6fWdu8@$|x z2$bYrd1?jJz9|Zm3Ys<8I(0G<`&QjC>+L7Yc?-w&9QkuEyNWnb$~jZWM5m|}qYuLY z5@W{EyZ>1uHm?6Z&54sXyYT=BCn!WsK7oAng&~VO@8T~X_aYlIQ}l;9dM$Yq56s4iAPPpbeB@o zSRAh67BbWjZg4dfiv5avUnVvl^QSPhJQe5={NM z&SMH6p$~Vd-e{p+*bg5u1ElEiPo8wm3WTf=;FKeQnNkR^9^4)_$t~F5P$yqXM2~yy z=@g-G@dtU-g+#H;=}&oNu#I*F*PN(CN^OEt5y!<0$Am*ofiQK3Dv8Nj^o3(Aju5(C zn~c-PAbVjS)_e^sj}u5#!FN%H^Ee9!<@>@vBBXmP2%ftD-)xsoZ;MTp^=J?j)1eyI zMH)_ObMe;b`WsC#N+;rYc(vQNzcgVgH4bAYE&-sTmRL6m>v8etl#_C(ZX4hawrqph z`$CAIVEeFRsEkjZ`hCm zu*n2}_LHB`Z_}^ZPLC4qRe#HjRivleQj)HASlf%}T}fea%cJnI7UG}23rL&5cd_{3O0@hJxi`9i7D2hI?}tU`g80E7|@r-<_3^y5>GU`kkkTq$%(Wjfvv0SGi7 zr|$Dj9dU2_dc~7XhfBG#g)F5&h^gHIWRhKs;VUQa@kL2RjufdirKyZ|^5 z5MEReS~5Ce#20rO!R9~-2AH4TZh=e z48B@(iZ&U3#YJ$pVQA|uN8m-)?aZ|BgecO@l(pL7D{pFB6~sD1FI1S`Wp9qauSoe4 z>cY)aK=m|8dN7J;F4LlatJMJ8UA$+ z(L^fkD?mQ~8}&RPLXl_PH)TDR4Q@?38ezz8?de8e^zdkhko32*-=)b z0HO1%zb}ubh(R-19b%~y^R}D`9ce@`Li7_eK8>mLLA3=3U!bU_yQ@ zKm0=O6hhk{-azjOD66;vE_1JY{}glpaOK~+#%;d=Iu*>c?#`5fPLbf_@P`)RktzR- z&J5ICRQ(Ig14+69CEZydYzl)$L8D;3(FL-~d1+1dOq2_;vafghnyK;B#UfXPdN(t} zZs>7O)J1;RE1V(o)z5d%h8xv3O!;|*X6^fl;s5gO%=PvSbj zqRt{`&groM9KqZ?UaL%ycP-y^78MDwwcoaApgFayJ5T z`7@%n~q|v2&=w`p)$!g!GYO3_ByLjyB$ZpaI&Si zKGRG~3$G?fpA*W`nK?!v$rMq8;9(k$Lxc@}$vCiBYri8ohXhq*lfb4dz$>TW;;s~| zoyNuj{2yv_6wIQ)b1r+R>lVUKc53swo*V4K{B9*yI3vdJQy3mBgENOYkDQPR|GEsi7`o! z3Vp^!?bwItMm0YiB&EM!*up7}5ARTn`a}-0&ROZZnnDEZMpMJm5u}dgkDq$g3xZ3D zS*H-a43~3p!>FA#Nj9>U^Y(|cf%O#X*>9Pbm8cO38NO77@55IH=(ntO+CZF%+5maw zV~0e%H{!qJ&gFw}9Cm}&ya?0~rZWG1iSaIM_{4L?RpKcq^1i!8%H;}W>KS%}B*vKH z1k43w?U6>dRsCY)6;(3Y&QMP|XJMXw$nln+UUofP+s&0?Ng}k@B+1G_bg%LA030i= zS>2)0e8SA?41=GGO1fz`F$vLm@5b_$qdPN5(sLpuj3dRB@l9Lq!7ny@RKFZETRX5d zJE?g(AUE&4l@`N#xCUCb5P(=V<>d;Up(Pa8AF|Ig>Yo zr%p3jXQvpbDZz?6`*Bk+OOAGIm-fOqcZS^Qs6}lfJczz($xUF-B3t^veEGfcMQ7o9 zW!w)w7hrt~DYYWfDf8QLvELgms2gGH4qJ^P0I6HC!LItX4IXq3~a-tir0C&GI zzmoyTY|7)>fK-DW=tqAoWn|oU#Dn)o2eCCl+`J2AQ8TR?!?MUeZkZ;se+71VmL|@1 zJ88U$FHa_AO_Ie(XI>tOE=!hr`)E4qqFHGDMT-Uwc%_a$L~Tua#%jhqf_WSB8I~en zC7>b}FInR9z1*7m(6c0xkRPGpoO)l>YB^uB^dm?9+c(m83h9VAIV#$-ZdXO8Y@v}M zS+*c~hf$ZV_~Tzj#XUaa7l!|LduOhyx5WvgIAe6rzqFrpFOeEX`e4opwwsfo6kTfa zS$q`r0%*oH1a(3KyWnFshQPTUe*UFR&q)FQgnRR!x$DzzB&o9f0*BIRIWo#;kPME{ zVP+__PDkn?X^4}b&Xleii|V^s#y%*QX>s?B_=cb!Ygn^?GYdUGvfBJ{=TmK`Mufue z{mUC1_!7yB#<7bUum8JKnB_n@75OgiL~kw6NXPe=v04~^Pf_^|k+qO1Y0<()f0)ST zBt9~IaonrT{ETDD<72h2q%fI$i|Mao@dQXs<2w0|!>H>F`O2=(NrE`yB5C`-syE-4 z2EWlv39q=q(api)59cy(eH*?!cf$^E#1%3216X?`ZXG=_8k3QP;!KWFsf8_ybDECQ zN!bJhUb?7AQYJGQVRgy(&~R>*AyI6eQ$EEbent~(`D$w>(&K?jpfp*Se89194|_x{B$HzKDA zIgsGWByPmkdexzGN#r=#0ADu;H_R-SsN?4&!IZ)Q{H8b-@F~!`!8ZoPlP1GsN-{M? z0B1Pg=m2yT?SQ=vz;)xbDl*V@)&@henjX7G-!hk*vEm0PY}i_alC1`1tU2>+gqZ;4 zC)S*H4!_S>e*po*uG<!B#^wV?R)HYvvgQw$`i31h(BEn8R;h_D0E zEViHDw&rA7>^1sK%f8vl^@MFNPc>Sgv2kAsznk1EKT08>Crbcy+UlOM)pGIpJ z?kF&aSfhbXBr|B5kz14RZWC53Jq9MP?>t0LO1o<2weKFuGqEW!o*V# zvMCr#?)^_*qleSK<~h||2(eoLja<^!ae}(akf$wA43ZEVZy>>V`IJT%cB*|&aN0j# zPZJ&GwwiG3I`45l9DgQ{EaRRE#+b|LZ4 z+tXP55Y|IeDwKO4?L>l$vGl6)A#t>bL9U6bBn4&apWXM5uI3+z+K+ZBBcVCa2K$@A z?W3*vL1SS2Ma?Iu9BZj(3|u6+30Oz`wzR!??K(s0Q2l zh%f-EssPptLfMd@`6Hl6Cb9|uAw2;emGQ7686za(V8O~>0sPyCfvZjx4p8AMMZ(;z zF;^DN;_+@Fsmnb(_SVBY(>1rXJC=XcsdfNFKOE)@cR5Q+lFM4&n?88H=3;kN(Vgm2 zD5SzLbKX|P9j#oMx(?+$+n%4?tL~hbIVF#`@7soeBFNr9w>BhL1Y~B88n| zUl+d7ypAQEJ}YxxPff%T$#-0c3aO%QPMk-^&_HyO(>tPM(81Cw^q4VMHW&|eU)BK=m zL$RR)u(P7mKZQAtV!-s2p-XZVH^$%b8Y~?vu81ltkB%!ZD34TFF=z1OofAQPaS|^; zc$w@8u;)k^b_7<&Cbq!@S($|K4eOKsw^YA|V ztfc57wMupLUnp*;n_DeT5kYAL3f3velYh zw0xh(@8e5JT_xO_R+LX7AvFc@++hz=#x(T=mAFVdxuXsExA=|mlDi0(jDl#A(iK9q z!`(6IE+GYOpi~pSFb#D#0`M|=Qg%P^RYL0GVEJDdiC>z8oSJ^EI!72JZE=pMjKx~U zie{MypJ|VBt*6JN()N8V7oLD!9!|NKPY9B<+rEr1U*%c6PsJ=3f3G~UCbwxlg)(SpGqom(BR`|?VBhWaxenku4e{K92ylO|k$U+653~MGH zxk@g(8J`%tWPFZvrsAuW&Vp6Hs^S#z6m~h?>VQwdJhk*a?a$904lN=oE|HPhY)-(x zUvc#5M&CW0gP6xgu3?{in1y9bCo;7?U4C?M0NoOe93SqK zJ%$>mX!jOUN`m;QZSlI7Ow#CSye*S{qy~cdV0;zq-3N1lJ);ztDKVy^@T5aG=7w1u z2=)pXd0p?GVOx{Ut4>zBLEyK*u06r7T+P?qnEm500g8Rr_#??=G|A%9H6UIV&^RA^%6yE-Tw0P3YZZ$K!42pnkjNHu;+CK1b!;dq^J5 zjfg{S`y#|b@rGu-u>_lzTl8TBG30KiQx!JmV2}SSG;{-_%Df(%k)3&pDHX_4S#ewM zvNv!X5}3H=`BLR$mWM0F&cI;ODn7+P}YfC>|jVq=D;%N_XOHfMr2@ssImASyvX4z5n;4+3%eNQD>7BBI8>Wf8Tr$s zC&M|j$>oGQ{mPf>w$-;{z%7Kp>r7O#q+n=D=Yvi4r&q*ITv(F0?~J@E^YC~Ip`3Vk z_^jI32fUopm;8$k8`mRk69YItOmRSP%x6*OPXu1Uro*H22iu zlXrPG^5DEZ>^QdVYL*RZ=j^}rs-0|_8&Asi!z0x2R?A%zk;~KnG@nbQ89X&evvpTD ze6Dj!07E?)4&$~r*?$ifju{WsoCF)i(dX*;jq#n4T%-?}QBg6x8w^cr0{mP33W?dx>=M7kQt zmCkNX-f32|hfA%zht@wdOuqe%yJ^`ccZf7RlvL6`Fqk(yK9o9oQummtTC(1h0LO&p zO=<1pJSV5_Stw>s4)UcaqWf}D2J^1n;A|o-4dvF8oXe4&jmgU5boM&?9G0DvbC}J+ z<(r8LpyX|!v)|Qnpg6)P&p4THERr}sZDg}Q$NspeNP}Z?awPMzGVdsWczCbla6BrW z!BoE8XQ&i{doRGZu1ufq%-O#C(=Mgfll!bfT(^`-Ccl(`xXVW_aHDaCWA>%2--+8LO+?~);avh*cNUFmvd5sVwiR$bn7P`e)hd}55{4U4Ux>_ ze%*ze@{1IO_V`bioWcp7F$W`_iY4&mL~nSn-hzMvEDhL?Z*z5SYa7@1L@kW;cs~R5tr2G2Zz3LRmQfLp=l4nA z$oW2Hg_uV#NYCbmUY8&-yU zYTfwjMDN}5t_RR-cV3sE%R&;szH&O2s)vTh@aIE)TZbhLu$nYyYW+ zclGdw-uS*cE5WVmx9RRBLIgge+UMtP-4dkfob`}&Qv#E0Gym67@z2Sn#wpE z!X39*lOG=Xb5s6EA$Ze6px)40l96vnS)DnTVo-xkuHn?QXZ*c(>eHJ$f~`rz#!+al`ig!6V3!bK2bf={EU90M}m zrKa#%#0^8%pT0z1`Q`?w1?T)67l$y-277-KRLU@s0{IlLB7MN8ByRqXCx$Nre8~s6 zKxHV=IPyr)YbYoKxJyVC;-ya<9<+WRYz)W>o;gU>Dh#~;Q40{y+cUwYMh&!e*(Yb} zdUG6SoqT|0I=l*YU$x(Tu&vu6v^-U1PPknOt5N2>{ z^1E3csK_ZgSTkQ;(T)F*b!SAQV)nna3MDMkIWG~Wj`0_g*w~{;B}r7V=&9qOIY0X3 z2H9Wcy|isuiCha)(Xp@)dVZ!(@swftgqCc!#K1P6g233x0(MOEFEd^nUCvLkkIM+b zjW`Il#4G}k_4oCgqw;u}kuN~n)_cC8lA@E%Ng}z=FfDc9$i8z!H|-W~17xKQsV1P& zi)qn~^Fyne9CECDf#Bg&u1rvY0Sl8~jzP12wj}HwMfZ#ak;e9?BE?8DcVmEPYvODy z@>nTp%^AkVQ` zDaXa;I#A1vv^+;L0gmWS1QhBMsiH#i#}REXt!6iyd6!G4=kk7VnZg3d@Ae6phLf|^ zdjl;Rw}fgAkp)?v(a?puR$y05%58zNz8S~K0DYgL>mD<%?fM9|W^s3J>z_3~sq*g5 zh4>9$L^5ADTXy;*tCxxK5&XF-$FOE~<#DpLp;n^3)=L^$~ZcwkX_0 zB2c0DUty>3Ho^K{6XU6N@-5zTVGiO-#S5XgZ3P+o+59GX-flZ?d(I8o<0+WVQy;Qqp+#{p8wC{?pnl`Xe7J1kC3?$N|K z9LdBng-{_wmEs;g3NIJ>xCjZJQGNZ|-$)VHK9I)?h$-GRQ>ka=p0xV@X?6Pf3DDL7 z8cietu}o1g5pfai$^?sd0T7Aq3xUlsKx;87$o#h;ghXodda-ByaBZo(L<baGIrKt@k1WFzLb?g#3O!p1_)zi%MZ|9nB#m)Fpdq|Vra zFkfl?`uUxhzK+>k#~XS}z^=Z==ahF!qJLJ3IGMoS7ay^Rlf%2sKvA!GCmUt z8$zDvxL{?{0iBu~sj~~Vb;8)vDaX9zzUzU>4*t~J)>D^$r^Ew1N8dC#Gv8kJ{8h81 zM$0|iQkRPxz`-^i`i)Q_5^T1b=joP%fT@9f`vJ!vi8-wT)!pixlGCp?flufpBoP2C z3G#K|r%~bw%>GMqY(RhZIGERUaP86LAi_X5TxeH+#goR5(mX0nMWSIWKN?KgZna%@ z{%Xo+K!(Umcfn@T74`G9*<>p~?X$ea2VbZ!&C`rxn_Tivl7=<=8K1jX4%1;LyCl(o zPPYFFa^ps#>PS`%DbEF;6AlCl%5*xifCJ5{7p!(_s-n?l;$N_33EOX$;&OV-^m+S! zFLGO|apwy=qO}sg_gkF$#zf8eaz6dRN=D?EZr07vo<`RJ)`F$dNWfNfBS)Dujta~x zMAZ}c81%|+Be{=9h9TrXVK^4;0j=?q0_Xpn1MUH?J`8R#E1)4(7ip(69H*#2=Ye{WetA z>3~_5_+}iDUq!w5ns6(VCktD`4rHQbEWL(rd4INWG`~fPF4`0-3ZUFFEz$*wDC8AM zy${A2j{w3UQry|t>NTcd9|shTyVSB@1}oTl5GG^A9cDXJ;I zkRnK3*Dqynem7oQZ7Gu9W)tJCKqj4L6Vs6Z9a@mk>tZ4 znZ6{eFy6a8MdQO7L!qY*dZvoPo+z$}-M(EBP&SJzmls!;m)uiGaeCA{r!*5!COJN> z3AOp@p2ZNBI*gxuK^R@DSK?)0b|ZnedXsF|Mbm#bZD^MKs267Ao?f({+0~S(7?$Pn zm3uTMv45`!726(4s_A#NMJ^Tdqg&|)5BaUqDdt1wzpcNe)Z|+#{<*HMG0Ztv`y$^%OA?DCSJUhw`#Dpi=`rw?sMwoiF+KR0A zNTaqv-a$f^LgRcxc0;+I{h=vK(jqi1XrLi5?&;U-16>fx*$9*cwVWwz|Rr+&26x{Ojt0} z$>M&}H^bI`d_$9z+?C{sPV5m;GeptflR~xwPgsYIf zT>wyvqw$4K-9ZS;0>R5Jw`+##;O0F`FF_4tsXYC0xBpU(UGArj7t}*VpPi{|Q&VL5FTtq@ zmx(CgC1+dTZ;9n(7AQdErhp?uaNa zeeVXl*XQvRR5pupg@;k^LCa!3xZSIMUi#tG;ekgGfHqmB!oM-^tm~2YS<$$!vs+8H z!%K?&+e4Y=@iFqANr4iuIqCBwZ3Mv!6$gOOt?IK17qqw#Br2Rv1@-4aXaL(}sye&3 zULh$=CixI_P|#?I#T)>xhUc@xsJ3XWE-K&wZKBaV8-w>=Q}J4HUIj&Yb&G5P*xx9B)C(B|p>`PTu!Y zjC?uNg@GU_dpTZ^C&~ZuQSP&cLClvA-`rudsh=rn2Rg=(rBdhYk!#2XIaheB@a*9q zkC(E^P<;8SCG8YGdGniKrGm$t5mg!>7|-g(U=i>AI{EsmW~D%a&-w4oDnAfQwq&dy zc8#Pc0!9XG(h>H4=?Z*HS6-`lOBhS}y&nf@Urbw`@3j#u)kM1Ebn|9=UQY>oo^jn& zBBG-uLGc?RSk~)nnaS9Vv&Nm`#UeI=EGma~n#`RtS#O|ZH$YZfP-N4{c*o7_;Or&t zEhX$(gPqJQ%DN75G$$3c;9eR};%(AXJFh(UZa6KTk*2CM4$B9hX(^K92k*Z_x~iq{ z=lhMmN%e98y&hnoN%WvVRbFhMCh*OSTPayGNxddDH4is=j zq$7dxf9DA^uQYj2?n1RQ_zu2YHG~D zS_JB`oX!nzUu0y~_lx>_!o5<^2}5bqM&g`nli@=4!xn^5w19Fe_c*YlpYK&Q z{_r|y3=eVi0u%8n@mt1oK!t@F^vH7x{7zN!cfiP z{rrQz%~acGP!%Si$&|)o6z~UgKPlhUq@ojCv+gb-B8p7=j^@Ae&wg)2=FGozS%rmj z0qN1yp{dHD1@Y?-&z;!v5buiX`PxtY*;~ox2KM1Ks*?0Mga-KYznsH_tvB5Nzpbg%KFdtqX#ncWR({2Vx|S>t^Bj6C)0`cHKcbWEvxN#TS- zvk2?P?$-+0rpx#nqtDzf*n9mNZMuo{T+>9OW85?Z<}MRXlL-uzV4W`@#PaCsZJ%+K zcp6;x2457sH2N&n!E(Bk6 zv!5;G8W7w9J?;-tpl>Bz6C9cu@BHBFg{VBw7WPlDH#cq{v%J0+0!aCl&Y*~eq+ZrqCOq3rtc~qOjei@)L9xOIMX~%WN9|zy~ z*(3H(X1DBl2a~G+jXHV9hyH>-W#)9sIZc`pDtu^UU?SFIG-!6Lfbj&{>v{9%JGh&; zPoucM;=K#9;&0q4fA?Q`XMKB)T!xMN3S;RVgdp_JJTT_f^LdERt!(Cwrv;VQb{qHh zv2MOYhJPn0%zBrke~|7ySbi4|Sly8NK5(wePeBF*a!T(_@>egNP4jEPfLP5j!dQEP zKts=Kh6|UF)x6(oFy>`%!fb>YG;>xqzLuiL6|bJ$fm^3~LlV#OiwPpULA)w5GRlTB za;D}&BK$Z$nmwq@jbA7|qq3n9f;Uo-Qc#uia*9-ul2MSsE0~C1h~^a#wrd=A1X27- z`2~Y2L0oQbVrAST3su>KJO#X@Ci1D}r#DGq8$QmPKFP!uyTqn!nE3`lS75zaCDIwZA zgO3k=ihh1F8}Zs7TPXC;0S?z`*<#7Gsg$OiS~D4ubpl;{OD_ttqYny z&hN5h*{ufQZ4`*ffDEO%tx4Og^hh$`qmEYb3a6vaNvYoP344$#B3~i1BHd+lj*o== zu^e}&GSs^spL+gPxdQq0g#^C| z{%I3&GyH*w9NmulFR=-;c%_mV{=B7f=S3bVeTjM*7VyeuH2Yej4!rVWV8-=Vu{ed- zR^R!sHPkI-Ec@cVB0Dk)x4f6|%tU$v6*|B++Fs8np^Qv8oA0=N`pBP>_s zbLLVsts+$`{R41;d5bz`U zbHz$W%Ygh6&m zhuNd=2bC^_n*9uuo zQku)_dX8zS!Ojn*ap184>J5C-^UU1++5 zzh*I2YaGa9r%!W!pE=iQV5D7zci;70l0#(bf{ajN#883YhQDnlVj6FU?8bXn96#Zz z>C6$o9A^gmP(uJA#t5)@X}uS?cXi@P34~5`a{voG3&TwGl)p`4Pd30V__16;0BBrU;*Y@8Onol#QUnumLn>eGiZGN&gmy3sKn#d2N9td#|y6ncg5jVW(^g-d(N7q<=s>X)xSsg zm^+Dt*$bSHp~S@dDk@Bm!>;;;z>{qaFW-v3l+Jmp8dlsMoVEYXB6#D&>hn|kf8`?d zJZGk1cQL)BM7RYFNf&?~{q1;8M>$k*F5|+s$<&ZSK9~mer1rNoHD!dP>JwQyI)$B* z?FM{w$Y`qCL0~Vp)iIGK2l@|YGn2zB@KB59#-kHBMS*o)z|(yA+d*L3!v!zcgET|W z6}Fz(H`7ayvbNjCp;yZNB;{3I$7F}th)knp@60k20tA}z1&D?!^&_RkJFoCOpX55- zd=E+FrYkiw`J{{Q^JbjQDaAjXENN%c_xRQa4HDjD5N!f`Eu=NJbV} zi&=?o(k1(;j-7vvkBPJC{fl*ANqjlLHbhvUxzNkMIYa)^Qj@Yh^H^pu$>4SOA-@Y} zy;7MFn70d?rq1RezNTdAKh_n-Qt{H!`g9m^Lqna^krQ)ZtSrzX%P9uAA!g30tZe`I zuK%dozNYCaLa#SUoK~YUKkC@U)>avS-taae3yRS1h9D_2Q1f>ZC@S?oplu^j1z-Y{ zr1(kMSUlaCq}2pnQ9N@=8qmkT)aEK{;(B)a*+8piTL?+f_Wt0A*3`F7 zo#HmH%8CVGb}d#F`>rt_UazUJV74I2;3rQWOGyN&`iZkubTTMng;DwhmJ5I>bV zr$@a_9B)g55Lar%@ARoVx7%4%&ZiL=EsoF*w?DsOFKZeNpa`QIh7KkdgiD31eoxJ= z1*C+kK%>K5smkJ;2!VD+>*Q?b#k*OaT!f!I0)j09C?x&y36ILh!8iAN*|YOIkFh}?>dcdd>@1X|RdrT|LA+B;2#%tC=&qxO zr2~{DuxZeK>rvidYWtcHkPW>ISXY6tXf-mfZZsRLl>2 zq50|8T)wyMjl&^0`Qb&-rDuj0yDocv2^7XrzBD&jN+$u0&SXKmG-|juedS`>9~Mk- zt5_K&DaKMCINba0nozKzJ@ZQp>q&+Cr{DLUTnXLg)m8wT7+;K+^}zC)qPKNkD5 zwsOgjGY2ldbU_P#O$suyTdDiX%qIe9=g)6EpP2XooS#jK zl|V075vCH-POYfp7MoJV)1up%*_Pv+#~mbo;Lzu9X%Jv z%xu3~{} zF+rz?4lGd3y|dh=tr(nxijBD4{$L2wz0{9MdiWcX;Fsm@Nhxl6 zdSYE)4Y(}w5tJCzP_XCw2A%TD7;fKmn9>&gw>VJ+^3wo>!bhyLE>9@&#{r;qiT^44 z_y6J#L}qRW0*xoUxwRi$6$&-rXiL9sP%fg1i9Pn&etS|#rfx|ecsDP*%S>9z>>7w3 z-dih?$nBlJEp_U;oFFq~qLFF};`drMybTcbISa~=S1Yf_h43gg6`ooYI0v_c40|LrkQZwmX)f0U01+2l5C|Ee!vcKo-qxso78WlD=f+qA|} z%jgJ1!`5gXf$vFqiaB#;Q9zQ1{Qh;p%<9gtbmGypOz*< z`&9O8QBslCmrXUbjS!bgw4*5rWV!_|MD-yFN2`MFfKM52tTc=9Ro5yPvB26C(ONiFVlqGg_<| zAE|(kOMtVo_thxAyXKD^c>|d78U>lEg3z$p-EsBg?(G zyve1b2N^lO5@C}f+}ma45D@nVp8RbFKnh35!zL=nO*>`{MzRQt$&fsR7aZ zpS3175h;cNmkT5qi~=7?tB6YgAKr{yCWsv@^p<9H1dk7P6$jbFk5G)fg4g?l6^qlL zv-yRuz7;_j7gqrwi?QO+N5@dnl+v++B^ElNR16d1{HiyUW|mw_wTlCR*v$%O1~gJ4 z5u!Vx$0c*~cch55nlj9AI|2AV8E&rQ#o{5kA>6@y?80-pD&HgNJU8Ly6tP&Ol=o@0 zPd!J)KzXYIzPj8d3?gpv1(_S?X=DN4SX6!^ZFxw^{|^K&RVc?s3Q!y_ouA|}k%U~= zsYvyM|2zb6{C9wJ(#7Bc%L^N1hFT=Y7C4v`*R?*xk}lkuUHwNMKVxh?h68m^R<8>I zoN1wsKzco(SK7TUKhGCDYNqq!9pOA zmQcWS(!P|%EW5fq-ji$E9BpZB_sI80J|}cC$=5Yt@@9b7XTX|3oKz$PkBt#w16y>d zyX*0X7JLm6sY2o$m{qgh{~~QXPQT z;&0q4tDn|}h_UJ&OdAaoROJS*ctzE=Xx!w&R&itNd3jOOrXZcU9Crsm+%n(u!=HdN zt+3#Vy0B?vzA?y++JFVvR9FD=lVkIrVcw4tjEH#>0+LsRuR~ah*}lrh7{JX7#%*kn zAPW>XBACktVd8;Ds}yAbm~aQJ052^z46m>R)nzvJ=oyz!3s$bR+z_@T>q4*IY5u^| z!Z9b2m5C`BJa5&4>X&Zfh$_C8ChoN+oS9(qu+>Z4zBQZHI%izIS=Zh^hVihB5hG$P zjJ{P(ra zgUrs`mTG@OZ+&&|`iYWxeWVc753>t)o*#|=vXi;Z=-N`eWw>Sb^^h73d|$?n>9)Dv zP1luACKCRJc2>lvJ>)z0(gm1GfjRMjW*2$iW_E=U0rTA;>mVEdK=numSxE-)Cy%-k zHI6n1(y`J#%tylm;pVHbPfNU?O(+KXZJ(TpCRu*wS$(FPAnW%~7!xkh&H1lIb~qKf z!56ws1PGBJK7W7`m!p8G5~1p5-3HzB*RQsO#@4N>sD_~UT`9#tnFCJ6!o}*VUxlio^uZw`db0Ed04z96|b|=h@NP%qoesL;D z|IfWl67Wub+8C!pZMvAO>d@o<|!>M2=}}frK|&+TV!e8KI77OWysU?bGJ%tpLZr zEpFMvZ6N^9{qxH9IPtkce zLgBx0{I+w}9fvbJ`|LBbyE|L<-knWKWJh(*-a8}J85P;9B-_>|zTy3X5d1=o5~81LxfJ~pN*5wdUTe9AKG3KAep<^(&#cquqDQt) z<1U`de6p-ri=Ccc%g%G)_|iY|oY~*f5+$%Xu`gTvF*mb_*@pPum7UjEC=kv2LLJS7 z>n8OLw-mT}DBT}M?L6WW%>$W-+YNRpBl4t%=gWG3f)2HN!%HX@8ngRb)4erG#I+e! zz^pKKRw96LF^=bgSEs^f=2`tgs93gn)Ps;=ziKlW=u6=mi!*#|l+)jFCM#U3oIPxs z>=5$`i1!o5)2u3U3)$>Bbi6Raz{yvuaMBt`peVCHJ9sKml_J@5a>=#?rS&PD>}}&%I+v$xxMJ&Wli!wFStFV^I@q@$*H&@*R6J zs{t|-pO%7?&8%bWnR4O@B#(_CJK_3o= z4Tl|RIkcjra%chS%3eq?3zn$ zb|BeKuu0XkwLrt>h0PE`#9r<8+$$9_DK+YvjG-{t58q5!2+-i^ujP5O&TBCYT2X#0 zl^KJGQ8TMu{Y$n3;K6m4!rJtY`{^gHlbuHtX_h>XE zMIG)C`*yld6~^}E%SC2~=3%PLhyQXl*3$=URwOp{?1EeEsjq(|FF(1g6e5|+N=fU+ zlH9Jm6BUnIP$oHxzlW!7T|h?P1&7|8Ij8=<(x)1Km6CdYgON})cw9+*;N?4hkW3P``%Kx`g@&kLP;0*%y#>7H% z^)dHxFE3H$ZO}0~)CGLPwXVc`UPQ5DA(P!6?&Le<9kYnnDMhc^;vQ9h8Vs$;h_`!T zRJiE7J|P~L8gcQPFJF~?%X9IK8@8!N8%!a}22V^?(w}!;5&%Jlc=z&7@ZvMM+Y;76 z0A(4MJ{%yY2u6JA#Ifqc(*d{vHMC@Dxe)npdyKo8$L{f10nn;07O{K44iaaB+s#-2 zFHfyvp;OAJqq*rp64X`hR#MOH{d#_Ya}c0h=6nAuN7Ae#@)(Y0!Ss1*HQV=&)f5Qi z0sI~>>5L~2?fd0JH#<9kvno{R_aXTmQt*_Eys67Mt%IQ3P6{eN>^r`9ul?9z|89Tb zyUUAR9u^ zBR*r>BKImQB;)G&l3_&I#;92yp#%wvoIN%(J-wrFsv;Hem-&0k=&lr@@a`l?miD>n zj&4EWBLQutu@pId!L;hxb6;5dzak!tt{dwj0(D*15m_P2%YM0 z5%5U(rrrl^Tp$yW(M>XryUcqZfG+yI_U+PUVb&CVVEfkP*)V8NZoGKW<+69depP>8 z!5|PGS(AN=CpNc<50Pk~>?m#D>)Yw^<=UIWD-Wq=q5Pm)gQ7ypTm4bxlk+Tt!krNmf=}1$4s3&cUe_ZlYO3 z^E8pv#3?AqiYsX&Te$H{BMQ!M&^Wx3iUAJWm~o>QBCCfpC0ppF-EtC<#j7aksbH5J~cr;MBvY5sZ(s&*@OA5Brv4O&d#T8Q|K&dd5zFmhtO6!@a z3^vag9q>?UHos{*u5VXaBF)pRGnk7>sLw)I5YpVqz_pB^XP_g{OUl{=NL-t|h*vOX zyXLt^Cm&~smC&lp^|$-lU%iv#9^e}FU*Tc;-0T4s2}fTmU_#o{>8F3FT{FJOH`H2$ z{GMKz0=;|X|DC@4O7=aJVo8(nS7JVW6AgN?sRF9*-*5jddm!+R{^zXpzg>#&pu7^$ zcBdA+!Qu?86^IXHXzd6nTUTx;Z;@ck%9FI0gW{O+H@NRtD!qP7>GqP3vzyG?-!R<5 zivU#)sBePANlai;ZR>Gkt!g(5`J4p&cQ19le&^=vb}-j}sdcG<;ZVvD_es%q1n~P> zk;%074qylhMHguaaK;d|A0L-H>0`)ni3W@qZ#^CC6}gr^nG;SUfKi&fmLdC%D5Ch~ z`8pz-@(#cl`zUL~Le?+RPghCj<2O^4xdke}nos3?HJ5H0vh~m4#B3u_7Oz|zi31c* zJs9|X_CAuV#BJyEV}u4me$fp~-T(3WVx=+Pz0-4Y5Amyd&x>A1PQfym&oP|hbZb_d zxiU`E<^>kO16_>tT%!sM`lmoqHAhh{A)LrHPJucN;PZt`hTwj*FVeN)frSOpo{!Yn zC2G7$ExYBz*lmTAP2K&hl~hjSx+%`1*B-NnUM`2$kdQ%b{ex8pg8wbfw}Xv2iRP!H zn|0{WP*WrW#N%G1+4~pGwVlGQjaLHz(ag~zPTYj4+xZ`V%={3-zOBFj6`epDT;)na z6@qk!o|@=0@p^X~?qx_$)3YQriP1;p`LrOu&71i`{%qZ3`z0w}Q*e-#k6usOn5%tRQaX3Z*)C88Y3l9F zbw+=J-5Z+%afiNJRb*U{Sqpt`gIWdLsWo1E=Ldb{lNOx1CB{#`&c6)JZ;;X0+;7Pj z@=~KfSDG)hcF5Pxs^V_MwMhQD_ZoeLhuCPYcJSz3;^&rEI9v7bQyNoH13;WtsuwY- z6;7DF%z4v*9P?dsb--zJ_VO3L75!y4LZ)dw<<7h*ci1|@xb=Z?VyjG6)1uw&Hm3>!flLAewfxN+$!OX6;B!5PNio`Qe25wLn_2b0t*2$G z#<}J2VvSQ1X>K&SW~^S7bPIVH*NxWZfT4*g?2xN8=#ZIpI47Zjg3p;$BcbU~S2huWhBj_yrPZ&J#!-_0PJB`t5633h^m+1LgpcEy z({(9ThCb%yqq-F9nsU%%WX}1GH+%$)psDUkheXNq=l%-uY@@4StT8)QQ+yQ|<--QX zL<(NIGe6>@Eh&6CncuXgD<$S3Hm+MlZUwz+<@Rrx9{Kv{xTeFBzG@+b_DFsP9c5 zEB_`n-EhOEp+oP*9`gFPNo$>VP30CX8ga6b=-fd@k!OZQ4Ysy~K=K?TCp|RXu^u4EQIq#bm!X!U&OW?S)ho*gG{Oa`uc4QkR zNCM~JuUbuop_dBM@|{i9Ekhinp(^&}vZt0Ro9g6wr6-;>7s!cgm47gZKX-4%v~ zg>3Yy*-n+2`M_(Y#lUAI&%z~|LXJ3edAxA_%v5R0zmJX;y7|l6AG?6X3bGn`U!*^n zd|*zixq4?@4zEzh_K}CoQW-m0-3CXmm9topJvjR%cQ5J?sz2@)H)@A$r*Dj#*}`@} z9W_m^54AUzM+^RK3UT=Zli<{@wAfS%zGl&0@RD1sm`m&;)R@9m!{{B?czR)uVPK>- zgWUR9M(mZKd@7*YJw_8=PdDd=Uu*;3ygmh)*ay51$^f}pswg1u>21f5W0#}OM-q_N zcwmQ*kL68A)Ay8wdY|#im3J8LkE52oQ;S}J(-S`raoZ^Xl707F5R$(-rmTbV{{3yY zmjm2*p=AS+r2r0Gm*fW2=X{;2tZx1oRlWN3=-812Bum}ZIblZ$@G8miYwIq8@~DcQ zemUwsO2H*#{ZWx7-h?5E97^)A1Iyydo9DKzILu2VGR25CM`;mGwceiaDFj$FOsk zuAdyd-`9M=6&a!<^73N@OKSm623`rLJe`td1NPuxJ9_JYlcysQMhkvU(_pa=7W`c< zjLotH3PhGkf1vR;gDo^kTr`&sDkFqW6Q;08x~j@Vqpp_#K*FT~^a;Y6G}dO}zd@`OBJeL-`Xap+cn0#t zH2{e73Fd(* z$g}PZmxmy1HdS8N}x#{ zux5xej{?d%jdWlL7Wjpa`GbteVKW2>4glf3ps)Z$S))|3ut09&SMCewy|o=@BG47! z=}1C5Vj-U!_|8e7&HQ-mLWCptHvb@abzdzrMQgFEIkdhVcEJ7|WGLK>&^l1O zJ~CFJ}Mf|?4mhFT#+X6)4T}OF0m&ps3`qLf^_=Cko77F z{G+6JsL>d2jCLL&>FlG*AUd`h+WYMiMok<-8_@6}P+TbsnvhmY!0|50fej$?643@v zn~obBA_F%PJoz+QG=y^b5Z1#vS)^A4$~Cpz(OM$>X!p* zAs-J0-UBtKOfpLig3!FO^cp1RC?+_@x<{^=OuNPo+6h-MFfC~;VKdbPm72!-ljLqP zW%JfZb}<+eT&&XCOII36#PRz8Q3~akiUVmUsDQYER*4HJ;nnB?J5e38ssu-VVS;tp zcQ``!BF-k@y(F=g0lJ1v#y-1oUygTzI{!6>WyXHEP(XMVBPsi7VIJLVee2xmQ9o>t z^?#G!5xWP7?|j2Lb-fm=r(S_N^)!{BEv~pGZHGuCZ}@fpX^jgl#NDIp%);lp+mcosu^xskP+P@#*HxErJC9g=m)Tuh ze7NqJP770~Q`)ij^_A;z!8cb1jhZ6hru%_V@@X zYT!$}I~T0_v`)3o-!Cw?oCTCFs|qG?ur!vwO9+$8X0#Y>G5#_QDrP|Jei}#{u1A(R zoRI8tH1&VCYW)m}8u2@93=4f*b_16(R?s5b);_O3?0irfl3E|aKV1s)SN{&NJMYR$ zBmY*Bmn|Tw7uB8}E$1*ccP#u7q+C4yGV_#E*6dRITg~jzw1qQHYXDFNI}iGt9n(A{ z>Cf@o&;@3@B(Esj_s8uj!tmvM{NBH-9D=<4%s8Os{iljA0P}1B6K1~L+-&HN{mrwg~ir=8E$&cfO))GbpG_N z!0|aP*z64-PpDian7exag$-v3JoX$#)j0j)`H?U7f{UIUuVM5+q zU-;5d{=>z*-lM#!Bfv{{7C*DE;F&wHQHKMwmd8aXeq5QimH_O>aNX_8VIvpyRu)?N z7o%45q#nwGsxmYE@=iVkU=#C1fFSHIV1EJ-ODj2{Taw7ge~T%%d??E;#6i2`ctPlG zKfPp1r{FOKfWwbSc=I}iRlME?vO+k0iR@nn33s^rc)7LV+BC`Yie@$S zOz_BeJuBfGV8X=$hGwJ$h?^|NAc~IcDYsDlCB3R6IH%vIP~Y^+I6rK&sb8~gg&M62 z$N}Uy*ZJ=GOI)!`)ouji$hEbFeCu=Kw>dSd5?bYc_t;rPo0w*I4^bbf#z6j{2>l;u z;1G8jtFN85FI^FKk{GLy4QccO_cUFvobR!NJfW%z>7|_ebT(0s!nsjruu$9Nz!>;Q z`ca}+xmH)ObLme08w$tdKpi)4M24zT?eB$o5%Db0e9q5*)Xs5s``Jgo?sQT9B%NR3 zIlWoG z`pm%C2ag>cQG$YKXdwRIQ9w%?4gAXP>d6LU8WxK{*P{8TrG<-Pfm&n0$N8k4zA82-D^IRUilo%#WFn#uvq|>Z3b7}}Rs+lbS zX5D%l!;#o5C!K`fZ|J&L51J5}x>0)*+D-c>#CdkXgEI;$EL?+5kKl>n!FKa-#W5B< zM_aDXc`VkUNTLSS77oxJRhl(%iG3xwA+@0a%76Q*tgQXIoAw_*0#H;_)TwG3<7T#I zFLS4qakmgCR1+b%tcte2vNULME zAK!R+1CFQUbdqWq?vWo!s_&R9H)07@O&yvUQ zr*GJX%xJ|Tidu3Vo$Y@bWqK_buXw9SrA%*R@6j|YjnzC-9y(?{I8m#(*7e~<;P1-M zV9LMtvmmL*7gdZB_)2gADGPcdQ1orz?tA~$AAYzyWB9?NErWVROP%r%89gO_P2X%= z(J^$vO};{b!>~tgA-ihFwBvYyN&Wa(hCZp+A@%xSX!EqyNosHE-wkYpp>OOs^r*f- zJY=q(xYuiGaI3KZYbxB|=p^|UrEuy$l~b$24F{js4-RkUXtTRizU9iuVb529+;_eR zB$02V7jBBbP5luy4_>%n^v&s3&Q9osX2Z(-i`O>$QTyZ6Pp)w@29IS&;x6>E%oRh^ zD5LCyVYBtw4g73#yQ1AOmfTK37ypT(i9u2FF-AwTMG@H@$RVLj5d}0Z7QO*P{IiHaXm0z8a!Nc#VlIxIvAU#vVV(13 zdwmh*3?#5IYqvN%S6o%cSVt2|tFdJytm~#Z3&eRZ8$P=i+f2LC8pFSzT}p={DoK9G z&`b){yudLFS!-VdIJs4@^(OwV@`ZSBG$+%4I)rX@V-jqQZ&zVG=EF?~^O}H4<6CLS%|)%B6-6O@HGQbXajn z=N>O0cI=*AOS20)ycGupX7%_pLd6W2UW&+RpeN?$QHZPMcC6o|+MrtHbd1Qw&~f0~ zPPUb#+C(PtJT?oE3K#xQ?zIeGAK}=&khKarE4Cs{fd*Sy9{Rv@c0XrQgJ5u!||g@N(5ArbL6jEUUN6|!^htEcstGk z*&%zq-hg=m!e_s_RX9i&x(k-#-6hl@l_GHvIHu}$i3g!->zWVZY*2}_?Al`O+3e_# z^^UyqJ`MRl>ONMX8iY)pCxyy@KmA%D* zb*2%iy|*o>uy5`yE=4z-9n{_aR(idLAepFKIJS~7G_Bmg+~vLFJS>#@$8wG!Et|!p z!UfX+y9OgN(ab0DQ1^=k1pWQo6;tIeWSqU z+cpE5YL#CKC}o^aS&r6ArbJ3CF0-aN_(PpU*o7!`Qh#h=w7LL8y@2nzNrJtkDmZp` z2%$m;7;~tYcp+dSp&i66ahjB=k4np`IfpWRcW7O&>h!~{ZgXy!$7s#XOHWIkY}sGl z4E?INqe{+)dJVXJO)B7vvA?ucMJ5M*rNe1C-^J}!Tl?8ex)MJqci1!EtI)Z@9MWf= zXrkS2FAv(lc42HXn4a^QZ1^4(ON3&Y3IeKQ-h$tigY?iLS9Vk1NB+zO)ihAJ%Wet4 zD0x@uYu*Z}s}^4?PRSY&ggLBJ-W$0S5$Jl1@H9Kb-Yu^wp^(Z*pm40wDswzq0Fq?J zF-xN_P`L^&C>q&wrL&BLa)zUVvQF@>?Lk03wD1tG3~vA%2-yRG>OC@MD~QZXKTl5J z!ZQ$AaUvXP=DnOyP)>+$H23`^Ndw0FmWR%Tgjg2S4CD%Z6xf9>=7# zNe&T+3l%s)<2RPE&(#1-3J7eM7MIY6Kao-r}jRO*C~EdSvw zaL&Cp!=1G{29a;%A_+JlzWP!4(TmDKkt}e&+F0xI%Jkdm6M%P`3NSm&n%0k|rha&l>8S!a9SmK_exr+8 zv4plbGI@0-wPeTj#&sGhH9yur);CBhy|JFYnLMtG^20yL^i;shs#sW}}Y&E=pDj zRq(sexiJ2*yQ?cKOt#OSsvL8w5_w8+wSVtQ#NYb6f`J~!fIS777JEG*hCU@oP<3a40 z)?z9NSooY&vuDk=U?qLBviY$ru@!29y&qAgdK>=`7Gk~ba%p>8v2|5E`bBfvqt+0? z?xC+4|G9Sa6$4;`+kWRGx`*HB9S+=^Y{@n*eOC%`lM$l7j@#k`k;>~eD~=p|sCvvf zahLmNfa(Q7?s8QVfvyS%t>km3eb&1uv`ekykdEYhUJj|GBmDTqOUv1iU&ew$EQ^*= zc-Py1Ima;OVygDo=l3ex7;w=OmI{O#TerPr5IkE{vb`3 zE;Ck4v$l%B`KL$ltkMdo?X><);VtXtijJi#@!rcu)7w371KU%yM#3DF7L{VkUv(aY zWA(tzLst?ZaM8zWPz}t&sXd#dV&ZfEX6_5(KArx*00Ba|y<;nqGJ~(8Ud!AOe0R<- zR>EK^`}HPKq%Z2E6sUd^pcSISy`{xzjlEE5e`kvS=;$yoh35}4cuHTG#2QXj3avk6 z1RvM$X6y2@m4QW)BFD_Ga~P!$?`9b0c-)WipATQ7tb%I-zjNFv-u37B^TAF|Q)TIF z0p3V-cxg9-!w6q@k5#{B4g1V7BD{P09b^Y16rX4_SJYOrEIa=GtVBjg%G_CFUK}Pm zePw00h9%i6o|4+aN`6p=-?}^(Ky|0!22le-kd-LZY%nkrdnk+VCM^a}u|06N^-0d4gE#uJ}#uH97uak9!AA4*_2q3(b` zg1Zzbh5+1n;PvM%&s7K-0Q_?G6lk86e)#GPi!uN6FX`{wTd7Sm|GnVn$5Q@jt%BSg z^>Ns&bRrOgfS@_*lqeu+1k82}bnZ-}0UeB31uw9}2J?Uh0K2*2cxl9+z3dnn8d~Wo zK$HUPxb-ie#u~kOk2teuIs;1P{tz?6F)^b<$lJ09$vB_6>pa7&;s>E|qa8_Klz~v( z8n3OGAtyk@60V~&9GZTaO#2q4S{S)l*uVV! zE>^@I;2KpRjq!tDN +@blIg`n=--)h^frga78%QqNJwN9OKI)TjlyJvV_B)@??P%kw93KUeDkpDY}}C z*b^SHJA2as2u#_VGIzn)S&K%vDBu>S zG%}2?``aIew?Lz)Fr_KY{7ePNVskA3R++Wz&S#)W2icFwVRPS$iCzi|_zJfXicN*P z(@kC1MLoEn9mi|gMKw_iD%}Q6v{7XljjJ_2t4`ZUJqlE)BkJ5^TZS_rbpNlSbTtq+ z`%azmzrttR{%jq-U+p=4F^l|F0y%Wb1d?VIIh77{eC;0KLeGe&PkR{gYJc6Z{Ou2R zuihK6)fqD}*5ok;4f}`-e5xGTUbK~;Pq$v;{xq<426gA7=B#4@kl+0+U$q}W0f|cF z=7^!Q`euYb1;ua<1zfYpw(t$;GWj<;SA~X&lEGZWG>G; zy_AHyd#X?=bxpD%j(IiZkO$1^?#n^yOKAn@k;NX0hNJUTM`l-XpnhQem34Sq)kH!O zT}~+IinYj0m4D~9GujkzOQ{ltLkoaJgxq^Xx$-77@GqsjS_UxFwDsJEi?N; zVTmFW+)h=zt#RgA7}Q?49@=P2t_ms>eo?+zfI3@y7RsOZQi_n8zSl(Aq}B)fcLjqW zk^KIm&7T67EFgM%DpA7=9OcTek?rE zxMe9Hx^Tz%A>rHQ=FZ2=7p985TXG$fxk}mevC+FeRu*AsV(-i+>mX8vtw+d1?`qx8 zhLL0KgX}f2;j`(fB1pLq6T3lMHe#joKnCRj**$W)bO_cAny`si`k)pe_^bsmG5Ff; z2k{KL+NOA!953Zo#p+q0_1Q#(MnmIpNsd(5yl3kWF?DH{qF=J~SdhrW}tCI?u zK;IE(d+8r`f6x*<4U(jJdHt{#hw#(GQl&;k9)`31m^oJ5HftDv%seS;?|^SE!}3^V(DxdT3syZmQR%z7T8jMZ}SjnS7iH6 z*gRY;?Suh|&DnFqqk1wJYCP~(B!Tjg1V$#RSaLy4rW)Q~59MzOF?_lnA`%pvg_aG>1YezX8-t#f<%Z}u!|NHX>N8kK zM)(f0G!wqmPsRkInSLRfx{LnJbEb)md9?knE{m!=)Q9-%~sb{`5gKv zEGF>ZmGUR~5o~FM#xMIan{3>sL~X+`M#35Krygt&1vzrNtGWf$fS|_47By{JOnH|3 zc>601bTi}I+C&BCCE!Kjk1BbhM|G43)6XHJ-CDcZhd+jlhNi# zdodf+T=v;Cv;ki5mW%Qi#hnznO0;v^C;D!GLoRUUC`EHeYXDgZ-=`@t2%Z6BkSpqB?tcA_i>ht7cv1 z%+yc52Twa)g__T_ee!=7&JoHD?fx#8?eLpdBOm~Ws|@Z4 z0fF#~c3a|^-Jti;r!@zIz6(m<{cBwdYsf;iN%V>Gpjg5Z{)G(42sf%rV!s6jsfl+N z^3w`Qht{0La@PgFii&?ikI&TLkY9^?#|tT5^YTfN7|Y=uiWdm{DfmMPG5u3~{YM5t zLnP-X$F`QpPN8^LEjuzs5P9TU?gs%#iVCkmK63H*ADneB+M-Wpzj@H%>Q?qNnJm+c`+XvH1ZUtssiEcoBD~{+9;64&9T$N6Y4xEm#4a z=gzd>XXQA-ZUD6l{Xzcp)C(41%~UnV;qni9-Dn7VM{mZ@A&3&Cvk#=1eLSv=50=eA z*z*iNZ+!5D>sCCfKc%N~Qudbgg3m%i*lX*y^YnN0N{;`IAe)|TyymZk!~H2;2>|2nUqEOWo@<=wC$;|*pK{rLmig?2!)D$gb<32GN%EIN1{ z`qyPaBJ6rW=tm#7j5f{h_pJ;F0$kw%Y)O{_{~^B+**~@?o+8mL4Sh9!&Dj|NW{0r` zKhK0y!sLwl82ld6ZBd?|7e%O#u7s?mU5;6;-oAa8G+Doy>4D&k$BaPE^QR_p7fX!@ zRQVyzmH*lJw6zc(^q;)qx8=Mbp8AAk_{JpAR;BA#pNT5; zA@yQ=X(U4652x@VDe>%7p z&pQN2NcedWi@x5uKlbwdSJ`*Gm6T31l;vxctC@xE9Oo@{2W8o#$_oG7=DklL8Ut0Y zOE83x1v!~x=4J{iw?21{c{$*AVzv({@|yJluyo_VN${kR+cvI?H5mo zE#_#2834s+GFH7#cbxI(lg!l`h<>`ti4ZeJ;V*T3eBQdI*V-MvUmp!D_1?zAt_$-@ zYQ{!(2HS`Twp{igKlq4&Uv9fqGj-pR@8H4ApF~>oSb7%EpO&kc=78%rS0;irTF+}* ze}%8yLc#@L)}?fKu{Z0f8T^>1`FF8JcV#nih-?gv1|#s#ND5| z-L)o__GufQ{zT1t?x~i`Q8%Rw$!;=t+uJ|&Y%9zFUZ2PA*-2;!b_W0@Ol_3NQflz*<4Cn8|YO+;-x%9 zpx;D+sm-kN+sr!7g{feHxen(L-DItLKOULSqB)+=XrP}Nly5YJ?F~{6H#edl|95{n z+?yk>Q|`L=Ekgh-j!UTM1gXr1xbju9X2?t3pt<)Itgu|F?1}70+Oy}JGgJKOx6&~= zP9KV%Rj_+AFaht1)^w_p^x{%HbBmkG1C+e<*#d2BZ5_%BJsMxMW`$h2uu%1-gDyggPCQi2cfjb*EDvgz-^wZ#n!kjp#oSNe2vm@CBqi zW~*Rr0N^+pnaYiG$3E9lTD%?&$9K@@09d;uB)rZ35_P)V(;x!;elQ6>zeP2OTxC`|aV0guf|__)Kcdpj-!eKaHi$7VpfBPfl6?Q&6As z^|4)Y!nj0&?;mo~nZdo)+fDzzud7bXNww{b0rn<8p<3c=lI=+8H^LoMQXLJNOs;a|W&*j$HkAq+keOJu+3wfgS9=OahuvQncYLW)ZGIP7GpYkD9hRP7Rke zw(J6w7VvfNbO{7{2QYS~lpES8ZuBC70CJbG6I|VvJFf=damJ#=u?!AU(MWU0aCpRw6u8$ z;1w2}ML9bqB0>+0~1(Y9Z02`FK@ zd|o(0>)Nm`bTLpWaIwHHCcQLKXgDhDmo*hn;Bemsc`zt+)jY5bS+-rR9oxdkO#q5p zzUR7`h(lI(Y2GCm>*%xH=BQ!qYo1Tpx?(64=6#cT^QYwT*W1{&i&W=5^LkS@oMM~y zL;a@w-_1KE_ozN``voB>1zN9i(n!}vd8+_txduEQ{3{RgI6=N{;9_zoC958@>TCu6 zM#5NN!(=+}oWVvgp0lgQrivUl_|MgeFMK?}?h$Sp4XjBo9LQkEJxihbFrzJhc>CuC z%9%eOUe3xp+*ci1Y1dpepO;_|9DKOtzjLzJDJUmQorhV?Rbz-BzsBp8o#(p&(S7#S z!RBI;kDDk1VfDGkydE;d2(P1u8xG1*Z#bKuud3PI^L0X%KRMN%Nvt=CZ;JoA&%xig#I|OLo;akrl&9R4_+)!nOOv zIr3z{1bpeNp;zO{Ta}ROUcBHMWYhK_CxKA?i<MTh|GSF2 zhSag%8zcXqTQMu6h@At==t*qHc<}rJNmKCEGx`*xJ_H8Kev_~LY$)s;wu4) zsGjkvo8kDdQ-c%y_jEcNnUoCgg36;9Z!~b{5EyAW4=HF4W*}Gr#A6N8b2LG64puh8 zWfBaeCs_Hg9jbnjz-b5M{6VTsBR|T$&nUOT;P@7jkRsNAdE_Lk&}gU(X=P`Ba5|>c zx*@AkgAMO)=;b`Tll0&mIrZ)H){oIm$$Y974Imu}<)EAae{}K1kA=XrOx0apRR`10 zUc@R|@h4+-Ge~#MPL#4MiRN+96F(=_GqJ|eeVAD3j71UN;@#>i zCTe}5^0M~kddr~vvTWJws+l@jhSKHH^vWm+7@;Ab4UcU9Rs67?t}(5CTG5mY$6MgapyZB zyT-!aLKPe{c~isCpQ1isf7*UQOnav|PbZ_)IhVUCCquuO6LMdp!O9RaPJW0vC29aW zK#8!QPFgEW-4+sTI2rA%p0kEKL*>)x8`VA1#&-Zdr8MtxwD}>m;g!W|p-{v`$E;VT z)KdTwtF)xkV$*@(T?BmgAC0kqpe6u8kF?wP%DJ;z?+4~Em+Dlz}G5t8brt(K3@%YTLMJB7@0K-N}5@!qP*-dG9AH zG2YbAcFuaxjZR8XB6$HId&-!EJ!DsMi9i9Bi$DP5pyQ%AY!(O)VE=>ur^bZXFbBg# zAsBnk@{s|c!&cRU`|J)#8_`-R3NLi-eIC~X1{1n%Kd(k%KNL}>F>5JIQ86*)&^afMMIQ>L9lTC~1+;;*jWB)hGg5xohON_#PnF%)pd`+B#n)a_dJY%aYhFeUx zFCKf#>~%`6YXsH2N}S_(YZr}}*Aba#FK6mRJNoDV`iV{vl@2GM^P=VUY>ypsog7Bk zoxF4BIhCEFg(+-eH*}y2aAju@vMZ-bsO;19FS6d|g0r_Mi^5K3yOE^(Fe?qCmP+d= za(i8Xt$7F4zb;3@XSlzan+Fu?U^FNzMEq$*Lf@+|S3RvLTXqC4Kr%5;Ju#V3n>nQ(jQ z`WwKKRmxw_%J7sxSN*(KVM<#_w z2X^l4%aE`pqa_omNH1p!S_yY&xe?vk2Wvigd)9n#S(h&T`8eRm5xYL zLXob5A|RrM-lZv3$l=?2X1+ap_N>`6bJjZNKge3i`aRcu<$a$UTz$*T5<|7XJ+>Sp zz+wXe*+@8)KvCZq!s~?6v9OS@R3l$k*b&R;lpGs?h4U65_cs(p;>3362X+N89O@zy zLFGvJdi<+PhlW%&B!{k)Qzo82y+c8lChWWyz_ZIg$7Bp^;MWWbu;luT158~M{hc-fgJe!rq{EdiXq;$?#3&Hbt<$FH%@f)(AO ze7^GD6_PDi|Gs5vJBX^&L@O0U5e_!?JSbAqhA&MJhKR7J|vAg~Q>o5KDcu z324o)lX5(sE$@@FHX`ko061BSY2sb}te|*Zp<;32NLj(?2(7}%HR>6_HeJ}Ohs1m< zRHc6Q$W|l;*8T)dwex~9w1h(%2O^&lSW~+?Av2Q4Wr(eWRw-CB`0@--Ox0sdj0xe&|(p-!#!`&OPfKajsQw9gR&)^P~oLWz=cSMognE%@$2p>f6!fY%bBEP<-q|6sNWZ`}YBSpYP4n z4NyawSninc$w;Nf?#;oYN;b#0 zNhIh94((JuXX+QB6&w@EIt0uxb(D+aUa@Y6fp1hg53PLOPh{=^i)MHzuqrRGe=WXcfl2Y&804y?%sB8+b7dIJVIwQ7tI5opl0 zRMMWBRMRD5YJ(sds~{NQ)#)#H7w0Ixii$TM)drtJ2MYJ@R4^w6NU5?OhOLquhPFfy z{LhV^s5P&1UJbE20VJ3WhCT|h`W&q-784_~dD}V7`rh&7I_jLCQa)5UA~l0fbs?$K zbW+d|bKm2L!MqaY980PU#?LK4>k!hBU*$@G9Z^8n?9(^H1Uhh~Jv^6`glYWM=cgem zfQ4`cLH>KiqeZWPrs0oGp6!_6wWX6yS>TnJ$`lT7IGdRkhuGJ;PrlFZRI=_A14t@w zIJ{-;^2-mVP~QT{N9oO8l1^r^Sm1-v?=UXE-^bK=!5wj9JN)>%u#X$ z*(~4+dk9|0E51j(vfWfzd|{c|3|t%x*9&=sBxptunBgqEkHur0g~Wj-xz~`q_gbGZ zh8#NDXC+*|x?uUrvdTQ6MTIzfto(p9NvC46`d9oN7z@)|{>427DoJ`M9PxPpp{Bl%DhS(X-(se$7YT!Sa$ z^Wbdbd!J_%_;wpe`86QwK3p|gzAQ&K8AJH6a6!iCTl^vTrl#J7X;A5WM-XoAH{06) z4E3DRe6>VSTAHNt9)%2g!cK)7Y0 zk$gX_xId1r;7S9g$A*Lq&aEbh2NIFe5o`#NNK47P*$K?j9@uf?yCa~VTgGiz@e+D4 zhY-FK(4!Isy1Z#=$Yq`kOd=y~G-RP%F&1gSYOof*r7cgcJzC&!wT?(H#cC2g?1)sf1TA;$5^zc)(sD6sdKuuN;I{x;a0Ebqo7kq zkCYN=bV4-zsJp=*sX`{6dw&C#0okp`0Yp0Z1iXGZ>v^h=sapUuQ4`0erl-|mQaVo=c#Y3m}pqKI>^h_@qkQ>y59QBm<%IDl!R|; zsoAs#(jlBwAU+jD&fS`A`8D{)31hjL%Pdr63A!=sUmk$7Oa1`yqfpQ?d^ zh|ilSbQ7eG%cP2x<@`#>6@sL`*X1L<^TaYTBB%wjZ+(LxwILazSs23|=D`@IApv+& zgr>oInvj>hv#JxUl zqa%#zCR{EOPJCTia@kAVrNFQ8ropt16P!_kgQ_H0ym4bcz7ApyK3 zlr?}MVRkPfbCWV5$Vsy(ofOfe`z?mESSro*(l~2U-m3`hq_Hqbut+N8J|#kjwqPPN zwrT-i2W5f|^{5^i-3C}!T&HV95NoxkS720V=n#@%*$)mbK`k#HY>noo}N_ zKBtx=a5YzZNIWFoDgXCppdz&VyD!v>GdzOYGfdGh5ro8V&43gI$mjPe(|6LI$%aM( zoqH*sd}TA-wy955OXF{gPJ`dsB@O0GT_uaML^l4?07b=R8%!q!*DQQadD}SoRLXFl9lEBN2Qg zR4V}6eN=9(Y?YT6_h9HIJzSI>(X*0n8vBv%(c6zYjYh45LT`2MnLMeWOK8GZNjH8< zsHs>ApfU;g*%WK_L{_~930D-f5^SPNX37y+5Sl19-x6VwQiiF|?#Go89K!DYcp{HCJ6@fyFY|;wloQ>e+n{(4AwF7tH5&4bXE)Pf`>X; zuDWG0(ci2lQuN2@E(8~m-A)Gc8c#q}c5nVHw}|+oalCih9Dn+#MLM&LADvc_od>C@+&Qt<(8w zZPS*%d7T7}bSrbxXGSiYfS7CYeK%SmssOzKBOs+G2E>GzFyO%ufbiWlO;v@7n7Wn{ zdQn$m6bsOi(oaqN&boT=DGaLtFs4+(7zrqRsuDw0>nlZpd1ohyP`GQ0NPya{SpboX zObG=7074=@KIM>+^?&H9(P<5<)A&`Az{sN8$1-bxYJEoUsiq^K0D#D&Dg*DhIGT2R zAWHoO8lwPeNvnM6GWg}SK#n@qba$%ZX!C@eX3si@T!1MwvH$Jj9oL(TJ{S+1txlvO9!g9Hl=iY#c;aZ%eCE<7toDuH=*=`eQR=aW zaDy{)H&XKm2UCGHFxxr(coG4ix?0a~pP~8GJr=}Q^o4NR@)GuNo!+-^35f*=ivlP! z8c{?d5diVGsskhqerO?hINSpxee2uHb#mjdVL|kDfb)IEc|7}QZUNljrQxLX_~Csq zoB%vzgvk8$A|w(GwioCDGwd>}1NlHl%2jrA$)y)Q&p2o$P%r^*`Iiv({rr?QA_*x< zs^^p-i{YVa5j-H5uF6ScT7~E~9Mt8>4|colk#)t6O46m`fcja?xY>0^mi?PQI}J4q zgO2IIoh5-RL$=z`g;>VcCB9YsD|Z-%cW1ur7i9Rs2RZNaT?-&@Y3{QM?s37dvvw94 z^2AZ%c=0Z7@~(RX=95KwYg|GR=_esV^=*(JAp-U24Z`A74h%<&W;6)-Ov1jDa70IN6`@klmXdR_2G8=$yTmWV? z=&cd4V3XqlJYOJR7I`PD}rL0>q67 zWiktmdJ+93Rgu}q&lL$44W_@sLqfkBAtVW4q?Ys=isA`J+>liIih0;{(>h)Veg7?Cu9#1HyE*GN(0l5b=rHF5h!4HamXryb*nLU zXa+XgbEVzV8DSY+gN$E--b<39^y)X*)6zXqP7&*Qs4Ar=kbd)x0f>*R9UVW(v%QvVv8(SyBv)CPO!hMEP6*kC0Lgjt zogx)<_g%DVxXAELthX3Rz7Mj(83mmQES~8 z&L0W06zRu&&B-TxY|B4s51=Yjmv!WegG;jF3VlrdKk;0zR@31fFNg{(1V0g|7`}&z z#2y+Ik|<+CTr&z8Q)KD5-@2$1%kc1~DPyks?e*D!?n7=bYlueVbCZ_lYpSZ1-~H*s z{*8x(4$bz!9SQAOz&qRYRhslw8q zCXXvTVbW``C`wZ{j`J^lug-Kwr%cZcTpgR0nOClVXnG@4V3O2KdmP_j*&G zyEFuqkqE4|J|-RyE+Z);ORe)j(f-84vw%PoEPxDGcT%0>y!+hDC$Q`YFqq*L#SL0Y zjceQm!hF~tl9W-w>u7-WiX+rNSv-G^2Ln_ZX^q(+?rhXXl_ow7U;3FMc7UO1! zBsszVF8@tZFs8gfqCuBt%38}EjtH}?y;+~PU>PR?yS542x@S0ufosHBPQ?we&9K;0i58Y=&^F3p3k@<)_lub5qE~*k;rL2wLW6m))K#v*7!3$#QXp(% zYH=UrgGwbk%Q|b}uWNFA*L<66NQC-zlYf!P{;27aRbcFM;r#9kJYm(0-i=NQW*dwG zCI)jB_0T7WvAEny4$NTW_F?C3=>3{Q7Y6Ekyskzs!4a_sSZREjYt&DVy8qeu z^@GMP94*%DL$D8u9nVlkc_+ym*CrYFnWQoiDj{$H$aI;`Td?1wWpDV|6&u zXLK`bR8SfCS`U`l1!id5{{*EMxh z^VyPa7EUUad6`8B}So z2j?4gzEG96X!Hj8WWUn{m7YNOrs$}4$15dSG~d6YJi!y{_;jNiKNQoT#!de{Gr%fw>H-|%&TO)|ap_gXN40YH?ZN=#?~Q7Ic- zF4);+x1OVWfIAWJm!H*@Am^>tQ|jVvHxv52EzI7oe)lV)=(9B>ZZ?AU6Gu4p;@c@H zY8W!NaxUq~^%m2>f|~)N`rSWo3?9FCIJv<@fd<;iF@OBdiL)qTDKQ0A-B7#I6Usu?0;6cXsvn+1+#PJP&6zKg3V8EF^_LV^)5_gtn)%j zw12=92bNaxOEB~umlw=tl)UrF555=D00^oe&Vf8s6*5w5O9WuxAlNK<4A}<38jWzt6L57h=@DBoAO6esFhSkB)OM z%hzQr+65T1-y(frh*p!Qa-~AMO=b%!*GC&r9;oc>65Lc=H==)jv^+3Cxz`-J(4@In z4Y;S7yT=T;(xhxHP9F%|_@$q^*JSR#F9Iz;bb)*S1futM905P>|5CF9z_35{QBD-L z3qoQ38yRx(zMB#bz@hL}8WxcAdk@D#s@ytFIG%(!idcO2nrKeCKMwBm2)gYxYI*IL zAFX?)TT=h2FBhq&hJ8_D7<(lx-Jzkntyh!Ya!=m~z>)dAAzin>EVEYml=*P#_KjNK}GD>NyoMk=;}-CSs4Ba3wkV6ZSl5;v5BsQxbvH!4Aca{0So% zrYwW1{yyQKz%ULDh7uNrl;OJv?RslwLUcL~O~BHMa1vtwJWDA!N#?sP08!~S$i8P` zzK@rf80@$}B++29g>irr#UU1*E(!!KPM5+<5$lm*W+Tlmfr^XBBBjPPHr3Wo6^x8W_^a8&;Ji#vW z@J{zR-hJm0#=XA|vz`v0IF`)4v`?!Kw1J)yYmP z&6#EQ+B6Uy=?<1v!#mi4AQTV{gAjtxJUUv2ObrbO>Ry({+Zu(%F4PX-BsDr5RM}81 z+Wd+t4InIxBNofWjUC_h*NvyARJ=U~*zFy&XG)f-G;bLJGKra&xhR9)kY)LtIGweJ zgJE?30tJ%zVxnkr)^~Q6v%yPXI*f6Pk6kbECn>O^2d;sO=p7{-{@Ce(GNt1uuH_Fe z5-h~&!K?}xh$k?@DXMm}^_V#{&?h)wDS|;i;B&;AR;AmOMyMrVf2*oDW_$rm)+uVO z#31GvwEd>o-*ivHDwK>#P-V?v1`v8m$8CN)wwv8QYMEIo1WBv}cNjvgT-&u7dIx5* z#{H-TvGZbH)7x0WAr%7z>O~Bt+ZSBKI|WNzPm+|+Jecve5f$XYJEKw}3i+*iq8QmN zxa5*bS0g!?@-|lw*w!UgkmA#Ns_ag~L}Nd#ATiA#e-+wSi^;P^4FHuL$I7yNve(z5 zRLaMrXz3m2qXgN_ux~_^ei{I%Ld=?a>F4~Nvm`ubW6&JO{;n66Giqu>g9gT#w5n0TcXkR0_@~D+J zvld7tY6N6pnW)CnMc3mRR=+aoV-QDzoIwNM zi!|Wj{tAck{X}9Pbr`AGvMJ=usr>9$-0LKOtLWF*laCqVCXRRSO*9ZunfpG$FMKsJ zRY`g3Xca~bUn#{l@Y9F5lBye}Ezmyi;5f;|GTTROYI0NeaNXkIQm*jZZ*wW|8$_Cs zgUDLqiEkUD11!okX>cHKqj7`VzUB{@%>yL>#=g>9Z8f{M`|mS(!h9A|Br(YPWXW!6 zizJ^ON`ht(3^d-O-4a*>Dn6K|wLKqj(%^g_UfrCxoj-oeWXT0G7$m&{^%G=c=`eF< zXMY1|Rf>BV5o&u6})D zxZBNXkuFUH)T*Ey4NHEkjzy8R5TO`yg(yZPu?h$y6j6|H7-dP(`Nd0+4g2No{F4BX zsd6`AImLo`i43S(nY>Q12Bf8%Kf>E76R7|!C?6n5&-?&i^n4-%8{QLqvhq@&tC$El zhCP&@K~V(_U=k*9&%Rkms6I;-rx;3>TTulub{R#v!Y$5sK|~CZ6b>xh>aa@87|VO2$Kw;Q?vNC43b<+sWswCSj55pW7}iPNGK z@_yG?08KupKN-d{fW~=#C`t01kq6SYq0JIOVWc5LjA}wnM2Y=V0v(dobT~9?vECaY z6I^AVGB=nJFkQ)n1kvs$Nh%EEK0~J%M0%rqqNNvqAhr3(v^E0MN=ukB2V=%vpb?+g z!r9CB+FZ7L)M+itq_PkS7i;~}Pv`^`eFXFwjHF?RB~__glOrfKT8oYkIK`8NYd7CW zg-l7P_%q~D9=%cx`lhBYQgD>vvwT;?;KQoD+h928OaG1Ga2%zfa?G0*Hqv^r7&T%o#o0s45@SFbhJQs{D{gOaF5gyhYt{ukp{**VA znbP9M`InH%_*W&?*hje(iPR*=2GiCtEycxd&Q=jtwNoiIWirXOw0@r(6}*~T?m&TN zzpU?>m|xvMe7%)t-FwdDOhhaH{QO;xMdNz5;*6A=o4@=_DxLWYB$ANtXttR|@1b)O z8|OjqtRQa!9Y{zGDffv&0odYUV0L)ev&02RewhPN^T@hT@28~u`U6Eb7b09N!9e{9 zgI9yk#F=BypnF2U=nQ*jttM~Y%(#me;7Hqv{9cUrRI0fN`!zo*i;X;#nWiD$_2v-Y z#k^4ekf7?DzBNZGZTG1dCeR9aCk%6z6o@^)|+bxd`zjHsb2SU|G-}dLLQZdENyJ8xFav8_o z!M~((U7um1r63^JpqRHEdf^oLR%4h)G%D}Ygs7&K@5X-?02AnvDBy)FBJ`0MXop-i z#iX%E%=O5U8+LXo@hGB>G83W&-Hpmr3GUsGW^SXziS@z1+>63T& zzWEo`biKO4csd?u6Hv;jR3w~YJDT<_pyCGmhA~OY+vY(+K$R`~rq%T6l&@M~oE(5? z85KD*eEqQL+A*bb3~F}t-C=9Z*DYsTz})KPV!w>@AIn3X-`2kcznDJX3bnm9H!l`~ z%Q@e5H0+uIiy!x%-T9HK`FoL+Gh|r!V&C3Y@w+e~sMGm1+tZZJRZ-jf9}O>du$;eF zucZWkO0fBv--ZN$#BV5J_b!{n`SJTRB=&bJ6|lYj zLJEFP?gKol2fZ;o7i$2>Nc@%`2YuQhvehu<9Y529pCQJ~)`!%VAEHlkZUW~|hMze}fLK$Z zw&f&*_avpMunM1ZpH%XqRLIMeg|>GT-{F*tMwF|ml$+y}J8-H4BdViRssHtg5QW6m9Cj;5%rAjB)^Wz&v@v%3xXG-zAng~_+^jpgg*Od0TU!?f2IO|P$JT;Ke7eTVkOf$5E-j2mYkZxCovL}nt~(^jc&uVzcqyDi9LP4_Q%5N&hNWz4-D$R>>PJJdcSi@g!N=CE_+s9QCU@8^SrjMzM-+Hx#dOc%eMB8&aPLlyKz0e zef@6+28V`6M#tX1dp|z$;p60|sp*-|vtQ=Ee*2CedU38&2C>uUerw2qx<67bz7f*Zg%-teP^___RCA3#gPKtmvvt|Lk>2+j=rq_ z{u*)tCja-Q3&30LcLzY)A#EZ19EhI<` zAQuy_Ot~y3$*)u{CMzDUEvBF#f=j7t46aLQxkyAGKr33-Aj43SWI0od4)x66T*v3G zHky~Ghg8ia4wu~{sqN&0F05L4!d(CdJoOn6T;+t1xvmz3L`$o{?yW>y6=5JkYuHEz zH>4al+Xf3vN}_tLG*x90sZXI6ua=YTG@|AFBxqy30vj!~QCXJlwoz4CUcFKMyme!v zreQ#6^LfjZ+h%RsO7&)4*Wt!yJ#L@Ivcb<+LZoqs|C$=hUAtsj`J$hZVSaHY;I@>}Fbx7)`~inonf>Lu6C1!AOZ4sv1vf5$~L=I+s21SqN0;WBWzJ{#U9({Xo z^wr_ZBNDM=d?e$e#rM$yb;k>dazBn2Q)yL$mNI$d?k(p!*PX272md%(t-If#JcZ5i zI$f`)-0mesmrEINQOIi2vU0XY~HPHzZL1dw)!B z=l8+5rug~KNel1uUo%Hdo`-XsZ=8?tG2WWn3*EimCu=cDDG({%Cl_bCmrLeMMc;c9 z&W~5?Z~WTY*}41)l4AiRS~yTi{bR@+aVO0XE(1{)22aEi3uyJgtarnio|EC*K1%zg ziA5khVm_(N)ML}&)Xo_ctk8#S)9josZjhdKSX)XN(lVLwy{lyD=#85_pVO zKR3%>td?F0P0mn1zrtReQDO;Qh1MG(>%Dl(u@Z)tL+V~|Yyz6RG_|lim#RxY(P9Q$ z0)jUTsV}T1 zl8@ZswrF{!ZM~nKJ66UoH#}_M7WSa9iw8+K=9Q({k0{oACS)-@V&1Wz)sXm1#94dP zdUij%ZH!OPq;k{-vgcg-ytG9Dcij|}p7UC-oII^+%t_%Ok3*9GN)Z(J?3Ho)$NZAa zD^VlLIv=Te$`Hm)+VA|H9OSR*RVYjkzYFR(DA-M`P+Zl1e}DF%@OZ4^`qA+FN2dox z0E$W!iOzU9%TFv+zfy&9WIS5oXECb^ZuB`5@qd?l_5U6B9REx1S^quv%ztn{O@HXb z@F(}FbWxYwZ|Poguc}GQq0{B}SMEKSa{e3Khbtie*WBB_2LB!RgVdMYU#^jr(xbWL zUM=lU?nf&>RMOJ?Gu+$%|H-`;Xhu2RC~#mY!$?DrPk>*~bvet@scJdMb{u}pe#j*U=YbA-Y8<*T`2(6c8 zn!Bw(%XO+=FVFwaxK~NT3Oq-jXbW3%&TVAXb{uZFi`={r+G^-$aNoM*zGkaw><{k8 zHH5cYn(Q>TU(7hwY`4w@ZEnBBM+^UGTgrC-(Y{t*L-^6L)vEgraGwH>>HIn6?p-Z5 zw`tOFT0*D%SMG@!JubO7oCRo-I-6175!{_^P#@F(2i&vX^!yxGP!?6$6 z!LK&lY+^(YXB=}p4?nw9)E>@yyxczg@*lY04vucV5Ixonqw+eQH^`5c7ZMl$aol<) z!rZ%`=#u;B%Fwt843L~Dijk>0ko<4BAHzcAhI%OP??xcV zi=moYy);jDBawQ=FpHtyapdJQx|n&;u5>+Av_6UpL`3-~_a_|u{Qw%n2sULb3BAQX z=KhUXiE^9`dFgug<#WU)4Zf_FG)&T3YLXq)0h$l~!oAP)+l|RHp*R&lh^k_;cc@Q1 z4`kQ{s$4>O?~z^^H{*A8q|53g+ru+Ptd_BLg__z6bcW?g^ z+{2^elhd<*%hwIqo(L$d(Ct6+bqt(GCts`ak9;ldHaGO&02jut^Iw2_HHw@X_^{zE*>I*Vskuw7&N}e#RirrR;;J1yi1FKV_;$Gs6s+ zEJcdz9J{j$Y=Xuf>kmUxa2Mw>Rq>gLq0 zZp3K&?*C@KM(~1}Fp+*#+>tp>4~#9jl*vMT2)(52mWXLDR+@fh5HO{k(h4`YLz6q(DweW!l}z*nldc!y*(LL9%Cb$URidd`|?Tp%uIde zac|mhm3%1bpp)f)4DQq)`Ff>lweZ2=`hN-TK2Nb%p3owYxycu zIs#{3-Rt4g59sG3-4ura)|YF0+v0O;yAJKGvwIHX`5NBrhr2bsfsg(bT;5It_w5&# zi}Hk8U(H0by==n=eu0FBB_x0aOWFuC&Co3_8AtLuJ$ z{kXQf;dhVH(Yqt-sDYDm3XYmif&GFd(7jR#0?f(t9@~h7e-YFh!{R!^R z2`z!zpCA4MxPRp9;O$@2=zj{_qwmZWfIsr}CAhJF$=5}^?u)6KVkb*~0r$^*jg1le z6Wl-Z_1RX-v{&T6f%{+QYv=lN^GC&a5FX_5pMYzq^!f;_?t(g&jlSh0fAOFXL%pTh z4Px2FK=rU7#vvR;VfSD2wIQG(oN1{a9K-N8Nl+ee1b7Ad0{Ce5(*#Fam|HJ>u;IGABwUn+WyS|ih?gF@bUHsoCL3Fg>WfFuns{Dr}I7M3VD9HX} z75P$reD(bcVUuP3limsgXA3M8yCX4%j9+hgF7o==j4Ok^= z$UizN^Zn3&S4FXzdj4ls)V~~+vI2-dtEf{mz<;lb>c$X}adiDmujJbPM&6d*rnM-Q zlEemSX3}@$%K1eupMUaxdE_Sl%aeTmMi+7H+g$#P*~a226LQw|L`YEj+uW@2>&^EQ zJw>ywCVXy)I;LB+Ol2IFaE$O1WX&B7xs3CHLeqD(iVE2kf<&kDSc56Qh3@e(OIZpO zJqtZJSgY_4He3qxJKY~0WL#kDrultwUeOSQg4OjyPk>@dRMp*u<1;q!cvi38PqL0I zuDkP!>2v3Yf`jO5S^-=q3Eox*HpaU+ql>u9DoVF;18yRFc~qiWb@$#ZvnBpnMKu}1 z^-O@$FOx54lZ*VZefay=iDP|If6ONGt9tcs{H08v7 zzf@78VE?h+wIj^{DzCPezN()l=I-32AbTI9DRxgWsy^*_X~3g)k;uDfUV3HxfeqE< zWfi4xC8vlZdF^W|h2}L&;SXy(;W3$nRh~(jw9bt#!-*ae&YxnxcRd3PE~}_ja+UqD z;NqZz@la}&pOfy&pr%jGHzG}DgKtEEvqHr$?xd#NIC-A@^l~=2IVPh*u-Wdj$;(rjY}-b=5s6h+>{#T?+$_gEx8M(K|# zDwceT`ma@#u4eeM=$^xiMfI)1zpbL)h~3{yKz9uuurLltX{h=?Ba3C89vYC1AAan0 zSw+Q}HC>%0q?jE{|_gLYc=TOdmsVuY&8mlVhYL4zv=cgd*XD;ROZ>G>hl zRc@`!=#A>{_><2cO8DxZ%WvFJ`<&DkuGdn|XJhZ6`(<`x?8WV#RXvVS#t-}9FE#L6 zyao>R<>jh1&^`|-MF41-TQ#lq88{%WX?l&N#4u1r*`c;mz{a<+Lx@aRE|NuP&dIY- z4@lV2!U(_IR=An(p-n|ysZH|T&q9>dh{^AB>c_KzH_aE%K==!Lo37jptp%$Hi7L=o zHxun^;Op@FJbLr6#|*s;vh2~)BAGq$cHKz;$rw#N`%*w#Kg^XjewBBQzGk?y*GSym z-+_#N5&TLpuR)#MXCV?l^QL94!Bj!OzGaNbH7Y(^o1=VDiadZ{{W|1fa}MxuN*!bc zmSQ?p0JFNEjC$yW1xmv_( zwa+27yWO?Obr^TNal<~p3Th3tsq!uq?#GMvpxA#`@;+BW`t>)nDkv26QMFgHgiw1c z40O$!=Id$WRkP5I0HigG5+w~blz2VS#TwE)@ZqVb;urCfG*R~0K%uVwcXtvH)3qzq zc^MCBL0TQm@0|{{yhOKquCTDd@P02!mDwFx?cRQI(ye8s^GZV~58syvXb)W4euTOI zHEZUQp3R2DsKu)cmdbBr6%XyNkVl*hSz)zJahjx)41l6gF_I%T|yxbuC z;tM8>Y_5x6s;B@s$ra1_9$B3Ec1dB2EI>W$3f*7D5pKN|PH75LCNHTYri!`9_U zKQ4?HCaMu7oh}d=iH~B=wneD28O9?Zn7@4M%P z$2?ktZB>wjuW_l^i-_mKuRBM7@Qa;5h2T&a;`!J(R9v>a#1Db1d6kR-^0D>6cx*#l zXjE6l39XhGj|iUX z1>tAtHj&Bvl2JdHQsgz0_bpS@=wc3!t;8B)Pvkw(mZ2+J(4S0djV7_d^GO&P02wB^ zVHa}_jh~98C5;S}PD^|O`qXnR!`dm zWi;}hMk=#y^gL}*&wIElpsXF)LYjZH`}7^|Np(!VH%1V-oY(Aqb{}XMd<- zxYJ(ntzAkyE&+2~K<%5qbgyuYlu`navK~h@&rFZ~eEH`gD4f|@3SIaBFPwhDyA?+n zD=2Lf&9@WxSZzNm+^0a{L&0_&Y)qT@_*jhs#zY`kJ?L%69>K8;LTdE?hrPFOhikA|Wa$Afa*w)Gg+A z?_a#nbKdhm%=eyaUDsNlb&-pNo9sE26@GFi^8|!gJC&sgOs$p45lqD4!^hr~)rHIw z5YNthoh3{Q&U4Kc=jLQEa5Xf|HXP0NjLcR8=192bDE9xsWu7C)$-z`a9Ksx=)I>}s zo_mHHFKbDoqEYTno=a^~?k+U@tax6PDAJspY@?CX#62(9Uf*^nue2x9UOZnLE78e- z=)GJ1LVd3LM7~#WI^kBnw|IeX5ewm&f7GIj=y4giPm+SQw-y+*N7u zC?gq@`U}FRucp(U)D1QZv2n^&&bv1zoX#bk?OqhcaBR-lUX5pMUe;tORGAsTcFv&slk*-*o|8O(}U#+p&aU}*L0#h1- zn;SwOHH7arM5+ZI#WmYdsFRLIJ9u@5iA zzf<{CXq6wtN&9P+pT(-a7ypgQ2Y#jU5m^6<%8vzorSb_ss(eSZ$VVGaR<-8VzAVJ$ zu6_Wa4JQ?hf!;q_h^sRpzgdWfiy?n%I5|-HnknSrUkoSL`W^nJ;bdRspAv`3&oBo( zsVI)7c1Z44g5J=#m9K&fxZ?|Vzv~g2=Sn@ov8~GPV8xfygI4)FRhbV|@KsJ-#ug#D zUB=R*f3ka%!a3!Z`IwNWvIB2Vh%I$AQ)4W6;G*bhAy09N=R#R3Js;jRQ9d6CIk7jD z<{C{%R}^u#Bdu}!%}9Mc2Z(9=-PY3?0&B1HeeXYf;L2pUF;B7f#6uq3!06aLpMZpH z02|Ib_2{2y_afr%N%bAk9NS|EkTpq|LfbPrrUGb)5b3UO&JC%M`AZJRhx(X;F8oC0 zkM{v;t}_KkYhcI4g2^OJFgK@)_bO{mf_nZxIn?%J8hAP?t{4<77BW1mGfRz+>apEz*H(v zJQuZ;@0A~5M<%7DSSuWR(IZj-xYc^ISBc1f;xmPz!+GMRt=c<9eK(b14 zU^cFFrwljhjPM*yo0=*e?W}f@V{F^r zqV~CW<&fb-Zk_-S)ib7yzCgYrlNyjUB6uS}diOx(m%M4Ex~Urn1)rFuYnFOt`*9&o zCwKHk4PV(Q^aYanp{FL6jQ0D7NP~LW%lFO&@YQLYo-KMgW)~6o*5_9)*zz7pLpb=<)^dvsP#TBnK;^sctNc#M zeU%TCdNUMbYPmjYiI7IC{3~5=&?^5HRy5+cyBHI`c)>h z;Ur90-7f6hBUt%XVx1_d<3&onJJiHnwO}DFYbt6Y$Pu?{B3vQy-0YkOPSoNuBhnEk zn*iAKg?%~tC=iuB3HJu9Gs811CKuCyNs?xOnIRy)_D_``Md8Z8F8_AGEV*0&y#9za zjv8^s&NQhzG*9>TSvPZ0QHc<-RX;B1bU>VAkJP(?kO&?+3TxxGoH63-Oj4Fr4@idC#|~8ubm9i z0;}^@=pN_mzZ(_}_DqLATd0uIU=b!Ke29rrs;rDH3y*c#TNoWz66+83)8da&asq;_ z#D&OK*YjcXX^K9|Is!YfxFmcwE#XC@*DKK-)vFvj`O5c;3~ECJTe-QTX|W4!Hi}IM zi?tp$W-k!xmYh@KGI-ek;IeCNsjV!r(SpH1^+;S)#k!Qo#SFX~{nJ4vcDvx#0 zZdRx!6`uWoPuARaQNKekhrFr@cfg*t;sNP+M%gfe$o2tkw45!s^lnUja2@eIf*6U@ zk2rcQhSC4WCMRr_xdyXtr{`V|zR*c2Sui`oOEpGnTL?3J5Pk~-F_A`VbZHVIa)R(& z#|uN-fdnU7F3C#*1-cb=wJV&Pjc2L(U3*lFLq62CcuDLXb-!$;a18e<8Q!^a&xK~P zrIEKxZmn0McZ!~{2tK5W-H`WMGCLm@=)#O8DsU2i^1O(UC^uN!&WC3v>uq?Bbka~+ zTU$zNg1V>@@Jz>zKU8Pgs!-ZS_b)oAcoL;LUbyvc$X+(R-)w`6n&2pp7OPl^(#C_W zo=eb6q>2*wWUExYtZNP|^6x^)v!(ljO<^*7hyp6czZ_N_&Km=Wcj6#fWYkapbi!_G6&h(^KL4~rJ&I@`^QxZ7 zB$dq-wl;*xaUJZCY(ys3(EE)!a^-WeV<#VtO>)*TMxOIEjCqLFN*Gu-%zW8No0@qn zyS6oZcJ})D%=7mJyBd2LA~!8wVThelaaey5c5L?%8I66^vIxLdRp8ysc!R6xXsN}y z&UTF8izm8EHLn=hnoJ=mw|lQQvW1nWs?pyNqhN$wO`78z6ge8wsWh^Zs-iQ0ia20k zLtq`LGS{DvY8Mv>wBWxaY3UJ2n|b-|_6@X2n4d(~yp6*3oB zhu>g*Cpgk7%BJ-oE7SO0N)=DxnAeU@<=82O>!X^lzk-we@Uc%wi8XfKP8_ zm;}X!xhP|;TwGNqZn*u%q25IJd=Njy$=Ap~pbIjmcScgY=8gYoT|Rr`VY5Q~#^c?0 zB2;Qz69X!~su zhxE!HvTrZQY}B(a-Oh8|M{C z_@VxB@`#qV@!R+;DAUfg0d6-`aM2^2)4Cuvdaw@&rrKVJAAk7J#S$K&PUpB zPlLPzNw4IqM8_Yyo`{%H;55J`*JuFqn+0kq1oB=mcNz;y-wK*Kb_pp;3NZ;_Yxm4f zI0z^nny@o z*-y==cJ_vBn~0roJ?nvsb00Ts5XPU(iH=U&88(ECSrKMikZ4nfV@QE4wy-fR!@D9G zZ*gK5c7->>^yP7Jn-k@x6VX3V6#{A2s|~ogRwoFz40L?BUSo*x*oVsc`rCF!zV0QK zj14CiiyF_0B&Q+aM|n{-MlsHX(I-)L&R87L*L{nNqvse#Tpz(=4QB2GbL-3Sh+%Is zM+t5d%q3#$Nylgj06Fzzj;)2BqKVzr3eR=%k`96#b&FMQj7^V>QXMCz9jDj}#NpS7 zJDVzk#OGasYjv$-2+pfLeCCvr?QEp42h*RImL`75ngvo+suof7*Cs` z@d0k9&5ETz4WgLTOP$+HUG+wUi@B;mau%gF1@ z$coFjV4nf#cem#fsc?f)yCU;tt`gB^?vaXTk~cY$3nWwEk}qIQ-nPga-H*$Wz&El!o7CwN@Y{lTSu%XCvX+WI>r9 zG_s_daOIP8q5)Z|J2@J(xmx16qf5Rzv;;5Rat)etrE~!III&M9vz?AaZm;Gx%P5zrGUBS(+-=OqDvR3mI)@|<*J)@?XjSmITzm^|Z|9FO@_cy@|o6W$|lu}idM z*A#F_;6Wx81p%^0!wgtwfTV%d1qFBAXn3^T4u<2+{aB>qqmcx3Hb!5p1 zoGroKvfG`~lpBlDt>iXVX{=E8#7^lnZP~0l&!l+SGxxH^BZ6y$~fcPkhWmHP1*|FU2t)71^7_~(QXBVu99>>I@gU5 z$B-YQQ5lV_lp{F>TE@D+EXh<%a%6yTzyN>SrLqKBMfRwQf4542u3AWTv+ttz%HL`{^@+!n@O4Cl^;j76L#tS8 zG1#@$Wio%Qb$=YL*sMYRX1LH$;IwLjE!us8<2bGXC(v)IvVK9BvL7mi=kMGw znPp3~JQx}j9RSTncrPp-^J7dd0LJ#aSs&xDuYmcVI-~p~|L)4z1wRLy0B+#`qKdrS za(Qh)Wc7pnaD@o^%V^l7B~;~ZQD=($^3;5SD?*bzjE6?e`#Hlweh@p-C5SQ zb?aI2tG0KW&tDyO+wO-eu=oI$Bw<1&xB+aK&FT51bXov^atl~?A+@DsFUAS2Mdoa# z5U^sf5FpviDYi&eF_5p=ifQoKEuLf0$fgpreDPN+I3TKc0d9mh{>k3(Q&VF$UCKBh zt1``xZrk59fAz#mPhF}&y?qi!kN1`N>mXe5t@-PY!j<%2n7=0e+WbYlH8p}kmXe5joWsN5NLAuN zuph2aM8gYL{Y3{e54mj*!WH6Pz(aAQI#(S9(0!Mr(V}`CK%%IUR?(e3&;f39Qye7gPcb0$v&3 z{>Qh9MDNvqJIHzX}1Fm4pQmehf+%kqA9eHJ^fjKJsan@kS2{O=5esS{fmr8~HQkgKm{Zi49 zYYj{GKO@&)`CKWFO#IEr_5b@)KRK^2dQk=kLLC~9mEot$%=JU0YODH z%DA36TZs>2$(X0`(UI%VUn;AC6lvy6OfZu|t`&JN^c?=4y)&CIe=j`MPqt$9qB%Q0 z!W+T|22Lc|cPB-H9JQWFrKPDc`6jsP1IVTBiBWtxYZK|RJl#F6c**z z=J8hyb4CnG^swyveE~{PflnE{@Bb$4LWvi}%FZ^V?Pu_E=?4z}CedFizq9n=FEzvO z0_tN1kHa%64xelT-86rqC8m)S1M3{loinN0zT}ry)@m4T@CsE}^9#K0YmE+it;SUT zPHTYw&kWwrA|Y*>{NH5oex(X<(GdNwBG)h8K7oIXT<=FhsLG^1MXnE2flsUJ{8$V8 zQwHxBkr4GZ?D8@r8;_*s--ukJBO#j~RRM+??6)#_UsS=00RTi^0K@ze3HgyK_$q_< zb5)>YMGG+;V^708WZnPyla|l%lP8Vr|2=8Hq)7bJ;o}QM!q6T0Cq*JP9|2MTVRGJ~ zS3!``hjN~uY7r;L=csbggPJ$FJfDtJ^XHb#=IJ^+J5>W&Mjc%s~qmc zG@JgJBJn9!oLACoWy^MInbt45PTo4VXbFcoFW)*jBRe(v*%I1BKEYU!8(wE!ly|1L z$hx5I3q@il0v8=CMpGmX4t}9fudc`swg-_5lhT@6t7?&nY*_ zWRP8v)tV+2G5{W2X*U@Y!=VAE_gfDx(avB<5IFC|S^Q4hhhDZmHy_l$qJ5jF$@5LV z*z>`A@g(B7$A*{))U-Wmow?2rD!6p&<2~1}_jgimhn}=QDH0Ec@cu^1 z?S$W+^ygUdk5X>ud9m+&p-5O}2&_-Y%t`;nqGM~}CO<)yIr1iiYb)b`BJtac4)l|@ zDF|ETbAtnOs^G}Vt>F! zgLghofe9G)9Y!svUj~DDd$4P(OoT`ndXcaDzmOPyHU*-C!C~~k{j}3(62q^iz;8(m zyX0^%XG4V$?e#Cg;2-XW(cqo$roi+`Ec?UZM;(9#pyl_T10tOMf5zeZU-TTjU@pcg1FYlle=mpYZ$1as4*+&(4p*wv=k?8JPC)WQEN@Die*$Lt<~dlZ zKwV zH?|Z^er5l`jqMlF^!FzKHxE|T)E}VtPOsp7M(=TxNFn?jpq+R!TtquS zWelu`oPouxP~B?8oT61JPv1 z&T4?s!hO5))}Jh;A&bf!6~Cg*-kO0uLpV`$fv<9Pcc>>w9xIBZ#0z92eXgo+AGPG{{U2yjG;p z?sC|J-(xX-wFmmaCw~YHqP=u=G0sH!YxLgB+@%2o-_keNVM(_-;&L2ZA@bARi{0O# z_rC0bzPS#oT)%RF-usTl^kon9JsRYzJdV5^Pz3ybMH(PUa`=Y%5?35I%8&uMc|YQV$T07~5;k?^rOJQ>Qy=_oZRuJ&k*iQZe-G>}RJ zoE3qD&}_34$KBly&3ivwNuI7||^gwCe_D<;O*-ya<M~G8BAI84}(YhA4ir=&2y44`9gS%!m*)n2RXd}=tn@-$yU(gJoUFt0!~Q3ynjS{{x7S{6Xr~9)OfGC`u_v8 zXHGf5CBo_1(3|G6Kc+qZO_lj4{_}yDvb$rnWqvZ&Uzr4~kFXm33jg_y%KS)s{&P>S zI1{uI0PRJtP?Phb@tk#evhbog- zHACe21L;3$bT!AM!I#U!h7YfNZ~&$N2aKq1CZK~2@Ku(5^tx?y(e*sl$KRqMKXeVf zay`!dHF{kYlRWq%dR-k98_bn}Mz3pmq#-}Ad|ZqQ576t#c)qKYrZiNi>!fukDsQ67 zXylrEH&Y%I1P;uxg#(Pc@)R64+mNWoa0n!_n zFjPPas088LP?bOb5I({k3Pa(J$euiYU)M09X2jqs-}*ySOAg?Ji!NbZ4^8qPg&Rg{6Tm9}}#d89UDBN~U$p?%M2qS$?-`;VGrA!wK36 z+tXLBPBl6O-n)!?mK8z7Fe+U^bOu%waJ(IY$0oRkTB(#txPR7Y{s$8f&IIh$?L$Yi zKYak-=)Zqy0{SV7_dEUfojdqP=yf?7@9bdNARIJ${p$&6ST;%Y+oPH2%RkD(U0Hp_ z^@jX;o_&p8|Emdzh%Tu2@PLB@&_}MRg6O{y){ zoII`jbrz{Nd#zeXU+O%-5Xf(7x7 zbb%W|@VIg=9E;g9r`C%#y-)xkZmsZiMCGdNu|j-h^*}R-NTlLLNzNu;_;9{-Xb0Xz zNg6oMy+mGDWHb^BN2WrVkKH~$GgUbtbY2#)l4&C}815}m@lqhg`Ayz9TnhUn&Gn6s zbrwPhVjklXYt{?L1W#WKeAnf6QI>{VW2QKWu`irrq_2F6)UCnIrLi)7>U+VXW43@Z zE?)3%*7=njDGII}z#<8+LnAKm8m$(yuXIkZEOr@Vqp^H|!Avd(LF}B?@k)M&Vp2ky z%m^%k{>bML(8c5cQ17$3UNI>LcTA9W*XVQF5oQIr{zL9JsJLuNv924QvIc&Qa<-y- zSu9wrf&jinZW2^(cl6rJY!k_vOpdj9=9eTOdWn8Hh${nik;!4Om{@SY^)_d)%B>nNcU9G)hp|rI*f{B{-+*CL*oHQyUy0?dN zSCRq5fdWNV!Z*$c-c>9&U52oNZ@-BZyF7h*IKmqR>QV}kO8BF;BeM4B`GAuFSd1Zj zQR8FtlYMe}*)K%MfputKlhZ?bvyXKa&*4kLPvATbj?+CflD^9P@6;NYPoeqde;c>^ zJF4<@Lgx*heymNsW(n7Jj%if7V&7cXM4mU(dZri!XI8VOI6YcqForQB&*ybSJsVI#) z&rfw0*#ZD8VHgOf^(=t0e<+Gj=L)d~0$+X=PNIhd5Z+#t!N>;$smB7yq(!RC~4S?vD%!U;)%`fY=?&#*1WkJyr~AKu_dL9FF*rlyvDFDBsti<6oh41#>f%(d3_d$J zOWC}2OCY>5)KYbh_R&_i=$*=Nm%%y4Y>kdnL<(8ns!y3^X0_$(2HTphDmpRo1@keO7 zz@6&&);y7QA}MNjBB$G6jzwv@ouNSWnk=f@i}Di50(M?CIohVtoHu~IF?VY6PTXEn z_t?3IB&scFR8U*iO4%7LP_HdIdwcmz^UnQ>@Y)hfwdV$pb{;g`sV#GP%xS#4^RVkS zS4BWrm?GKkSg(3rRl@BR3yIzFq42tze6<%ghPxAEck1fuZ@;kf*nKojRNv5}_R=wB zcXCm^zUkrZm(I<*k5`?U^XAm92n;qqmJxAoeS74pxf zJFET@?`9wo4P6}SYr%%^W~uLrN^F!mc*(#)^sgFv71SL)rgq~GJH^51X~qzP_fI17 z_vKs<7XM?@%x{)+eP(n!kT0#IQodL^XlvQbpn8ig4|qgJ_x^yDg#6v|fONzBPx;X< z_AB3%bA7iX&ot0GO9u8Q(yX@84KVF(F7=`9jXX<%wp9i;WgUOShJjUU4k$}gNl^AL zzxF0RrnsOa3rAUKl`y9LXpHA2aJ}q1a{+47LSf%!Gb|pufh+VJTDFS(&zO^|eIKZZ z6U+$(id~^;)w{hkqNIhChOY4#Glk9wnTc6@zhEQaeC%J^bt``+Q%8l_KGHc2!xl8H z18e!qa;^Yx>A;mUB~iWtbvFVXc{j!vFbVjPLq{~bFLFG*5h}1Kt4~c0NrMpCIX=;Q z^FCS%Yvg^@9+bU_0VvH=&V;FNj3JCjm5B*cOSjHxQj?VF?7 z6@-%;>+XWg?gk^xU4|T%$<18ym@*6O12vxH7wnKq6(`{Wc!Vi>1==x%VnsifbN#ul z`KGPqSL>SphC=*Ll?VLDR{6ygaOgt#O@5R`t|Owf`Rv7&SJz>C%`5c_WzDMWD?d<( z2N%L4oi?A!xh#)r047~B3OCi=UY*=B33_sJdp>3Fu}4#Be==p*zzC;G72W z*#NNkVI4$9CLkizee4S(QqQPOF$fj`*xV*S0$~%7K&sz|Gm7}HH0`}HQM!SgtCV0{ zCtFUl}{25kM%@2;}2myOD<( z^p?M@@W-ovw1F0kcJAAj)||rAPh&u1bCE@Ea~ywMUE&ye}}8K zfNBf7QuKIV2Skd|b`XFUps(r>ek`S52M#dSp~TL@-ELtb@XINKV* z`GSm_E0JNf>nt1~OpbJ-pXVf|rTF7TxK_C^C~vE8INW_b8%kKHsGvL&oxGmIsaB}` z+-x|mX+3vOAgoZ;Qu$u;#Co3S?Lu{z{(I>=XjT$okw$>>Xcp~8fudTGRzm-1p7=(g zMp)5DR?*>J>A>Tc?r)o?3Cq!}q^Z}*Z(A0>n`WNuOuTK| zx?S$|cHn%TMa}*+^R$3x8uW)*GxnEh1`=MeKh5A9ZvECYBW2GuM@xVxW;c!u+n;83 zw|ZbiRgnScX@+jQS5dtxI$`iByTo>%M);R$rj7+sJ^2Jj&t$-8f0_Xc)5mNNTB%o~ zrW)7=7kQuulhkXF4bNVbMU z?k40=&j$qn4j{tl{nbWf;Klw%L@$K;>w?dl$7F)9AKEf&F8!w)k-s@Z zd@A@nTtIY*@g2J0lb;#-Z2^&Ny$QO2h=30hwO>FK!2b77KL5Dj^S^NNF(>0Teqxsc z_a$S)w?A@JrX7!H;cm>6^i1DSGE)3hfr_>!PrO%a2^AU{JMZ5K#iFEcjJD&L;7yQF zGk{hRJ?(IO^|LU%=@}~1YuLtz3O@D5F!^$z=(O1~B}(2{6xkKbYHd_f@DZ(a?F@}0p4JYMNW)RLtA?Uqb#Z*H(G_+-y3|M*?KP4 zNZk~HMFk$7i#K=XN&;$WCCOo*q-@ViwG)!}j`$-zidBjDsoOxL)jHRr8E*qrM$t3A z&o4@5+Ktm(!mF|!+m(~FFgwP1nah~MGnfvGj9e5#g3m*D_6G?~e=BWvc+1>oz*F*d zl%Y3Nd^Xo11r)WlE7ZJ6lwvc@`smlE> z;p229;nF2Bkk#Jq&jp`!!_`v3_BT%8feyPeEdXE)s$Xa>bRqKp-*OpW3X$(c1uAdM zj~4x%LgfF#d-*@65cxlFl`A-k#rroJGJky{|IcbJhm*9bUkckK&)s62Ta*3;#A2c3 zSSelPK*t?pCurwg*ryhnzbb5_Acg(9A@dimOne+D20p)Q820=@A@Z-@OXY7|nfryv zr+2Wre^iM4vkh_@4W#ZXBp40=08oIKBDojcEa{~|bItm`f)PPfsrj2r zG&Jn@^3r@yP)@alVU{zeblCEA9y_Y!Wl#+sO}i1nF8KhZ^L+G2ed~AiO%`_EUgMJt z_$K^s;TQpC#I!={^3tRG)=dR_ph~>RRTDBQ)j$ZgHLKNr-@53YEY1hf#hE~3RsWe& zIm1{ToLrHMW|X8w(j6hfdFvez{!x%w*t0;(g7Qm6>e_ zyRuFBd1+2yFnXm!>y|G|&H13%nSqc_O9onG^Jh}l@N8mTRyJom3GPHr%_OBaSMlTh z0$z*A!WG(wW>tIbbuk*y^G!mF;&OI6z0Xq%#_)8dC~i8FWOL?>HxpW~gaeOK;+z(e zYLAXgvZp;>x_i!vcuxp;BGZrNS>uIwA+k^+CzU^jhTBMFjOr~PGRYjM|$7}{E6rs>P_m1bI*^F_&*c%?U5aN zUd48!M{|5cXtc$J6i2W0@mvE1;w>*>p|ltc<3YQ7ZC5H5&`A`cXBfEb8)#E?1qvzU*TN|-clC%{SdwskRZp;agXSDRv!PIdQn*nhw0-R;8A2z zOtzCv*pYgI9%KzkSLZ`JErH8=H6h;+PK!C8wnwdn&c3~G)VWNoyib_ z7La+n`Cn%qjiST{$nXz?)lk~w7q?4{nDKz#}e78R>a=<%H_ z688`=c18Z_{1nNfTNz9OmUqJx#r#Y$G4{9u+M z1N2HqPMW@2yokC(I@5@-_(v<9);Q(n9FHHiQA72CV46E9naqDc(&u^Enr=!I1Jwk=MFEP{C!l^K@PFZMsNAeN8)bx~j{w!cX{iTD_yQcZ= z8AnHbqN|kx^fN-`Vl2uGK@eY~1;O?$rmYv5u`F!&hUJ>Ti-b;ZB#{%|r0(~svsVfS z{GOe;>)s@xv3ITX#^!|a*@)3j_06i3RxA0%onww(&ib5=D^F4Gj}m}ujgQ{HR2+ie zTJs`lWHI&jTJX>q3CQeSHClCC6Pb0pcGVh@Rur~y#vuZe{j{guwUE2-%9zXDYG4dd z4Sdf9pXTR3+Az5T-_e5Pv7WZ47TJtg{vLW`s z6-f(!n8o~lSmXU;ZB{QG`gGEX@>2{>8;N9^dqi2JGui^OuXO--MvAGD!EwVBany~~-ENbt2&_6CY0{gTuO@-i` zqU2jL5~l$^f?H(78`Q&@$4)3-D(#`981s?dFS#Op#H=G%K*^ElYhLNADoXzLt*gVAEk-^ta0 z5&$HJ_+2X?pFDe=NyEc*#@9nM&~IK+dI-35(bL?OvPv-ETBegPbr4o&K(t;^ylYV6 zqK;l-Q0iFFLVTb%j+#>9jr2fLcLkYnTxd!!6*bI{b<@^^DKOWS)M|{lN;E`QI#?P* zKc=2%udJ7MAt0nfG_*@Ew3`}i_zLuf3{FMTLU&BeC5gag!pADkJd6BZ(T%4sAtJta*^?M^U;(Q7a z_J%@fh_CBeV^jc|PvDQ~McZ*kh)K!doFD`Dc|5-#Hoq3N=&wRfb8fMLi4Wz#l^H%; z8OF~XO_>>E3j!ToV3>7ujqeyOixHV;A4k^_Z{Z(dwS+&fm+%Z4?^;Nx*vCuKnD7o68!49n-^RDYgZyC~ zcCL{1hP7VA0whd7aUBY}PJ<)Bm6UIvWD5~D8H$M#V2KNgyd;Y2$VHHu#14#s4M?Pd&;DV6D>_atGm)*_lygP{shuUF)SsipO(7wko3H`A zZb319WXq?@ozEZJw}mii;F&Bxk9iTd`>rv;BnQ=njco zQR!2IukhDR_Y1Iv0Q&eBI6%x^StVSEa`UrH-R-3>X>rIR`CMM}*TRZ?cBr93WqY*P z<4qM2Ca#;Bz!jG(F(kRB4h2QXiaE2&U8;OdayZpO1+zpI>n>ITw|4@hj4g#|r{BdD z?c1K_Qt0R78z98KL@`WD^`xn)S~_;+OtAu}I@q5+7+JXpuMAlzH;O`IvE5*gYBcC- zwIphFiZhQJ*6O9y8Z_4$J*qX{tu>*my9zAO0j6HVlP@u&yV1>DWBr``;dot7V4Xb= zwnY=MtqNY-4w$5Fp?Y-5m9Jrgzej_|@#>z6dY0UVKnd*7O9WB74Y7ue z@g9wdDUHd^`z2TDbe4*{jXEaOr+J$4Jer0CDhryMN**;i2$W|Hz?=^sMm{QWhaV_$ zz`w4<+5TFIgT7JXgrAf+>5r8-;b$ez4E?bZm;O$PyL??Y9a9N0Gl?(XSK_f4R{Ki4 z^WUn(uXKZo@WHDp`${}xUx~Y_ep2FMsux)k^36A2i*{lPrZoFfhM9N956fsA)g+u3 z^zARH>~gM3+E`&pJ54YyFfQ^`sPYOGiMm^#B~6!h%-Z`$g0ESLt9(V&^h(SM9u{AE z@)^T-6^82Au~|=jYU@I7bOlVFw0G3uSOv4 zTqBqAyNo_7@f8MT=KO;2cAJk%9J#N=laPVW%P_AGAq#{m#{I2}W-)AeB@Kqym~NF( znkDoY%rKKMd9E6>ganiFaY&GuA+eggw314n;kwDz*B5N>;io@kuGAuVSS83Ocnezt zrs6vp0tddMwSU$6{N{q3|w;Y+T&}0o4JceROm|!Sk?KQQ15F9Kfv%^0A8DiFomNrd`Cuy zs6Aa6`|7e1?A(3S)9l#twjiy=;jj;Ynm(*vDp*j-QFiLZ^FUx#Nm+{t0-b&3nWFMvzG#PwsnZE$+sYv{ zX!oXH3BZxr$MD(HVv1)jGZvuX+!d!0)#tHsHvTXedgb>6I5%zOwJoy8vEiTK+`=a0 z7bw!W4Az462AOx_8;S{?(Dvt&7*J;~2SFmX+H@fk%`sr>ajj)g1Td41=05PA#vX^! z)j@RKv?CB);}8+Xt)0jZ6BikbvQ{r&5Bwy2h)}$)jXQCE;gMoupiT6v0g{%8++i^clm}=1yD5N3M5f6@C)y!oc zqPbJ^v?^$t9!KPKKo4#cOyNbSB5Cc_LC;Oggi4bI>CvUrf)!R+SZW2*k4-?n_!m-Z_DR&E-_NX=5Tx#C^oLMbNqXh}3% z(V1~fz2~qq_(9i7pX#%t%@vfEFX!VYNZ8!PM^092<$`v*2%g`WJ6lLDk{gg)Y(_OO z)-AqSsjtLqUhmjBqPF3VNVA;_EYg43t1DFtyCeehknIyPGd}mC#O8?E*$Pp|T14-V zoYY9lLZY+QD^+7V)8+)6zPNhS1_s`&bv|L#RZ7g3%VASH5iqV34KAw`PVYM=b=B*| z%ik}_mK)*}TXbNi&X-A7r35~4?`_er-s7X3bJAZ+#sayjk-I(SiLV=>;@fR5_tH)7 zeNU@d{vmh369a7(Ess^mN>i{QYzcWB9N4})&FsrDsScJ*=qTlcVTkY|uxqG}g-1St zjE2ly#x((PYannL1-$XhMaYi#X_&7V&R*n%-r}YP0_6eIn&7(bS(rmG+KODNP)pf`*<03#nrx19 zq*T7}kg$L`1yt~&0_k`7KldNkJ7Zlx)uhv-}kjHJNgh}pm`MvP*Wn9G`+ zDA?V)uDXzle0!JOBahNI*h;RyJQM1HzhdViH>KvMG4P0Wz3r_|j>dRBrvabtXg%60 zYOk78rdr9rrLj`FT9nv4^G@SLmmBk1kRd${@l96}MVM6>hF`;LlZGB9(CflLPn|tR zxA&`suj8BF&3}*-8?-Ew#FvGu3hya-`|JX>L)hlTh?@$zHS!2C-~Au*-ohcu{O$gq z8D@r|haS4SLqbr8?obgCkWgAw1O)`enV~zS)uB688XOR$%Rod?N=lTJj^Ci}uDh$Q zyPtTT@ALa3?)!aR*E#2PYBFzyI+fmH%_iBIDbJOAnxl^|qN=Yv*;_NP{9>=OXiMs~ z1w9NZ-N#eP2Ah73<}y%VrB4dH#i=C*8+!Bl*0yrfTt`azc;@Ze^~XE&D2lofblvGE zS=;%ZgfVK9K7r|l8w=6`S?5R^Uq9fPd@f{waMeos=;8$-J zGEa0k#)%QemOp@IM_`5)tO4aWavysaFI*)_$GmFBaKgx@*DyF7T9Th!`0_!xiSH96 ziY3c;3Wb4j_{7^|jADEhChUo={SLR0a^rk2EO_ad5ar9l{J>BW2O`lizmw0;p+_(! z0Mycb(!y4L?I0e|Aln@}|DH*(sR=2kI*r_8#S&%Tph^E$dfygtw!zLg}R3hbEc4F!ehivw>51><+{Qpuouo}pEVp_@QIcy`cUjRR@7oBsm(I=Ag% zb5FLWL~=tGChzP8QKn{PzqzR3y zAF#qRq8JrECr9*QJ;DecX$%it%7u1%MsAwWteC*w4pOg9AL{ocT9KvQtBS;L;_w(C zgG&_gMwC=^B%DE+u{4CbomjR__r9!)vK)=OXEgh%mCVF2@%V@tIi_}#i@Ef- zC6l7%-LAZ#6O{B%etVNgA|XjWIrCI<_SIy35mkP5a$zu47J?lDkB^~Yxa}%{6@Ujb zSkW!Mo;`GF=kaJd+w62@}eJ{)wqB$kZ`P;O)HQv1mE+tMqDl#9lJSCq#lZr2*dSrhSKx8zrL0ungjjvZ4P9j%)9CLH|)*>Lu&^q-J$DNsAS7qAU z+)L4`8AyO2;qEE&7xJf4lIT{e?;JdVCEdir8PibsA}S5FJ2YNt)%IzKnlxtoCcc@* z&Y0dc5^IPKj5dnrWF+&I7nn~Jo{gCbD2Qm6E6+7HIUs?0MbDSNIV=NEN@^6y+$ z*Ste{NcFx{5GIH*Exx+qynXJ)zt6Q~{;8bc91CN!c5Tco0!cwd*x0&OknwzKaiLMubWmT3rn>q|iT!=^$=9b!<82iK??Gi7Rwu=*( zA&FM<6`CK))2EbD$`PLb+zyPVV*ZGYUS)w?&3{R{*!v>4_&xY#{xNZ-q4LJ_YoGIb z?uu3t{qSWyM<5k~RLMe?L_beymvK()s4RWadd4zcluH`~AhIzLo-N$ic=O`6gR0X6i!GndO#Q|9nEoM{3=0#STB@ZWJ?%zY;l z?J3IuQrpeRx(;7JePUu&kqo!vGi44aF!wYglvu!ZPBMhpNE}0WdBKBDmb(1EtCKs@z>SGwuNE7v#c%V9?^%?w>N`W=>N7jwt0{T!) zyhj6dXq2hXt~ax*NBij)ro&3)T4|~8@Z{(GUTIj?ulc=S z+kyX_-_sq|%uM=V4V2CiD3mz1oIKc-EmMhK%Dk3SMo4phkl!0xz76379$stj_4$(D zBh>E0Fs@)>_@#`#qc7m#N*X*oSCvn@Kg4t;9nqbuF5B@f$2)#0i^n_OXTNg1pY-I_ z_XuHww;^-RXfhf6h2uTnxU%Cb$Gh>0K=#i%-aoYi2k905vXn)I7uxXYyy!4p#XH`e z)qDi?x{sm5Z-4E0FLFBBIW$nSdcQQh$k|@!<-Mui45F5LK|Frht`q#&zCOtLJcpEMQ9rep7xn^#S<3AVdAg5fA= z_z86$Fw4v|eS7_}Z96~c!jLNJE@ujWnAG`xH4gWfgYP;gzxaKpE^UoN%0-V|IXOx- zLI&i8{KOa^*Z~OQ1-MX_jW?h#kEVK}?^Iq7=d=#fwL~gMgp+c2Rl7-1TS)P&=zga# z@VEFn37h^e@%5g%>c5Jwe*+2G`{2PZNXVal{^A|}R1NZPc>eMx|J0y0`7J1P{`A*3 zNn@v(ti=C2NRaOazIL>fGvwc&d3r3tVepwr-~l=?$@GbjfhK|BC_f&WxdR?RvA#LV$S>LNnGB1E!x!5KdE`BTy za?y-^jer(eQH2iYqpX?`)WqUoR`vCbvo;>s^(mssB2_?Ug3q3p0YlYr<17o7tQJ!q z%33{6}n@_pDcR}{Su(c=wjmaIL zQXsB<<>IwTGnV;lvPwJeFY?mYu>i*78;(vU&ns2#SbZm5A4K3?qp0JI~)p zU>t|0&G974cU)wn!@Z)cG6BOBC&I{wNSP01MsSesHJ{(VNv=)bT3S4+YO{S7GsfFS zlJ+pnUpMnnU2dDYmvB@>SSB~0R=YO-CYjik$t&Cb=_dIvJ%69#>wRI_(m7h)PNskF z`CISG`RV7cJ(o+}cN7!;$H13B`!VdN=g;7)=TEMMoZGGAi8iSXhkc*J-+lg|r?VZu zUa^eu*kLY$$KMJBiGRXQ75-vyXI78yoxZo3jz^@tBEP0zvhP4WoHDevXY8uNBuRh@ z4AKAwhlTHBr_5k6H{GGCiKpV?Z{5E089S93Z~{b<{Rul&c0s88enn+f^}ikn+TPj4 z2ZD&1HUAh0O4TgG2Z9h%POtU@L6JWOZ%#~F?_;MHVE`8Gd%52(rF9za`2QDn>Wm0Q z;q+LjI37FvlPi|(K?nkc13`sLaX@7~h9n?^O{o&$S$8a&z(U;}0A)0{YJ^ZDQD|Pr z!vi?b#bfMtV26R3K_HVesu99qBHozlv-<*=#Ns*PKzNelL}T`D4OQ^X3a2-s_^nNzlUU+n{7 zpRZePVnWofi=LUcT%j8&d9eB6WkMZ=r#PmO)x@e8=LP9Q5yN%xzv?B)Ir?Tw1M{*L zZwRW4nCdvQc&jHw9QcUiqONN@IF+>g5m$-%^EyyiAD~MzLAV4!m&xqb|o z6{Lsm-x_%7TA=1J?2uOkclf)iPZOMQzlzjZx_Es&=FXXD z4k(OWHT0$%L#`2#vg(sJV@J9iG@)22+k96=1^Qa|`cU_e13|l+-&?Wv0H48| znwRrFuUKt3=+D$o`A85D|5PdMx3E*613@%oBISR;PDxx7mKzr`&rvr}?DXK=;)wV;GS`jxqUDe*>UbB2_AuLCXj<;7k z`>52{KXMr0B;ev#tSc(1M-xZe_xXVi)B^kbK>UxKHr?h;vD{F5O=96C`YYrGffuZY z@-;66JYBm|JioPvLLcQ;5x@kh(wlh$G(BVi3QR0NX@=g>zbIPkR)q^ZO7AR1D~Pp13;W!$`pl`Z8*L4%MeL_`tqpzMGZ$7>z ztjJ7MG=0+RtjGD-#fKtC%3c)Styf%J;Jnzru0NYfxV&&gnGmdE)0WgS_O2x5!TBTc zwCgf`K47YBDtBh{o69iapsZrxh4iGXf9M?e_@gLx9oj4Y}}GE%l9N z-(&c8alIoJ!95Ut{FI*{=p&GA{v_P-TMaT(w>-bGEcmGfO{d%MKAg^o`foSL{1@mD z^R!kyoAEec?|XfIFyV9H^$(#uFo%^IN)eIyUi}9tm!D23YkhoX!bPkP4Y7OwvEhT< z%a6}T$&nRx)_1x;cso_Tm$@TSC-S97un~?~tI&G?e$9t)R|MZKe%$HGXbV2;aW6tt zv}i1X{+# zz1m``SH)Xje&kG2<{pg?y*w9-O|ezNU}<(G0%^71<0$bHnZd0H#KzH20 zBWME7QX?@c9E^COfiOhynpzu-fW@H^Os;{U>9Qm|@|Kfx#om{enIj);1tiZmJf2J4 zM4-IZ#5mMv=~bIX3&N?e&KepWB29nq<0-(g85ML#att2rAiyKpe_a0>XHGhQivYAN ziwJLG!ftl?J@ykMD z@FTKD(4~p-G(X-pwW6}9Yc*V)0{0u#@Rv1BhfJ9)9Fn!5nv>W$Hsu->FZEcIii?*3!R5IW`IdWn zE=Y}A?^I&~N(Bhqtd6HDFQ7PRF12|M@XLtW!(LTTiFlk5bx?c^1h-&eCt+rTBWW1)2-|a9iqbS=8o{GT!Alih#%g{jCI<< zAxK-2-Z#Iou0GQt@T@DH;aStQn!)a3_sVb3A;QE=b2GnUU42D|c(c2?_8rz0{6jwo zESWD)DM=yBliheWexBoz6 zeEs|b0)v7>KBE_mxTE84#wXw(=#eNUDmJb6O8il zlV2X_SHrJ=%ldr-z3>k=Egl6j_Ihx6X#k2e8Q(T?b;R{(;9hEoAkBy?$3u9A`rS-% zDrMe!k_<4S!v*M@cV~%|`K2NFAwb!@h5LZy05J)t__#2H53A&_L@en%$eu6@g}F}k zbfc7nm>^ysm(-8}NUIuGykO>{es4Izrc<}DW*;zm z1&&X`54}a5NC}ee^gOH~$h53}AxFtlbw>_37g$A4WodAoWBJX*12@Yy!y|k5?U|{z zw9-%l5J8}Y0qKA*ErX~uzUcS$bR3mFja{zwp`G);iCO=FYu*vo)V#@1lH&iRV%9%I zFU&at^tHMQ{Auj*n^uiep+sx7F%Llt*9}tFVrW$1(j&enA-E2nN@pRkGETR=t298( zuT^%O^xUZfDRXYchbV>x1Jvg?V|%nT8e?;HWq+x7L({;m7$H%C;7*g)QvgC{=j#Dr zK2H{zI}~9qO++kx*B*gb>V|S?j`1*CK!+sf zSgsCfG6%_}hKpG=P1x~^UIn7~&?|54T^H!aBVvIYuL-b4tMJRw4cYH}nBaRg3@Dus zveZXQHts$1PGG+_Vvk_oCQ9mT$Qe6_ELOZjTxX#UY(8>v=i?wgO59|1aefEiig`q{ zf6TJOZ6k5%)uGLBFJ`H&*dg7++wZ;0mNr+oW_PzY#PSdC?mV%41kx1PrTijheYI)j z<`Nh#U=Uqc=(k~%6r32^ngxIHKUN$(WZhf{{M?GEDx;YDqlyEEdN6|{05FmMqgKql z|KO%|**3-XM=;7iUh^C|XY7JY&WA)(rlJ2@%(`r1p9krK*ThGD z!8d&ovkJey=6xIA^h_-<<{S8?A3o5}w1`arpb4*Am0z-czr#0u>w*4N%=#0)X{a+a zd)P^{o#rcckQ~00@c*5TQWxO65A$EMgZ|+ImerZCA6D18`#t_3CuiEd8I^4Pe-KuG z^Zz~zBb|vhHFqrJ>ssf3*^Ti{Im+JtFY6-yYjV`a?@I~K{Yt1$$@sdX)D7QJYW5c$ zrC}}5d*xP3@SpD}t!Mnl9i;|O$%#c1!_?pS{r!&8KzFqH*Y_rNJdN}u!RGhI*#i3B zY`0&?I6phiM#sedI?nzo9AxL@{xZ&%mEZk5&enJ{)qWmlH4x33k6JrA@#E}G8v0)R zIO{Gj@M7rY{y3{uKQcb?M#N@Nht7!poeG2MWBoC=g|}<#8*?~(wT0_SluPuaCkN#>efeXwPYbijo2Jpt*n<_o&rJ(&GpX+1rr8$AUWe#FmksaH&Lq zip04AeBP1|yLUxVtS(i{XiDtPC1MoOh-=VM1ClYr+{98r;cR0||1L%~UuiFq>JS#4 z3g_D?c2Dw8D+F-9bh$X*aZ9JNc(~Scd3Lz7vgCi~-+-Ed%)#m$|313nue@3RfpPY8 zU!n8=q&F*32JpS|7?LyK$?Sq}+?$lgkPX|bp@C*Vu_qPT{&F zb*=7p%HQCl=mlxwPd6YFlw056c`G<2IW-61F{f1hEi+}+L(NY)#LnOMFeOm}Jmb1? z>-3-`{%-TaN>;adkRzeH;)(i%&gxzvCa2yB#F5#-edW7oNea(zHrc${&io4Sv)wu0=w;Qs6?c{p+8bPWBP^V*011p{K#A zpOu35#K$E|J%o$SoYIp>N>MI&{wAHoThlJUZv9HuC#ArcU&R3vsN!J;HYbpzP@~2x z1^Uo^rN9`Z0wYm|r5F&OzI8G-Bfr2rtgxiC>|~ZoLb*yFrr0Z>62sWg*ksJW#B#Oi zDpT9TZe{TvJrR{Y2ZoTY{?C8zkD zs_qn62ZA)pCsR7XDVVC6fony<+kja zqWC$EXo*`-s89FRtE4h^yyS~l3JxXc2Wfj(2YgWqY+&tj#QREt$P4S?jw?3@ime`s z?g&=EUX(lF|J{w*@6Sbe`!XbU4c) z3!#!9i!8*|eFQWumDb%Cxv{%)dHjMdzuDmPI)#tLaVL1*x;lAvT_5Fz5k=Nq?_2zE zLp$PuldrOS+swN+y$^1v2JS-eu3B`i`UvAP%Rl~ebNR)g$r833Y%1$T&M`)_K={5EJRBtBRL`8Da1EgZ&cFQgsKmg_Cq|gOjZ)S3jEnS|JoXT*8&PtY{^ z(+a3%o|ttEJ$(J(ldSZ3FKT-=q|rb&sh-np0S{H_WDHS^v`}G{dj>0A;o-NyJWQU~ zIhr_Nidr^`|l|KqAw{6~J;T%2;QK}f3^9ogY@HT&s zh+CK4@dLbgvoTqdW`eId&GlARTSI@;LUZkw7KujHY!hcGdjOIl_JW&yHq3_jJW`a# zpZJnE<&(kqzGx0gVSQS1`nF5r^>l?FT5Pag+OUB`qh;QL9!JaCrC<0TYd1e#isp=5 z9SFSLXR#OnSK7K}&{d`gn2S_9f_CG{Z5Rr^XCU>~FE-LNo`s!RCY)Da51cDo@Rtei8$xN#kz(F z^FR<9S{Rr}Q;0zj6F{MTHy|41p=hYof3t(W6n zwM#~k7FPtQ9^yID6_@?(cAP$Qq)((B^cFIV1{hc44-xAV9KYvC;|~!PLPr$}&ukoj z-cr*{7I8v=YiHwDn+2MnF*DuvX#R_CJV%;_jK^Vz-Bfbr{Jq>~B#7gkL$_|1<6X5P zqHH7Rp$HtodQ6cj9~Sev!wOVDYtM6q1O{8FsDvZ}?B3*2kFBQBb9gpiIuZ5it<3oS zp7WCg*(t9^>?*N@au=>V*fJEKPy%ql_W&*#(d3*l^hsdN5=i0J>!9?t%GWK;Ht!0$ zz{4l2yAwx^H#)oa9-pM!;#rWeHjG=}UBwYw+`^gsezjDR5V)W3) z^wE#`f=Zh=R)&IO(PO8J-CIN&_^hm$&!P^NK3Wx4hiWN?JsLxVdv39A`3U!(%ZhAU zX~vlZyV!6q9}VPjERWq1cq=e}x5Lw?X(;42vLt>it%XFC1yT8Ev!8$BCa>F&w4d-T%~zvG>=l7~SvoTQP9t z6{UfCb7z=-*NVZ(ApRGv7?X}EkH55HL{!#I>CJn++mD7+4CvtC>~keWv{=S{BnCz zuD80!qi6Z{*7g*VqNeZM_EZ|v&a|dM&Etfgm28Eb8ND)?_GbSu)7!)SvSFFu+d?*yOh{lH!0h@(c`_ljHRfb)-c$7oU*%;YfwLX zvUhW!cK1`%(cWNd=;iKe6+Y_d(Yy6}Yj+Jt(eOFyxVPSBfR8$sfCI6}xvn=DZ2ErG zac^_5w_&xicjtrm-qr}kgY{N}-KCVh?P-Gto6mc9S8Mln79t;PzcK%~p}__Uy8B>v zt#@yC3vVw*pg?jcunCHeUK2t4)iH0s8qMYV>-)Z4WafXgOynN$Q#IP#$tip_+Pk^; z|H?6sTN-p#X1x;^$x}&;6}?7fnCsiAFRLdwi^K~}d&+`WjN7#!%$(^O(seJek`7SP zJD3V7N`WQ=c^M%Z#6%qFF=2rZWj56}V=;W{{`oDj13@UlyF-%E3iLqU8s!Dk^4f}d zNrZC8CW~%W>FC2CY9WiRsUa zm0C`O=bY_qP)Tk_cb_t(yTmau>l}MpGHh4RJgw^jgD(9W?)#+Anh=;J;n<2i(zjL- zor#8yb6Jy`IF)vkS$ePV^&Ip*{7qDB9m=LaCCHG4oa?)IBp1xGYX(gD1bF=gwiDj48!T# zz(9}SR9kKxmkm3Zhj4o{kH=xt;H*d+QE@dwdghsAD)SB(CFqsg)DoFJAzvz>DfRu6d4C{F+Z!TD!}#6m5+6Y!9MRL0pmi-I6uNSUPOc9} zt%<^14Q2;D@c=O(v0zCQ8@O?_fxu45Z$StJ;xSalqc429kKZA+No=Bva3SGT#Ss}f zC^2cn1GvTkI^z7wY`4XT`Cs8H9R`oE$2u(ftkDOB0nmc!rsOi17Ztw} zk-i~F(5^Jtf**xw=WmhP?F;518K<;Z_ordpLr1s>CxLqWTSaJ)ptqe?tb{Kp7%7*c zevMX1N>EA@gB6kOl%6Bzk#nc0hxt&Hxkw1tG`G2=fHa}%F(~mmH@}*eHdc)knB$BR z)G$O*hLztuB9#TD5Z5stqjJchK?$F9?6f5AMybjn`9mFbtB2P>oG` za*u)J!=TzZ(dGCT_ZY0YJX9`fOQjwx;FW$5tdGz9LYq{x)`osK1QxvjQvDXKx$29}I!^lZ9zNC=>ai8ujBcksqp2bLtg&#}13ksbgaM-^ryszUs7JCh|kO$hWG| zzGD}e3^#oJb(zTOr)spikcuzWXrJvOBK(fao!_vFc+-BaM*Ev(B0si^e5Xw0w`#Q5 z3@zeSlF9j--x~t))o6bx6Zz0k*{AA*i-!Mc2=pQ-8UB4ssyluZ_+|v)7h_82X^Wcg z7*oRV_n=tTQ=l8aGp2mGXmw67AV^F5 zxyJ8McI%;bh&u@-G0eAp+-(U{ZaPsWH%qLrix392%k zb5~Pr72+*BB?HE|rTM};^Kcy~VLz#HUkDEb20w^IKglH_<;UHOnR!-fP@;c*2&eX6pk%a7G%-{0#q>|{Uin9Jz;fdQ3H_Qt2DrFIV7HFV?04cMApml=|y z?ngbgdq5`JuhRAY{%~i&E!p7<%i)D@l&4Quj`+6jtUX3^SqP7sCWxTNgFA7faPY`8 zR8XA9hmENpG4B68EvankAs<@B_O@4^U)~jQwcaK!meLrUQ{gkz&DA4O4#mwFYaf*5nQCCb$ zl4^`)eWNAykH(a5T=M_UJ!twM9SRU2Y4o>J)*Rn4rd(&G^{shK$1Vu_tr>+L;15^; zJ^WQg_;VZOFTpXqo$+S!U9aw+=+-ud#{6Pu{IUL9`xmc9FzZXaoiTz54IafWkUsP? z|JnkX*&fS({I^%*2X2sG@&^C=+#q5*R^Mx*d~^JI{npyTc;}rzR2M-17MtVWrvHi% z+&h2-SpN53jbuytn$_8NCAhzCqr8j7y{{bEuP&H~KljPbIQ^R&M9c@#^_v@H%dvh} zW=t6ergvUwgz*(FG?B{w`PE1(W7mN`&&DnO^a8m?g#0Ns$EO8SMz9nBIwyu&ed*Hr zOWwfqZ|T2N)OJ%O-pohgzkU3K03-a!$p2?rYG3ZJBjbB*t=E6Y%lv2aM-o%UH_ab^ z_3?i)e|+jKsbYQmyX#S0)<^uvxJe%5wh?o-gkBf7!ly>L zvPfAJLzuP7fA-_w08g}|o+5A;=#Ua0X|R0(-nU9+o@Lxu1}YyX%vyM^RKRyvL%JsE z;73e=f%R}vkWpHGY5@XDnj8|}`9wr`^`>A}!V?Uif2H7~bQ&%6!+VSh(Q`H^kZxQs z_W<~6nf*yoKg9Ys$OJFDpEO+GJu?KqLgk-Z6PQ~R1FVc0b+?W@mwKuT>MmZUi!A+SEVThrPdv2Kx*+w0umbU5}Rk6Zuf+R8&C zXzwEB5TSB2Efw!7?Xgri-O9r|w3m*`wqn-up0YF25ue#p_F6EPn;Y)x}ZOLf1WPL?G9udOKm`O%D8p3o0gR1|t zRD4vv$;3)o(=R-fS=@&6ku_i}UdJ3DkYc^QamplA(z-uEZ&VJfnsj(nfR=+@sS!ex zxrT#NN*>FBXNWGH^a8XbtD&li%5ro;G%!a7@oP&o;BGW1?}p{aMP7yiVh%R;j6;nR z+_(J8oT+sWBGto~c7B4(Oac()8T-Mx9{GBTa`aU?UH4qdU)0zN&lr z7^lbVgN5vRhA$w#%pFgbr29I%_~F_C5ElL-ohOo>+kO-3jX70Rw|n%M`mHVjk1;!( zdkxFsdNUk$IuzE21S{u$z>o+xlW!3Z9p>BvKu*4GP$HzCBlVsWuCkI~0mB&U=7iZj zn}IcW?ZAdY+A&bE>iSl2bUT)GL1nQ1>Hl_@3g}Bs$i~$$?S1QRqg`Q+hD zDG_!D&%=+BMR`B33i0I3kG95)SJP7)aH~n=p2r8~IO$rI(1I7DiPN{nvhWr&$$j(3 zJ!PsVzaJTg{*zwjzndEU+an_tY%7QTIsa!c&wHM?UtNzrfq7^mEb4v(^Y9SPrbjhJ z;l0dx!K_RXL7&J3d*X*WYzuMKH=jyp=OJ{4J5VyIRON~X%$xL|jHt>o_T-#3aY$M6 ze|n~C<-p;&Cc_j#|8zlMh|vLC#9i$kl`fQJ!) zGN03Pn!TujwhxPd__ycm=-<6KL5#&~S9piBnW--HQGu2m&X!ui??Ev~aN+s)EViMi zI0ua@^Cv{k`!Bqd0+3fZFn9X-y(=9{29_(SeW0=I15a+!mD)`gUhZE%$Y)YnF*tld z-~=B5#HghBirU^oBg+bl#hSHWuSdI&%T_;C(Z1Ogbt~8PX6G}m^%ml%GU`%@L|5{)m9tz>#3zCK1U zz7j7XdT(@E;U&Zqz!8ak3Gsp;iD~NOBCP0pRkW{LQV70O(Y}TmSDH_%ekCF5yvUF5 zxu-5sG^6jm`HO_;v{ingk#+EN-pTG+w8M5b9Qx)PVD@xPZFXR@@YMBL}XpP^6w?YPqfruB*eW>5~3AF?H?pW52vzy2{FAr zzl}or)Q12~`5WO8KQAF(uLFQDH!OG8DaiQNZ&0Mvek~zdUYDJ-r+~e9vTNm9yTiCp z@J$J^cY9KS?X1i`E%i<+$Kc_0gBhIJ`r+;A<9G=X|A0T-mk``-2O)$Kk7=DB&3~Lij|2yUJXJ$vWe|2_b{g-D)ra#P%4EwX=3hkCP-B+_C zYv%s!h}xeWtDHbBp+2IYXGgNBzco8{AUMAS)&G^n(fT%o{CCP@`CC3N(Q`7y)_13J zxDSW2hH$n_Kgm5_V9{N39}%vq`%d5h-$X3D%_T!gLRE&EPSkMP{d`wtW)y?Wt1T5& zhpTX}t(7>A7Zo*~9oAW@S0^06!*0=NjPMdwJwe~o>fQHFftpIV%X|>4loZNQmw_71 zXH_uYi*^ab``YU-DG@5OBSJ2L-1#~H;b1txPZDg1^GDE$BY^{l&g_i_uv=7F2hcMj zIaugoOi;m^nQ~(QCim&)K+X_3RG4a}CMO=eZ;}xpYe$6w3OZ?WhA~&Hb4AIKr*Q?S zLLHl94R7UlG1ibI(TkiJ`_XIXDx05lL@T zkA31upvY<&A-`1x=X{su9MD)dQm(xx7&@!CY}=AeYN6tKmMGsLI#Zw#Yp1 z5tAOq0InAZsul+Fb$Y%IT|4A4(L>CRejUans_L5!5tep~$$6~xh(@@h04@uYpc zao8bh%SA$jbDQ%NC;R8wQ8$C}`C$E6+5WllEbbUeNnU*~>*RONjj433)a`BR2S1Va zXhi5%~Hg5G~sXN;KmA1TnH~PKO1CZ>S$%;_VFRfKtg}r=EoA$m(DxJ)za@l z9SiLU3Q!Ps+}-FH`ilE&s&c2;vsK5U!@07q__`U&%fifbWp^N#m9)eq)EKsL z;Y9X_FSFzKgX;L%kxv(|d4D^oZbGZb=?n*aeXEJX-)frvc&HT>LFD{)tKpUU^4>ZW z3GE+hPt$xMe8EWvzU0o;8EAq2A)%6VVd~tGpMyGa1c_IV($S}!;>2cTW@ScX&i4sljvz8xWt^~Ri*TC|tPn)Q)Z52IFVOa^jS&UrA7~xaAnflaISzs| zj4~mh8es0WNAql_iKm$u-_;O4TWDip+8t$PPYcw4D9Hs`rJ= z0;>v#1^OZD$v|27bocygHXwBbtyK1$=3TEQZ5A9mR#T6w)L1Pk=6J8(UMfnIyJm25 ziYY_Yi%MxTB=BV z*ei>TVJ>QIO6Mv|ENkJMneq#jpPfF%RL9$LTB5Yh2kBOq+iG7EJNLS)`tDRORwa~G z@9$G27Y&2->%VuX{l7(#jImbEj5Br;2o{JEpUK*H`d|dE3F13u>87>wa%0p`q`-T# zPJmOhuz2)s;wyM)PR84>n{D)5Avn&>l%4VMQT~`KPPbgGtgeD%U0{fry@hsL=n5%j^)7M=> z2x543pkFEUHsm!Fp}VIOE!BZkss?`RwTAVt-rH4fFMPAjHF8hv*GX47KoZ~`NdAuxD4wkLmDu6+1>6!E|8q*`PbXb} zUhMd{SY>}!?9hz;A5}Wf9cb&Wt(<>@^Zj3gVctE7440eC9gk34ogR-wLIozGR6mi` zc=IOy{r;HMR^^PhnSh!72lU^adyj<!$?6hk_U+|H6HC8& z%Cz6@65+A3?1w3#)OZ?UY1+d;IR41Q!Xv3?8X6nQ=Mk7rei zvzTSZ81&}2Ql*6Qt_OTfd}%7|!F$(QXHlTFj9V` zl{wQ=*(1A(+aBW@k~UQqheJK4rk@<2-@V=D`}X5hN`lzLRUe*>9YQSCs|^neO5h`V zRrGs-z*jyb#1cxrZF&jJ?ldce9Bw^CgL`-U-&_r1M^9YkXSvF8LC(*MN8egW49YC2 zVU|k^Z3oGG`#MX4uRQYCk%&Y0vmSeYEwHq12U z7M!68vq(NplI*@oPi*fstC0jcs!f-gJ{FUjwmTv~pMO276k3=!uo+fZF`&j_E=Ee} zB$hd88kuKv-El^s^{}e&k)#hmG}gC=zfe|R|6EaSx5Z1x0NF#>_m$Gs#2=Dh^*n7X zAJ2Zd*9Xl^FZfUkzDc4~u@G|VLjC%g%kw&(kA*(4KlWd_*kIT1?cWF%BXYpI0~8?z zD!MZZ%`|({7g`VrzAle`JMtV-64!!sjc6}*2=Dp2b}A!D+$7<>pN~9Jb@aVgp0VS% zDCUO756++50n)5$V(%}D9XKL#UyW^@yUeFV`W%|TN44*4@0F3@#=cWkHD$E?x=U|5 zbHUeT_>YiCEU?*{V$p(b^MlgdR!l&akkj0?8bjUE^y73u8kcoW2n`AajFP>88jCtv z?0MgYf4Ax_)T&qwkfK2@|Dyhc=;p*acLcr%vhejmP$ImY^H^(t^zHK zjme59913rfpYQt5r5O}o`;cJ9fqT~{R$9db4J6XjqM8wxElt5vQEn&yAR&zJ&xPfWAEWlya}8HT~fBMpnWt3@6eJ?!yt4@ zraD0>T$%Sv>$4g$$Gst&+q_^>-iN-$L8cL_R|F_c(SB`JOu`m2S#>NKIy8VZjbisq z6ipUSXa`o(MH5U;ONR)a|{rVDO@~&_dgz!?Q5Z zwe4V*dU4IM^)e>KSN#N;o|*wT3Dy%vZ4lxYZMUlXgAyh>O9ZR^$&MMoG8OzXSScUf z1xKP&b#0mOyxjb}rJJQj5U#UYou)&NiP@{NLqRu-jrKo3uC};_QtF$|UtzPdOY)n||Rc4cC_3c20>v z(nv>BqunRZ>O+~PL?lm9UTn%Tt+!D-ppaIsKiG$GOQ9k@R@yFUf+dL7RYTU|1UP8o zi0O-n^A+91JP%@Gb^wlCP(goE&Hg(!NWKA6^kYG+tJB`It21nMlR^wtBRXkgrUIDz z?E#zCvBiZL{Q?&@&N!kV9e#UBFJiWg+l@KuR_H7fz_YwpMr7|2-*RFddUe}q;M}*G zxn8)W6!#p5?VW8hv9&Vh30i^OZU(swcp2+K*pIWm*Wo+~V##a}Dzw37Si~_B!~JH8 z?jVKJByA;StWoFh4xT&x5GR7Ce%$G*LaHjooXl``FUMYiw~3FOlyOFurQOs}Yex-X zV5pkOx!*EtDm`x7tMAiL5KACo?Zb6TLY#A*%`3KNn!Bg(fk<8S)OOID0&% z42qCLuo$a^S=J45SS3D^>nV%y=o)9;8e}~?4!(3lcLH+u%p>jC1uqW3DP_8icEfB{ z^^5M~tlogTNAdP@VE-|vmFH)LCM9AH@meM4o`h#?gHl!d-X4gHr}i6m)qCCLuX^GD zgICO5#G5`qKu>yiV^qfN<0nawY*Jl;iai0g3!_S0WG4i~?`5b!b7*i*9kD(47{qrZ z?A_1w>qLo4?3J2>Rb$gSjz`hvwYtz6h~4d4ki4H=TL!XoqOBD(d0!Y!*LAwLrm=xl zJl9vx`OuTuo)%VyoY?NUt)`k6Uj)KKinT+{RWcQo-S01WD^NS`MjuPweqYC5{Ypa) z1sW(q_4UmUQ!20BqY=kY2C)-xEg-30ch7T#YQ6M5jDi_qF_bh`;MZfa4^D34WS=rh z07^2oqy_*OdUF6Q0o^pJ2Yw%ie4Ts@)k1cAF`R3G_)<6M@(W34OKK}Hm<{-d`hqLx zJ?6I&5pGdnc64Y$-Q*1%bdsq(@U^_0IMV`}Y1A6PaEq>uTDFq6(+-B(VI*?;C zUG>^Z^g`?{!&0ZGBn2l)4qtEG?IAlID!6bgL+Y4K31zoJ*~izcQm3A(fQ>5Ai^Z*- zP&&H}>9|81n4^j-wb+&iBdlWfbdNm;M&@(C^5PnFyDJZHTZ{V{!(QL@CpQK@-hCi2 zN~f|+E3vosa&Ol&`tUB#SoY2o@zQRBU@0HzTYHk79QvA*RFG*n6nkSk3I#-*|DZv$ z$7*zg5}~Y#rGno@oo08)w7O;n#H8H>Hh7@V9)&o(Vn&3YF7Gx0GGbqTDgcyYh<|jXt;TxVSq)QVl5e>$u1-E+yBqCsp0KXJ| z1m`349T?pKmB0+okX$)Pz&h-%s$Wyw_3E+UTiD>HX5XP>XL6%B!k;nUOAOf~FAGT) zXK|Vi^=xDz*9@Cs54naD=?Ds&?+ZJJ0@4G*CCW^XuKQF}LA!xro^4!FZM2#}(AH^c z69j_3FH|o&JVh?-grS#SG>o9ncyu~UnKDpEJYu~P^fs3wWFX)yN9Y|BD+C}a3>W@p z;TkwN7||Sb0UdEiPD>pX=_$^aZ9-98WyawWeO7{xD46`JW+XU<7_q>)7X#d#hLID+ zq$0x|t)fQyq6LYda}K75n`0yd@Z{Xsm=PcqL(~#dkoIb%ij-DAKDpDKEuga5qg~P%Kvw@on6+8NF$<;k##F4cAGEcYYCn zVIv-g0=NYR?TCuXYLJ86vjog#VAc_xx&l-`2O2kU)R{2_;mK z-a!OJ1XMam2N9%7?;s)|O%1&xAiekAdpGosC`uO*q=Nz$s`3PNucfQ6z1KeH{KoSS z_`)&xerE1@&+EGP-p|)9J}@EP;8xH!??c}V-{1stsi6DSvgAkrkQ5#rd4)`SHI|;& z*#LMpr6IvmjmBO!(dLykAN;=QWSkYyNNp?5kv=A;JS^WWX_Pgoz9Ff3GO6_n?!*10 z_6y0`eThAD;hhEgHn@(B7bphU*}bYCEW?xOHR6N>V->bM?;6Ffj3-+o;)i@;=X`vg z_2JCAc@5z3$+O=uk^`^RLr!5QmOG>ph^O^{QGE$%2MuWo3jtBaX-E5bw+nC@DS5>m zxk^{zqt{bYLFxTsZtcAB#}6H0#Qo`O#wi7+8P4=+z%?kws2GLHaP~@O2~44L&twyZ zQ}tijq*P!@%=DC#K3q=cZA46oXSo{@aOz~~d1WQ111|Mv`OsxbiDyfk=oGW%t?$9! zXYjqsR_F&OQs#U#^m@6IsUb{~b-|7}F~?v{|N5GtI2BYTpIhAwseh0oK%Zhgm0M4l zYfqKO_%YQn_&!fWy0Z?6#`7eT1007&{Yt)c=Zc(#^8kF+-1512x3!$B!X$U90{D%x zt%CA+gPDEZiKB(B9$$e|X%ktglW-SWOhi`zYfEWL6Tq*7-&+5U$t`NS; z{KU{`)xCcT$AG=0a}E&Km_5f%k|hk*6fPkFN(ZmqpPj74%T0%#CtSfuGXIWR;-*c%iB1rcEzDurJ}@(u14Iu z#-a(2R3UG6vCh-0&UUiOPq+3#lVQxqwA=J?Npkg(Ne$G%vtmUJ!x8l1>kUUJzR9Nz znbU50NsUegjrii3#fOcnne`+MWVxI-Ds^#6*GX&eo0_Ma4xM$Hn$m82H*BHV;A>5= zw))6U!nTl2cDkAm`-l3MqA z%GNlET&7zOa9g%S9=+FnbQK-{G3n7k)1%a#yGMtQYDilFp*Skkkj^4*98q{@o}{fs zaa$4e7@1B>B#MsY4I?eq>tFW;Dc&XbY*Td?pi0uGoN0R`aE8gVoh`YYL$4JnX3v>S zAbr?AUf$MEe}giN4g>}6P6IHH-;C;GRi!1w#|8lpsS)bs4wCasznyq)f)(u z&IZQX_QpEU5D0b?Z5Q5D1!fjQ{6wun+qg`)= zY#wO#B)X}{RLf=2*34h&854hDa7$I7!9$^I5bAbhrFypO>e=>7+kR~5wtZEv9uC{)a$)T(CLoo?MstrS=?^@Q5hPP-Q?=CH< zA3dH#)g!k7)wm<=?43hP!`Lk&uoQx+$r00{5qJqyZty{m?+{7K6EOV<)r%*zpPta2 zddhI|>5YcLC#WZDe87keD2qO+snpO7)KiNsz)~`t_XWYZAv`|2(~ae$OrJ)@PCb*j z_)JRwnatg1aw*Sd03z})o+*ENrfSEOL-Sl8{)_m>>4*3y1QY*AkrMo2{8P-Nd>s3W z_(vM}L;T|o`6>Rn_4nf+KhXE_Pbc2oS?2`cpJ>vun&6v|8hPpm@X9(07i z75@bK0e)c>a$5rY2`V&9U9P{nU^GwlYsUv8My~qXRw3RIARnAu?WkLytUF{>>=NI8 zhzWm;pJ^-D?OobnT%K#JCzAkWcUDb2txw{h^^m{88F9S}HI$Q5cx&xob zLs>eI3s)md)C^2JB4C3#rVc!e2Z)8S0@FD0mIIg7sT$Ke;WUk|TRjhKCr~duW8Xd= zEh>9+>JkDvxH)?H@(rldC;1f|LzKMJ?rC>vC|eo=yRlBs@#riY_#W1QY>MNg(%cQ- zp^I9_M$Y8kyYz_Zisc)AqcN-u0g}a9vw`IA=Y8o_>#t=QMGpr4PGsuOCw9{y^y%wp zDQ@NtFj4#yV9aF~Rx)g(>U1!kUMy}jwq-LN7-pQf%5vSVUu-FfH%xAsoC)gX9ry9s z?d7yICZ>+qgX>r;84eR}5PZJQAhvVC)>#W#_oe08#bcFUwdZJDN3W`2c8=DD?7YI( zr#(T@R@ZN*x`#Mg5|d`>=N{0vQk8XIVN6l=mHfA7@gzd0auNI_ zebX1A86jeZ&iqKB^uWA*1N4W9Ya$CyCPty{&YYyr z?7Ut$%Npl&GcDA==e={)unpUJ`BV`0+0QTTupdcCRGn?`zq&W)r#lIq2*K(<&*gH} zK!`awk3@V)ooVy=Yv1V4D+FjjER~2{=%0GlGsqwaxQt@p8m)CKPuz4LA&$H3_GIXM|d&K~xl@`M0K3LDv7cxI2Kc)r6ixpfi z?;wpg^pk+2AcAro1X2Jmb2tDZ*xN>6SWWB!{d$y>G^_!F7*Qf?INPUT3CJDdX>@DE13+8ulj_m zZ9F=}n7Q71J<^^UptkhLxe{+N;9*KkhNaj+;&DaMj5iO}^|j-pD`a63fV6?ssVE7X%fW*zk|IS&Qkd*W93rUKLPq3JunFqtjJkZpcOKY=GKB2K5 zznqMKLa0dR1HA@s?{f^kgj{PnVyuBMyX**1Oggwa9+DhV?sps zZH}oNTVLj;37H(mAg0p47q@atP+P=S7JjUm>1CDB#r+~~9dP2dzcZlgq+e2p{$Qi; zqo5bqtC?AC#!3d!)ze+8ZRnzziAlFnD_7S_C+8(JF4G<2wpW9`d0i@%!1-jk*0^4Z z_&D9Ui&_=``W)!2dl~J=gNHT=fh}DezHZy=EQ=d)Kg%fUDaguMnXBFAu*u2KUR7Fg zQKJSPSR1ty4ww6Hj}#dY-tPE};0%;iG!~j8r53Hp@gopb(KXQI80Ygfui<4S4y-4* zQ_>lvK=Y8sMjpCi=AY(zgui3Z7gkljeU?J;_3dmSGLcJGAy|!KeBg$@s$w$P3YwM+ z6?9ssmM}hBxcPKUH3`Km$RZ=-HG|?L?DU)Vk||MtspS2fGqtlxJu_i!76Q$=&cKnq zWJMBqVh`t~_co)&D>5dNBU1I1SyymYujn?`$+TAIo*z2thvU0_b`m<~<6cuwI(U}P z(iwU``4`08Br;xGx8V*b~NTRhB3XXjxK-oN9wmc;Ur{ouP#5 zjwcyBcmyrqFe5hv(Kvjp3Td&?Qo|scK0d2$_{6To=?1}n1SuN}Iz`P)Oa}Q`|D!2hx-P{}IMjiA90X(?qbi_IkQbkM%DI$xT?^Vi48iy(EHdlLxn!H0@@@eXO|wju|D~N~Y$= zY2fj`7j1%{g5Y6%81_K9G#+PsCA-KvtuE%>?E_af)klj`1XIUvj=j5l#7TV967G=` z!ST|K9E2x#qdwH|0~NJyDm=#`SzwH`AW%#VCc`%gd*5)1$nLml4oAh6-?e3n@uKK_ z$c`?b)C{qT0R}O3Ij;U{D%0Cm(LB7;eT9M+@^dd`mOdD}g@R}6^X|*8im1GPetFTz z(&8?=@%z09LpBn(W#9Qo@14$B?T^WLcM+F}j;0FB_pIhJU`#^`6^zHHQM3N!A-s9`I| z1`+hgBKp`Tl4G9LnjCJk(}Sn8;EqGVge|A%W6soGNAmd&$MJX_YQ#?iiRp(2D&wf$ z8wa4MG5zpBJOY3>V=w-Qx)-Y)`3w#{XD{&;RgW`lHV8qV@KJ9;3gjUZ7GAuMM+M)~ zk`IQnJY$3(+;Ix)KHx<;wO3I>QrCÐlC`)XN|V?XtyZ1Z(@ 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%0AaT2x-44Q&; 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

F{~I{T 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

rHejnG+b#zU>h{`?>N4AK8Y z-POhPU!Z4NM~&4Je9j^b)@E(cZ!OoEw{1&39zxyCPaW4Tg>ZZ=W@^3GxYyD@_S5w2 z(MVm?y1RGF_toZ+*9;8Pc7)a`SJ4p{*o@uCHI3LvJJ$-G)Xe7COx@Haz1Ld}Y2jAc zK7HBpCwlOF+H@V(S`FKsUDsD9+T;P*PCe6qZO}@M*@_*1L5jMaBc49EBfOZrXaD;!=JbR4(77G~ta7;T_%Q z^%dxm?RAgN;F%rUk?!b#zNsk9(wuJBo>=9`hi7=6;qeUSV;`9L7Lgm-J zOxAOL>ZV@LnU39|-t5sX;MTt3*uLt|Z0p$$&)!~9;LgpTzT~1^;-o(8=uYk*UFPhr z=I$@ZRn5J>|l#SEv~4+->0#@9Po|@g6_m zqi*pc-|XqG@9Tc?Y_0LFZs{>y>?Kd=o1XGf=jr)Q&GSC)jK1sA9?~wa*%j{U)1Brk z-|NrF?_WOaQz!Fo4&A&S;XHQkCf@TOKlJLJ@sz&tewNXoP3r&k&S2sW>Hz=m3{UYj zZ`=;QdR!muG2iw&zwK+^&tZM=v)$!EpZB3?^`h?gQ7`aXPt3(p>2km9V1M##KlYwh z_GXXuD&O}&zubVW@G%JU?~e1Ae&Tg+_fDVmDD5-_Ao>PSr3=0Q17I|x?=(hQ0C0Ks zR}cAp(E#wPK_;{pV44qx&=Lx=sv>aveSrcCFf!~pxfBu{2D3Kh#3owNy+?2|6wn|r zKo<6*03#r-Se7O~QV1K+0q$uaE3p0cQUDfk0_JZ4${_oiLA>7)D&k+UhVcCg!k+KK z0cAroB~Stk4kkQF3G5F9GU1R|G#-&j<&xQSKA}0Fe$9@$>cf`TPC<0R|K}kYGWB z2N5PzxR7B(hYuk}lsJ)MMT-|PX4JTmV@Ho4L537Ll4MDfCsC$Uxsqi|moH()lsS`T zO`A7y=G3{9XHTC$fd&;ilxR_-N0BB~x|C^Cr%(T(MwL31YE`ROv1Zk}m1|e8U%`eI zJCtc5U0Yap%^(n|E*D zzkvrAKAd=Q<68$DSI*Yia_7&XN0&aGdUfm9v1ix5oqKoh-@%6$Kc0Mf^XJj0SHGTp zd-w0*$Cp2!etrA*@#ojSpMQV<{{ak8zyS#?(7*!`Oi;lE8EnwO2O*45!U-w#=YR?^ z%uvG(IqcBG4?zr3#1Tm>(Zmx`Oi{%ZS!~hK#TQ|WQN|f*tkK3Bam-Q29eM20#~*(MKVTRMJT) zt<=&>G0jxdO*!q<(@#MSRn$>QE!EUhQB76VRatG-)mLGSRn}Q)t<~0Bam`iNU3u-* h*I$7RR@h;QE!Nm$kxf?FVv}>I*=3>a;=&*R06SI&!ioR@ literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 67116a3..ef2b230 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ "pretty" ], "main": "prod/index.js", - "bin": { - "beast": "./prod/index.js" + "scripts": { + "start": "node ./prod/index.js" }, "licenses": [ { From 3bd7655fe03c895c79810b936c67d803d860c10a Mon Sep 17 00:00:00 2001 From: Dominik Wilkowski Date: Mon, 17 Oct 2016 10:20:03 +1100 Subject: [PATCH 9/9] added the quit command into docs Signed-off-by: Dominik Wilkowski --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19d5fea..8e1efff 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ![The beast game](https://raw.githubusercontent.com/dominikwilkowski/beast.js/master/assets/play.gif) > BEAST.js is an homage to the 1984 ASCII game "[BEAST](https://en.wikipedia.org/wiki/Beast_(video_game))" from Dan Baker, Alan Brown, Mark Hamilton and -> Derrick Shadel written in node +> Derrick Shadel written in node. # Beast.js @@ -42,7 +42,7 @@ npm start ## How to play -The goal is to squash all beasts in each level. To squash a beast between two or more blocks. +The goal is to squash all beasts in each level. To squash a beast between two or more blocks. Press `q` to quit. ## Contributing

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