From 98f8d7e647384c1a14b64a1afa6eb965abe7eed5 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Fri, 4 Oct 2019 14:29:09 -0500 Subject: [PATCH 01/14] Initial high-scores setup --- exercises/high-scores/README.md | 26 ++++++++++++++++++++++++++ exercises/high-scores/build.gradle | 18 ++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 exercises/high-scores/README.md create mode 100644 exercises/high-scores/build.gradle diff --git a/exercises/high-scores/README.md b/exercises/high-scores/README.md new file mode 100644 index 000000000..a0bbda9b0 --- /dev/null +++ b/exercises/high-scores/README.md @@ -0,0 +1,26 @@ +# High Scores +Manage a game player's High Score list. + +Your task is to build a high-score component of the classic Frogger game, one of the highest selling and addictive games of all time, and a classic of the arcade era. Your task is to write methods that return the highest score from the list, the last added score and the three highest scores. + +In this exercise, you're going to use and manipulate lists. Java lists are very versatile, and you'll find yourself using them again and again in problems both simple and complex. + +## Running the tests +To run the tests, run the appropriate command below (why they are different): + +```sh +gradle test +``` + +## Submitting Exercises +Note that, when trying to submit an exercise, make sure the solution is in the $EXERCISM_WORKSPACE/java/high-scores directory. + +You can find your Exercism workspace by running exercism debug and looking for the line that starts with Workspace. + +For more detailed information about running tests, code style and linting, please see Running the Tests. + +## Source +Tribute to the eighties' arcade game Frogger + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have completed the exercise. \ No newline at end of file diff --git a/exercises/high-scores/build.gradle b/exercises/high-scores/build.gradle new file mode 100644 index 000000000..019e5f323 --- /dev/null +++ b/exercises/high-scores/build.gradle @@ -0,0 +1,18 @@ +apply plugin: "java" +apply plugin: "eclipse" +apply plugin: "idea" + +repositories { + mavenCentral() +} + +dependencies { + testCompile "junit:junit:4.12" +} + +test { + testLogging { + exceptionFormat = 'full' + events = ["passed", "failed", "skipped"] + } +} From d120944ef7c34c20c6240b53e1e2cc3da84b127d Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Sun, 6 Oct 2019 20:25:09 -0500 Subject: [PATCH 02/14] Create HighScoresTest class and barebones HighScores class --- exercises/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55189 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + exercises/gradlew | 172 ++++++++++++++++++ exercises/gradlew.bat | 84 +++++++++ exercises/high-scores/README.md | 2 +- .../high-scores/src/main/java/HighScores.java | 26 +++ .../src/test/java/HighScoresTest.java | 63 +++++++ exercises/settings.gradle | 1 + 8 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 exercises/gradle/wrapper/gradle-wrapper.jar create mode 100644 exercises/gradle/wrapper/gradle-wrapper.properties create mode 100755 exercises/gradlew create mode 100644 exercises/gradlew.bat create mode 100644 exercises/high-scores/src/main/java/HighScores.java create mode 100644 exercises/high-scores/src/test/java/HighScoresTest.java diff --git a/exercises/gradle/wrapper/gradle-wrapper.jar b/exercises/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..ffac027099077d7fb9cf76d0901574e4c4dfc014 GIT binary patch literal 55189 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ⅅ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 literal 0 HcmV?d00001 diff --git a/exercises/gradle/wrapper/gradle-wrapper.properties b/exercises/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..44e7c4d1d --- /dev/null +++ b/exercises/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/exercises/gradlew b/exercises/gradlew new file mode 100755 index 000000000..af6708ff2 --- /dev/null +++ b/exercises/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/exercises/gradlew.bat b/exercises/gradlew.bat new file mode 100644 index 000000000..6d57edc70 --- /dev/null +++ b/exercises/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/exercises/high-scores/README.md b/exercises/high-scores/README.md index a0bbda9b0..6f08931ee 100644 --- a/exercises/high-scores/README.md +++ b/exercises/high-scores/README.md @@ -6,7 +6,7 @@ Your task is to build a high-score component of the classic Frogger game, one of In this exercise, you're going to use and manipulate lists. Java lists are very versatile, and you'll find yourself using them again and again in problems both simple and complex. ## Running the tests -To run the tests, run the appropriate command below (why they are different): +To run the tests, run the appropriate command below: ```sh gradle test diff --git a/exercises/high-scores/src/main/java/HighScores.java b/exercises/high-scores/src/main/java/HighScores.java new file mode 100644 index 000000000..7071fa50b --- /dev/null +++ b/exercises/high-scores/src/main/java/HighScores.java @@ -0,0 +1,26 @@ +import sun.reflect.generics.reflectiveObjects.NotImplementedException; + +import java.lang.reflect.Array; +import java.util.List; + +public class HighScores { + public HighScores(int[] highScores) { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + public int[] scores() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + public int latest() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + public int personalBest() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + public int[] personalTopThree() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } +} diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java new file mode 100644 index 000000000..a199aefdf --- /dev/null +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -0,0 +1,63 @@ +import org.junit.Ignore; +import org.junit.Test; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +public class HighScoresTest { + + @Test + public void shouldDisplayListOfHighScores() { + HighScores highScores = new HighScores(new int[] { 30, 50, 20, 70 }); + assertArrayEquals(new int[] { 30, 50, 20, 70 }, highScores.scores()); + } + + @Test + @Ignore("Remove to run test") + public void shouldDisplayLatestAddedScore() { + HighScores highScores = new HighScores(new int[]{ 100, 0, 90, 30 }); + assertEquals(30, highScores.latest()); + } + + @Test + @Ignore("Remove to run test") + public void shouldDisplayPersonalBest() { + HighScores highScores = new HighScores(new int[] { 40, 100, 70 }); + assertEquals(100, highScores.personalBest()); + } + + @Test + @Ignore("Remove to run test") + public void shouldReturnTopThreePersonalBestFromListOfScores() { + HighScores highScores = new HighScores(new int[] { 10, 30, 90, 30, 100, 20, 10, 0, 30, 40, 40, 70, 70 }); + assertEquals(new int[] { 100, 90, 70 }, highScores.personalTopThree()); + } + + @Test + @Ignore("Remove to run test") + public void shouldReturnTopThreeSortedHighestToLowest() { + HighScores highScores = new HighScores(new int[] { 20, 10, 30 }); + assertEquals(new int[] { 30, 20, 10 }, highScores.personalTopThree()); + } + + @Test + @Ignore("Remove to run test") + public void shouldReturnPersonalTopWhenThereIsATie() { + HighScores highScores = new HighScores(new int[] { 40, 20, 40, 30 }); + assertEquals(new int[] { 40, 40, 30 }, highScores.personalTopThree()); + } + + @Test + @Ignore("Remove to run test") + public void shouldReturnPersonalTopWhenThereIsLessThanThreeScores() { + HighScores highScores = new HighScores(new int[] { 30, 70 }); + assertEquals(new int[] { 70, 30 }, highScores.personalTopThree()); + } + + @Test + @Ignore("Remove to run test") + public void shouldReturnPersonalTopWhenThereIsOnlyOneScore() { + HighScores highScores = new HighScores(new int[] {40}); + assertEquals(new int[] {40}, highScores.personalTopThree()); + } +} diff --git a/exercises/settings.gradle b/exercises/settings.gradle index 0440c2bf4..86c6b04ba 100644 --- a/exercises/settings.gradle +++ b/exercises/settings.gradle @@ -41,6 +41,7 @@ include 'grep' include 'hamming' include 'hexadecimal' include 'hello-world' +include 'high-scores' include 'house' include 'isbn-verifier' include 'isogram' From e99c2adf0eb6f0132f4fbd9edff2d57a273692d5 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Mon, 7 Oct 2019 12:25:46 -0500 Subject: [PATCH 03/14] HighScores returns array of supplied high scores --- .../.meta/src/reference/java/HighScores.java | 22 +++++++++++++++++++ .../high-scores/src/main/java/HighScores.java | 15 +++++-------- 2 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 exercises/high-scores/.meta/src/reference/java/HighScores.java diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java new file mode 100644 index 000000000..d8a069068 --- /dev/null +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -0,0 +1,22 @@ +class HighScores { + private final int[] highScores; + public HighScores(int[] highScores) { + this.highScores = highScores; + } + + int[] scores() { + return highScores; + } + + int latest() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + int personalBest() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } + + int[] personalTopThree() { + throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + } +} diff --git a/exercises/high-scores/src/main/java/HighScores.java b/exercises/high-scores/src/main/java/HighScores.java index 7071fa50b..be72588eb 100644 --- a/exercises/high-scores/src/main/java/HighScores.java +++ b/exercises/high-scores/src/main/java/HighScores.java @@ -1,26 +1,21 @@ -import sun.reflect.generics.reflectiveObjects.NotImplementedException; - -import java.lang.reflect.Array; -import java.util.List; - -public class HighScores { +class HighScores { public HighScores(int[] highScores) { throw new UnsupportedOperationException("Delete this statement and write your own implementation."); } - public int[] scores() { + int[] scores() { throw new UnsupportedOperationException("Delete this statement and write your own implementation."); } - public int latest() { + int latest() { throw new UnsupportedOperationException("Delete this statement and write your own implementation."); } - public int personalBest() { + int personalBest() { throw new UnsupportedOperationException("Delete this statement and write your own implementation."); } - public int[] personalTopThree() { + int[] personalTopThree() { throw new UnsupportedOperationException("Delete this statement and write your own implementation."); } } From c2aa4a29988bbfb59ab26055b74ac93ef43c64db Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Mon, 7 Oct 2019 12:35:33 -0500 Subject: [PATCH 04/14] HighScores latest function now returns the last submitted score in the supplied array of high scores --- .../high-scores/.meta/src/reference/java/HighScores.java | 4 +++- exercises/high-scores/src/test/java/HighScoresTest.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index d8a069068..59718ac12 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -1,3 +1,5 @@ +import java.util.Arrays; + class HighScores { private final int[] highScores; public HighScores(int[] highScores) { @@ -9,7 +11,7 @@ int[] scores() { } int latest() { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + return highScores[highScores.length - 1]; } int personalBest() { diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java index a199aefdf..ade535b61 100644 --- a/exercises/high-scores/src/test/java/HighScoresTest.java +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -13,7 +13,7 @@ public void shouldDisplayListOfHighScores() { } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldDisplayLatestAddedScore() { HighScores highScores = new HighScores(new int[]{ 100, 0, 90, 30 }); assertEquals(30, highScores.latest()); From ab5e5ec2b276a688a6c3bb050a0e848c5ae5c583 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 11:36:29 -0500 Subject: [PATCH 05/14] HighScores personalBest returns the highest score in the supplied collection of high scores --- .../high-scores/.meta/src/reference/java/HighScores.java | 4 +++- exercises/high-scores/src/test/java/HighScoresTest.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index 59718ac12..8dd064be5 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -1,4 +1,5 @@ import java.util.Arrays; +import java.util.OptionalInt; class HighScores { private final int[] highScores; @@ -15,7 +16,8 @@ int latest() { } int personalBest() { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + OptionalInt personalBest = Arrays.stream(highScores).max(); + return personalBest.orElse(0); } int[] personalTopThree() { diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java index ade535b61..42f1656d3 100644 --- a/exercises/high-scores/src/test/java/HighScoresTest.java +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -20,7 +20,7 @@ public void shouldDisplayLatestAddedScore() { } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldDisplayPersonalBest() { HighScores highScores = new HighScores(new int[] { 40, 100, 70 }); assertEquals(100, highScores.personalBest()); From 683bda017e3ef85619029964c564b7669bedf085 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 12:00:45 -0500 Subject: [PATCH 06/14] HighScores personalTopThree returns the top 3 high scores from a given list of high scores --- .../.meta/src/reference/java/HighScores.java | 12 +++++++++--- .../high-scores/src/test/java/HighScoresTest.java | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index 8dd064be5..c11ba8002 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -1,8 +1,12 @@ import java.util.Arrays; +import java.util.Collections; import java.util.OptionalInt; +import static java.util.Arrays.copyOf; +import static java.util.Arrays.sort; + class HighScores { - private final int[] highScores; + private int[] highScores; public HighScores(int[] highScores) { this.highScores = highScores; } @@ -20,7 +24,9 @@ int personalBest() { return personalBest.orElse(0); } - int[] personalTopThree() { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + Integer[] personalTopThree() { + Integer[] highestScores = Arrays.stream(highScores).boxed().toArray(Integer[]::new); + sort(highestScores, Collections.reverseOrder()); + return copyOf(highestScores, 3); } } diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java index 42f1656d3..640d29be7 100644 --- a/exercises/high-scores/src/test/java/HighScoresTest.java +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -27,10 +27,10 @@ public void shouldDisplayPersonalBest() { } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldReturnTopThreePersonalBestFromListOfScores() { HighScores highScores = new HighScores(new int[] { 10, 30, 90, 30, 100, 20, 10, 0, 30, 40, 40, 70, 70 }); - assertEquals(new int[] { 100, 90, 70 }, highScores.personalTopThree()); + assertArrayEquals(new Integer[] { 100, 90, 70 }, highScores.personalTopThree()); } @Test From dafcfe0368f760e4a2764417e10873bf53bff072 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 12:04:57 -0500 Subject: [PATCH 07/14] HighScoresTest is fully passing when run against reference implementation --- .../.meta/src/reference/java/HighScores.java | 2 +- .../src/test/java/HighScoresTest.java | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index c11ba8002..4741edfb6 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -27,6 +27,6 @@ int personalBest() { Integer[] personalTopThree() { Integer[] highestScores = Arrays.stream(highScores).boxed().toArray(Integer[]::new); sort(highestScores, Collections.reverseOrder()); - return copyOf(highestScores, 3); + return copyOf(highestScores, (Math.min(highScores.length, 3))); } } diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java index 640d29be7..41b047c09 100644 --- a/exercises/high-scores/src/test/java/HighScoresTest.java +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -1,4 +1,3 @@ -import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.assertArrayEquals; @@ -34,30 +33,30 @@ public void shouldReturnTopThreePersonalBestFromListOfScores() { } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldReturnTopThreeSortedHighestToLowest() { HighScores highScores = new HighScores(new int[] { 20, 10, 30 }); - assertEquals(new int[] { 30, 20, 10 }, highScores.personalTopThree()); + assertArrayEquals(new Integer[] { 30, 20, 10 }, highScores.personalTopThree()); } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsATie() { HighScores highScores = new HighScores(new int[] { 40, 20, 40, 30 }); - assertEquals(new int[] { 40, 40, 30 }, highScores.personalTopThree()); + assertArrayEquals(new Integer[] { 40, 40, 30 }, highScores.personalTopThree()); } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsLessThanThreeScores() { HighScores highScores = new HighScores(new int[] { 30, 70 }); - assertEquals(new int[] { 70, 30 }, highScores.personalTopThree()); + assertArrayEquals(new Integer[] { 70, 30 }, highScores.personalTopThree()); } @Test - @Ignore("Remove to run test") +// @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsOnlyOneScore() { HighScores highScores = new HighScores(new int[] {40}); - assertEquals(new int[] {40}, highScores.personalTopThree()); + assertArrayEquals(new Integer[] {40}, highScores.personalTopThree()); } } From e0c847de151451c250942eb2f1c18370439b5e58 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 12:07:36 -0500 Subject: [PATCH 08/14] Set Ignore annotations on tests and minor cleanup --- .../.meta/src/reference/java/HighScores.java | 2 +- .../high-scores/src/test/java/HighScoresTest.java | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index 4741edfb6..5f0af1d81 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -27,6 +27,6 @@ int personalBest() { Integer[] personalTopThree() { Integer[] highestScores = Arrays.stream(highScores).boxed().toArray(Integer[]::new); sort(highestScores, Collections.reverseOrder()); - return copyOf(highestScores, (Math.min(highScores.length, 3))); + return copyOf(highestScores, Math.min(highScores.length, 3)); } } diff --git a/exercises/high-scores/src/test/java/HighScoresTest.java b/exercises/high-scores/src/test/java/HighScoresTest.java index 41b047c09..be3be521f 100644 --- a/exercises/high-scores/src/test/java/HighScoresTest.java +++ b/exercises/high-scores/src/test/java/HighScoresTest.java @@ -1,3 +1,4 @@ +import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.assertArrayEquals; @@ -12,49 +13,49 @@ public void shouldDisplayListOfHighScores() { } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldDisplayLatestAddedScore() { HighScores highScores = new HighScores(new int[]{ 100, 0, 90, 30 }); assertEquals(30, highScores.latest()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldDisplayPersonalBest() { HighScores highScores = new HighScores(new int[] { 40, 100, 70 }); assertEquals(100, highScores.personalBest()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldReturnTopThreePersonalBestFromListOfScores() { HighScores highScores = new HighScores(new int[] { 10, 30, 90, 30, 100, 20, 10, 0, 30, 40, 40, 70, 70 }); assertArrayEquals(new Integer[] { 100, 90, 70 }, highScores.personalTopThree()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldReturnTopThreeSortedHighestToLowest() { HighScores highScores = new HighScores(new int[] { 20, 10, 30 }); assertArrayEquals(new Integer[] { 30, 20, 10 }, highScores.personalTopThree()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsATie() { HighScores highScores = new HighScores(new int[] { 40, 20, 40, 30 }); assertArrayEquals(new Integer[] { 40, 40, 30 }, highScores.personalTopThree()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsLessThanThreeScores() { HighScores highScores = new HighScores(new int[] { 30, 70 }); assertArrayEquals(new Integer[] { 70, 30 }, highScores.personalTopThree()); } @Test -// @Ignore("Remove to run test") + @Ignore("Remove to run test") public void shouldReturnPersonalTopWhenThereIsOnlyOneScore() { HighScores highScores = new HighScores(new int[] {40}); assertArrayEquals(new Integer[] {40}, highScores.personalTopThree()); From b6e28f0080fb1790265521f8667ee33896fa9c03 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 12:18:25 -0500 Subject: [PATCH 09/14] Updated README --- exercises/high-scores/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/exercises/high-scores/README.md b/exercises/high-scores/README.md index 6f08931ee..b053fd569 100644 --- a/exercises/high-scores/README.md +++ b/exercises/high-scores/README.md @@ -3,21 +3,27 @@ Manage a game player's High Score list. Your task is to build a high-score component of the classic Frogger game, one of the highest selling and addictive games of all time, and a classic of the arcade era. Your task is to write methods that return the highest score from the list, the last added score and the three highest scores. -In this exercise, you're going to use and manipulate lists. Java lists are very versatile, and you'll find yourself using them again and again in problems both simple and complex. +In this exercise, you're going to use and manipulate primitive and complex arrays. Java arrays are very versatile, and you'll find yourself using them again and again in problems both simple and complex. ## Running the tests -To run the tests, run the appropriate command below: +To run the tests, run the appropriate command below in your terminal: ```sh gradle test ``` +- Use gradlew.bat if you're on Windows + +In the test suites all tests but the first have been skipped. + +Once you get a test passing, you can enable the next one by removing the @Ignore("Remove to run test") annotation. + ## Submitting Exercises Note that, when trying to submit an exercise, make sure the solution is in the $EXERCISM_WORKSPACE/java/high-scores directory. You can find your Exercism workspace by running exercism debug and looking for the line that starts with Workspace. -For more detailed information about running tests, code style and linting, please see Running the Tests. +For more detailed information about running tests, please see Running the Tests. ## Source Tribute to the eighties' arcade game Frogger From 2914b722abe0d75e7677b10e996e5006b1b22c64 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Tue, 8 Oct 2019 13:44:29 -0500 Subject: [PATCH 10/14] Updated config.json --- config.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/config.json b/config.json index 57cdb2737..10e70e2ec 100644 --- a/config.json +++ b/config.json @@ -28,6 +28,20 @@ "strings" ] }, + { + "slug": "high-scores", + "uuid": "574d6323-5ff5-4019-9ebe-0067daafba13", + "core": true, + "unlocked_by": null, + "difficulty": 1, + "topics": [ + "classes", + "arrays", + "conditionals", + "loops", + "integers" + ] + }, { "slug": "reverse-string", "uuid": "2c8afeed-480e-41f3-ad58-590fa8f88029", From 4da466db171b74ebd79138f2d3280824456c22f1 Mon Sep 17 00:00:00 2001 From: jeffreymartin Date: Wed, 16 Oct 2019 14:55:18 -0500 Subject: [PATCH 11/14] removed unnecessary gradle binaries and scripts from exercises folder --- exercises/gradle/wrapper/gradle-wrapper.jar | Bin 55189 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - exercises/gradlew | 172 ------------------ exercises/gradlew.bat | 84 --------- 4 files changed, 261 deletions(-) delete mode 100644 exercises/gradle/wrapper/gradle-wrapper.jar delete mode 100644 exercises/gradle/wrapper/gradle-wrapper.properties delete mode 100755 exercises/gradlew delete mode 100644 exercises/gradlew.bat diff --git a/exercises/gradle/wrapper/gradle-wrapper.jar b/exercises/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index ffac027099077d7fb9cf76d0901574e4c4dfc014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55189 zcmafaW0WS*vSoFbZQHhO+s0S6%`V%vZQJa!ZQHKus_B{g-pt%P_q|ywBQt-*Stldc z$+IJ3?^KWm27v+sf`9-50uuadKtMnL*BJ;1^6ynvR7H?hQcjE>7)art9Bu0Pcm@7C z@c%WG|JzYkP)<@zR9S^iR_sA`azaL$mTnGKnwDyMa;8yL_0^>Ba^)phg0L5rOPTbm7g*YIRLg-2^{qe^`rb!2KqS zk~5wEJtTdD?)3+}=eby3x6%i)sb+m??NHC^u=tcG8p$TzB<;FL(WrZGV&cDQb?O0GMe6PBV=V z?tTO*5_HTW$xea!nkc~Cnx#cL_rrUGWPRa6l+A{aiMY=<0@8y5OC#UcGeE#I>nWh}`#M#kIn-$A;q@u-p71b#hcSItS!IPw?>8 zvzb|?@Ahb22L(O4#2Sre&l9H(@TGT>#Py)D&eW-LNb!=S;I`ZQ{w;MaHW z#to!~TVLgho_Pm%zq@o{K3Xq?I|MVuVSl^QHnT~sHlrVxgsqD-+YD?Nz9@HA<;x2AQjxP)r6Femg+LJ-*)k%EZ}TTRw->5xOY z9#zKJqjZgC47@AFdk1$W+KhTQJKn7e>A&?@-YOy!v_(}GyV@9G#I?bsuto4JEp;5|N{orxi_?vTI4UF0HYcA( zKyGZ4<7Fk?&LZMQb6k10N%E*$gr#T&HsY4SPQ?yerqRz5c?5P$@6dlD6UQwZJ*Je9 z7n-@7!(OVdU-mg@5$D+R%gt82Lt%&n6Yr4=|q>XT%&^z_D*f*ug8N6w$`woqeS-+#RAOfSY&Rz z?1qYa5xi(7eTCrzCFJfCxc%j{J}6#)3^*VRKF;w+`|1n;Xaojr2DI{!<3CaP`#tXs z*`pBQ5k@JLKuCmovFDqh_`Q;+^@t_;SDm29 zCNSdWXbV?9;D4VcoV`FZ9Ggrr$i<&#Dx3W=8>bSQIU_%vf)#(M2Kd3=rN@^d=QAtC zI-iQ;;GMk|&A++W5#hK28W(YqN%?!yuW8(|Cf`@FOW5QbX|`97fxmV;uXvPCqxBD zJ9iI37iV)5TW1R+fV16y;6}2tt~|0J3U4E=wQh@sx{c_eu)t=4Yoz|%Vp<#)Qlh1V z0@C2ZtlT>5gdB6W)_bhXtcZS)`9A!uIOa`K04$5>3&8An+i9BD&GvZZ=7#^r=BN=k za+=Go;qr(M)B~KYAz|<^O3LJON}$Q6Yuqn8qu~+UkUKK~&iM%pB!BO49L+?AL7N7o z(OpM(C-EY753=G=WwJHE`h*lNLMNP^c^bBk@5MyP5{v7x>GNWH>QSgTe5 z!*GPkQ(lcbEs~)4ovCu!Zt&$${9$u(<4@9%@{U<-ksAqB?6F`bQ;o-mvjr)Jn7F&j$@`il1Mf+-HdBs<-`1FahTxmPMMI)@OtI&^mtijW6zGZ67O$UOv1Jj z;a3gmw~t|LjPkW3!EZ=)lLUhFzvO;Yvj9g`8hm%6u`;cuek_b-c$wS_0M4-N<@3l|88 z@V{Sd|M;4+H6guqMm4|v=C6B7mlpP(+It%0E;W`dxMOf9!jYwWj3*MRk`KpS_jx4c z=hrKBkFK;gq@;wUV2eqE3R$M+iUc+UD0iEl#-rECK+XmH9hLKrC={j@uF=f3UiceB zU5l$FF7#RKjx+6!JHMG5-!@zI-eG=a-!Bs^AFKqN_M26%cIIcSs61R$yuq@5a3c3& z4%zLs!g}+C5%`ja?F`?5-og0lv-;(^e<`r~p$x%&*89_Aye1N)9LNVk?9BwY$Y$$F^!JQAjBJvywXAesj7lTZ)rXuxv(FFNZVknJha99lN=^h`J2> zl5=~(tKwvHHvh|9-41@OV`c;Ws--PE%{7d2sLNbDp;A6_Ka6epzOSFdqb zBa0m3j~bT*q1lslHsHqaHIP%DF&-XMpCRL(v;MV#*>mB^&)a=HfLI7efblG z(@hzN`|n+oH9;qBklb=d^S0joHCsArnR1-h{*dIUThik>ot^!6YCNjg;J_i3h6Rl0ji)* zo(tQ~>xB!rUJ(nZjCA^%X;)H{@>uhR5|xBDA=d21p@iJ!cH?+%U|VSh2S4@gv`^)^ zNKD6YlVo$%b4W^}Rw>P1YJ|fTb$_(7C;hH+ z1XAMPb6*p^h8)e5nNPKfeAO}Ik+ZN_`NrADeeJOq4Ak;sD~ zTe77no{Ztdox56Xi4UE6S7wRVxJzWxKj;B%v7|FZ3cV9MdfFp7lWCi+W{}UqekdpH zdO#eoOuB3Fu!DU`ErfeoZWJbWtRXUeBzi zBTF-AI7yMC^ntG+8%mn(I6Dw}3xK8v#Ly{3w3_E?J4(Q5JBq~I>u3!CNp~Ekk&YH` z#383VO4O42NNtcGkr*K<+wYZ>@|sP?`AQcs5oqX@-EIqgK@Pmp5~p6O6qy4ml~N{D z{=jQ7k(9!CM3N3Vt|u@%ssTw~r~Z(}QvlROAkQQ?r8OQ3F0D$aGLh zny+uGnH5muJ<67Z=8uilKvGuANrg@s3Vu_lU2ajb?rIhuOd^E@l!Kl0hYIxOP1B~Q zggUmXbh$bKL~YQ#!4fos9UUVG#}HN$lIkM<1OkU@r>$7DYYe37cXYwfK@vrHwm;pg zbh(hEU|8{*d$q7LUm+x&`S@VbW*&p-sWrplWnRM|I{P;I;%U`WmYUCeJhYc|>5?&& zj}@n}w~Oo=l}iwvi7K6)osqa;M8>fRe}>^;bLBrgA;r^ZGgY@IC^ioRmnE&H4)UV5 zO{7egQ7sBAdoqGsso5q4R(4$4Tjm&&C|7Huz&5B0wXoJzZzNc5Bt)=SOI|H}+fbit z-PiF5(NHSy>4HPMrNc@SuEMDuKYMQ--G+qeUPqO_9mOsg%1EHpqoX^yNd~~kbo`cH zlV0iAkBFTn;rVb>EK^V6?T~t~3vm;csx+lUh_%ROFPy0(omy7+_wYjN!VRDtwDu^h4n|xpAMsLepm% zggvs;v8+isCW`>BckRz1MQ=l>K6k^DdT`~sDXTWQ<~+JtY;I~I>8XsAq3yXgxe>`O zZdF*{9@Z|YtS$QrVaB!8&`&^W->_O&-JXn1n&~}o3Z7FL1QE5R*W2W@=u|w~7%EeC1aRfGtJWxImfY-D3t!!nBkWM> zafu>^Lz-ONgT6ExjV4WhN!v~u{lt2-QBN&UxwnvdH|I%LS|J-D;o>@@sA62@&yew0 z)58~JSZP!(lX;da!3`d)D1+;K9!lyNlkF|n(UduR-%g>#{`pvrD^ClddhJyfL7C-(x+J+9&7EsC~^O`&}V%)Ut8^O_7YAXPDpzv8ir4 zl`d)(;imc6r16k_d^)PJZ+QPxxVJS5e^4wX9D=V2zH&wW0-p&OJe=}rX`*->XT=;_qI&)=WHkYnZx6bLoUh_)n-A}SF_ z9z7agNTM5W6}}ui=&Qs@pO5$zHsOWIbd_&%j^Ok5PJ3yUWQw*i4*iKO)_er2CDUME ztt+{Egod~W-fn^aLe)aBz)MOc_?i-stTj}~iFk7u^-gGSbU;Iem06SDP=AEw9SzuF zeZ|hKCG3MV(z_PJg0(JbqTRf4T{NUt%kz&}4S`)0I%}ZrG!jgW2GwP=WTtkWS?DOs znI9LY!dK+1_H0h+i-_~URb^M;4&AMrEO_UlDV8o?E>^3x%ZJyh$JuDMrtYL8|G3If zPf2_Qb_W+V?$#O; zydKFv*%O;Y@o_T_UAYuaqx1isMKZ^32JtgeceA$0Z@Ck0;lHbS%N5)zzAW9iz; z8tTKeK7&qw!8XVz-+pz>z-BeIzr*#r0nB^cntjQ9@Y-N0=e&ZK72vlzX>f3RT@i7@ z=z`m7jNk!9%^xD0ug%ptZnM>F;Qu$rlwo}vRGBIymPL)L|x}nan3uFUw(&N z24gdkcb7!Q56{0<+zu zEtc5WzG2xf%1<@vo$ZsuOK{v9gx^0`gw>@h>ZMLy*h+6ueoie{D#}}` zK2@6Xxq(uZaLFC%M!2}FX}ab%GQ8A0QJ?&!vaI8Gv=vMhd);6kGguDmtuOElru()) zuRk&Z{?Vp!G~F<1#s&6io1`poBqpRHyM^p;7!+L??_DzJ8s9mYFMQ0^%_3ft7g{PD zZd}8E4EV}D!>F?bzcX=2hHR_P`Xy6?FOK)mCj)Ym4s2hh z0OlOdQa@I;^-3bhB6mpw*X5=0kJv8?#XP~9){G-+0ST@1Roz1qi8PhIXp1D$XNqVG zMl>WxwT+K`SdO1RCt4FWTNy3!i?N>*-lbnn#OxFJrswgD7HjuKpWh*o@QvgF&j+CT z{55~ZsUeR1aB}lv#s_7~+9dCix!5(KR#c?K?e2B%P$fvrsZxy@GP#R#jwL{y#Ld$} z7sF>QT6m|}?V;msb?Nlohj7a5W_D$y+4O6eI;Zt$jVGymlzLKscqer9#+p2$0It&u zWY!dCeM6^B^Z;ddEmhi?8`scl=Lhi7W%2|pT6X6^%-=q90DS(hQ-%c+E*ywPvmoF(KqDoW4!*gmQIklm zk#!GLqv|cs(JRF3G?=AYY19{w@~`G3pa z@xR9S-Hquh*&5Yas*VI};(%9%PADn`kzm zeWMJVW=>>wap*9|R7n#!&&J>gq04>DTCMtj{P^d12|2wXTEKvSf?$AvnE!peqV7i4 zE>0G%CSn%WCW1yre?yi9*aFP{GvZ|R4JT}M%x_%Hztz2qw?&28l&qW<6?c6ym{f$d z5YCF+k#yEbjCN|AGi~-NcCG8MCF1!MXBFL{#7q z)HO+WW173?kuI}^Xat;Q^gb4Hi0RGyB}%|~j8>`6X4CPo+|okMbKy9PHkr58V4bX6<&ERU)QlF8%%huUz&f+dwTN|tk+C&&o@Q1RtG`}6&6;ncQuAcfHoxd5AgD7`s zXynq41Y`zRSiOY@*;&1%1z>oNcWTV|)sjLg1X8ijg1Y zbIGL0X*Sd}EXSQ2BXCKbJmlckY(@EWn~Ut2lYeuw1wg?hhj@K?XB@V_ZP`fyL~Yd3n3SyHU-RwMBr6t-QWE5TinN9VD4XVPU; zonIIR!&pGqrLQK)=#kj40Im%V@ij0&Dh0*s!lnTw+D`Dt-xmk-jmpJv$1-E-vfYL4 zqKr#}Gm}~GPE+&$PI@4ag@=M}NYi7Y&HW82Q`@Y=W&PE31D110@yy(1vddLt`P%N^ z>Yz195A%tnt~tvsSR2{m!~7HUc@x<&`lGX1nYeQUE(%sphTi>JsVqSw8xql*Ys@9B z>RIOH*rFi*C`ohwXjyeRBDt8p)-u{O+KWP;$4gg||%*u{$~yEj+Al zE(hAQRQ1k7MkCq9s4^N3ep*$h^L%2Vq?f?{+cicpS8lo)$Cb69b98au+m2J_e7nYwID0@`M9XIo1H~|eZFc8Hl!qly612ADCVpU zY8^*RTMX(CgehD{9v|^9vZ6Rab`VeZ2m*gOR)Mw~73QEBiktViBhR!_&3l$|be|d6 zupC`{g89Y|V3uxl2!6CM(RNpdtynaiJ~*DqSTq9Mh`ohZnb%^3G{k;6%n18$4nAqR zjPOrP#-^Y9;iw{J@XH9=g5J+yEVh|e=4UeY<^65`%gWtdQ=-aqSgtywM(1nKXh`R4 zzPP&7r)kv_uC7X9n=h=!Zrf<>X=B5f<9~Q>h#jYRD#CT7D~@6@RGNyO-#0iq0uHV1 zPJr2O4d_xLmg2^TmG7|dpfJ?GGa`0|YE+`2Rata9!?$j#e9KfGYuLL(*^z z!SxFA`$qm)q-YKh)WRJZ@S+-sD_1E$V?;(?^+F3tVcK6 z2fE=8hV*2mgiAbefU^uvcM?&+Y&E}vG=Iz!%jBF7iv){lyC`)*yyS~D8k+Mx|N3bm zI~L~Z$=W9&`x)JnO;8c>3LSDw!fzN#X3qi|0`sXY4?cz{*#xz!kvZ9bO=K3XbN z5KrgN=&(JbXH{Wsu9EdmQ-W`i!JWEmfI;yVTT^a-8Ch#D8xf2dtyi?7p z%#)W3n*a#ndFpd{qN|+9Jz++AJQO#-Y7Z6%*%oyEP5zs}d&kKIr`FVEY z;S}@d?UU=tCdw~EJ{b}=9x}S2iv!!8<$?d7VKDA8h{oeD#S-$DV)-vPdGY@x08n)@ zag?yLF_E#evvRTj4^CcrLvBL=fft&@HOhZ6Ng4`8ijt&h2y}fOTC~7GfJi4vpomA5 zOcOM)o_I9BKz}I`q)fu+Qnfy*W`|mY%LO>eF^a z;$)?T4F-(X#Q-m}!-k8L_rNPf`Mr<9IWu)f&dvt=EL+ESYmCvErd@8B9hd)afc(ZL94S z?rp#h&{7Ah5IJftK4VjATklo7@hm?8BX*~oBiz)jyc9FuRw!-V;Uo>p!CWpLaIQyt zAs5WN)1CCeux-qiGdmbIk8LR`gM+Qg=&Ve}w?zA6+sTL)abU=-cvU`3E?p5$Hpkxw znu0N659qR=IKnde*AEz_7z2pdi_Bh-sb3b=PdGO1Pdf_q2;+*Cx9YN7p_>rl``knY zRn%aVkcv1(W;`Mtp_DNOIECtgq%ufk-mu_<+Fu3Q17Tq4Rr(oeq)Yqk_CHA7LR@7@ zIZIDxxhS&=F2IQfusQ+Nsr%*zFK7S4g!U0y@3H^Yln|i;0a5+?RPG;ZSp6Tul>ezM z`40+516&719qT)mW|ArDSENle5hE2e8qY+zfeZoy12u&xoMgcP)4=&P-1Ib*-bAy` zlT?>w&B|ei-rCXO;sxo7*G;!)_p#%PAM-?m$JP(R%x1Hfas@KeaG%LO?R=lmkXc_MKZW}3f%KZ*rAN?HYvbu2L$ zRt_uv7~-IejlD1x;_AhwGXjB94Q=%+PbxuYzta*jw?S&%|qb=(JfJ?&6P=R7X zV%HP_!@-zO*zS}46g=J}#AMJ}rtWBr21e6hOn&tEmaM%hALH7nlm2@LP4rZ>2 zebe5aH@k!e?ij4Zwak#30|}>;`bquDQK*xmR=zc6vj0yuyC6+U=LusGnO3ZKFRpen z#pwzh!<+WBVp-!$MAc<0i~I%fW=8IO6K}bJ<-Scq>e+)951R~HKB?Mx2H}pxPHE@} zvqpq5j81_jtb_WneAvp<5kgdPKm|u2BdQx9%EzcCN&U{l+kbkhmV<1}yCTDv%&K^> zg;KCjwh*R1f_`6`si$h6`jyIKT7rTv5#k~x$mUyIw)_>Vr)D4fwIs@}{FSX|5GB1l z4vv;@oS@>Bu7~{KgUa_8eg#Lk6IDT2IY$41$*06{>>V;Bwa(-@N;ex4;D`(QK*b}{ z{#4$Hmt)FLqERgKz=3zXiV<{YX6V)lvYBr3V>N6ajeI~~hGR5Oe>W9r@sg)Na(a4- zxm%|1OKPN6^%JaD^^O~HbLSu=f`1px>RawOxLr+1b2^28U*2#h*W^=lSpSY4(@*^l z{!@9RSLG8Me&RJYLi|?$c!B0fP=4xAM4rerxX{xy{&i6=AqXueQAIBqO+pmuxy8Ib z4X^}r!NN3-upC6B#lt7&x0J;)nb9O~xjJMemm$_fHuP{DgtlU3xiW0UesTzS30L+U zQzDI3p&3dpONhd5I8-fGk^}@unluzu%nJ$9pzoO~Kk!>dLxw@M)M9?pNH1CQhvA`z zV;uacUtnBTdvT`M$1cm9`JrT3BMW!MNVBy%?@ZX%;(%(vqQAz<7I!hlDe|J3cn9=} zF7B;V4xE{Ss76s$W~%*$JviK?w8^vqCp#_G^jN0j>~Xq#Zru26e#l3H^{GCLEXI#n z?n~F-Lv#hU(bZS`EI9(xGV*jT=8R?CaK)t8oHc9XJ;UPY0Hz$XWt#QyLBaaz5+}xM zXk(!L_*PTt7gwWH*HLWC$h3Ho!SQ-(I||nn_iEC{WT3S{3V{8IN6tZ1C+DiFM{xlI zeMMk{o5;I6UvaC)@WKp9D+o?2Vd@4)Ue-nYci()hCCsKR`VD;hr9=vA!cgGL%3k^b(jADGyPi2TKr(JNh8mzlIR>n(F_hgiV(3@Ds(tjbNM7GoZ;T|3 zWzs8S`5PrA!9){jBJuX4y`f<4;>9*&NY=2Sq2Bp`M2(fox7ZhIDe!BaQUb@P(ub9D zlP8!p(AN&CwW!V&>H?yPFMJ)d5x#HKfwx;nS{Rr@oHqpktOg)%F+%1#tsPtq7zI$r zBo-Kflhq-=7_eW9B2OQv=@?|y0CKN77)N;z@tcg;heyW{wlpJ1t`Ap!O0`Xz{YHqO zI1${8Hag^r!kA<2_~bYtM=<1YzQ#GGP+q?3T7zYbIjN6Ee^V^b&9en$8FI*NIFg9G zPG$OXjT0Ku?%L7fat8Mqbl1`azf1ltmKTa(HH$Dqlav|rU{zP;Tbnk-XkGFQ6d+gi z-PXh?_kEJl+K98&OrmzgPIijB4!Pozbxd0H1;Usy!;V>Yn6&pu*zW8aYx`SC!$*ti zSn+G9p=~w6V(fZZHc>m|PPfjK6IN4(o=IFu?pC?+`UZAUTw!e`052{P=8vqT^(VeG z=psASIhCv28Y(;7;TuYAe>}BPk5Qg=8$?wZj9lj>h2kwEfF_CpK=+O6Rq9pLn4W)# zeXCKCpi~jsfqw7Taa0;!B5_C;B}e56W1s8@p*)SPzA;Fd$Slsn^=!_&!mRHV*Lmt| zBGIDPuR>CgS4%cQ4wKdEyO&Z>2aHmja;Pz+n|7(#l%^2ZLCix%>@_mbnyPEbyrHaz z>j^4SIv;ZXF-Ftzz>*t4wyq)ng8%0d;(Z_ExZ-cxwei=8{(br-`JYO(f23Wae_MqE z3@{Mlf^%M5G1SIN&en1*| zH~ANY1h3&WNsBy$G9{T=`kcxI#-X|>zLX2r*^-FUF+m0{k)n#GTG_mhG&fJfLj~K& zU~~6othMlvMm9<*SUD2?RD+R17|Z4mgR$L*R3;nBbo&Vm@39&3xIg;^aSxHS>}gwR zmzs?h8oPnNVgET&dx5^7APYx6Vv6eou07Zveyd+^V6_LzI$>ic+pxD_8s~ zC<}ucul>UH<@$KM zT4oI=62M%7qQO{}re-jTFqo9Z;rJKD5!X5$iwUsh*+kcHVhID08MB5cQD4TBWB(rI zuWc%CA}}v|iH=9gQ?D$1#Gu!y3o~p7416n54&Hif`U-cV?VrUMJyEqo_NC4#{puzU zzXEE@UppeeRlS9W*^N$zS`SBBi<@tT+<%3l@KhOy^%MWB9(A#*J~DQ;+MK*$rxo6f zcx3$3mcx{tly!q(p2DQrxcih|)0do_ZY77pyHGE#Q(0k*t!HUmmMcYFq%l$-o6%lS zDb49W-E?rQ#Hl``C3YTEdGZjFi3R<>t)+NAda(r~f1cT5jY}s7-2^&Kvo&2DLTPYP zhVVo-HLwo*vl83mtQ9)PR#VBg)FN}+*8c-p8j`LnNUU*Olm1O1Qqe62D#$CF#?HrM zy(zkX|1oF}Z=T#3XMLWDrm(|m+{1&BMxHY7X@hM_+cV$5-t!8HT(dJi6m9{ja53Yw z3f^`yb6Q;(e|#JQIz~B*=!-GbQ4nNL-NL z@^NWF_#w-Cox@h62;r^;Y`NX8cs?l^LU;5IWE~yvU8TqIHij!X8ydbLlT0gwmzS9} z@5BccG?vO;rvCs$mse1*ANi-cYE6Iauz$Fbn3#|ToAt5v7IlYnt6RMQEYLldva{~s zvr>1L##zmeoYgvIXJ#>bbuCVuEv2ZvZ8I~PQUN3wjP0UC)!U+wn|&`V*8?)` zMSCuvnuGec>QL+i1nCPGDAm@XSMIo?A9~C?g2&G8aNKjWd2pDX{qZ?04+2 zeyLw}iEd4vkCAWwa$ zbrHlEf3hfN7^1g~aW^XwldSmx1v~1z(s=1az4-wl} z`mM+G95*N*&1EP#u3}*KwNrPIgw8Kpp((rdEOO;bT1;6ea~>>sK+?!;{hpJ3rR<6UJb`O8P4@{XGgV%63_fs%cG8L zk9Fszbdo4tS$g0IWP1>t@0)E%-&9yj%Q!fiL2vcuL;90fPm}M==<>}Q)&sp@STFCY z^p!RzmN+uXGdtPJj1Y-khNyCb6Y$Vs>eZyW zPaOV=HY_T@FwAlleZCFYl@5X<<7%5DoO(7S%Lbl55?{2vIr_;SXBCbPZ(up;pC6Wx={AZL?shYOuFxLx1*>62;2rP}g`UT5+BHg(ju z&7n5QSvSyXbioB9CJTB#x;pexicV|9oaOpiJ9VK6EvKhl4^Vsa(p6cIi$*Zr0UxQ z;$MPOZnNae2Duuce~7|2MCfhNg*hZ9{+8H3?ts9C8#xGaM&sN;2lriYkn9W>&Gry! z3b(Xx1x*FhQkD-~V+s~KBfr4M_#0{`=Yrh90yj}Ph~)Nx;1Y^8<418tu!$1<3?T*~ z7Dl0P3Uok-7w0MPFQexNG1P5;y~E8zEvE49>$(f|XWtkW2Mj`udPn)pb%} zrA%wRFp*xvDgC767w!9`0vx1=q!)w!G+9(-w&p*a@WXg{?T&%;qaVcHo>7ca%KX$B z^7|KBPo<2;kM{2mRnF8vKm`9qGV%|I{y!pKm8B(q^2V;;x2r!1VJ^Zz8bWa)!-7a8 zSRf@dqEPlsj!7}oNvFFAA)75})vTJUwQ03hD$I*j6_5xbtd_JkE2`IJD_fQ;a$EkO z{fQ{~e%PKgPJsD&PyEvDmg+Qf&p*-qu!#;1k2r_(H72{^(Z)htgh@F?VIgK#_&eS- z$~(qInec>)XIkv@+{o6^DJLpAb>!d}l1DK^(l%#OdD9tKK6#|_R?-%0V!`<9Hj z3w3chDwG*SFte@>Iqwq`J4M&{aHXzyigT620+Vf$X?3RFfeTcvx_e+(&Q*z)t>c0e zpZH$1Z3X%{^_vylHVOWT6tno=l&$3 z9^eQ@TwU#%WMQaFvaYp_we%_2-9=o{+ck zF{cKJCOjpW&qKQquyp2BXCAP920dcrZ}T1@piukx_NY;%2W>@Wca%=Ch~x5Oj58Hv z;D-_ALOZBF(Mqbcqjd}P3iDbek#Dwzu`WRs`;hRIr*n0PV7vT+%Io(t}8KZ zpp?uc2eW!v28ipep0XNDPZt7H2HJ6oey|J3z!ng#1H~x_k%35P+Cp%mqXJ~cV0xdd z^4m5^K_dQ^Sg?$P`))ccV=O>C{Ds(C2WxX$LMC5vy=*44pP&)X5DOPYfqE${)hDg< z3hcG%U%HZ39=`#Ko4Uctg&@PQLf>?0^D|4J(_1*TFMOMB!Vv1_mnOq$BzXQdOGqgy zOp#LBZ!c>bPjY1NTXksZmbAl0A^Y&(%a3W-k>bE&>K?px5Cm%AT2E<&)Y?O*?d80d zgI5l~&Mve;iXm88Q+Fw7{+`PtN4G7~mJWR^z7XmYQ>uoiV!{tL)hp|= zS(M)813PM`d<501>{NqaPo6BZ^T{KBaqEVH(2^Vjeq zgeMeMpd*1tE@@);hGjuoVzF>Cj;5dNNwh40CnU+0DSKb~GEMb_# zT8Z&gz%SkHq6!;_6dQFYE`+b`v4NT7&@P>cA1Z1xmXy<2htaDhm@XXMp!g($ zw(7iFoH2}WR`UjqjaqOQ$ecNt@c|K1H1kyBArTTjLp%-M`4nzOhkfE#}dOpcd;b#suq8cPJ&bf5`6Tq>ND(l zib{VrPZ>{KuaIg}Y$W>A+nrvMg+l4)-@2jpAQ5h(Tii%Ni^-UPVg{<1KGU2EIUNGaXcEkOedJOusFT9X3%Pz$R+-+W+LlRaY-a$5r?4V zbPzgQl22IPG+N*iBRDH%l{Zh$fv9$RN1sU@Hp3m=M}{rX%y#;4(x1KR2yCO7Pzo>rw(67E{^{yUR`91nX^&MxY@FwmJJbyPAoWZ9Z zcBS$r)&ogYBn{DOtD~tIVJUiq|1foX^*F~O4hlLp-g;Y2wKLLM=?(r3GDqsPmUo*? zwKMEi*%f)C_@?(&&hk>;m07F$X7&i?DEK|jdRK=CaaNu-)pX>n3}@%byPKVkpLzBq z{+Py&!`MZ^4@-;iY`I4#6G@aWMv{^2VTH7|WF^u?3vsB|jU3LgdX$}=v7#EHRN(im zI(3q-eU$s~r=S#EWqa_2!G?b~ z<&brq1vvUTJH380=gcNntZw%7UT8tLAr-W49;9y^=>TDaTC|cKA<(gah#2M|l~j)w zY8goo28gj$n&zcNgqX1Qn6=<8?R0`FVO)g4&QtJAbW3G#D)uNeac-7cH5W#6i!%BH z=}9}-f+FrtEkkrQ?nkoMQ1o-9_b+&=&C2^h!&mWFga#MCrm85hW;)1pDt;-uvQG^D zntSB?XA*0%TIhtWDS!KcI}kp3LT>!(Nlc(lQN?k^bS8Q^GGMfo}^|%7s;#r+pybl@?KA++|FJ zr%se9(B|g*ERQU96az%@4gYrxRRxaM2*b}jNsG|0dQi;Rw{0WM0E>rko!{QYAJJKY z)|sX0N$!8d9E|kND~v|f>3YE|uiAnqbkMn)hu$if4kUkzKqoNoh8v|S>VY1EKmgO} zR$0UU2o)4i4yc1inx3}brso+sio{)gfbLaEgLahj8(_Z#4R-v) zglqwI%`dsY+589a8$Mu7#7_%kN*ekHupQ#48DIN^uhDxblDg3R1yXMr^NmkR z7J_NWCY~fhg}h!_aXJ#?wsZF$q`JH>JWQ9`jbZzOBpS`}-A$Vgkq7+|=lPx9H7QZG z8i8guMN+yc4*H*ANr$Q-3I{FQ-^;8ezWS2b8rERp9TMOLBxiG9J*g5=?h)mIm3#CGi4JSq1ohFrcrxx@`**K5%T}qbaCGldV!t zVeM)!U3vbf5FOy;(h08JnhSGxm)8Kqxr9PsMeWi=b8b|m_&^@#A3lL;bVKTBx+0v8 zLZeWAxJ~N27lsOT2b|qyp$(CqzqgW@tyy?CgwOe~^i;ZH zlL``i4r!>i#EGBNxV_P@KpYFQLz4Bdq{#zA&sc)*@7Mxsh9u%e6Ke`?5Yz1jkTdND zR8!u_yw_$weBOU}24(&^Bm|(dSJ(v(cBct}87a^X(v>nVLIr%%D8r|&)mi+iBc;B;x;rKq zd8*X`r?SZsTNCPQqoFOrUz8nZO?225Z#z(B!4mEp#ZJBzwd7jW1!`sg*?hPMJ$o`T zR?KrN6OZA1H{9pA;p0cSSu;@6->8aJm1rrO-yDJ7)lxuk#npUk7WNER1Wwnpy%u zF=t6iHzWU(L&=vVSSc^&D_eYP3TM?HN!Tgq$SYC;pSIPWW;zeNm7Pgub#yZ@7WPw#f#Kl)W4%B>)+8%gpfoH1qZ;kZ*RqfXYeGXJ_ zk>2otbp+1By`x^1V!>6k5v8NAK@T;89$`hE0{Pc@Q$KhG0jOoKk--Qx!vS~lAiypV zCIJ&6B@24`!TxhJ4_QS*S5;;Pk#!f(qIR7*(c3dN*POKtQe)QvR{O2@QsM%ujEAWEm) z+PM=G9hSR>gQ`Bv2(k}RAv2+$7qq(mU`fQ+&}*i%-RtSUAha>70?G!>?w%F(b4k!$ zvm;E!)2`I?etmSUFW7WflJ@8Nx`m_vE2HF#)_BiD#FaNT|IY@!uUbd4v$wTglIbIX zblRy5=wp)VQzsn0_;KdM%g<8@>#;E?vypTf=F?3f@SSdZ;XpX~J@l1;p#}_veWHp>@Iq_T z@^7|h;EivPYv1&u0~l9(a~>dV9Uw10QqB6Dzu1G~-l{*7IktljpK<_L8m0|7VV_!S zRiE{u97(%R-<8oYJ{molUd>vlGaE-C|^<`hppdDz<7OS13$#J zZ+)(*rZIDSt^Q$}CRk0?pqT5PN5TT`Ya{q(BUg#&nAsg6apPMhLTno!SRq1e60fl6GvpnwDD4N> z9B=RrufY8+g3_`@PRg+(+gs2(bd;5#{uTZk96CWz#{=&h9+!{_m60xJxC%r&gd_N! z>h5UzVX%_7@CUeAA1XFg_AF%(uS&^1WD*VPS^jcC!M2v@RHZML;e(H-=(4(3O&bX- zI6>usJOS+?W&^S&DL{l|>51ZvCXUKlH2XKJPXnHjs*oMkNM#ZDLx!oaM5(%^)5XaP zk6&+P16sA>vyFe9v`Cp5qnbE#r#ltR5E+O3!WnKn`56Grs2;sqr3r# zp@Zp<^q`5iq8OqOlJ`pIuyK@3zPz&iJ0Jcc`hDQ1bqos2;}O|$i#}e@ua*x5VCSx zJAp}+?Hz++tm9dh3Fvm_bO6mQo38al#>^O0g)Lh^&l82+&x)*<n7^Sw-AJo9tEzZDwyJ7L^i7|BGqHu+ea6(&7jKpBq>~V z8CJxurD)WZ{5D0?s|KMi=e7A^JVNM6sdwg@1Eg_+Bw=9j&=+KO1PG|y(mP1@5~x>d z=@c{EWU_jTSjiJl)d(>`qEJ;@iOBm}alq8;OK;p(1AdH$)I9qHNmxxUArdzBW0t+Qeyl)m3?D09770g z)hzXEOy>2_{?o%2B%k%z4d23!pZcoxyW1Ik{|m7Q1>fm4`wsRrl)~h z_=Z*zYL+EG@DV1{6@5@(Ndu!Q$l_6Qlfoz@79q)Kmsf~J7t1)tl#`MD<;1&CAA zH8;i+oBm89dTTDl{aH`cmTPTt@^K-%*sV+t4X9q0Z{A~vEEa!&rRRr=0Rbz4NFCJr zLg2u=0QK@w9XGE=6(-JgeP}G#WG|R&tfHRA3a9*zh5wNTBAD;@YYGx%#E4{C#Wlfo z%-JuW9=FA_T6mR2-Vugk1uGZvJbFvVVWT@QOWz$;?u6+CbyQsbK$>O1APk|xgnh_8 zc)s@Mw7#0^wP6qTtyNq2G_K*Y9u+g7vkB*H(lN@&R1hAhZQ&#u`M_0 zo5FwBIl+@$+Cl#$F=&2josj<@LgBA-k|Y%~AdV^;4^RqQ9e*&|fT9tI(a%&#yNnLS z!oLR5!Kz@f+^uOhvw)|G;)d*25G@)8XG9g7>_sI{nOG;ZtZiB#5BfG?W5DHNOuJkq zy^7#|*;)K@!QtZeIL`NRJHYoPvwxEW*PbpE$OD41NRnth6q}+i6hyWPu8ykAjVA!c zv0N)c9ke~970ur-v)oD6TNGXi8NH2y?wONDQ1hT z8@t^U{>i=~7{DM2-Imh#R8Q<8?p5udS`>b63%3cpmO<)58-UUGypqR+{bjcn z*~ajc$)>1zaZGD@LBz%J%1Yte2C{9~@`?@(GwMSxO|9HVD?lOa(>LN)X6; z&95YCAKQH?)v-MPzpJ`JbT2SifxBe8m%Vx?1e^S-E_m=d zFgOONB7{BLvFbr*@r0x^T@%i_aT7p0Flx+ev4rhS%gNU*hn1KZoIPxg%C~q06XzYK zikj*5D8j(zUAVJ|ZOk|t@iWbnzrP&YJ7ClN3D3KF8{sM6Up8eP!m4m!Tx-QXGE@FJ zfiluS^Qfa}OD$lG=BV^?B8hHrjq%}inM;B4u%4-Wt8YQQglU#KIV)9_n#AB`(lMn+ z_o^+JtHiV=|Aa*#ThayM{!6ZefujjVvy`Ho%LK}HC$a9~cJND1Q z0TN8-7EifgPMx=tS@;*HRd{bmvsu|ps>6mM){cFoN;}$CMPdeLqwER~UzGK@wHIy+ zK_5Em@bEh7y6l@JqieUpuj{n+$}%g3LTR^AyW%HqA}X-fUB4XWYz1hs>c^fUoU2p( z0iqP(9^iWr4~De3^O*!WFe(Jyq?fz<0RsV3Azv=~#VE~wBJ+kbO&I8{eZOL475PpK zfjrD*TBgY%sIldu?8~A#b*aI5VfKw+7Tn{T*6$x-MYI9<5T#46Q*V#`Xx_wj}3Qc=T2AN;EURWW?DlFEEr8S!68DhSvr$~))X$qb8)kPF3?m|}~4-dX!tUNW6ZKCjA z)N@m@d0-a5Fbl<}`@wjD5v<^!z;G*fzd7CQ-eKM`iGQ%TF9~Gl-R1tQ{D~ca&mD$l z05%;|ye2v0+8QWTKUxSr(uJg)3xns~{^Y2Wg9Wu_$jqrGutOGzQk`$cg(cHg4&RD1 zo!gFCWnidTcbKBg(r<5Xaq88cvNM+PE%Z~pkV1S%qR2c*q~Nl3J%M#6VQ2wagkG%e zscRekn6*f2B=M5G8g+H*<8KOLfj;A>J)d(_o}aTQjQ>8fD!F}*Oj~^pP=D&9I+__d zi0fN_imU#Y#Ob;cjxy?pc6<#HE!`9d+zfgI-8P^y{D)#qGDO%7nE>T|KD~YhZQy## za^jBaoA+75uC&+HcsJHy+H*WS^CvR?QLs|`enAdLTF{8V@wn#TeYob}bGVW5_Oi+M z4t7P{36q1O0FLr?ju87d=7u~YmaiN(@GGUOlI%wON}|6RH~`uh)RccNhJ&M%uD=8I z`pXYm@h7f(wLV22`kippQTwA^?CwosKPA@BK zZ|7)YPNa6h-MMsUA(&!T09G_tlRh~K2;6RRniI>c`rHhMcFu#pKK4YaFU4Fv#UR8_ut^DL}M-+MV0NJstVXnW44N_bmHpW7UPbK%u!@=~DW% zpTRdXU?&lwbSmV_WwflZ%gyx*UKhXc#0v5wXDi2mIw2z{I_yhB0m)3uYc2U?3s~C+ z3bFDvWxgX$er+vrEUXkJ0H3>KExucKzm}wW6nDRZXbMM9`QS3wuf^c$4-08?byQV_ z#9@iQr_E8J8hCQYnX_^Y;7+M$n6Klg-_T7r%iVcRI0u3|Czn-P3#B+newD3)Xe+EX zolT4(+X48|@FCE$S0zS^V}@XTy)(IIA+5Q)5MtrAAB!FSh1* zx`F0E17)adQlo2=_mCq+BYbDIEl;#30NL+b$Qxa_t=3%ca3F>WtLdTKkgER;ES-L| ze}45Ne%~d1K}OvID+E&B5121^IVnKA=P5bVfPUR8WT@Asi1dArE9v`#?Kh;(&i3}J zX?d<+Fh*%eyL^hvH2+=hL9ZJNvxpM@IOwD8p0^La zn9CF~BcLWg#gD5+x==>159jW{uA-GE=I|n?i{*G|_bHU&DE|RP}6VZQ`>b&>^p?|6X8S~5V03ifTx+{J6}wG;^6im6z+foORJ?b(+SJlIw@gaiFL=A zU1~j&A_@_Q6sE7tBwd|*Mw-uWj#t6CYE1jE%stf+ss=>XA#CC!!VB8Q)w2-}ch5-g zAYC4YTKM>pA);vSSLsv648*=i_83)(ckx;}aNWQa@JEl~4@4PgQ39q$)ox5>aNeL% zXz*$t-;a3z=jf0UCEIHPX>Pru#r0%egJ3(=_E&=cNtZ6;DMhIH1W5QkyN&=;b0k_$2=NI>ro4Q?Jb3jHp3x3aR>4O}^ z>+y>Oh(WnZZ*!-CGs_Kelhv1W$3skFVt$JzaFxwRVYf=@mOl^mIY_qnw(zh3u>e@V zXT4a3ty7STXqPFEW^JZ={B_t(6d>qQ<~{UT_}@=3fu5H;Aj{-Yo*BYB%`+{g8lZBd7~a$?melk@q8UnQ*U&2<^#vbhAyD3rp{#SEKr2t&Qp?o`3H?dPvHjhF=!%y&tD zAPn`Fe7Vy=(ul-yV)Ln#KK>{Z4)&8+vPGZ0eIdW9j_>(U#eFs<7WE25f3CRV*uL$- z5X=S-LDe^A`HI@WC>v;Z<3ULvq8a$L!7Wt3U^f=lID#>l zk3Yv2Q7Z)J2urlNj~v~-3@(+A|HGM=mL3da$Is!~3KL@o?d&4o+Tj`X4hEHHOg860 zmOU5KDGUmA`q$I|%90%#DS3c2wZKIW51P0%1XcdP*;hdXAsjhs0TwJnQ7C&|xV&LP zhmz8}FT>EWRAfUru*}t9RHXtCMzJDuwD(_zp|DE3-{fc9Ai;C@mODgS*b@Xyc}aWw)u z{kK}J>Z1?JA=bxFx<7lnYRnLput)>Gv6ir4kTeBLsXGfojh3NAl^jwgFZ>Hs#VA{- z>C-cg1vFOau@{b0X{qRz*xz$eRva&Xy_oFHKDcdg6(q1zz6o5q|9pHoJLLIwbBUn~ zQ3L)Fe;pbrCgdtDfVM%sYX$AkUd-RK`e)A$>k@K1i+Q7P3wEP22VIUbHN=5=BVUhb zVjlU>!_Acd;qowoU~5~V$eS?`;rbOd+cQ;FF60V!^3ctdEimTlRe{_mQk4K<8-?2^ zK143)3U@O5U>m^9i_>$c<_9zO?gs9%3sbR!;dW1^IfBO^abxFUK>Bq-oRjUO8~*n4U5Um zc5^7%YE>*==ofM_-mz>X>9?0}ZPZ9SiO}q1CTSe&b#Ock`lb2q-E7R~VLKe9T{(SD zzlUPqVQ^)8Ef0C@<_gBnQkm%Wg<{O2nqxFIIP;sc>l$#^E%?sHviytn%$oF#j}_Nb z&Ehh5-A6WT)L7CN5(6uz?XOmeoU;~`z}rOi{A2+#>2zmIb?&s4AeRL9#Oz#qZju$#AOW!I!GR*vaM8XM*3AfTjt=}c#@&)h zg35W6BH%a72SdVAi!&fIxOL2qL_qW7KnglR(PU)xMe+#e*y;6Ut#0RNm(i!-$P~j4 z=?j8It7`WGoUBA}9YOBr55uqu7=&0Vv3xNbdV0PBYx*YXfs_UPbhhK-eRtL-sd~$G zWIJfn1$K4KLy~|*MqF_ynPwD9{oxXXce;@tRW#_>UgxPy(u~8nmo+_ktBQz?iZuv6 zFXd)~;%64oj)Bm-6M zlgO16{y8l{dydVT%~gSqR^5B5jQiU{8CSR&I?9R1KcBj4_l1=7oN6APuDbl`tByk4 zpadG9p@b1G)c8;NYm$Q}CX~}(eS3kT3<`COr8^Yx17>J^Mr`*)Bq;@yN6~@VO!tRI zVBelFq@T!8PCVPl+-hcN4QG0!*7AspJ#o#`5_)oRmX*2`?INw-SV2GjW5iYG4PUHO zp>QN&N+`S(Q3$h-siifiaqn_;S z`f0_PkL7)Zj-#mhv+d0F|H=R%3 zIPr!xQmZ}n(8We|*$>LfU4z+gOTzOz^Gx#a>PkMu&bMd?=H*8)m zf1m9ft=ElUY_`w{X$3~4xwDVoN;o69ht7W9=Z0@kbX|Av8boi?J4ZqyNF zNAHSkV>ffammAQm){{6xRxnoJ3n(+OC-i}Q){BbevhI2 z%0&(vN)!5AYX~dHx;T3ii1XQNMe$x@=B&ULf>)?%=^K=2;Q{-5=pA})-|z7{6*7=B z<)+EQ7vHDp`HM;VyedkDL3dz@!M3l8uq->_$p&uatT z___g=f=EVlW&D+T6?$6Qgo&8<*?PqEs2yl*v z%ILfGb`Yy;h>=Jhj0kaAe%aU;TJT^LO2dN^x$x0A<9tt5pfFb0?@!8=Y);VM9V)3HzNDW zl^V*BQ;W674oxvo8-=l?gX-N>bBJu=SmFGR7c3x~WUIMjR@5?)-8HDm>;U?HjHuEI zF0P@TcEPml5&N#G@yAGcdQ?hP27oI78?%T@kf`G(9@I zEIN09fZ14cx-d!m_anBt?JtY(QB6AADT6%t*3>66dnd%(bp9XPA0Yp;tJn>i(#8KQ zsc=89fA}8!Ut@pS=% zf4JEI9ffSHtUjS0X)|l1&tAv*6a4v4&?o7Kwhi*9KLIFA#OVrgQ=_*KUt)|RwOkP* z@{B19Q6tWdsB&t@J2%XA;XRt)n7UaWj_!=3)&28YLGtHZ&@I-ifv zJA}OGGCv3xr!$;z4Um8E_O}O;t2!PBo*N!`uB8Qx>9W>aW7ejU!sbjWLN@bC5eif9eg)HV(C&nYo_iX5K z!ivaBL4T=b?7s0MyV?^a&%9i@6e+_x3MshPayK&jRx!mx_82b+tRe~Ptia1yvo0P+ zs2~U?q@jW?FUKPOZY8;!hju9Hu@!U4U*AIK_gMF4IcB(ycH6Nh}`A~r1LXh?4; zPcSkB{(-3>*b}x3S!e-KQp=sk{icT|QRl)yL{%5b*(~bzb^UuC_VT!HsAmWN9lI{B zz$gX`N#BELs86*-xE)g>8SSA0cl+vtX!rOZqq z?uRM%N9s;?Y&Fsi>SW>_3lESXfX=A-?>)z2Kx4hyC;WH@{pAbS|Bl@M48{KjAOGJ$ zS@~(U^oc~i%Q6rDX52@H63<1enF}oFlagwbP>?K*3XUl9U&7{+4rW9&-WdbimV3I; z=zP)8&2y}5dp`TP7D#FKlBGvPHXC79=Qup`de}JRdU3uv-IVkBdd1eMz!>>x1GYQSENufffDc(47>j<^(LI&ILh7*iZC|tp1sGFc~rq`H)Q{5)&lde@zZ#}bs2nhg`#Mi6bk}c zRQt%ba4)T?pAj?6*tx-rPGPP>koc6NNSSat4t=^kxHwIOWRh{gcyb=E-ndq?xstA4 z-Wl@d#~#ZP%9IN0Aeq)0Qg^%>K)O@yXTkZ3f{BD`TwFtis`hW&V(=)&G``%V3eNnq zwEn($6-iOKY1Gzu838>r=$R_JmLjy#fgOQiCM{Kd=*HV3E%37@fwgd70V-DF;e=fl z|J;K;cG`KAJ<)p8GBimVlW16-A@}r7DeRu;$Ph67YyR(LIY!)hImYAug>J+po1G0f zT*Ama6z?y1pvdVo8C<~^Wcih}!LL4Os_pTTSuhM@6^7?^`8bc#_)Tgi;M~1drLJfs zuy4iZWv+0$)Z~oxyHaR2gcQ3pXfXoV37#e>ZIRrYxnFEbDfKjiOAWrYQ-?1p>30`( zbXMjCR%7M#_?7nvr6If|lF6hfBlWWsuC=-&t^XlglNNFEbWF!gH)&?F6Li|3N_>PJ zwIF5ceTsO7W?dNSU2qlQGGj8qtbSB?(sVejDJiQK=44)z(vTT|=Bln(5-h{<7t`7thU+*@L?g+fy$wmm^e;{JV^?W_H1FxQIdjG@m9w-|Nb~3uB z82i0w2nDbg{%R{X73b6<^3u|x}HESMzWFdUJdVt+LqQJO;+BvaJ_l$B( zBIR`HFyXYbhNuwt-sc;++!Y(U4eSCwA*{4feNph==GmUoe7kjYjaR_{|I%ff$BY-j zH>d}`O<@A2S?b5xbX=}3v)z<>_zwO*Gr3pggqzqWDMjitfBu`?`7hg(fW3*6)u*w~ zry{G7?SEs0Npa(npiHPia?gPL#wLwV(fXc?2IX&SD$vBxJzG7=7qe!mqQ=O>V69BFjqMUV>@Qv9hF%6waeM(RQj~h5fmRq!7;qqmnJ_;eAWuTxdAtgA zghh_-mHI`Nc(9RC>GxBSet6L@S)s?IVoxa)B&9QeV#Ag0kY`5(IrgCVqv)1R!Jy%Z zjlmFKXpgWL8CVixP>&gq&y*kf@)T%=)BEAnlji0YzS|2->Fk_mFsD-fF+9-h?e{ef zBcD%EK}>vRR{Gk0Fko}a04)AY<4Dm^X#Nv?IwCbMtRM6!R58mt$aH)645>+=Oel_y zP7AYcvX`>$0C2b3M;gxLij}z}F17jMfeOh}i{zc0NT+eeijhpGe3QNVizco?r9JPS z2gljYAiS{=bVe6=KruC2MZe6d_6ykmT$TDyof)jpRWbQo6{`Q8M*d}0{#MCEDac6m z@*{f9E)2|7mr+a-vp|b-vlSAGC_qw@x^5Po){(7$l3|}$xt~B^6?WKykfouu)tnE; zJ0FA7vNx-3zC5zKOgY&~+Qv)MwXg+xGi26*-zpUaei*bE?TBMlxeVRGO17QU$wQI`|Yh@ zXF-jp$?;nssXC4X7vpmHZ>YGEG4wphr|_`J|K{KPqhkD*`z!Y^p`N9p>4Kt+xt>sz z#ge8I+F+KewMT3wh|}1RQ@N%=->);ZfF2GxYbgD#D2*}A7U|OE^;^eNQO6Y_y`QrB z=zao1=O2t$Ec%p|Nkh)GwSv)*%-bx7&iby^ciDqSAMbbY-=k0Dkyh*!yPlX|Gc802 zk~QqU+Q1y=VQz$NA<~OnLDNSFB-P>yU}IsWN4oTyGOUk4n~8|KL#p; zhjpV0>8y2>7h*GLasPbvl$ z7Umw*m2#}kI4n>1cI1|*G_{oNpZ(Ev(^=V@#r{4g=trGV{y2cVV@#TlHj{k8PC}#s z!$4GVIMZ)5e<11KApB96tUktY@(>=FYyKfklQE)UJ}{+dCL|Y?QC@CN4=6lrP#+B4 zwPDZSr=zP}(GV3JP5n80-ivHtm;FaVvwqG<2)u2A}~c@MbEu!@o(AiX9j?4U)-Ojn#GURf)}QA2LI#}1C7 zlBYNGp7Q|TcJax*yk^!k^z+vcvOc{p@w^ zIF3)Xf>h;_a9moF8F0+kO*_KfiSbCTKm7Km+$U%?%+3qwHOksWE#z~kmtt^8y_S2- z8fye;pqqdpkr~j|`py2@21kSN;FsG?{*O%gTcDnlx%F+Z%)E+MOuYKjBRNX$ehp!) zg#P}&Tm`yGd6i>@Gmksuy?g1Y*@I@GAClllF3AvhdjtI^uY+1%3jM3E8vVI??j}qM zOM0%C_h~fJ-$g7oBkyG>piO4k=t3A_PQP+K!xYJ?fE`X|^AHggc!aN`NvnO+D>Y(v z7j2g)@6H4$KWGh;P0OM+78|h&329$zXbWunwOLKKs0%fzf2xCFY0%RQjV_Us-SrQC zoEpHa>s4P-UDZ3RvB0(wQ&M(pd(@iiEM9Scv@~Cz=71}7Q`hinfwvGK_T4OaJdvQ_ zrtKf#qGjGrpuCc0y~$pj4}Mt;(0cPD2jj?=;0{i7_5b~6(9}ItZ%2%UPgu%LOty-M zRNwsrTZ3$^Uj!{ftIdu}RGPGC8Vi#LnFvYZDzq5a19}O!I zkMcFM*Xx;Z=3}71ExCwK#|S=4F2fC8THZxFECC*1is>5%atTr-hKeqngLyhb96OI3 z+7C67Y`gMAHo0R8^|8xi0C7?12k_7*roH@~?Q?+Pt*5VWl8R$7HD*ji1*UhcgG*PvCaqs=!?yVSP6*5v0SCi$da%i6c;v!cs^Q>O{F~ z_X?(ymV-n)4&?3$gv|Jv0w#3_6HkYb`0zL_6uD(~0dPlzoXUvy>DXj7DAwJaX@lqw z8!oW{kBF9Sm*7e}CmEf2PHmyz@HQY;VxWiA5$t<{&Jbg#n=Ww(>7Nj}sF7B2`w9lj z^f44ZrrOwwcf%p;dJ9T4((E11Xxnon7;OiIl*Mh5Ros`BpIarI-dZhQaDt{2`0x# zGEFw8z7)%QtM|$Fc&KmWHEfAT{2c{(JrA!g{LIe#pV!|GnEsYU^!$2WIzNcRlu z#FzB>Z-`9V)Ig=|CvSQG^E~a}^tJzzF#q{i1&lw@6;U&L2S+6*gMWVf7mKxDCsp;OVfOwtRa#xoGocCN*WsR~U~@0xC*eT$~7xpW(vp&Tb7O z{wox204@T1Fc}ylu|N+=^rxU_u*PYlN+c=PN_}ve+@6eEVGense=;UuVbREoto-;S z(-K|TA+#ZcRl8mklbmyX{$svona0RnNIL?ylL;tdWQrQOJbrI9?@7;q5sET_9j>L8 z_$j3!C7o@XvTbmXRG7Y-uHJyomLe4k+fAjdI$rCqMO#)de|ZAjqr?pd_bi{2_M*5s6srxZw9IA#pUT9^LcNay;~fuJ#vZ+QNKTu z+Mdkhr$xJ7Mcr|0*bvpFIQlC)?w1h8q8VNBWP)^sgG%;jhQDGU+eQ$A<^qFMGO% z5<*^8Fh3ew-*Dmq;VU9iG?`dYSN*yM6OLaOY3I35NU!vrvBG52eF$42%o943_A~LI z!1S|;v59wMV;Ad}+r?&rFUEGOzR?PxW|2+_ELHiYgkch(N;Qtsr>XiwKRVpABFu-8 z*m~uM6Ijd1-R2uB!%x-ZS}m963%#$v?n!=4aAMU zD6Y75diS2yxo^G85Dk8>ouPS8)}+T^wU|$dE}@IGVI*y-DBW8@$8zUJ5;#gVIy6$ybStd!d<%)#y4;HKB8BvWOaR=7w4!2RO9Wz8w8s8^G-Pz z>!2_e`XN9Vlz2qj?Y#yYJ`Em`p5VjDW2(Z}}lZ`RYH5}M|NCcNP}2`8H=?}Wv+&{3Yc8aV5eFuuKZ3Qh;lI#)t(kJP`szR=FL5X_Bi`vNMdZ#@u`EBg zqgpWLRhFx=gg!GCR$$&RB$|+^8l(&F_BbroFPGNOQ?m|=RVBhK-N;S_3qDv>K!XX- zj1A?iQmy3+NRj5q&MGflUSQtY1C5*W&duNWs%J?QAtD z8pwYQ3)-Psa*&M5=;X#sHH(|95K+w*d~nV-A8mFDaq-Y_=oth^lLOxJ*Lhx!Gi~^? zcsPCDUru4ZIJgo5AtNY`;^L6HiN$1t1Ie(|wcvN4tL!~V(MNG2@zS#!s z7DZ}42@iZ(V83DRQ9GoxUDH2m?gC)fVg=WFu9p?iB)2Kg&uYwzS1(ww&aaK&6nTp^ zVz(uc+{No-KcEHUBy3zQB1OBE!=+@b=*6m>YI62c>8sf+jI=qa(y0z3Pb{)Fw&iLB zt2IZ)=Zqq%PZP}1y|wAHo*C4y-3;ffG0UuLRF*{r%hrg<#n)Cv9~B5#5v+)0PSi8P z&W-0)YB+DlSx8g*wS=}^pr1_M1R~MC+sY_s3jWW`-%8n*}zlY!K>#o*7 zBhn7xdv3R zJFetrU$n=v+7~aAY$?g`oesMm=wlHw+X=tlyb}A^N^|1Du~hK<2arUOY8t(WiY1LZ`9Qhw4`rhtHiB#w*Lr;zTX&z-m|h z!N0go#3?t!nP))*RltPDEGbiV%-HtilKHNr^J~?5#UvI9cECfwW>~--0-@wZ=)3ZU z;ISFQ(l2vt_bjL+2g&ht$vVTfs}7$AMUO(RnSE`f%ggVSz4#wcmjpc@WY#zAI!J{V z)PgctFhRm@#c2e*3g_Kd^p(~#D{}eBa<3q|+;MAu9~2rdSNJ?~;XG_HyiLA@?Y@u0 zY|`p=JzFDeB|74;<8+8N-A-^Nr+8pw z9Rb3u5emt@n3{s|+M?0gg$H*1xm{bxtNGPHkOX1Pu_Dt0A;gSO5(!>0iJz!NrA{(j z-|pW6a6|f#Froc~Gp+EN`PITiFOCKu?oTnImorh=F9aVz9Ly8txcoQ{@WA^mzhY!E zI8I;NK@m)~2%5tyGn>TpD?21ZOhmG1SbvUt-C z|NSthfx28n<};gKer_+K|Cg;rNZ-Lo!rH;e+QH26)3QqGb8yevqWK%BBM7u1rONB{I_Kb1?;hkGXg!Th1wC)?q&VAHO3QQlIoZ z9|*9ncPB0&0z@o!gbpXxK8fWXvL<{!A6H1f$=P6P6sYvZXgStcM|p6h$bVVp8-H4$ zQxkO+dZJmOFpth_3pOD+lIiCadj9d8+Dvd4J9EpVYW9!5at=~C$Rw|yra?nKz#&eQ z;Y;)`A$B5NjZ^WiM!G`?LRZLvlAV1lw00$iCHpiW0&hEfXgG48Id>f~vebRjp1m)e z%AHF>N_6sH50m2_n6W?Q$Awx%@t%~4z2BB@9A@p-F97lBJ;DOX)V8Ust6JHlKwLy! zjXUb_CWlv=K5YB7#1)%W!kbyjX0;a6O;Tt*7j?Uk;Uu`PI~91{bn=H78}nMzC*2s4 zYVvJ=X`yDzs))KF!0%$Hctkt{%e>h*92eDgxEovR+o>&7;btkWw803(%kz=X$Fjp& z7-7$xNH}Cf{yMRA(WN1U>BB3()ND4RS9b;zgW)Tzj2foMr1jEkkR6(jgSy%P1uuuE zJqPlj);UjwOGmBz9;;3K9e9e{CFvLGoUypbAhTLy$7G3;551;1P?q?`c&nau-i4 z?67(1g4!jmUj~#R>g{i^F~kuw6xe6!*Nyb$3(x;0V5O{WT&({p|NhF3N{;%DMt>E8 z|6gTa0aRDAbxn}q?jAI_y9Rf6cMI@ZCP1cso5VjvBY`T_mIWk@&-W9y92A%g0`Zv)+^f-rdS`?{{85hAJ@f@d*KjF?tb=$*<<%;lz0>@WE6t|3 zxLXzjx0!+Yx+PZnVuG@@Rz1WTNpX_7ocep7vc}7*o(i0+P#g1h6SsN5x{IQ)7*y2>Yb13we<)~Tcz-Ob!I$&Ph7|T#fBAS=yGiLq}E;VWF&)A z{T!~{Z5zsA!N$x|w)0p@Q2eNfrB;?a&UIyO&xGBfV#v*L$ zLi1W~GAOBwtrt0;7dct1Gg+D1F2S%f>=A{!k=5hQXf~6J2zGD##6nCq!ep4zXXy&S zKAYh1;2K*E;4?iSp__L#$s7l*0$tK4xRsBD&E&`0S6mHq^0w?0_Dc2W{Z43Nyrq=o zd4;H*QEP^5v##g-xq~Bh+q?K|wt_>*c<3t|))Z@(p^g;&#gS!AOonL%9@-JqF=@#t z?SK_tZMe=Lneyv&Q_cOY$hP?QiW@t6p0N@ARx!=QPhc_!VP_Iix5vx#2r z?2EI{#(!pfCf-4PRV0r+nmUl!gTGzt3*$srQ+3EdI~{1Lqa282t|9FVTcM?{Rgj!j zS*I&juRPpfE{R$7-XG9sJ##^{kZD0%q>lJu;RE|Y8kZ-@7ufLE3fTsVNw$WymxZRJ znM7)8^phd2)hL1=uI_ox8*tKblUQWi5+odHm=(;QB-=WJKi{=k9BeA-Uw~%DaYtjG z^f<6$%v-hFd>=wM8RCUqO2R&N=i&UJ$cZfoEUBZ(B}Xv2ci*Q(ZC0aa*)dlzyp*G# zg%)Ui-zGXb50B0iadwf@wa^;AD5HU2vfUTb@IFJF!JP;wIN1VY zl%kzv3GtmJ3GjYae~H9kODJ5f3(3=BXL!!Reu(fBeFbzLTjkHy^OgCSVS{OW-yTKfY)jSaI_l}YIkE?U3 z<2{2b{(zv#5FOmkD5>G`)=u-3wzK#Gr;28P2(9TJO^VUpTxxb_vP>?3bvjp5A5@CY zaPdw1H-MvKl=@gS5+U*;C&jLjTJ0(HHM*^DMuOrTbd9kLb5&;5epfC!BTU)guUTzb=; zIA9cXJ6Hn<_L$T6h(# z4nB^k6nZKI>utI|L$4a<(nR_>hAnsgRg~?`{JkJb@BpR{2!G<$M$^PAsn_H2=b7uk z?84f!obGNPu++i$XmAIv_>s2~R20sdVleEBtC8{H_KAC`CNr6|(+^2!X-@*#qe!7jD2!Ac`bgHgpIiz`!yg|HD&#^QzjEb3?mpi4OUC2)a!G7o@f!k zx98+gg9p;@CaJvcVA$jy&4C6dSpCpASv4EqA?ChY*sd1CD2-*iX*qSHR~A$90Ho>7 zjE~Ne3h!`uCEnwZT7;HD&yF%!$cabH_)<;ZB8_7D5Vr}v51J78q;S2_2jYpCC6Sp| zKih+6CJ{hSNmH=R85uk?h*W+6+aBs|`Gutov1zk+b`1~y(7yL@COIh63@wMLNBUsz)v1k`q1azqP@wwhx~J-MHyU*uN-Lp13>ftSKj4s zcJFH7VDcC5vQlN;W*%6!Fr(0Zw}mv3O?!;2kWyw-YV93mryV7_2zuTd2oWk<++pzf zfvP2hV7VPwx1Cp{Frkvbk|e>YGMn*K0(9u~TUlxKhmmHcz!}g5Oa&h34vvO~NT5QKrlu$jHBuE&=ye7J?XYBQR3*`@8;>O8DbO!KRI^S5%+|oj zwc1Utoe)l-2rYP8w6>-Z93f~w=EfeGj5l>~!y$g@z10791tVmD)4B9|3tmqqw2w&pb0S=Is+@*xD=<3xn9l(KTpeZWYF zP#48u?=?QptWY)u-7d-?HXX^{m($$pD5{ejWb$%8%~f{cZK6&{6D3V1!L;EmlGc#> zV%u`Ubz5pymC>GJB%^u!wn3rI{A$mnTNuHD7&Izfs8yFa5)QEsvKFLA?rbResnOKP z-+s(8iiC1hGLt$K=tQi%2sfsZeVk|qPJ(jaBw+tHuUNlMf|o&nB<24s|32qSvkF{z z)i7OtaGNlJOz)7wq3C95G&U(U{vdjvS0rIO^*@G6^`Z`&;APn; z>2#*Yy{8<{c@J-VzJL7&>nD;(X3Rj6m(%^gKy4@+0HV?dDoKnXLL(vW$Q|{TSe3&| zWk3npl6VQ*gH3w6D5~Nugl|B`RHT6-(*thV{?A=D{-%E z&)$*MJD9;5@X%MtR|C3Qed4qPdCH;l&^IXk%3eKWUU5@vEba^XU*-9iRHT}5-%q;A zwC4p|f{$XZVYuEQMzvKtdnATK(Si&w6&7A)lWx&7NNJ(SZ5Wfd^(otn)=<1RA%47tt9TZocA0ihtTUS=)lkf|v{l#}^kZL` zZ~N&arhUd5&-=vjtnp!`d=;MFqC!0fvP!8#B${%&_I}d^Na7I960!=DOcaU>9LG1~ z#iL3CJgXM*<5(}tG3}cQrIr9ssulcI)avhdoc>F+At`=a5-4gl)LpMp-&TzCgJrR4 zsq|F=+OnjrBv7@eC^$D*oUS8-w4bXkEon9E9>yE58l3(C#JhBkIm0hBn57+aJFR~E z8~#-0_wR>0n0_P+f@n3!eZ!)DlOQUBSLzlf{HQQrI}v(qi@kw@RFt%GA%Rsahxr+H zrmac0!gI)?tzS5f*QJt>lc%aGCBGsXFj=grsy{0~R5h|p3LB>xj}NQ9-=$#7&lxFA zDJ@MycrAFRlcS(>hFvJ2F3uV`5iH zJxRXs5yyM20;i4C^cEzkM;YT7<*tc{4rDdmw{v44>p`0j#+M-gtw2{#@zU=x8SM@8 zdB>yGW7dV&6OJE;s105Zf^Y{F9N)d8;MbkixRbnf>${uRMmF%grU*JAP0%~|u^i$V zez_t22HY!LJf7VDpE&5E;GnKRFWt@5$DFaLTdQ_Ws?byDxewQ{ zp2HS#`;WIT$3_?e4rjS^4^32wO{z~ZdwBpNf9Ou+18^~H z0w!MktL?^LZ~m`w(O;uXNyoNr!zsD zpe^>I+jtaKq)J*1w9pCcwrgMbaKT8Pk|igUr7G>d%5<&ObR(5O=hXLd@vHQZIMh$F zLrSlX(^2^y3jo9X)t6ict*P`*R1LngpKe3cI*5+VTc%^f13%RQAmQkzm0ewZOjdCZ z<|~j)h(2LCn1vY~?KPbVD^&6DOYI~*akkIa+IiEiKwBTSQUe$^01PC8aN6&N-eCj^ z@~|-Y!7xr!8isv<}RTkX(Ch0j&u+Aw)WH>|JVVPiQ3vKp15}*T3;d4bV+~mtKZN z{^-UGN74c}k|o~1FH5RuE;nyp6jq2plfIp6ngDt9EufZgh7BPOHZ9~#x8coE z?!`hc-QZi&5(580meGFm-6l8fqVCrw*Oj7#1Q_)j>!QH&$#3E@LxQKDH4% zA~8ip(G<`f0~I~+Lc{rruN@%EoTo?r74y&Du$h2;T_Vu--GH|L|KSb){hmOU@-$Fr z0qxn;Wj)vg7Cnzj^IgS^qA}&0phP5b)Od0g>G$F{Y>6@&+AgE#$@kSgqZui>9q;nP zWr@t7Mu|4dSiA|^exSg))hwzX6-LHeXHnQw0j(707#df z*i}vh>*>mnt}{03t=Za3k)v;LqKnS7-MgW0YM`1`zdRMM-VAmbrNIxgL3@&Jc(0zO zU4o5I>*$qD)r2+@JmI zYd8;MJ^Vzu<#Bh4t1MaVN!x8;z3$K;t=8`DKH}$}=ubvt={8ZbnqVXXuDS?M!(Jow zIB?R1jLM5tw^!(|V2m}_{l!%M`!uXmk-8WSAnx;mVd}|uxfwEhnr3VQ;c0-)nsGI= zdai3ppn;!m84O);k$Eg}0u4zQezQNzdeud;jI z$PtgTN`K+oZ;eJF>_L$e2}4_-$erQINkL2V_A+@V{XAP(`|FWdK*eH$fn zi~jm^g@;GP5O&P423dz78>`k6xOKG8;gRJJkp$%sLCv8A`#9D*9*jgCdh=qimi?R_ zZ|T{t07zuMkdU~nA(=X(#0#-k{rfWFZf!Bel)0g`7k@T)eHkAWaG<%j0QbU}{*B-J zmp8s7rES|ed0;*hB^s=w-}(Y4Ix;&J?qVl)Bsq$V^oVJ|YX279Oby+^(uRxZkGFbW zvjdPnKz>l{wbEv6z7a@oI27ytl68@}{`~yq3#K1fgSD|jeVh<&%rM)Do1ww5U|_80 zjs(4j#0X3JFnB#~q;}u?>4fv0Z^j?X5e+{&7SF)~`uH)%=C4>RL`!tVDLOEzoK*Nx zkl#jJ6gsIaV;US?kGs&z8<|xMjJRgyU2tydGa)+^a+5lLRdx@NPYk8kB0?z zQwD2Z8DxxW@DEp1R_D!H7@8udc~%BFHO&)NJZs%&c<@sj2ErWbK4(E|yE|1ZQqcis zsiEd><=tB+#INhex>XS#>hzD${pD@+ zM~6{ap~fSqVW+pLjCzH9`-(HEDP14;4kdl1J(v{2I~-ipG;H6$Yq9gMJk(`)gIeAEj<0f zOZUNUQXPI1Xj7KJEi3+iV^bl!c7$M6mc=_)vsLINr%1rfY9 zc5aRerczL&rkzyD-ib*_hJ1|vo}R8STr3Hezb6S-50>3#vK#RS|ifvAPq2_irgB2%q>G@;7It-1f^%JDqm#^9aBW`yW4K ziS)PAk4Ma$Q902PDwbPf~|4GFIcBBl3RKS%dTc5 z_sUtReq8iT)%|iR;oCR11fC(mreswN0gwYNwyfkrXSdy8cE24Z;oS2Q!{XZ_sq>rx9GfRN zD1M!MOZ!2qgN!En+8wLM2l&$H#DO>75bH-$*n$C&f*-(RM($Y1u8}Et_~g;olFTv5 zw^NWG<(UfFp-k%9q0EL{@@(e)14vg%mEU;i46NP6Fw&pq|^O#ZYEH`o?M~B+-RqOJ?yFpADy?OTuv@m^DXn&IE@{X%U z6HM=oN%=>O>oNO}gnS$tz&a!1gCajf19Dv7)xYD^CeB_ZYIH$b6H3hV=qY84xDRu= z`cPHmmXt(37r5hRnT1B`jXWM{I($pigy{UWcX(Ra@x9KV9p?-ufZBhGG4h`43so@7 z6%`AiDXs|QH=^(c)C7W0-Q(Dq#dP$H8ksqha8)6V{C{4JjWshCFi=21tboZuD17JGDp%-57tk>x<<09U25Sm)VJ(<`r*689ufl-Is_g$rK z*2Q~tk?d%l{6{jqNvv}0JX6sJ6Ex>I(C)~kLiu4Quf8mkNOB|R#E+=mXtgQ!<=E96 zo4?B=uTBq%&z<7vIElMWol`qmUt2nmN)$hZxrdN(;dQ~Lj zbZ3^0YO`jRG*x^Z_bR#r?WR%g#(>XCIqB|U;>SmEg%?@EXsncA#Kj3L>QB5HCS0D^atu@)v=dl@r*i&^S z6Py)SBE|@BppQ5|f*A@3GnYXc_P*BiXE#j5H zE|@FD4bUkZwS;LD3kW;MqScOTZR>f)Mi5>5VEyWgnuyWa;#sY}`Lw;45BfBPKHLe}!eXKEC0@a8P4#6J%~Da| zX317KR<;&R;1QLqG6-b*&2UeJoOFhv64Wk@siQNi#Hm{GqAJs06vGj1x%(AYt}66z zV?||g(GC-LnMo=mtqG)g1K*@avK+``ekCKFvC5wx#dW@&f~SHu+LSgxb26d6a3HpM zeS%St;H)B)kzxT%>-Rf4mV6zYF{~q~4RHwtW4StoR-?|^Dqr({<+Pt`U=)l}Fw_o| zLKhQTJk^3M5WF?G+6G#4^2rj{2Ch8}dow<3R4d^i5oLphmhlp3!Z;^NULQUTtu9#OWMv^%WWvh%i4^FUs zhKgr~uo$a^8BFSGU7sY#A0X?sV`u-G9w#jQUDx1FBrTS6GF?@B_B<$DL=8U8uH%i1 zI!6}eZpA*(-7=++Ip{EW2=YFU{z%umV8!1idfh-1DEp3WdlHWQ$@L(c`KEKHuVhpt z9h`MlwBtMyfMo|OIR{P~0q8f4KnJm5JOfqK&F|tma{|}utV|F@+tP@*T1Yd#=w%Me zC{yfju57QA!Ji5ez@=?eU2w5J37GEihXkjiP|DUgwTaWjD^}3sE>cP>gVfTTaPwNr zOk;+amja0TE9%a2wwof@O{rv>!G$==Ys8^3%7tChzsc~<_$)Jft`2KS5060x-A!;uij+HuK5~53?hQcR{*egO9>?>yy>LOC3%D2UFNYa*ZYgk&W z(;T#J308?@R%8&>T%=sU>#BOxT}VGYfoW#6eiP@Gq573dsV=E zhz15c&)Y=H3;D?`zy_J?+bE|R=DJNQXV4f8PU)T17%ZW#w|B;=ikJ})o@h+Wq*USX z9f7_K#?9LFeng)8xkfQ_8NY*0%f0{NX!X#_b0qoG{5ui(GsX4@^ivHEwHjps3jloQQw6smL#nOd#WICn?F@7^EblO}Fv`&7 zG4k*dwWrXD7kDP!MbR4wn90C=ckEUuZ85EOcg4J2uzMf-RMX=lZWvBKqN ztD^OTJ`D)c4$|WD)M5bCGq1{S>)I-r%e$EL&-$15?S*csMaYw_biKZPsv1A(OY|Hp zUMO|=oLr|UlpXu_c!9_$jO;F+C=B4mH;t<}5T-lVALe@J+N8gQ^W#01QCxyx z4p~sy+EOo5c(io7EhC-Slw_N_Y$x!BxVb)~1^^#p>Fo=FYeESpi}p+H8O2&3jf(R0 z%hqSTHaov$tyB0^dAK|Tr~**fwM}wzp$f2kiPJrvl3U98>Ncfova#j$nl1Bc%IwB4 z*+|a95U8b({hrJV8F3^C^!-KBSd4<_=$mx}#w~1W4>49+JJPUu&T7qFmjSVBB@Dcu z7gIpd&6okQ@81&Fzaw$~tYOJ#ql$^(3sJ|w>x2{QVG%PWuJ_m;e7)?zyoCZw#_!`? z_V!sDGa=*{eA}gdSa3fMECOEO0IoWmy=~Lh+q%a5X~U=UJAB`89zOo9T9AK;;{!C} ztC3?p9P&1@^LI4v>wTM7(ffmO2RvJT{ctjet2`H$$LZMhRUd~@mn!QRY{V2b7qhPf zcp$VGKPzy*F~^qbB=0N1wqRuTGOlM|k^Z7X%1(L^C7DqCyecqa&bpVEx|;66TLymd zDPXDZs3E&sFK(VL=ZifRS1pDg=G(IJlmfi3qJWR&mQU8tSFKi2wkqDe;9u+ZE|3d% zaMRCRzgZ$XaPB&+zH%FT*sWxU5 zSP^`RZmp~FO~AbK@^$fNGaKyYhJ1r= z4{^&Ih@Gvc7W+3udUhZ~uOiKlhDSct!EpL1L>+ije1z>oy}U7K&~NUj5)BUM?n~9Q zHR)N8sBJ%}^=qyv#oTi#$R*s%K>r*xUmnKB%`5@QDR>7aFFmp4h;EWsjt(5YPH^A%Si8t&zTqEkZ7 zzydD?@mChb3jrVg;x81kp8hnX4;nzCu2AmTpA#`SDxOsr1UcZ!4eGN>EEI(N_Kb=F=S2v!V<7 z@<|%8vshs^ipHXwb@nOu^DZAvF^6^sKq}7J2m8l86Z1sw*NN9M; zTZP_R9%+3PX%W}#CvjeMx1O!LM&8;VJ@N8Kmk3CLk!FByBhr(~TRG#YhkF7+9j-OJSQ3oxQs zjxE`F5C0gW9}Qp}tT&6~4?u~I&d;s{=!lih8qjb}m_MPEe8L07^f%Bn`=3BZ=L{$z z;7#sC3c^%Qe1UTqzctI7sZ@S$VnLh3V-BLOA~uc<<)+w`#Y9$PWXrA<2~BCT%v`Uy z`~+gkn#it7P=2+)<(sb~vZxZ!C@$E;9j#t1z2a5XJZk z^^b@~#AygS5bI>E({|i_HBaS)jv3>K`ULjP$!agB?cjS^vKOL4NP}@ZIaDU^Bu2&W&KI1?pOQlI{3TNX;EdSvOGkSDlE5 zpQs+vBB7l7D-_wN&%CH`XwJyX;tH}<_f>jSy^-Kqb%#O>E$}Ahk_gnqgiFo2Wf=~#$jWf=s`y1Xth%M6D{N9 z*3Jco+4zy%=)I?hlF2eWmOEaftV?H+K~<7|w}Ga=TLCj9BxOt`o_ z5o3D()piHvb$nKm)fo(%Wf|`~OHKuJA^I)80AQRkZ50YOL>{BN`|n%rK>EwkIA(nK zw|28_m1bR`=(`VSzsn8OyM~!{_oHkzNnO!5{P>QRtx|*YBsS-sq+95{ELfWq`5}a6 zLQ}Hqj)prq_Dk{&_h`OvPUrPKxLdSg1HhCMbkYGdtLawi#9*80hoskbgsE{PWpDfYvc7fexF#E%PK-R}ETCG1 zHG+b}aC_EfVfvd9^0dksyf?UiDpzNX)4Cdm-CT&#W(OX$*SJybH-`) z_5Ni8w>|uEwTUnOu_`L1?$yEf7m+2Lhy%V+U_2HC7+w0C$kKnJ`o_QIbN`~G_uDS6 znuRN_8M=??`pES_#0i;8g0hT}R`LN>Jjj(|b96>5N0ZX-&=4i9bVXQ&@)AWs9BOkS zoxJ&Ko|VNaI~a5Y=w8snk*nquAlZ#@&>6&fV4_9rMF* zC;u~c&#Nc80GCv%Yvg^LB0KfL?bYu-w=(Er-mwP_9u7{? zFYHCMkS6P)fas}SB{6j22w--p##Hag7<_@Z|5n`6QMRiEgEQHY#poDJLe1QiG+I=a z){#s98BByb0Y7!_OFztsDbsPL4JNHn@90Sh$rRIv!#Oa7p36duBFMSq>@gfL*wu-i zgf(myl&doH@}9H_H1L})nR411A(AxhAp(^df@%g11KeaEI!m~_DJrPQ3`!xl z>C55>sYAHWlvmOMPIKBb_4RE@$d+mvhjvpWK?0L$Fby616VRdpUhRoBiWo&`B-)wRtm=#cP~wX* zK?Xbd4Z9LYaxF}Q;#9boXYip$2FZHU*PCV=1^UGD3RYdqSt;9e4CiJPIc{FjfEH_- zX2rEtlHC}nMCt44=OWB*C>Yw5SOE}MB&WEdJ!Yo2aT#;lS6m>GpQi{&jy}9u7B|NEoRzl za#epY1$EDzUml4B=JQ7yVb9)LvtB+1&*LEM!9Z`mId0KaH;%A88h%cP#QTP`6$6HY zu;Uj1$(9|hk=#WLwRHK)OTJ&rO{?GaiWh!+7!hsY{E*SHk(ZC<35j3v%BZQ&bV=n& zxL@vy83JcW?ur1Pqa#xO;ai+jMr!?K<{G; z9wskNF+-&R+#$;ojGBt}JVQ)9j!)FKU4xo5+UH}cn*oPn zd@1ZhZ14BoBj`p?m4MGJ*&lX|qwx#9jNChNlxM-YYC&+-gCNr)GF>9o4Kg!>OO#jIK# z9nVN7?);GgV?usR2>iV`*b=n?Akp9;xC5$mq{ZiIOehlXc|q~>qI+;Ozo%;H z{8ⅅ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 diff --git a/exercises/gradle/wrapper/gradle-wrapper.properties b/exercises/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 44e7c4d1d..000000000 --- a/exercises/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/exercises/gradlew b/exercises/gradlew deleted file mode 100755 index af6708ff2..000000000 --- a/exercises/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/exercises/gradlew.bat b/exercises/gradlew.bat deleted file mode 100644 index 6d57edc70..000000000 --- a/exercises/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega From 18823c84bd653e949c4fb5a3356e5d3531d5158d Mon Sep 17 00:00:00 2001 From: JeffMartian <49497114+JeffMartian@users.noreply.github.com> Date: Mon, 13 Jul 2020 17:37:01 -0600 Subject: [PATCH 12/14] Disable this as a core exercise Co-authored-by: Jason Runkle --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 10e70e2ec..df5536b08 100644 --- a/config.json +++ b/config.json @@ -31,7 +31,7 @@ { "slug": "high-scores", "uuid": "574d6323-5ff5-4019-9ebe-0067daafba13", - "core": true, + "core": false, "unlocked_by": null, "difficulty": 1, "topics": [ From 99c203d473c235f858097ea8ccad560aff134f90 Mon Sep 17 00:00:00 2001 From: JeffMartian <49497114+JeffMartian@users.noreply.github.com> Date: Mon, 13 Jul 2020 17:38:08 -0600 Subject: [PATCH 13/14] Returns a copy of highScores collection instead of the original Co-authored-by: Jason Runkle --- exercises/high-scores/.meta/src/reference/java/HighScores.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index 5f0af1d81..04829801b 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -8,7 +8,7 @@ class HighScores { private int[] highScores; public HighScores(int[] highScores) { - this.highScores = highScores; + this.highScores = highScores.clone(); } int[] scores() { From 867208dbe1b3a0b230f584ee8622d025e7eb6f9f Mon Sep 17 00:00:00 2001 From: JeffMartian <49497114+JeffMartian@users.noreply.github.com> Date: Mon, 13 Jul 2020 17:38:30 -0600 Subject: [PATCH 14/14] Returns a copy of the highScores collection Co-authored-by: Jason Runkle --- exercises/high-scores/.meta/src/reference/java/HighScores.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/high-scores/.meta/src/reference/java/HighScores.java b/exercises/high-scores/.meta/src/reference/java/HighScores.java index 04829801b..2c213a5dc 100644 --- a/exercises/high-scores/.meta/src/reference/java/HighScores.java +++ b/exercises/high-scores/.meta/src/reference/java/HighScores.java @@ -12,7 +12,7 @@ public HighScores(int[] highScores) { } int[] scores() { - return highScores; + return highScores.clone(); } int latest() {