From 0aaed9a18c0ea8b2ac60a36b0083f935768716f1 Mon Sep 17 00:00:00 2001 From: Kingston <35717847+kstonekuan@users.noreply.github.com> Date: Fri, 2 Oct 2020 12:15:05 +0800 Subject: [PATCH 001/447] Set theme jekyll-theme-minimal --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/_config.yml diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..2f7efbeab5 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file From b89dab24662a09d369453c58493e4f363d6396ee Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Fri, 2 Oct 2020 12:46:06 +0800 Subject: [PATCH 002/447] Add name to about us --- docs/AboutUs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..cda996cfdb 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -2,7 +2,7 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) From 58efcc03a3adb8fdce91c44ee0a91fcbcde68704 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 2 Oct 2020 12:49:48 +0800 Subject: [PATCH 003/447] Add my profile and portfolio to docs --- docs/AboutUs.md | 1 + docs/team/kingston.md | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 docs/team/kingston.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..344dbf9ea8 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -7,3 +7,4 @@ Display | Name | Github Profile | Portfolio ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) diff --git a/docs/team/kingston.md b/docs/team/kingston.md new file mode 100644 index 0000000000..b0193ae83f --- /dev/null +++ b/docs/team/kingston.md @@ -0,0 +1,9 @@ +# Kingston Kuan - Project Portfolio Page + +## Overview + +Computer Engineering student at the National University of Singapore. + +### Summary of Contributions + +Added my name to about us. \ No newline at end of file From 812b02111e8da9cee336b157b77b330a83bc771a Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 2 Oct 2020 13:05:09 +0800 Subject: [PATCH 004/447] Added my name. --- docs/AboutUs.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 68a8986592..d612480eed 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -3,8 +3,7 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: ![](https://via.placeholder.com/100.png?text=Photo) | Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) From cdbe8ae5ef6b93c93aa2c728a235b1edaa402391 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Fri, 2 Oct 2020 13:23:03 +0800 Subject: [PATCH 005/447] Add name to AboutUs. --- docs/AboutUs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index d612480eed..3d5f5c42e3 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -4,6 +4,6 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: ![](https://via.placeholder.com/100.png?text=Photo) | Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | An Qi | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) From 8155d1a2a276a2f3fa7646008fa31327b5669cf8 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Fri, 2 Oct 2020 15:14:40 +0800 Subject: [PATCH 006/447] Amended AboutUs.md --- docs/AboutUs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 3d5f5c42e3..5a5a3a9266 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -2,8 +2,8 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | Tang Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | An Qi | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | Joel Ng | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) From a2ad73b57a6f3e851450af0576c0e8a9c3e2b95c Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 2 Oct 2020 20:00:10 +0800 Subject: [PATCH 007/447] Add basic interfaces as skeleton --- .../java/seedu/duke/CommandInterface.java | 6 ++++++ src/main/java/seedu/duke/HintInterface.java | 5 +++++ src/main/java/seedu/duke/OptionInterface.java | 6 ++++++ .../java/seedu/duke/OptionListInterface.java | 10 ++++++++++ src/main/java/seedu/duke/ParserInterface.java | 5 +++++ .../java/seedu/duke/QuestionInterface.java | 14 ++++++++++++++ .../seedu/duke/QuestionListInterface.java | 14 ++++++++++++++ src/main/java/seedu/duke/QuizInterface.java | 5 +++++ .../java/seedu/duke/StorageInterface.java | 8 ++++++++ src/main/java/seedu/duke/TopicInterface.java | 6 ++++++ .../java/seedu/duke/TopicListInterface.java | 11 +++++++++++ src/main/java/seedu/duke/UiInterface.java | 19 +++++++++++++++++++ 12 files changed, 109 insertions(+) create mode 100644 src/main/java/seedu/duke/CommandInterface.java create mode 100644 src/main/java/seedu/duke/HintInterface.java create mode 100644 src/main/java/seedu/duke/OptionInterface.java create mode 100644 src/main/java/seedu/duke/OptionListInterface.java create mode 100644 src/main/java/seedu/duke/ParserInterface.java create mode 100644 src/main/java/seedu/duke/QuestionInterface.java create mode 100644 src/main/java/seedu/duke/QuestionListInterface.java create mode 100644 src/main/java/seedu/duke/QuizInterface.java create mode 100644 src/main/java/seedu/duke/StorageInterface.java create mode 100644 src/main/java/seedu/duke/TopicInterface.java create mode 100644 src/main/java/seedu/duke/TopicListInterface.java create mode 100644 src/main/java/seedu/duke/UiInterface.java diff --git a/src/main/java/seedu/duke/CommandInterface.java b/src/main/java/seedu/duke/CommandInterface.java new file mode 100644 index 0000000000..3da3bb46e8 --- /dev/null +++ b/src/main/java/seedu/duke/CommandInterface.java @@ -0,0 +1,6 @@ +package seedu.duke; + +public interface CommandInterface { + public void execute(TopicListInterface topics, StorageInterface storage); + public boolean isExit(); +} diff --git a/src/main/java/seedu/duke/HintInterface.java b/src/main/java/seedu/duke/HintInterface.java new file mode 100644 index 0000000000..136a5e3eaa --- /dev/null +++ b/src/main/java/seedu/duke/HintInterface.java @@ -0,0 +1,5 @@ +package seedu.duke; + +public interface HintInterface { + public String getHintDescription(); +} diff --git a/src/main/java/seedu/duke/OptionInterface.java b/src/main/java/seedu/duke/OptionInterface.java new file mode 100644 index 0000000000..54586173a2 --- /dev/null +++ b/src/main/java/seedu/duke/OptionInterface.java @@ -0,0 +1,6 @@ +package seedu.duke; + +public interface OptionInterface { + public String getOptionDescription(); + public boolean isCorrectAnswer(); +} diff --git a/src/main/java/seedu/duke/OptionListInterface.java b/src/main/java/seedu/duke/OptionListInterface.java new file mode 100644 index 0000000000..a4134d912e --- /dev/null +++ b/src/main/java/seedu/duke/OptionListInterface.java @@ -0,0 +1,10 @@ +package seedu.duke; + +import java.util.ArrayList; + +public interface OptionListInterface { + public ArrayList getOptionList(); + public void addOption(OptionInterface option); + public void deleteOption(OptionInterface option); + public int getOptionCount(); +} diff --git a/src/main/java/seedu/duke/ParserInterface.java b/src/main/java/seedu/duke/ParserInterface.java new file mode 100644 index 0000000000..e878abeb51 --- /dev/null +++ b/src/main/java/seedu/duke/ParserInterface.java @@ -0,0 +1,5 @@ +package seedu.duke; + +public interface ParserInterface { + public CommandInterface parseCommand(String userInput); +} diff --git a/src/main/java/seedu/duke/QuestionInterface.java b/src/main/java/seedu/duke/QuestionInterface.java new file mode 100644 index 0000000000..4f0046837d --- /dev/null +++ b/src/main/java/seedu/duke/QuestionInterface.java @@ -0,0 +1,14 @@ +package seedu.duke; + +public interface QuestionInterface { + public String getQuestionDescription(); + public void showOptions(); + public void showHint(); + public boolean hintWasShown(); + public void setHintShown(); + public boolean wasAnsweredCorrectly(); + public void setAsAnsweredCorrectly(); + public boolean wasAttempted(); + public void setAsAttempted(); + +} diff --git a/src/main/java/seedu/duke/QuestionListInterface.java b/src/main/java/seedu/duke/QuestionListInterface.java new file mode 100644 index 0000000000..51b4cfb520 --- /dev/null +++ b/src/main/java/seedu/duke/QuestionListInterface.java @@ -0,0 +1,14 @@ +package seedu.duke; + +import java.util.ArrayList; + +public interface QuestionListInterface { + public ArrayList getQuestions(); + public ArrayList getNumberOfRandomQuestion(int NumberOfQuestions); + public String addQuestion(QuestionInterface question); + public void deleteQuestion(QuestionInterface question); + public int getQuestionCount(); + public void markQuestionAsAttempted(); + public QuestionInterface getNextQuestion(); + public Boolean allQuestionsAnswered(); +} diff --git a/src/main/java/seedu/duke/QuizInterface.java b/src/main/java/seedu/duke/QuizInterface.java new file mode 100644 index 0000000000..a86cef0095 --- /dev/null +++ b/src/main/java/seedu/duke/QuizInterface.java @@ -0,0 +1,5 @@ +package seedu.duke; + +public interface QuizInterface { + public void startQuiz(); +} diff --git a/src/main/java/seedu/duke/StorageInterface.java b/src/main/java/seedu/duke/StorageInterface.java new file mode 100644 index 0000000000..b8fec483eb --- /dev/null +++ b/src/main/java/seedu/duke/StorageInterface.java @@ -0,0 +1,8 @@ +package seedu.duke; + +import java.util.ArrayList; + +public interface StorageInterface { + public void save(ArrayList topics); + public ArrayList load(); +} diff --git a/src/main/java/seedu/duke/TopicInterface.java b/src/main/java/seedu/duke/TopicInterface.java new file mode 100644 index 0000000000..5b1ef48f05 --- /dev/null +++ b/src/main/java/seedu/duke/TopicInterface.java @@ -0,0 +1,6 @@ +package seedu.duke; + +public interface TopicInterface { + public String getTopic(); + public QuestionListInterface getQuestionList(); +} diff --git a/src/main/java/seedu/duke/TopicListInterface.java b/src/main/java/seedu/duke/TopicListInterface.java new file mode 100644 index 0000000000..663a2e3348 --- /dev/null +++ b/src/main/java/seedu/duke/TopicListInterface.java @@ -0,0 +1,11 @@ +package seedu.duke; + +import java.util.ArrayList; + +public interface TopicListInterface { + public ArrayList getTopics(); + public void showTopics(); + public void addTopic(TopicInterface topic); + public void deleteTopic(TopicInterface topic); + public int getTopicCount(); +} diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/UiInterface.java new file mode 100644 index 0000000000..4d2c1be487 --- /dev/null +++ b/src/main/java/seedu/duke/UiInterface.java @@ -0,0 +1,19 @@ +package seedu.duke; + +public interface UiInterface { + public String getInputFromUser(); + public void showToUser(); + public void printGreetMessage(); + public void printExitMessage(); + public void printOption(OptionInterface option); + public void printQuestion(QuestionInterface question); + public void printHint(HintInterface hint); + public void printStartQuizPage(); + public void printEndQuizPage(); + public void printAnswerIsWrong(); + public void printAnswerIsCorrect(); + public void printHelp(); + public void printAbout(); + public void printTextbook(); + public void printError(); +} From 8a62be42a114c1159021e0d9dacf1376fb13acc9 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 2 Oct 2020 20:14:40 +0800 Subject: [PATCH 008/447] Fix codestyle for gradle build by separating methods --- .../java/seedu/duke/CommandInterface.java | 6 ++- src/main/java/seedu/duke/HintInterface.java | 2 +- src/main/java/seedu/duke/OptionInterface.java | 6 ++- .../java/seedu/duke/OptionListInterface.java | 12 +++-- src/main/java/seedu/duke/ParserInterface.java | 2 +- .../java/seedu/duke/QuestionInterface.java | 26 +++++++---- .../seedu/duke/QuestionListInterface.java | 24 ++++++---- src/main/java/seedu/duke/QuizInterface.java | 3 +- .../java/seedu/duke/StorageInterface.java | 6 ++- src/main/java/seedu/duke/TopicInterface.java | 6 ++- .../java/seedu/duke/TopicListInterface.java | 15 ++++--- src/main/java/seedu/duke/UiInterface.java | 45 ++++++++++++------- 12 files changed, 101 insertions(+), 52 deletions(-) diff --git a/src/main/java/seedu/duke/CommandInterface.java b/src/main/java/seedu/duke/CommandInterface.java index 3da3bb46e8..d7d7616ec2 100644 --- a/src/main/java/seedu/duke/CommandInterface.java +++ b/src/main/java/seedu/duke/CommandInterface.java @@ -1,6 +1,8 @@ package seedu.duke; public interface CommandInterface { - public void execute(TopicListInterface topics, StorageInterface storage); - public boolean isExit(); + void execute(TopicListInterface topics, StorageInterface storage); + + boolean isExit(); + } diff --git a/src/main/java/seedu/duke/HintInterface.java b/src/main/java/seedu/duke/HintInterface.java index 136a5e3eaa..b5df90e51f 100644 --- a/src/main/java/seedu/duke/HintInterface.java +++ b/src/main/java/seedu/duke/HintInterface.java @@ -1,5 +1,5 @@ package seedu.duke; public interface HintInterface { - public String getHintDescription(); + String getHintDescription(); } diff --git a/src/main/java/seedu/duke/OptionInterface.java b/src/main/java/seedu/duke/OptionInterface.java index 54586173a2..68a912f974 100644 --- a/src/main/java/seedu/duke/OptionInterface.java +++ b/src/main/java/seedu/duke/OptionInterface.java @@ -1,6 +1,8 @@ package seedu.duke; public interface OptionInterface { - public String getOptionDescription(); - public boolean isCorrectAnswer(); + String getOptionDescription(); + + boolean isCorrectAnswer(); + } diff --git a/src/main/java/seedu/duke/OptionListInterface.java b/src/main/java/seedu/duke/OptionListInterface.java index a4134d912e..12cab3c8d8 100644 --- a/src/main/java/seedu/duke/OptionListInterface.java +++ b/src/main/java/seedu/duke/OptionListInterface.java @@ -3,8 +3,12 @@ import java.util.ArrayList; public interface OptionListInterface { - public ArrayList getOptionList(); - public void addOption(OptionInterface option); - public void deleteOption(OptionInterface option); - public int getOptionCount(); + ArrayList getOptionList(); + + void addOption(OptionInterface option); + + void deleteOption(OptionInterface option); + + int getOptionCount(); + } diff --git a/src/main/java/seedu/duke/ParserInterface.java b/src/main/java/seedu/duke/ParserInterface.java index e878abeb51..7245ed9bbe 100644 --- a/src/main/java/seedu/duke/ParserInterface.java +++ b/src/main/java/seedu/duke/ParserInterface.java @@ -1,5 +1,5 @@ package seedu.duke; public interface ParserInterface { - public CommandInterface parseCommand(String userInput); + CommandInterface parseCommand(String userInput); } diff --git a/src/main/java/seedu/duke/QuestionInterface.java b/src/main/java/seedu/duke/QuestionInterface.java index 4f0046837d..4e62433e1e 100644 --- a/src/main/java/seedu/duke/QuestionInterface.java +++ b/src/main/java/seedu/duke/QuestionInterface.java @@ -1,14 +1,22 @@ package seedu.duke; public interface QuestionInterface { - public String getQuestionDescription(); - public void showOptions(); - public void showHint(); - public boolean hintWasShown(); - public void setHintShown(); - public boolean wasAnsweredCorrectly(); - public void setAsAnsweredCorrectly(); - public boolean wasAttempted(); - public void setAsAttempted(); + String getQuestionDescription(); + + void showOptions(); + + void showHint(); + + boolean hintWasShown(); + + void setHintShown(); + + boolean wasAnsweredCorrectly(); + + void setAsAnsweredCorrectly(); + + boolean wasAttempted(); + + void setAsAttempted(); } diff --git a/src/main/java/seedu/duke/QuestionListInterface.java b/src/main/java/seedu/duke/QuestionListInterface.java index 51b4cfb520..73e7607997 100644 --- a/src/main/java/seedu/duke/QuestionListInterface.java +++ b/src/main/java/seedu/duke/QuestionListInterface.java @@ -3,12 +3,20 @@ import java.util.ArrayList; public interface QuestionListInterface { - public ArrayList getQuestions(); - public ArrayList getNumberOfRandomQuestion(int NumberOfQuestions); - public String addQuestion(QuestionInterface question); - public void deleteQuestion(QuestionInterface question); - public int getQuestionCount(); - public void markQuestionAsAttempted(); - public QuestionInterface getNextQuestion(); - public Boolean allQuestionsAnswered(); + ArrayList getQuestions(); + + ArrayList getNumberOfRandomQuestion(int numberOfQuestions); + + String addQuestion(QuestionInterface question); + + void deleteQuestion(QuestionInterface question); + + int getQuestionCount(); + + void markQuestionAsAttempted(); + + QuestionInterface getNextQuestion(); + + Boolean allQuestionsAnswered(); + } diff --git a/src/main/java/seedu/duke/QuizInterface.java b/src/main/java/seedu/duke/QuizInterface.java index a86cef0095..04f19d0cdb 100644 --- a/src/main/java/seedu/duke/QuizInterface.java +++ b/src/main/java/seedu/duke/QuizInterface.java @@ -1,5 +1,6 @@ package seedu.duke; public interface QuizInterface { - public void startQuiz(); + void startQuiz(); + } diff --git a/src/main/java/seedu/duke/StorageInterface.java b/src/main/java/seedu/duke/StorageInterface.java index b8fec483eb..be3b2e25ff 100644 --- a/src/main/java/seedu/duke/StorageInterface.java +++ b/src/main/java/seedu/duke/StorageInterface.java @@ -3,6 +3,8 @@ import java.util.ArrayList; public interface StorageInterface { - public void save(ArrayList topics); - public ArrayList load(); + void save(ArrayList topics); + + ArrayList load(); + } diff --git a/src/main/java/seedu/duke/TopicInterface.java b/src/main/java/seedu/duke/TopicInterface.java index 5b1ef48f05..b33a59cb95 100644 --- a/src/main/java/seedu/duke/TopicInterface.java +++ b/src/main/java/seedu/duke/TopicInterface.java @@ -1,6 +1,8 @@ package seedu.duke; public interface TopicInterface { - public String getTopic(); - public QuestionListInterface getQuestionList(); + String getTopic(); + + QuestionListInterface getQuestionList(); + } diff --git a/src/main/java/seedu/duke/TopicListInterface.java b/src/main/java/seedu/duke/TopicListInterface.java index 663a2e3348..dd794272f7 100644 --- a/src/main/java/seedu/duke/TopicListInterface.java +++ b/src/main/java/seedu/duke/TopicListInterface.java @@ -3,9 +3,14 @@ import java.util.ArrayList; public interface TopicListInterface { - public ArrayList getTopics(); - public void showTopics(); - public void addTopic(TopicInterface topic); - public void deleteTopic(TopicInterface topic); - public int getTopicCount(); + ArrayList getTopics(); + + void showTopics(); + + void addTopic(TopicInterface topic); + + void deleteTopic(TopicInterface topic); + + int getTopicCount(); + } diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/UiInterface.java index 4d2c1be487..47d70909ed 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/duke/UiInterface.java @@ -1,19 +1,34 @@ package seedu.duke; public interface UiInterface { - public String getInputFromUser(); - public void showToUser(); - public void printGreetMessage(); - public void printExitMessage(); - public void printOption(OptionInterface option); - public void printQuestion(QuestionInterface question); - public void printHint(HintInterface hint); - public void printStartQuizPage(); - public void printEndQuizPage(); - public void printAnswerIsWrong(); - public void printAnswerIsCorrect(); - public void printHelp(); - public void printAbout(); - public void printTextbook(); - public void printError(); + String getInputFromUser(); + + void showToUser(); + + void printGreetMessage(); + + void printExitMessage(); + + void printOption(OptionInterface option); + + void printQuestion(QuestionInterface question); + + void printHint(HintInterface hint); + + void printStartQuizPage(); + + void printEndQuizPage(); + + void printAnswerIsWrong(); + + void printAnswerIsCorrect(); + + void printHelp(); + + void printAbout(); + + void printTextbook(); + + void printError(); + } From a940b269fc238bcda938ff35d49668121cae2f9a Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 5 Oct 2020 23:41:12 +0800 Subject: [PATCH 009/447] Add json-simple dependency to maven --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index b0c5528fb5..e88c19d480 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,8 @@ repositories { dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + // https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple + compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' } test { From 8d5751cc697395e6569fbac5d9ed74060e39063a Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 5 Oct 2020 23:42:48 +0800 Subject: [PATCH 010/447] Add Storage class skeleton with null return for unimplemented classes --- src/main/java/seedu/duke/Storage.java | 116 ++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/main/java/seedu/duke/Storage.java diff --git a/src/main/java/seedu/duke/Storage.java b/src/main/java/seedu/duke/Storage.java new file mode 100644 index 0000000000..00024c86bc --- /dev/null +++ b/src/main/java/seedu/duke/Storage.java @@ -0,0 +1,116 @@ +package seedu.duke; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import static java.util.stream.Collectors.toList; + +public class Storage implements StorageInterface { + private String filePath = new File("").getAbsolutePath(); + private UiInterface ui; + + public Storage(String filePath) { + // Use relative path for Unix systems + String[] filePathSplit = filePath.split("/"); + for (String path: filePathSplit) { + this.filePath += File.separator + path; + } + } + + @Override + public void save(ArrayList topics) { + createFileIfNotExists(); + + // For adding and removing questions for v2 + } + + @Override + public ArrayList load() { + //JSON parser object to parse read file + JSONParser jsonParser = new JSONParser(); + + try { + FileReader reader = new FileReader(filePath); + + //Read JSON file + JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); + + //Iterate over employee array + ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() + .map(topic -> parseToTopicObject((JSONObject) topic)) + .collect(toList()); + + return topicsAsObjects; + + } catch (IOException | ParseException e) { + e.printStackTrace(); + // ui.printError(); + } + + return null; + } + + private static TopicInterface parseToTopicObject(JSONObject topic) { + String topicTitle = (String) topic.get("topic"); + + JSONArray questionsArray = (JSONArray) topic.get("questions"); + ArrayList questionsAsObjects = (ArrayList) questionsArray.stream() + .map(question -> parseToQuestionObject((JSONObject) question)) + .collect(toList()); + + QuestionListInterface questionList = null; + // TODO construct questionList object when class is available + + TopicInterface topicAsObject = null; + // TODO construct topic object when class is available + + return topicAsObject; + } + + private static QuestionInterface parseToQuestionObject(JSONObject question) { + String questionDescription = (String) question.get("description"); + JSONArray optionsArray = (JSONArray) question.get("options"); + ArrayList optionsAsObjects = (ArrayList) optionsArray.stream() + .map(option -> parseToOptionObject((JSONObject) option)) + .collect(toList()); + + OptionListInterface optionList = null; + // TODO construct optionList object when class is available + + String hintDescription = (String) question.get("hint"); + + QuestionInterface questionAsObject = null; + // TODO construct question object when class is available + + return questionAsObject; + } + + private static OptionInterface parseToOptionObject(JSONObject option) { + String optionDescription = (String) option.get("description"); + boolean isCorrectAnswer = (boolean) option.get("correct"); + + OptionInterface optionAsObject = null; + // TODO construct option object when class is available + + return optionAsObject; + } + + private void createFileIfNotExists() { + File f = new File(filePath); + if (!f.exists()) { + f.getParentFile().mkdirs(); + try { + f.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} From e5e0a76919aec9afa0cb7c5f9aa497cd1be78e77 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 5 Oct 2020 23:43:21 +0800 Subject: [PATCH 011/447] Add junit tests for storage load from empty json and example json --- .gitignore | 2 + data/test/empty.json | 0 data/test/example.json | 100 ++++++++++++++++++++++ src/test/java/seedu/duke/StorageTest.java | 26 ++++++ 4 files changed, 128 insertions(+) create mode 100644 data/test/empty.json create mode 100644 data/test/example.json create mode 100644 src/test/java/seedu/duke/StorageTest.java diff --git a/.gitignore b/.gitignore index f69985ef1f..5aca276f4c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT + +/data/main/ \ No newline at end of file diff --git a/data/test/empty.json b/data/test/empty.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/test/example.json b/data/test/example.json new file mode 100644 index 0000000000..8d1f182bb4 --- /dev/null +++ b/data/test/example.json @@ -0,0 +1,100 @@ +[ + { + "topic": "OOP", + "questions": [ + { + "description": "What is encapsulation?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + }, + { + "description": "What is abstraction?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": false + }, + { + "description": "B", + "correct": true + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + }, + { + "topic": "Style", + "questions": [ + { + "description": "How do you name classes?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + }, + { + "description": "What is the appropriate indentation?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": false + }, + { + "description": "B", + "correct": true + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + } +] \ No newline at end of file diff --git a/src/test/java/seedu/duke/StorageTest.java b/src/test/java/seedu/duke/StorageTest.java new file mode 100644 index 0000000000..b93ea4412a --- /dev/null +++ b/src/test/java/seedu/duke/StorageTest.java @@ -0,0 +1,26 @@ +package seedu.duke; + +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertNull; + +class StorageTest { + @Test + public void emptyTest() { + Storage storage = new Storage("data/test/empty.json"); + ArrayList topics = storage.load(); + assertNull(topics); + } + + @Test + public void loadTest() { + Storage storage = new Storage("data/test/example.json"); + ArrayList topics = storage.load(); + + TopicInterface firstTopic = topics.get(0); + assertNull(firstTopic); + // TODO check content in firstTopic when classes are made + } +} From 4541d7791fa682e69bfb18c529b7733b5a9b93d8 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 5 Oct 2020 23:45:46 +0800 Subject: [PATCH 012/447] Move classes to storage package --- src/main/java/seedu/duke/CommandInterface.java | 2 ++ src/main/java/seedu/duke/{ => storage}/Storage.java | 3 ++- src/main/java/seedu/duke/{ => storage}/StorageInterface.java | 4 +++- src/test/java/seedu/duke/StorageTest.java | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) rename src/main/java/seedu/duke/{ => storage}/Storage.java (98%) rename src/main/java/seedu/duke/{ => storage}/StorageInterface.java (71%) diff --git a/src/main/java/seedu/duke/CommandInterface.java b/src/main/java/seedu/duke/CommandInterface.java index d7d7616ec2..e0209d31f7 100644 --- a/src/main/java/seedu/duke/CommandInterface.java +++ b/src/main/java/seedu/duke/CommandInterface.java @@ -1,5 +1,7 @@ package seedu.duke; +import seedu.duke.storage.StorageInterface; + public interface CommandInterface { void execute(TopicListInterface topics, StorageInterface storage); diff --git a/src/main/java/seedu/duke/Storage.java b/src/main/java/seedu/duke/storage/Storage.java similarity index 98% rename from src/main/java/seedu/duke/Storage.java rename to src/main/java/seedu/duke/storage/Storage.java index 00024c86bc..8a9130060b 100644 --- a/src/main/java/seedu/duke/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -1,9 +1,10 @@ -package seedu.duke; +package seedu.duke.storage; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import seedu.duke.*; import java.io.File; import java.io.FileReader; diff --git a/src/main/java/seedu/duke/StorageInterface.java b/src/main/java/seedu/duke/storage/StorageInterface.java similarity index 71% rename from src/main/java/seedu/duke/StorageInterface.java rename to src/main/java/seedu/duke/storage/StorageInterface.java index be3b2e25ff..c405d399eb 100644 --- a/src/main/java/seedu/duke/StorageInterface.java +++ b/src/main/java/seedu/duke/storage/StorageInterface.java @@ -1,4 +1,6 @@ -package seedu.duke; +package seedu.duke.storage; + +import seedu.duke.TopicInterface; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/StorageTest.java b/src/test/java/seedu/duke/StorageTest.java index b93ea4412a..b67c0d2434 100644 --- a/src/test/java/seedu/duke/StorageTest.java +++ b/src/test/java/seedu/duke/StorageTest.java @@ -1,6 +1,7 @@ package seedu.duke; import org.junit.jupiter.api.Test; +import seedu.duke.storage.Storage; import java.util.ArrayList; From 1ca06d41cdc91baa55be4b5e382176d07b0e0828 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 5 Oct 2020 23:53:54 +0800 Subject: [PATCH 013/447] Replace wild card import with single class imports --- src/main/java/seedu/duke/storage/Storage.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index 8a9130060b..c8ed8a4d42 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -4,7 +4,13 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import seedu.duke.*; + +import seedu.duke.OptionInterface; +import seedu.duke.OptionListInterface; +import seedu.duke.QuestionInterface; +import seedu.duke.QuestionListInterface; +import seedu.duke.TopicInterface; +import seedu.duke.UiInterface; import java.io.File; import java.io.FileReader; From ed93d61823eeb08901d028b2ad45b0ab60946e14 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Tue, 6 Oct 2020 15:01:02 +0800 Subject: [PATCH 014/447] Add Option Class --- docs/AboutUs.md | 2 +- src/main/java/seedu/duke/option/Option.java | 20 +++++++++++++++++++ .../duke/{ => option}/OptionInterface.java | 2 +- .../java/seedu/duke/option/OptionList.java | 2 ++ .../{ => option}/OptionListInterface.java | 0 src/main/java/seedu/duke/storage/Storage.java | 4 ++-- 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/main/java/seedu/duke/option/Option.java rename src/main/java/seedu/duke/{ => option}/OptionInterface.java (79%) create mode 100644 src/main/java/seedu/duke/option/OptionList.java rename src/main/java/seedu/duke/{ => option}/OptionListInterface.java (100%) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 5a5a3a9266..3cd4be5f77 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -4,6 +4,6 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: ![](https://via.placeholder.com/100.png?text=Photo) | Tang Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | An Qi | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +![](https://via.placeholder.com/100.png?text=Photo) | Lim An Qi | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Joel Ng | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) ![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java new file mode 100644 index 0000000000..066008658d --- /dev/null +++ b/src/main/java/seedu/duke/option/Option.java @@ -0,0 +1,20 @@ +package seedu.duke.option; + +public class Option implements OptionInterface { + private String optionDescription; + private boolean isCorrectAnswer; + + public Option(String description){ + this.optionDescription = description; + this.isCorrectAnswer = false; + } + + public String getOptionDescription() { + return optionDescription; + } + + public boolean isCorrectAnswer() { + return isCorrectAnswer; + } + +} diff --git a/src/main/java/seedu/duke/OptionInterface.java b/src/main/java/seedu/duke/option/OptionInterface.java similarity index 79% rename from src/main/java/seedu/duke/OptionInterface.java rename to src/main/java/seedu/duke/option/OptionInterface.java index 68a912f974..380d965ac5 100644 --- a/src/main/java/seedu/duke/OptionInterface.java +++ b/src/main/java/seedu/duke/option/OptionInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.duke.option; public interface OptionInterface { String getOptionDescription(); diff --git a/src/main/java/seedu/duke/option/OptionList.java b/src/main/java/seedu/duke/option/OptionList.java new file mode 100644 index 0000000000..7e5f6118da --- /dev/null +++ b/src/main/java/seedu/duke/option/OptionList.java @@ -0,0 +1,2 @@ +package seedu.duke.option;public class OptionList { +} diff --git a/src/main/java/seedu/duke/OptionListInterface.java b/src/main/java/seedu/duke/option/OptionListInterface.java similarity index 100% rename from src/main/java/seedu/duke/OptionListInterface.java rename to src/main/java/seedu/duke/option/OptionListInterface.java diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index c8ed8a4d42..4f60d33f4a 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -5,8 +5,8 @@ import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import seedu.duke.OptionInterface; -import seedu.duke.OptionListInterface; +import seedu.duke.option.OptionInterface; +import seedu.duke.option.OptionListInterface; import seedu.duke.QuestionInterface; import seedu.duke.QuestionListInterface; import seedu.duke.TopicInterface; From da6664ab053546afa341878551fd00397a1b327e Mon Sep 17 00:00:00 2001 From: anqi20 Date: Tue, 6 Oct 2020 15:07:48 +0800 Subject: [PATCH 015/447] Amended Option Class, markAsCorrectAnswer() --- src/main/java/seedu/duke/option/Option.java | 3 +++ src/main/java/seedu/duke/option/OptionInterface.java | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java index 066008658d..ebf2a38f8d 100644 --- a/src/main/java/seedu/duke/option/Option.java +++ b/src/main/java/seedu/duke/option/Option.java @@ -17,4 +17,7 @@ public boolean isCorrectAnswer() { return isCorrectAnswer; } + public void markAsCorrectAnswer() { + this.isCorrectAnswer = true; + } } diff --git a/src/main/java/seedu/duke/option/OptionInterface.java b/src/main/java/seedu/duke/option/OptionInterface.java index 380d965ac5..07c11f1c84 100644 --- a/src/main/java/seedu/duke/option/OptionInterface.java +++ b/src/main/java/seedu/duke/option/OptionInterface.java @@ -5,4 +5,5 @@ public interface OptionInterface { boolean isCorrectAnswer(); + void markAsCorrectAnswer(); } From 966b9b4cf3f5cb9b6f17989834bb2c8e4f5a6c59 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Tue, 6 Oct 2020 15:38:22 +0800 Subject: [PATCH 016/447] Added OptionList class --- .../seedu/duke/option/OptionInterface.java | 2 +- .../java/seedu/duke/option/OptionList.java | 37 ++++++++++++++++++- .../duke/option/OptionListInterface.java | 2 +- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/option/OptionInterface.java b/src/main/java/seedu/duke/option/OptionInterface.java index 07c11f1c84..b5fbd4070d 100644 --- a/src/main/java/seedu/duke/option/OptionInterface.java +++ b/src/main/java/seedu/duke/option/OptionInterface.java @@ -5,5 +5,5 @@ public interface OptionInterface { boolean isCorrectAnswer(); - void markAsCorrectAnswer(); + void markAsCorrectAnswer(); } diff --git a/src/main/java/seedu/duke/option/OptionList.java b/src/main/java/seedu/duke/option/OptionList.java index 7e5f6118da..75dd397bfb 100644 --- a/src/main/java/seedu/duke/option/OptionList.java +++ b/src/main/java/seedu/duke/option/OptionList.java @@ -1,2 +1,37 @@ -package seedu.duke.option;public class OptionList { +package seedu.duke.option; + +import java.util.ArrayList; + +public class OptionList implements OptionListInterface { + private final ArrayList optionList; + private int optionCount; + + public OptionList() { + optionList = new ArrayList<>(); + this.optionCount = 0; + } + + public OptionList(ArrayList optionList) { + this.optionList = optionList; + this.optionCount = 0; + } + + public void addOption(OptionInterface option) { + optionList.add(option); + this.optionCount++; + } + + public void deleteOption(OptionInterface option) { + optionList.remove(option); + this.optionCount--; + } + + public ArrayList getOptionList() { + return this.optionList; + } + + public int getOptionCount() { + return this.optionCount; + } + } diff --git a/src/main/java/seedu/duke/option/OptionListInterface.java b/src/main/java/seedu/duke/option/OptionListInterface.java index 12cab3c8d8..638767b31f 100644 --- a/src/main/java/seedu/duke/option/OptionListInterface.java +++ b/src/main/java/seedu/duke/option/OptionListInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.duke.option; import java.util.ArrayList; From 7233ec4a35b256ede321f06e3f9108958504b3f4 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 6 Oct 2020 23:43:06 +0800 Subject: [PATCH 017/447] Add Question class --- .../java/seedu/duke/QuestionInterface.java | 22 ------ src/main/java/seedu/duke/TopicInterface.java | 2 + src/main/java/seedu/duke/UiInterface.java | 2 + .../java/seedu/duke/question/Question.java | 78 +++++++++++++++++++ .../duke/question/QuestionInterface.java | 31 ++++++++ .../{ => question}/QuestionListInterface.java | 2 +- src/main/java/seedu/duke/storage/Storage.java | 4 +- 7 files changed, 116 insertions(+), 25 deletions(-) delete mode 100644 src/main/java/seedu/duke/QuestionInterface.java create mode 100644 src/main/java/seedu/duke/question/Question.java create mode 100644 src/main/java/seedu/duke/question/QuestionInterface.java rename src/main/java/seedu/duke/{ => question}/QuestionListInterface.java (94%) diff --git a/src/main/java/seedu/duke/QuestionInterface.java b/src/main/java/seedu/duke/QuestionInterface.java deleted file mode 100644 index 4e62433e1e..0000000000 --- a/src/main/java/seedu/duke/QuestionInterface.java +++ /dev/null @@ -1,22 +0,0 @@ -package seedu.duke; - -public interface QuestionInterface { - String getQuestionDescription(); - - void showOptions(); - - void showHint(); - - boolean hintWasShown(); - - void setHintShown(); - - boolean wasAnsweredCorrectly(); - - void setAsAnsweredCorrectly(); - - boolean wasAttempted(); - - void setAsAttempted(); - -} diff --git a/src/main/java/seedu/duke/TopicInterface.java b/src/main/java/seedu/duke/TopicInterface.java index b33a59cb95..baeb1691c0 100644 --- a/src/main/java/seedu/duke/TopicInterface.java +++ b/src/main/java/seedu/duke/TopicInterface.java @@ -1,5 +1,7 @@ package seedu.duke; +import seedu.duke.question.QuestionListInterface; + public interface TopicInterface { String getTopic(); diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/UiInterface.java index 47d70909ed..5cadd00866 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/duke/UiInterface.java @@ -1,5 +1,7 @@ package seedu.duke; +import seedu.duke.question.QuestionInterface; + public interface UiInterface { String getInputFromUser(); diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/duke/question/Question.java new file mode 100644 index 0000000000..fa493dd6df --- /dev/null +++ b/src/main/java/seedu/duke/question/Question.java @@ -0,0 +1,78 @@ +package seedu.duke.question; + +import seedu.duke.HintInterface; +import seedu.duke.OptionInterface; +import seedu.duke.OptionListInterface; + +import java.util.ArrayList; + +public class Question implements QuestionInterface { + + // might want to change all the interface classes to just the classes themselves + + private String description; + private OptionListInterface options; + private HintInterface hint; + private boolean wasHintShown; + private boolean wasAnsweredCorrectly; + private boolean wasAttempted; + + public Question(String description, OptionListInterface options, HintInterface hint) { + this.description = description; + this.options = options; + this.hint = hint; + wasHintShown = false; + wasAnsweredCorrectly = false; + wasAttempted = false; + } + + /** + * Returns the description of the question. + * + * @return Question information. + */ + @Override + public String getQuestionDescription() { + return description; + } + + @Override + public ArrayList getOptions() { + return options.getOptionList(); + } + + @Override + public String getHint() { + return hint.getHintDescription(); + } + + @Override + public boolean hintWasShown() { + return wasHintShown; + } + + @Override + public void setHintShown() { + wasHintShown = true; + } + + @Override + public boolean wasAnsweredCorrectly() { + return wasAnsweredCorrectly; + } + + @Override + public void setAsAnsweredCorrectly() { + wasAnsweredCorrectly = true; + } + + @Override + public boolean wasAttempted() { + return wasAttempted; + } + + @Override + public void setAsAttempted() { + wasAttempted = true; + } +} diff --git a/src/main/java/seedu/duke/question/QuestionInterface.java b/src/main/java/seedu/duke/question/QuestionInterface.java new file mode 100644 index 0000000000..abfc051957 --- /dev/null +++ b/src/main/java/seedu/duke/question/QuestionInterface.java @@ -0,0 +1,31 @@ +package seedu.duke.question; + +import seedu.duke.HintInterface; +import seedu.duke.OptionInterface; +import seedu.duke.OptionListInterface; + +import java.util.ArrayList; + +public interface QuestionInterface { + + // might want to change all the interface classes to just the classes themselves + + String getQuestionDescription(); + + ArrayList getOptions(); + + String getHint(); + + boolean hintWasShown(); + + void setHintShown(); + + boolean wasAnsweredCorrectly(); + + void setAsAnsweredCorrectly(); + + boolean wasAttempted(); + + void setAsAttempted(); + +} diff --git a/src/main/java/seedu/duke/QuestionListInterface.java b/src/main/java/seedu/duke/question/QuestionListInterface.java similarity index 94% rename from src/main/java/seedu/duke/QuestionListInterface.java rename to src/main/java/seedu/duke/question/QuestionListInterface.java index 73e7607997..cf65771bd7 100644 --- a/src/main/java/seedu/duke/QuestionListInterface.java +++ b/src/main/java/seedu/duke/question/QuestionListInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.duke.question; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index c8ed8a4d42..4f0a9831a0 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -7,8 +7,8 @@ import seedu.duke.OptionInterface; import seedu.duke.OptionListInterface; -import seedu.duke.QuestionInterface; -import seedu.duke.QuestionListInterface; +import seedu.duke.question.QuestionInterface; +import seedu.duke.question.QuestionListInterface; import seedu.duke.TopicInterface; import seedu.duke.UiInterface; From d6d3ace9cf7ab4a60eae0c5e353b68a31526e606 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 01:00:09 +0800 Subject: [PATCH 018/447] Add QuestionList class --- .../seedu/duke/question/QuestionList.java | 75 +++++++++++++++++++ .../duke/question/QuestionListInterface.java | 8 +- 2 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 src/main/java/seedu/duke/question/QuestionList.java diff --git a/src/main/java/seedu/duke/question/QuestionList.java b/src/main/java/seedu/duke/question/QuestionList.java new file mode 100644 index 0000000000..29f498b953 --- /dev/null +++ b/src/main/java/seedu/duke/question/QuestionList.java @@ -0,0 +1,75 @@ +package seedu.duke.question; + +import java.util.ArrayList; +import java.util.Random; + +public class QuestionList implements QuestionListInterface { + private ArrayList questions; + private ArrayList questionsForQuiz; + private int questionsAnswered; + + private static final Random RANDOM = new Random(); + + public QuestionList(ArrayList loadedQuestions) { + questions = loadedQuestions; + questionsForQuiz = null; + questionsAnswered = 0; + } + + + @Override + public ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz) { + int numberOfQuestionsSelected = 0; + ArrayList integersChosen = new ArrayList<>(); + + while (numberOfQuestionsSelected < numberOfQuestionsForQuiz) { + // get a random question that is within the bounds of the size of the available question list + int randomQuestionIndex = RANDOM.nextInt(questions.size() - 1); + + // if the number is already selected - the question is already selected, we re run the loop + // to select another random number + if (integersChosen.contains(randomQuestionIndex)) { + continue; + } + + // choose a random question from the question list and add it to the questions for quiz + questionsForQuiz.add(questions.get(randomQuestionIndex)); + numberOfQuestionsSelected++; + integersChosen.add(randomQuestionIndex); + } + + return questionsForQuiz; + } + + + @Override + public int getQuestionCount() { + return questionsForQuiz.size(); + } + + // should throw indexOutOfBounds exception as even though we might + // do a check in the program that calls this method, we still need the exception + // in case anything happens + @Override + public void markQuestionAsAttempted() { + // mark the current question as attempted if method is called in the Quiz class + questionsForQuiz.get(questionsAnswered).setAsAttempted(); + // the last increment will make it be the same as the number of questions there are + // for instance, if there are 5 questions, the last call of this method will set the + // question at index 4 to be attempted, and will increment the variable questionsAnswered + // to 5, while not running again, since no more questions left. + questionsAnswered++; + } + + @Override + public QuestionInterface getNextQuestion() { + // will be called after markQuestionAsAttempted(), so naturally the + // questionsAnswered would have incremented + return questionsForQuiz.get(questionsAnswered); + } + + @Override + public Boolean allQuestionsAnswered() { + return questionsAnswered == questionsForQuiz.size(); + } +} diff --git a/src/main/java/seedu/duke/question/QuestionListInterface.java b/src/main/java/seedu/duke/question/QuestionListInterface.java index cf65771bd7..e20027324c 100644 --- a/src/main/java/seedu/duke/question/QuestionListInterface.java +++ b/src/main/java/seedu/duke/question/QuestionListInterface.java @@ -3,13 +3,13 @@ import java.util.ArrayList; public interface QuestionListInterface { - ArrayList getQuestions(); + // ArrayList getQuestions(); - ArrayList getNumberOfRandomQuestion(int numberOfQuestions); + ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz); - String addQuestion(QuestionInterface question); + // String addQuestion(QuestionInterface question); - void deleteQuestion(QuestionInterface question); + // void deleteQuestion(QuestionInterface question); int getQuestionCount(); From d9b00de3fd8a772290f292e5720315176e9161f3 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 01:06:41 +0800 Subject: [PATCH 019/447] Tweak code to use interfaces as reference instead of classes directly --- src/main/java/seedu/duke/question/Question.java | 3 --- src/main/java/seedu/duke/question/QuestionInterface.java | 2 -- src/main/java/seedu/duke/question/QuestionList.java | 8 ++++---- .../java/seedu/duke/question/QuestionListInterface.java | 2 +- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/duke/question/Question.java index fa493dd6df..e2029ecb75 100644 --- a/src/main/java/seedu/duke/question/Question.java +++ b/src/main/java/seedu/duke/question/Question.java @@ -7,9 +7,6 @@ import java.util.ArrayList; public class Question implements QuestionInterface { - - // might want to change all the interface classes to just the classes themselves - private String description; private OptionListInterface options; private HintInterface hint; diff --git a/src/main/java/seedu/duke/question/QuestionInterface.java b/src/main/java/seedu/duke/question/QuestionInterface.java index abfc051957..074186defe 100644 --- a/src/main/java/seedu/duke/question/QuestionInterface.java +++ b/src/main/java/seedu/duke/question/QuestionInterface.java @@ -8,8 +8,6 @@ public interface QuestionInterface { - // might want to change all the interface classes to just the classes themselves - String getQuestionDescription(); ArrayList getOptions(); diff --git a/src/main/java/seedu/duke/question/QuestionList.java b/src/main/java/seedu/duke/question/QuestionList.java index 29f498b953..14b97e5e5c 100644 --- a/src/main/java/seedu/duke/question/QuestionList.java +++ b/src/main/java/seedu/duke/question/QuestionList.java @@ -4,13 +4,13 @@ import java.util.Random; public class QuestionList implements QuestionListInterface { - private ArrayList questions; - private ArrayList questionsForQuiz; + private ArrayList questions; + private ArrayList questionsForQuiz; private int questionsAnswered; private static final Random RANDOM = new Random(); - public QuestionList(ArrayList loadedQuestions) { + public QuestionList(ArrayList loadedQuestions) { questions = loadedQuestions; questionsForQuiz = null; questionsAnswered = 0; @@ -18,7 +18,7 @@ public QuestionList(ArrayList loadedQuestions) { @Override - public ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz) { + public ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz) { int numberOfQuestionsSelected = 0; ArrayList integersChosen = new ArrayList<>(); diff --git a/src/main/java/seedu/duke/question/QuestionListInterface.java b/src/main/java/seedu/duke/question/QuestionListInterface.java index e20027324c..9d9033a4f2 100644 --- a/src/main/java/seedu/duke/question/QuestionListInterface.java +++ b/src/main/java/seedu/duke/question/QuestionListInterface.java @@ -5,7 +5,7 @@ public interface QuestionListInterface { // ArrayList getQuestions(); - ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz); + ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz); // String addQuestion(QuestionInterface question); From 7b842dd3601064fee425e56d07457b9e6fe3e2ef Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 01:15:37 +0800 Subject: [PATCH 020/447] Updated UI --- src/main/java/seedu/duke/storage/Storage.java | 2 +- src/main/java/seedu/duke/ui/Ui.java | 139 ++++++++++++++++++ .../java/seedu/duke/{ => ui}/UiInterface.java | 14 +- 3 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 src/main/java/seedu/duke/ui/Ui.java rename src/main/java/seedu/duke/{ => ui}/UiInterface.java (51%) diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index 4f60d33f4a..7ebc64041c 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -10,7 +10,7 @@ import seedu.duke.QuestionInterface; import seedu.duke.QuestionListInterface; import seedu.duke.TopicInterface; -import seedu.duke.UiInterface; +import seedu.duke.ui.UiInterface; import java.io.File; import java.io.FileReader; diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java new file mode 100644 index 0000000000..768ce35e65 --- /dev/null +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -0,0 +1,139 @@ +package seedu.duke.ui; + +import seedu.duke.HintInterface; +import seedu.duke.QuestionInterface; +import seedu.duke.option.OptionInterface; + +import java.util.Scanner; + +public class Ui implements UiInterface { + + + private static final int LAST_OPTION = 4; + private static final String TEXTBOOK_WEBSITE = + "https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html"; + + private static final String LOGO = " _____ _____\n" + + "| ___| ____ | _ |\n" + + "| |___ | _ \\| |_| |\n" + + "| ___|| | | | _ |\n" + + "| |___ | |_| | |_| |\n" + + "|_____||____/|_____|\n"; + + private static final Scanner SCANNER = new Scanner(System.in); + private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; + private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " + + "understand software engineering and OOP principles through a gamified platform and enhance their " + + "learning experience. It also consolidates key concepts for easy revision. "; + private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\n What can I do for you?"; + private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; + private static final String MESSAGE_HELP = "These are the commands that you can used:"; + private static final String MESSAGE_COMMANDS = "1) about\n2) help\n3) topics\n4) textbook\n5) quiz\n6) stats\n" + + "7) exit"; + private static final String MESSAGE_QUIZ_START = "Start of quiz:"; + private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!\nHope you have learnt something new!"; + private static final String MESSAGE_ANSWER_WRONG = "Oops! Please try again! Do visit the textbook to read up more."; + private static final String MESSAGE_ANSWER_CORRECT = "Congrats! This answer is correct! Well Done!"; + private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at: " + TEXTBOOK_WEBSITE; + + + public String getInputFromUser() { + return SCANNER.nextLine(); + } + + private static void printMessage(String message) { + System.out.println(HORIZONTAL_LINE); + System.out.println(message); + System.out.println(HORIZONTAL_LINE); + } + + public void printGreetMessage(){ + printMessage(MESSAGE_GREETINGS); + } + + public void printExitMessage() { + printMessage(MESSAGE_EXIT); + } + + public void printOption(OptionInterface option, int optionNumber) { + System.out.println(optionNumber + ") " + option.getOptionDescription()); + if(optionNumber == LAST_OPTION) { + System.out.println(HORIZONTAL_LINE); + } + } + + public void printQuestion(QuestionInterface question, int questionNumber) { + System.out.println(HORIZONTAL_LINE); + System.out.println(questionNumber + ". " + question.getQuestionDescription()); + } + + public void printHint(HintInterface hint) { + System.out.println("Hint: " + hint); + } + + //Formatting of topicsChosen: separated by "," + public void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen) { + System.out.println(HORIZONTAL_LINE); + System.out.println(MESSAGE_QUIZ_START); + + //Showing the number of questions chosen by user + printStartQuizQuestions(numberOfQuestionsChosen); + + //Showing the topics chosen by user + printStartQuizTopics(topicsChosen); + + System.out.println(HORIZONTAL_LINE); + } + + public void printEndQuizPage() { + printMessage(MESSAGE_QUIZ_END); + } + + public void printAnswerIsWrong() { + printMessage(MESSAGE_ANSWER_WRONG); + } + + public void printAnswerIsCorrect() { + printMessage(MESSAGE_ANSWER_CORRECT); + } + + //Shows list of commands that can be used. + public void printHelp() { + printMessage(MESSAGE_HELP); + printMessage(MESSAGE_COMMANDS); + } + + public void printAbout() { + printMessage(MESSAGE_ABOUT); + } + + public void printTextbook() { + printMessage(MESSAGE_TEXTBOOK); + } + + public void printError() { + //Writing messages for the different errors + //Completed when more error handling are done + } + + private void printStartQuizTopics(String topicsChosen) { + if(topicsChosen.contains(",")) { + int indexOfSplit = topicsChosen.indexOf(","); + String topics1 = topicsChosen.substring(0, indexOfSplit).trim(); + String topics2 = topicsChosen.substring(indexOfSplit+1).trim(); + System.out.println("The topics chosen are: " + topics1 + " and " + topics2); + } else { + System.out.println("The topic chosen is: " + topicsChosen); + } + } + + private void printStartQuizQuestions(int numberOfQuestionsChosen) { + System.out.println("You have chosen to complete "+ numberOfQuestionsChosen + "question"); + if (numberOfQuestionsChosen < 2) { + System.out.println("."); + } else { + System.out.println("s."); + } + } + +} diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/ui/UiInterface.java similarity index 51% rename from src/main/java/seedu/duke/UiInterface.java rename to src/main/java/seedu/duke/ui/UiInterface.java index 47d70909ed..11b8506aff 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/duke/ui/UiInterface.java @@ -1,21 +1,23 @@ -package seedu.duke; +package seedu.duke.ui; + +import seedu.duke.HintInterface; +import seedu.duke.QuestionInterface; +import seedu.duke.option.OptionInterface; public interface UiInterface { String getInputFromUser(); - void showToUser(); - void printGreetMessage(); void printExitMessage(); - void printOption(OptionInterface option); + void printOption(OptionInterface option, int optionNumber); - void printQuestion(QuestionInterface question); + void printQuestion(QuestionInterface question, int questionNumber); void printHint(HintInterface hint); - void printStartQuizPage(); + void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen); void printEndQuizPage(); From 9a80027558cff39c40d4de85136f7c334a0ad8f2 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 01:15:58 +0800 Subject: [PATCH 021/447] Add Hint class --- src/main/java/seedu/duke/UiInterface.java | 1 + src/main/java/seedu/duke/hint/Hint.java | 14 ++++++++++++++ .../java/seedu/duke/{ => hint}/HintInterface.java | 2 +- src/main/java/seedu/duke/question/Question.java | 2 +- .../seedu/duke/question/QuestionInterface.java | 2 -- 5 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/main/java/seedu/duke/hint/Hint.java rename src/main/java/seedu/duke/{ => hint}/HintInterface.java (73%) diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/UiInterface.java index 5cadd00866..8138fc375b 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/duke/UiInterface.java @@ -1,5 +1,6 @@ package seedu.duke; +import seedu.duke.hint.HintInterface; import seedu.duke.question.QuestionInterface; public interface UiInterface { diff --git a/src/main/java/seedu/duke/hint/Hint.java b/src/main/java/seedu/duke/hint/Hint.java new file mode 100644 index 0000000000..32818000a5 --- /dev/null +++ b/src/main/java/seedu/duke/hint/Hint.java @@ -0,0 +1,14 @@ +package seedu.duke.hint; + +public class Hint implements HintInterface { + private String description; + + public Hint(String description) { + this.description = description; + } + + @Override + public String getHintDescription() { + return description; + } +} diff --git a/src/main/java/seedu/duke/HintInterface.java b/src/main/java/seedu/duke/hint/HintInterface.java similarity index 73% rename from src/main/java/seedu/duke/HintInterface.java rename to src/main/java/seedu/duke/hint/HintInterface.java index b5df90e51f..463baa780f 100644 --- a/src/main/java/seedu/duke/HintInterface.java +++ b/src/main/java/seedu/duke/hint/HintInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.duke.hint; public interface HintInterface { String getHintDescription(); diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/duke/question/Question.java index e2029ecb75..406e0d73b6 100644 --- a/src/main/java/seedu/duke/question/Question.java +++ b/src/main/java/seedu/duke/question/Question.java @@ -1,6 +1,6 @@ package seedu.duke.question; -import seedu.duke.HintInterface; +import seedu.duke.hint.HintInterface; import seedu.duke.OptionInterface; import seedu.duke.OptionListInterface; diff --git a/src/main/java/seedu/duke/question/QuestionInterface.java b/src/main/java/seedu/duke/question/QuestionInterface.java index 074186defe..f9b370e33c 100644 --- a/src/main/java/seedu/duke/question/QuestionInterface.java +++ b/src/main/java/seedu/duke/question/QuestionInterface.java @@ -1,8 +1,6 @@ package seedu.duke.question; -import seedu.duke.HintInterface; import seedu.duke.OptionInterface; -import seedu.duke.OptionListInterface; import java.util.ArrayList; From f5028ba4b4d7cd8acbf2e8272cccd234845c0a2f Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 01:45:22 +0800 Subject: [PATCH 022/447] Add JUnit test for Hint class Added test case for getHintDescription method --- .../seedu/duke/question/QuestionList.java | 21 ++++++++++--------- src/test/java/seedu/duke/hint/HintTest.java | 16 ++++++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 src/test/java/seedu/duke/hint/HintTest.java diff --git a/src/main/java/seedu/duke/question/QuestionList.java b/src/main/java/seedu/duke/question/QuestionList.java index 14b97e5e5c..eb1ff04c27 100644 --- a/src/main/java/seedu/duke/question/QuestionList.java +++ b/src/main/java/seedu/duke/question/QuestionList.java @@ -4,27 +4,28 @@ import java.util.Random; public class QuestionList implements QuestionListInterface { - private ArrayList questions; + private ArrayList allQuestions; private ArrayList questionsForQuiz; - private int questionsAnswered; + private int numberOfQuestionsAnswered; private static final Random RANDOM = new Random(); public QuestionList(ArrayList loadedQuestions) { - questions = loadedQuestions; + allQuestions = loadedQuestions; questionsForQuiz = null; - questionsAnswered = 0; + numberOfQuestionsAnswered = 0; } @Override public ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz) { int numberOfQuestionsSelected = 0; + // prevent repeated questions from being selected again ArrayList integersChosen = new ArrayList<>(); while (numberOfQuestionsSelected < numberOfQuestionsForQuiz) { // get a random question that is within the bounds of the size of the available question list - int randomQuestionIndex = RANDOM.nextInt(questions.size() - 1); + int randomQuestionIndex = RANDOM.nextInt(allQuestions.size() - 1); // if the number is already selected - the question is already selected, we re run the loop // to select another random number @@ -33,7 +34,7 @@ public ArrayList getChosenNumberOfRandomQuestion(int numberOf } // choose a random question from the question list and add it to the questions for quiz - questionsForQuiz.add(questions.get(randomQuestionIndex)); + questionsForQuiz.add(allQuestions.get(randomQuestionIndex)); numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } @@ -53,23 +54,23 @@ public int getQuestionCount() { @Override public void markQuestionAsAttempted() { // mark the current question as attempted if method is called in the Quiz class - questionsForQuiz.get(questionsAnswered).setAsAttempted(); + questionsForQuiz.get(numberOfQuestionsAnswered).setAsAttempted(); // the last increment will make it be the same as the number of questions there are // for instance, if there are 5 questions, the last call of this method will set the // question at index 4 to be attempted, and will increment the variable questionsAnswered // to 5, while not running again, since no more questions left. - questionsAnswered++; + numberOfQuestionsAnswered++; } @Override public QuestionInterface getNextQuestion() { // will be called after markQuestionAsAttempted(), so naturally the // questionsAnswered would have incremented - return questionsForQuiz.get(questionsAnswered); + return questionsForQuiz.get(numberOfQuestionsAnswered); } @Override public Boolean allQuestionsAnswered() { - return questionsAnswered == questionsForQuiz.size(); + return numberOfQuestionsAnswered == questionsForQuiz.size(); } } diff --git a/src/test/java/seedu/duke/hint/HintTest.java b/src/test/java/seedu/duke/hint/HintTest.java new file mode 100644 index 0000000000..089788bf37 --- /dev/null +++ b/src/test/java/seedu/duke/hint/HintTest.java @@ -0,0 +1,16 @@ +package seedu.duke.hint; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class HintTest { + + @Test + void getHintDescription_hintDescription_returnsHintDescription() { + String inputHintDescription = "Please check the textbook page 88"; + Hint hint = new Hint(inputHintDescription); + + assertEquals(inputHintDescription, hint.getHintDescription()); + } +} \ No newline at end of file From 130a8f14085594c29c742910832e364a981d0f1c Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 02:21:33 +0800 Subject: [PATCH 023/447] Add javaDoc comments to Question class --- .../java/seedu/duke/question/Question.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/duke/question/Question.java index 406e0d73b6..9502e3b4c9 100644 --- a/src/main/java/seedu/duke/question/Question.java +++ b/src/main/java/seedu/duke/question/Question.java @@ -6,6 +6,10 @@ import java.util.ArrayList; +/** + * Represents a question of a certain topic. A Question object is represented by + * its description, options and hint. + */ public class Question implements QuestionInterface { private String description; private OptionListInterface options; @@ -33,26 +37,47 @@ public String getQuestionDescription() { return description; } + /** + * Returns the multiple options of the question. + * + * @return An arraylist of options. + */ @Override public ArrayList getOptions() { return options.getOptionList(); } + /** + * Returns the description of the hint tied to the question. + * + * @return Details of the hint. + */ @Override public String getHint() { return hint.getHintDescription(); } + /** + * Returns the description of the question. + * + * @return Question information. + */ @Override public boolean hintWasShown() { return wasHintShown; } + @Override public void setHintShown() { wasHintShown = true; } + /** + * Returns a boolean variable indicating if the question was answered correctly. + * + * @return True if question was answered correctly, false otherwise. + */ @Override public boolean wasAnsweredCorrectly() { return wasAnsweredCorrectly; @@ -63,11 +88,17 @@ public void setAsAnsweredCorrectly() { wasAnsweredCorrectly = true; } + /** + * Returns a boolean variable indicating if the question was already attempted before. + * + * @return Indication of whether the question was attempted before or not. + */ @Override public boolean wasAttempted() { return wasAttempted; } + @Override public void setAsAttempted() { wasAttempted = true; From 7d6cf5a7b412828a4248f6f400e72819a4bfecae Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 12:56:04 +0800 Subject: [PATCH 024/447] Updated UI so that it complies with the CheckStyle --- src/main/java/seedu/duke/ui/Ui.java | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index 768ce35e65..849656fd0b 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -22,14 +22,14 @@ public class Ui implements UiInterface { private static final Scanner SCANNER = new Scanner(System.in); private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; - private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " + - "understand software engineering and OOP principles through a gamified platform and enhance their " + - "learning experience. It also consolidates key concepts for easy revision. "; + private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " + + "understand software engineering and OOP principles through a gamified platform and enhance their " + + "learning experience. It also consolidates key concepts for easy revision. "; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\n What can I do for you?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can used:"; - private static final String MESSAGE_COMMANDS = "1) about\n2) help\n3) topics\n4) textbook\n5) quiz\n6) stats\n" + - "7) exit"; + private static final String MESSAGE_COMMANDS = "1) about\n2) help\n3) topics\n4) textbook\n5) quiz\n6) stats\n" + + "7) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!\nHope you have learnt something new!"; private static final String MESSAGE_ANSWER_WRONG = "Oops! Please try again! Do visit the textbook to read up more."; @@ -47,7 +47,8 @@ private static void printMessage(String message) { System.out.println(HORIZONTAL_LINE); } - public void printGreetMessage(){ + public void printGreetMessage() { + System.out.println(LOGO); printMessage(MESSAGE_GREETINGS); } @@ -57,7 +58,7 @@ public void printExitMessage() { public void printOption(OptionInterface option, int optionNumber) { System.out.println(optionNumber + ") " + option.getOptionDescription()); - if(optionNumber == LAST_OPTION) { + if (optionNumber == LAST_OPTION) { System.out.println(HORIZONTAL_LINE); } } @@ -117,10 +118,10 @@ public void printError() { } private void printStartQuizTopics(String topicsChosen) { - if(topicsChosen.contains(",")) { + if (topicsChosen.contains(",")) { int indexOfSplit = topicsChosen.indexOf(","); String topics1 = topicsChosen.substring(0, indexOfSplit).trim(); - String topics2 = topicsChosen.substring(indexOfSplit+1).trim(); + String topics2 = topicsChosen.substring(indexOfSplit + 1).trim(); System.out.println("The topics chosen are: " + topics1 + " and " + topics2); } else { System.out.println("The topic chosen is: " + topicsChosen); @@ -128,7 +129,7 @@ private void printStartQuizTopics(String topicsChosen) { } private void printStartQuizQuestions(int numberOfQuestionsChosen) { - System.out.println("You have chosen to complete "+ numberOfQuestionsChosen + "question"); + System.out.println("You have chosen to complete " + numberOfQuestionsChosen + "question"); if (numberOfQuestionsChosen < 2) { System.out.println("."); } else { From 02d55e54144c3360e544f064c1a7816556667de0 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 12:57:13 +0800 Subject: [PATCH 025/447] Updated Option Class so that it complies with CheckStyle --- src/main/java/seedu/duke/option/Option.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java index ebf2a38f8d..239e006d61 100644 --- a/src/main/java/seedu/duke/option/Option.java +++ b/src/main/java/seedu/duke/option/Option.java @@ -4,7 +4,7 @@ public class Option implements OptionInterface { private String optionDescription; private boolean isCorrectAnswer; - public Option(String description){ + public Option(String description) { this.optionDescription = description; this.isCorrectAnswer = false; } From 47f4bad88249050a503bd506afad007317479a55 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 13:24:29 +0800 Subject: [PATCH 026/447] Updated to compile with CheckStyle --- src/main/java/seedu/duke/option/Option.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java index ebf2a38f8d..239e006d61 100644 --- a/src/main/java/seedu/duke/option/Option.java +++ b/src/main/java/seedu/duke/option/Option.java @@ -4,7 +4,7 @@ public class Option implements OptionInterface { private String optionDescription; private boolean isCorrectAnswer; - public Option(String description){ + public Option(String description) { this.optionDescription = description; this.isCorrectAnswer = false; } From 55d13c88de2bcd7450d820a1ee6a529b4b2eb320 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 13:24:52 +0800 Subject: [PATCH 027/447] Revert "Updated to compile with CheckStyle" This reverts commit 47f4bad88249050a503bd506afad007317479a55. --- src/main/java/seedu/duke/option/Option.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java index 239e006d61..ebf2a38f8d 100644 --- a/src/main/java/seedu/duke/option/Option.java +++ b/src/main/java/seedu/duke/option/Option.java @@ -4,7 +4,7 @@ public class Option implements OptionInterface { private String optionDescription; private boolean isCorrectAnswer; - public Option(String description) { + public Option(String description){ this.optionDescription = description; this.isCorrectAnswer = false; } From ca5f8e017adb73ec80cf8efbf29c76cac222d84a Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 13:25:43 +0800 Subject: [PATCH 028/447] Update to comply with CheckStyle --- src/main/java/seedu/duke/option/Option.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/option/Option.java b/src/main/java/seedu/duke/option/Option.java index ebf2a38f8d..239e006d61 100644 --- a/src/main/java/seedu/duke/option/Option.java +++ b/src/main/java/seedu/duke/option/Option.java @@ -4,7 +4,7 @@ public class Option implements OptionInterface { private String optionDescription; private boolean isCorrectAnswer; - public Option(String description){ + public Option(String description) { this.optionDescription = description; this.isCorrectAnswer = false; } From e2667322faaefb5d1808da12b2416100956b4f5b Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 13:30:57 +0800 Subject: [PATCH 029/447] Update to comply with CheckStyle --- src/main/java/seedu/duke/UiInterface.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/duke/UiInterface.java index 47d70909ed..8b0c35cafc 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/duke/UiInterface.java @@ -1,5 +1,7 @@ package seedu.duke; +import seedu.duke.option.OptionInterface; + public interface UiInterface { String getInputFromUser(); From 812f113af8e13c38ce8aadf14807cfcd4049525d Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 13:46:56 +0800 Subject: [PATCH 030/447] Resolve merge conflicts and ensure everything complies with CheckStyle --- src/main/java/seedu/duke/question/Question.java | 4 ++-- src/main/java/seedu/duke/question/QuestionInterface.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/duke/question/Question.java index 9502e3b4c9..e6982e0666 100644 --- a/src/main/java/seedu/duke/question/Question.java +++ b/src/main/java/seedu/duke/question/Question.java @@ -1,8 +1,8 @@ package seedu.duke.question; import seedu.duke.hint.HintInterface; -import seedu.duke.OptionInterface; -import seedu.duke.OptionListInterface; +import seedu.duke.option.OptionInterface; +import seedu.duke.option.OptionListInterface; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/question/QuestionInterface.java b/src/main/java/seedu/duke/question/QuestionInterface.java index f9b370e33c..b247c6655e 100644 --- a/src/main/java/seedu/duke/question/QuestionInterface.java +++ b/src/main/java/seedu/duke/question/QuestionInterface.java @@ -1,6 +1,6 @@ package seedu.duke.question; -import seedu.duke.OptionInterface; +import seedu.duke.option.OptionInterface; import java.util.ArrayList; From 31fbf4274fa12af98884f7dac94f4184f1c157d3 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 13:53:49 +0800 Subject: [PATCH 031/447] Change package name to personalise the project --- .../seedu/{duke => eduke8}/CommandInterface.java | 4 ++-- .../seedu/{duke/Duke.java => eduke8/Eduke8.java} | 4 ++-- .../seedu/{duke => eduke8}/OptionInterface.java | 2 +- .../{duke => eduke8}/OptionListInterface.java | 2 +- .../seedu/{duke => eduke8}/ParserInterface.java | 2 +- .../java/seedu/{duke => eduke8}/QuizInterface.java | 2 +- .../seedu/{duke => eduke8}/TopicInterface.java | 4 ++-- .../seedu/{duke => eduke8}/TopicListInterface.java | 2 +- .../java/seedu/{duke => eduke8}/UiInterface.java | 6 +++--- .../java/seedu/{duke => eduke8}/hint/Hint.java | 2 +- .../seedu/{duke => eduke8}/hint/HintInterface.java | 2 +- .../seedu/{duke => eduke8}/question/Question.java | 8 ++++---- .../question/QuestionInterface.java | 4 ++-- .../{duke => eduke8}/question/QuestionList.java | 2 +- .../question/QuestionListInterface.java | 2 +- .../seedu/{duke => eduke8}/storage/Storage.java | 14 +++++++------- .../{duke => eduke8}/storage/StorageInterface.java | 4 ++-- .../{duke/DukeTest.java => eduke8/Eduke8Test.java} | 4 ++-- .../java/seedu/{duke => eduke8}/StorageTest.java | 4 ++-- .../java/seedu/{duke => eduke8}/hint/HintTest.java | 2 +- 20 files changed, 38 insertions(+), 38 deletions(-) rename src/main/java/seedu/{duke => eduke8}/CommandInterface.java (66%) rename src/main/java/seedu/{duke/Duke.java => eduke8/Eduke8.java} (93%) rename src/main/java/seedu/{duke => eduke8}/OptionInterface.java (82%) rename src/main/java/seedu/{duke => eduke8}/OptionListInterface.java (91%) rename src/main/java/seedu/{duke => eduke8}/ParserInterface.java (80%) rename src/main/java/seedu/{duke => eduke8}/QuizInterface.java (72%) rename src/main/java/seedu/{duke => eduke8}/TopicInterface.java (59%) rename src/main/java/seedu/{duke => eduke8}/TopicListInterface.java (91%) rename src/main/java/seedu/{duke => eduke8}/UiInterface.java (82%) rename src/main/java/seedu/{duke => eduke8}/hint/Hint.java (90%) rename src/main/java/seedu/{duke => eduke8}/hint/HintInterface.java (71%) rename src/main/java/seedu/{duke => eduke8}/question/Question.java (94%) rename src/main/java/seedu/{duke => eduke8}/question/QuestionInterface.java (84%) rename src/main/java/seedu/{duke => eduke8}/question/QuestionList.java (98%) rename src/main/java/seedu/{duke => eduke8}/question/QuestionListInterface.java (93%) rename src/main/java/seedu/{duke => eduke8}/storage/Storage.java (93%) rename src/main/java/seedu/{duke => eduke8}/storage/StorageInterface.java (70%) rename src/test/java/seedu/{duke/DukeTest.java => eduke8/Eduke8Test.java} (80%) rename src/test/java/seedu/{duke => eduke8}/StorageTest.java (91%) rename src/test/java/seedu/{duke => eduke8}/hint/HintTest.java (93%) diff --git a/src/main/java/seedu/duke/CommandInterface.java b/src/main/java/seedu/eduke8/CommandInterface.java similarity index 66% rename from src/main/java/seedu/duke/CommandInterface.java rename to src/main/java/seedu/eduke8/CommandInterface.java index e0209d31f7..af88c5aae4 100644 --- a/src/main/java/seedu/duke/CommandInterface.java +++ b/src/main/java/seedu/eduke8/CommandInterface.java @@ -1,6 +1,6 @@ -package seedu.duke; +package seedu.eduke8; -import seedu.duke.storage.StorageInterface; +import seedu.eduke8.storage.StorageInterface; public interface CommandInterface { void execute(TopicListInterface topics, StorageInterface storage); diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/eduke8/Eduke8.java similarity index 93% rename from src/main/java/seedu/duke/Duke.java rename to src/main/java/seedu/eduke8/Eduke8.java index 5c74e68d59..3a8651600d 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,8 +1,8 @@ -package seedu.duke; +package seedu.eduke8; import java.util.Scanner; -public class Duke { +public class Eduke8 { /** * Main entry-point for the java.duke.Duke application. */ diff --git a/src/main/java/seedu/duke/OptionInterface.java b/src/main/java/seedu/eduke8/OptionInterface.java similarity index 82% rename from src/main/java/seedu/duke/OptionInterface.java rename to src/main/java/seedu/eduke8/OptionInterface.java index 68a912f974..8f2b01265b 100644 --- a/src/main/java/seedu/duke/OptionInterface.java +++ b/src/main/java/seedu/eduke8/OptionInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.eduke8; public interface OptionInterface { String getOptionDescription(); diff --git a/src/main/java/seedu/duke/OptionListInterface.java b/src/main/java/seedu/eduke8/OptionListInterface.java similarity index 91% rename from src/main/java/seedu/duke/OptionListInterface.java rename to src/main/java/seedu/eduke8/OptionListInterface.java index 12cab3c8d8..281e4a08e2 100644 --- a/src/main/java/seedu/duke/OptionListInterface.java +++ b/src/main/java/seedu/eduke8/OptionListInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.eduke8; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/ParserInterface.java b/src/main/java/seedu/eduke8/ParserInterface.java similarity index 80% rename from src/main/java/seedu/duke/ParserInterface.java rename to src/main/java/seedu/eduke8/ParserInterface.java index 7245ed9bbe..be559be955 100644 --- a/src/main/java/seedu/duke/ParserInterface.java +++ b/src/main/java/seedu/eduke8/ParserInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.eduke8; public interface ParserInterface { CommandInterface parseCommand(String userInput); diff --git a/src/main/java/seedu/duke/QuizInterface.java b/src/main/java/seedu/eduke8/QuizInterface.java similarity index 72% rename from src/main/java/seedu/duke/QuizInterface.java rename to src/main/java/seedu/eduke8/QuizInterface.java index 04f19d0cdb..21f9cb8287 100644 --- a/src/main/java/seedu/duke/QuizInterface.java +++ b/src/main/java/seedu/eduke8/QuizInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.eduke8; public interface QuizInterface { void startQuiz(); diff --git a/src/main/java/seedu/duke/TopicInterface.java b/src/main/java/seedu/eduke8/TopicInterface.java similarity index 59% rename from src/main/java/seedu/duke/TopicInterface.java rename to src/main/java/seedu/eduke8/TopicInterface.java index baeb1691c0..1d3fbd8a2e 100644 --- a/src/main/java/seedu/duke/TopicInterface.java +++ b/src/main/java/seedu/eduke8/TopicInterface.java @@ -1,6 +1,6 @@ -package seedu.duke; +package seedu.eduke8; -import seedu.duke.question.QuestionListInterface; +import seedu.eduke8.question.QuestionListInterface; public interface TopicInterface { String getTopic(); diff --git a/src/main/java/seedu/duke/TopicListInterface.java b/src/main/java/seedu/eduke8/TopicListInterface.java similarity index 91% rename from src/main/java/seedu/duke/TopicListInterface.java rename to src/main/java/seedu/eduke8/TopicListInterface.java index dd794272f7..4930dab34a 100644 --- a/src/main/java/seedu/duke/TopicListInterface.java +++ b/src/main/java/seedu/eduke8/TopicListInterface.java @@ -1,4 +1,4 @@ -package seedu.duke; +package seedu.eduke8; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/UiInterface.java b/src/main/java/seedu/eduke8/UiInterface.java similarity index 82% rename from src/main/java/seedu/duke/UiInterface.java rename to src/main/java/seedu/eduke8/UiInterface.java index 8138fc375b..915784e056 100644 --- a/src/main/java/seedu/duke/UiInterface.java +++ b/src/main/java/seedu/eduke8/UiInterface.java @@ -1,7 +1,7 @@ -package seedu.duke; +package seedu.eduke8; -import seedu.duke.hint.HintInterface; -import seedu.duke.question.QuestionInterface; +import seedu.eduke8.hint.HintInterface; +import seedu.eduke8.question.QuestionInterface; public interface UiInterface { String getInputFromUser(); diff --git a/src/main/java/seedu/duke/hint/Hint.java b/src/main/java/seedu/eduke8/hint/Hint.java similarity index 90% rename from src/main/java/seedu/duke/hint/Hint.java rename to src/main/java/seedu/eduke8/hint/Hint.java index 32818000a5..a3801724b3 100644 --- a/src/main/java/seedu/duke/hint/Hint.java +++ b/src/main/java/seedu/eduke8/hint/Hint.java @@ -1,4 +1,4 @@ -package seedu.duke.hint; +package seedu.eduke8.hint; public class Hint implements HintInterface { private String description; diff --git a/src/main/java/seedu/duke/hint/HintInterface.java b/src/main/java/seedu/eduke8/hint/HintInterface.java similarity index 71% rename from src/main/java/seedu/duke/hint/HintInterface.java rename to src/main/java/seedu/eduke8/hint/HintInterface.java index 463baa780f..88f102226b 100644 --- a/src/main/java/seedu/duke/hint/HintInterface.java +++ b/src/main/java/seedu/eduke8/hint/HintInterface.java @@ -1,4 +1,4 @@ -package seedu.duke.hint; +package seedu.eduke8.hint; public interface HintInterface { String getHintDescription(); diff --git a/src/main/java/seedu/duke/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java similarity index 94% rename from src/main/java/seedu/duke/question/Question.java rename to src/main/java/seedu/eduke8/question/Question.java index 9502e3b4c9..c31917b9c7 100644 --- a/src/main/java/seedu/duke/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -1,8 +1,8 @@ -package seedu.duke.question; +package seedu.eduke8.question; -import seedu.duke.hint.HintInterface; -import seedu.duke.OptionInterface; -import seedu.duke.OptionListInterface; +import seedu.eduke8.hint.HintInterface; +import seedu.eduke8.OptionInterface; +import seedu.eduke8.OptionListInterface; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/question/QuestionInterface.java b/src/main/java/seedu/eduke8/question/QuestionInterface.java similarity index 84% rename from src/main/java/seedu/duke/question/QuestionInterface.java rename to src/main/java/seedu/eduke8/question/QuestionInterface.java index f9b370e33c..64d38edecb 100644 --- a/src/main/java/seedu/duke/question/QuestionInterface.java +++ b/src/main/java/seedu/eduke8/question/QuestionInterface.java @@ -1,6 +1,6 @@ -package seedu.duke.question; +package seedu.eduke8.question; -import seedu.duke.OptionInterface; +import seedu.eduke8.OptionInterface; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java similarity index 98% rename from src/main/java/seedu/duke/question/QuestionList.java rename to src/main/java/seedu/eduke8/question/QuestionList.java index eb1ff04c27..bbb0aa0099 100644 --- a/src/main/java/seedu/duke/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -1,4 +1,4 @@ -package seedu.duke.question; +package seedu.eduke8.question; import java.util.ArrayList; import java.util.Random; diff --git a/src/main/java/seedu/duke/question/QuestionListInterface.java b/src/main/java/seedu/eduke8/question/QuestionListInterface.java similarity index 93% rename from src/main/java/seedu/duke/question/QuestionListInterface.java rename to src/main/java/seedu/eduke8/question/QuestionListInterface.java index 9d9033a4f2..bd1f9878c4 100644 --- a/src/main/java/seedu/duke/question/QuestionListInterface.java +++ b/src/main/java/seedu/eduke8/question/QuestionListInterface.java @@ -1,4 +1,4 @@ -package seedu.duke.question; +package seedu.eduke8.question; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java similarity index 93% rename from src/main/java/seedu/duke/storage/Storage.java rename to src/main/java/seedu/eduke8/storage/Storage.java index 4f0a9831a0..c8ca6ee057 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -1,16 +1,16 @@ -package seedu.duke.storage; +package seedu.eduke8.storage; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import seedu.duke.OptionInterface; -import seedu.duke.OptionListInterface; -import seedu.duke.question.QuestionInterface; -import seedu.duke.question.QuestionListInterface; -import seedu.duke.TopicInterface; -import seedu.duke.UiInterface; +import seedu.eduke8.OptionInterface; +import seedu.eduke8.OptionListInterface; +import seedu.eduke8.question.QuestionInterface; +import seedu.eduke8.question.QuestionListInterface; +import seedu.eduke8.TopicInterface; +import seedu.eduke8.UiInterface; import java.io.File; import java.io.FileReader; diff --git a/src/main/java/seedu/duke/storage/StorageInterface.java b/src/main/java/seedu/eduke8/storage/StorageInterface.java similarity index 70% rename from src/main/java/seedu/duke/storage/StorageInterface.java rename to src/main/java/seedu/eduke8/storage/StorageInterface.java index c405d399eb..0eaab22e51 100644 --- a/src/main/java/seedu/duke/storage/StorageInterface.java +++ b/src/main/java/seedu/eduke8/storage/StorageInterface.java @@ -1,6 +1,6 @@ -package seedu.duke.storage; +package seedu.eduke8.storage; -import seedu.duke.TopicInterface; +import seedu.eduke8.TopicInterface; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/seedu/eduke8/Eduke8Test.java similarity index 80% rename from src/test/java/seedu/duke/DukeTest.java rename to src/test/java/seedu/eduke8/Eduke8Test.java index 2dda5fd651..fc9842864d 100644 --- a/src/test/java/seedu/duke/DukeTest.java +++ b/src/test/java/seedu/eduke8/Eduke8Test.java @@ -1,10 +1,10 @@ -package seedu.duke; +package seedu.eduke8; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -class DukeTest { +class Eduke8Test { @Test public void sampleTest() { assertTrue(true); diff --git a/src/test/java/seedu/duke/StorageTest.java b/src/test/java/seedu/eduke8/StorageTest.java similarity index 91% rename from src/test/java/seedu/duke/StorageTest.java rename to src/test/java/seedu/eduke8/StorageTest.java index b67c0d2434..9675985c40 100644 --- a/src/test/java/seedu/duke/StorageTest.java +++ b/src/test/java/seedu/eduke8/StorageTest.java @@ -1,7 +1,7 @@ -package seedu.duke; +package seedu.eduke8; import org.junit.jupiter.api.Test; -import seedu.duke.storage.Storage; +import seedu.eduke8.storage.Storage; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/hint/HintTest.java b/src/test/java/seedu/eduke8/hint/HintTest.java similarity index 93% rename from src/test/java/seedu/duke/hint/HintTest.java rename to src/test/java/seedu/eduke8/hint/HintTest.java index 089788bf37..815baa8533 100644 --- a/src/test/java/seedu/duke/hint/HintTest.java +++ b/src/test/java/seedu/eduke8/hint/HintTest.java @@ -1,4 +1,4 @@ -package seedu.duke.hint; +package seedu.eduke8.hint; import org.junit.jupiter.api.Test; From 24fb98734e9e0c2e877603e91789520a6083596f Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 14:04:16 +0800 Subject: [PATCH 032/447] Tweak I/O test to comply with package name --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index e88c19d480..e34af566a6 100644 --- a/build.gradle +++ b/build.gradle @@ -31,11 +31,11 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "seedu.eduke8.Eduke8" } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "eduke8" archiveClassifier = null } From 555ee2c915817d27e3612cf559627e2dfb31c8f1 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 14:05:17 +0800 Subject: [PATCH 033/447] Change optionList to options and remove optionCount --- .../java/seedu/duke/option/OptionList.java | 22 +++++-------------- .../duke/option/OptionListInterface.java | 2 -- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/main/java/seedu/duke/option/OptionList.java b/src/main/java/seedu/duke/option/OptionList.java index 75dd397bfb..d2b3959e08 100644 --- a/src/main/java/seedu/duke/option/OptionList.java +++ b/src/main/java/seedu/duke/option/OptionList.java @@ -3,35 +3,25 @@ import java.util.ArrayList; public class OptionList implements OptionListInterface { - private final ArrayList optionList; - private int optionCount; + private final ArrayList options; public OptionList() { - optionList = new ArrayList<>(); - this.optionCount = 0; + options = new ArrayList<>(); } public OptionList(ArrayList optionList) { - this.optionList = optionList; - this.optionCount = 0; + this.options = optionList; } public void addOption(OptionInterface option) { - optionList.add(option); - this.optionCount++; + options.add(option); } public void deleteOption(OptionInterface option) { - optionList.remove(option); - this.optionCount--; + options.remove(option); } public ArrayList getOptionList() { - return this.optionList; + return this.options; } - - public int getOptionCount() { - return this.optionCount; - } - } diff --git a/src/main/java/seedu/duke/option/OptionListInterface.java b/src/main/java/seedu/duke/option/OptionListInterface.java index 638767b31f..98f1fa42a2 100644 --- a/src/main/java/seedu/duke/option/OptionListInterface.java +++ b/src/main/java/seedu/duke/option/OptionListInterface.java @@ -9,6 +9,4 @@ public interface OptionListInterface { void deleteOption(OptionInterface option); - int getOptionCount(); - } From 6fa4afdc218f92e06919aeff80342cc1729556f7 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Wed, 7 Oct 2020 14:06:26 +0800 Subject: [PATCH 034/447] Add Topic and TopicList classes --- .../java/seedu/duke/CommandInterface.java | 1 + src/main/java/seedu/duke/storage/Storage.java | 2 +- .../seedu/duke/storage/StorageInterface.java | 2 +- src/main/java/seedu/duke/topic/Topic.java | 29 ++++++++++++++++ .../duke/{ => topic}/TopicInterface.java | 6 ++-- src/main/java/seedu/duke/topic/TopicList.java | 34 +++++++++++++++++++ .../duke/{ => topic}/TopicListInterface.java | 8 ++--- src/test/java/seedu/duke/StorageTest.java | 1 + 8 files changed, 74 insertions(+), 9 deletions(-) create mode 100644 src/main/java/seedu/duke/topic/Topic.java rename src/main/java/seedu/duke/{ => topic}/TopicInterface.java (60%) create mode 100644 src/main/java/seedu/duke/topic/TopicList.java rename src/main/java/seedu/duke/{ => topic}/TopicListInterface.java (59%) diff --git a/src/main/java/seedu/duke/CommandInterface.java b/src/main/java/seedu/duke/CommandInterface.java index e0209d31f7..e3be15b78d 100644 --- a/src/main/java/seedu/duke/CommandInterface.java +++ b/src/main/java/seedu/duke/CommandInterface.java @@ -1,6 +1,7 @@ package seedu.duke; import seedu.duke.storage.StorageInterface; +import seedu.duke.topic.TopicListInterface; public interface CommandInterface { void execute(TopicListInterface topics, StorageInterface storage); diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index c8ed8a4d42..6a5a85cd0b 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -9,7 +9,7 @@ import seedu.duke.OptionListInterface; import seedu.duke.QuestionInterface; import seedu.duke.QuestionListInterface; -import seedu.duke.TopicInterface; +import seedu.duke.topic.TopicInterface; import seedu.duke.UiInterface; import java.io.File; diff --git a/src/main/java/seedu/duke/storage/StorageInterface.java b/src/main/java/seedu/duke/storage/StorageInterface.java index c405d399eb..326d7ae41b 100644 --- a/src/main/java/seedu/duke/storage/StorageInterface.java +++ b/src/main/java/seedu/duke/storage/StorageInterface.java @@ -1,6 +1,6 @@ package seedu.duke.storage; -import seedu.duke.TopicInterface; +import seedu.duke.topic.TopicInterface; import java.util.ArrayList; diff --git a/src/main/java/seedu/duke/topic/Topic.java b/src/main/java/seedu/duke/topic/Topic.java new file mode 100644 index 0000000000..77626a5119 --- /dev/null +++ b/src/main/java/seedu/duke/topic/Topic.java @@ -0,0 +1,29 @@ +package seedu.duke.topic; + +import seedu.duke.QuestionListInterface; + +class Topic implements TopicInterface { + + private String topicName; + private QuestionListInterface questionList; + + + public Topic(String topicName, QuestionListInterface questionList) { + this.topicName = topicName; + this.questionList = questionList; + } + + /** + * Returns the topic of the .json file, assumed to + * be under the field " + * + * @return String containing the topic name + */ + public String getTopic() { + return topicName; + } + + public QuestionListInterface getQuestionList() { + return questionList; + } +} diff --git a/src/main/java/seedu/duke/TopicInterface.java b/src/main/java/seedu/duke/topic/TopicInterface.java similarity index 60% rename from src/main/java/seedu/duke/TopicInterface.java rename to src/main/java/seedu/duke/topic/TopicInterface.java index b33a59cb95..3c3a10a7b8 100644 --- a/src/main/java/seedu/duke/TopicInterface.java +++ b/src/main/java/seedu/duke/topic/TopicInterface.java @@ -1,8 +1,10 @@ -package seedu.duke; +package seedu.duke.topic; + +import seedu.duke.QuestionListInterface; public interface TopicInterface { String getTopic(); QuestionListInterface getQuestionList(); -} +} \ No newline at end of file diff --git a/src/main/java/seedu/duke/topic/TopicList.java b/src/main/java/seedu/duke/topic/TopicList.java new file mode 100644 index 0000000000..d8dc33454d --- /dev/null +++ b/src/main/java/seedu/duke/topic/TopicList.java @@ -0,0 +1,34 @@ +package seedu.duke.topic; + +import java.util.ArrayList; + +class TopicList implements TopicListInterface { + private ArrayList allTopics; + + public TopicList(ArrayList loadedTopics) { + allTopics = loadedTopics; + } + + @Override + public void showTopics() { + System.out.println("These are the available topics:"); + for (int i = 0; i < allTopics.size(); i++) { + System.out.println(allTopics.get(i).getTopic()); + } + } + + @Override + public void addTopic(TopicInterface topic) { + allTopics.add(topic); + } + + @Override + public void deleteTopic(int index) { + allTopics.remove(index); + } + + @Override + public int getTopicCount() { + return allTopics.size(); + } +} diff --git a/src/main/java/seedu/duke/TopicListInterface.java b/src/main/java/seedu/duke/topic/TopicListInterface.java similarity index 59% rename from src/main/java/seedu/duke/TopicListInterface.java rename to src/main/java/seedu/duke/topic/TopicListInterface.java index dd794272f7..2fd77b0367 100644 --- a/src/main/java/seedu/duke/TopicListInterface.java +++ b/src/main/java/seedu/duke/topic/TopicListInterface.java @@ -1,16 +1,14 @@ -package seedu.duke; +package seedu.duke.topic; import java.util.ArrayList; public interface TopicListInterface { - ArrayList getTopics(); - void showTopics(); void addTopic(TopicInterface topic); - void deleteTopic(TopicInterface topic); + void deleteTopic(int index); int getTopicCount(); -} +} \ No newline at end of file diff --git a/src/test/java/seedu/duke/StorageTest.java b/src/test/java/seedu/duke/StorageTest.java index b67c0d2434..16dfb1303d 100644 --- a/src/test/java/seedu/duke/StorageTest.java +++ b/src/test/java/seedu/duke/StorageTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.duke.storage.Storage; +import seedu.duke.topic.TopicInterface; import java.util.ArrayList; From eef1b58328064bab2f3651171eed0b89f1b68fc3 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 7 Oct 2020 14:18:11 +0800 Subject: [PATCH 035/447] Resolve merge conflicts --- src/main/java/seedu/duke/ui/Ui.java | 4 ++-- src/main/java/seedu/duke/ui/UiInterface.java | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index 849656fd0b..bb7a214a4a 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -1,7 +1,7 @@ package seedu.duke.ui; -import seedu.duke.HintInterface; -import seedu.duke.QuestionInterface; +import seedu.duke.hint.HintInterface; +import seedu.duke.question.QuestionInterface; import seedu.duke.option.OptionInterface; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/ui/UiInterface.java b/src/main/java/seedu/duke/ui/UiInterface.java index e811f6ee61..ee055c8c4b 100644 --- a/src/main/java/seedu/duke/ui/UiInterface.java +++ b/src/main/java/seedu/duke/ui/UiInterface.java @@ -1,12 +1,8 @@ package seedu.duke.ui; -import seedu.duke.HintInterface; -import seedu.duke.QuestionInterface; -import seedu.duke.option.OptionInterface; - -import seedu.duke.option.OptionInterface; import seedu.duke.hint.HintInterface; import seedu.duke.question.QuestionInterface; +import seedu.duke.option.OptionInterface; public interface UiInterface { String getInputFromUser(); From b8f41938dbb13b8bd48a0ce9b238ac76f67aa1d5 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 7 Oct 2020 14:50:05 +0800 Subject: [PATCH 036/447] Add skeleton for Quiz class --- src/main/java/seedu/duke/QuizInterface.java | 6 ---- .../seedu/duke/question/QuestionList.java | 6 ++-- .../duke/question/QuestionListInterface.java | 6 ++-- src/main/java/seedu/duke/quiz/Quiz.java | 36 +++++++++++++++++++ .../java/seedu/duke/quiz/QuizInterface.java | 8 +++++ 5 files changed, 48 insertions(+), 14 deletions(-) delete mode 100644 src/main/java/seedu/duke/QuizInterface.java create mode 100644 src/main/java/seedu/duke/quiz/Quiz.java create mode 100644 src/main/java/seedu/duke/quiz/QuizInterface.java diff --git a/src/main/java/seedu/duke/QuizInterface.java b/src/main/java/seedu/duke/QuizInterface.java deleted file mode 100644 index 04f19d0cdb..0000000000 --- a/src/main/java/seedu/duke/QuizInterface.java +++ /dev/null @@ -1,6 +0,0 @@ -package seedu.duke; - -public interface QuizInterface { - void startQuiz(); - -} diff --git a/src/main/java/seedu/duke/question/QuestionList.java b/src/main/java/seedu/duke/question/QuestionList.java index eb1ff04c27..9a3312548a 100644 --- a/src/main/java/seedu/duke/question/QuestionList.java +++ b/src/main/java/seedu/duke/question/QuestionList.java @@ -18,7 +18,7 @@ public QuestionList(ArrayList loadedQuestions) { @Override - public ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz) { + public void setQuizQuestions(int numberOfQuestionsForQuiz) { int numberOfQuestionsSelected = 0; // prevent repeated questions from being selected again ArrayList integersChosen = new ArrayList<>(); @@ -38,8 +38,6 @@ public ArrayList getChosenNumberOfRandomQuestion(int numberOf numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } - - return questionsForQuiz; } @@ -70,7 +68,7 @@ public QuestionInterface getNextQuestion() { } @Override - public Boolean allQuestionsAnswered() { + public boolean areAllQuestionsAnswered() { return numberOfQuestionsAnswered == questionsForQuiz.size(); } } diff --git a/src/main/java/seedu/duke/question/QuestionListInterface.java b/src/main/java/seedu/duke/question/QuestionListInterface.java index 9d9033a4f2..f177a26265 100644 --- a/src/main/java/seedu/duke/question/QuestionListInterface.java +++ b/src/main/java/seedu/duke/question/QuestionListInterface.java @@ -1,11 +1,9 @@ package seedu.duke.question; -import java.util.ArrayList; - public interface QuestionListInterface { // ArrayList getQuestions(); - ArrayList getChosenNumberOfRandomQuestion(int numberOfQuestionsForQuiz); + void setQuizQuestions(int numberOfQuestionsForQuiz); // String addQuestion(QuestionInterface question); @@ -17,6 +15,6 @@ public interface QuestionListInterface { QuestionInterface getNextQuestion(); - Boolean allQuestionsAnswered(); + boolean areAllQuestionsAnswered(); } diff --git a/src/main/java/seedu/duke/quiz/Quiz.java b/src/main/java/seedu/duke/quiz/Quiz.java new file mode 100644 index 0000000000..e72c6162db --- /dev/null +++ b/src/main/java/seedu/duke/quiz/Quiz.java @@ -0,0 +1,36 @@ +package seedu.duke.quiz; + +import seedu.duke.TopicInterface; +import seedu.duke.UiInterface; +import seedu.duke.option.OptionInterface; +import seedu.duke.question.QuestionInterface; +import seedu.duke.question.QuestionListInterface; + +import java.util.ArrayList; + +public class Quiz implements QuizInterface { + private TopicInterface topic; + private int numberOfQuestions; + + public Quiz(TopicInterface topic, int numberOfQuestions) { + this.topic = topic; + this.numberOfQuestions = numberOfQuestions; + } + + @Override + public void startQuiz(UiInterface ui) { + ui.printStartQuizPage(); + QuestionListInterface questionList = topic.getQuestionList(); + questionList.setQuizQuestions(numberOfQuestions); + while (!questionList.areAllQuestionsAnswered()) { + QuestionInterface question = questionList.getNextQuestion(); + ui.printQuestion(question); + ArrayList options = question.getOptions(); + for (OptionInterface option: options) { + ui.printOption(option); + } + int chosen = Integer.parseInt(ui.getInputFromUser()); + + } + } +} diff --git a/src/main/java/seedu/duke/quiz/QuizInterface.java b/src/main/java/seedu/duke/quiz/QuizInterface.java new file mode 100644 index 0000000000..6cb4be3705 --- /dev/null +++ b/src/main/java/seedu/duke/quiz/QuizInterface.java @@ -0,0 +1,8 @@ +package seedu.duke.quiz; + +import seedu.duke.UiInterface; + +public interface QuizInterface { + void startQuiz(UiInterface ui); + +} From 07fcd7fbb4815595be66028404bfa2eb1d9d572d Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 7 Oct 2020 14:59:58 +0800 Subject: [PATCH 037/447] Change all package name to comply with eduke8 --- src/main/java/seedu/eduke8/UiInterface.java | 39 ------------------- .../java/seedu/eduke8/storage/Storage.java | 5 +-- src/main/java/seedu/eduke8/ui/Ui.java | 8 ++-- .../java/seedu/eduke8/ui/UiInterface.java | 10 +---- 4 files changed, 8 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/seedu/eduke8/UiInterface.java diff --git a/src/main/java/seedu/eduke8/UiInterface.java b/src/main/java/seedu/eduke8/UiInterface.java deleted file mode 100644 index ff7f7158fa..0000000000 --- a/src/main/java/seedu/eduke8/UiInterface.java +++ /dev/null @@ -1,39 +0,0 @@ -package seedu.eduke8; - - -import seedu.eduke8.hint.HintInterface; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.option.OptionInterface; - - - -public interface UiInterface { - String getInputFromUser(); - - void printGreetMessage(); - - void printExitMessage(); - - void printOption(OptionInterface option, int optionNumber); - - void printQuestion(QuestionInterface question, int questionNumber); - - void printHint(HintInterface hint); - - void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen); - - void printEndQuizPage(); - - void printAnswerIsWrong(); - - void printAnswerIsCorrect(); - - void printHelp(); - - void printAbout(); - - void printTextbook(); - - void printError(); - -} diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index 4bdb3e0ede..615ee21cee 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -7,11 +7,10 @@ import seedu.eduke8.question.QuestionInterface; import seedu.eduke8.question.QuestionListInterface; import seedu.eduke8.TopicInterface; -import seedu.eduke8.UiInterface; +import seedu.eduke8.ui.UiInterface; import seedu.eduke8.option.OptionInterface; import seedu.eduke8.option.OptionListInterface; -import seedu.eduke8.TopicInterface; -import seedu.eduke8.UiInterface; + import java.io.File; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index bb7a214a4a..a034e09410 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -1,8 +1,8 @@ -package seedu.duke.ui; +package seedu.eduke8.ui; -import seedu.duke.hint.HintInterface; -import seedu.duke.question.QuestionInterface; -import seedu.duke.option.OptionInterface; +import seedu.eduke8.hint.HintInterface; +import seedu.eduke8.question.QuestionInterface; +import seedu.eduke8.option.OptionInterface; import java.util.Scanner; diff --git a/src/main/java/seedu/eduke8/ui/UiInterface.java b/src/main/java/seedu/eduke8/ui/UiInterface.java index 92a7c9b92f..db0ff6287b 100644 --- a/src/main/java/seedu/eduke8/ui/UiInterface.java +++ b/src/main/java/seedu/eduke8/ui/UiInterface.java @@ -1,18 +1,12 @@ -<<<<<<< HEAD:src/main/java/seedu/eduke8/UiInterface.java -package seedu.eduke8; +package seedu.eduke8.ui; import seedu.eduke8.hint.HintInterface; import seedu.eduke8.question.QuestionInterface; import seedu.eduke8.option.OptionInterface; -======= -package seedu.duke.ui; -import seedu.duke.hint.HintInterface; -import seedu.duke.question.QuestionInterface; -import seedu.duke.option.OptionInterface; ->>>>>>> master:src/main/java/seedu/eduke8/ui/UiInterface.java + public interface UiInterface { String getInputFromUser(); From e8a7c06ca7a2ffda9e970e1ae549bd7d8aa998f9 Mon Sep 17 00:00:00 2001 From: Joseph Date: Wed, 7 Oct 2020 15:02:14 +0800 Subject: [PATCH 038/447] Added the Parser class, yet to be integrated fully with the remaining functions as yet. --- src/main/java/seedu/duke/Parser.java | 43 +++++++++++++++++++ src/main/java/seedu/duke/ParserInterface.java | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/duke/Parser.java diff --git a/src/main/java/seedu/duke/Parser.java b/src/main/java/seedu/duke/Parser.java new file mode 100644 index 0000000000..e6a475f7fe --- /dev/null +++ b/src/main/java/seedu/duke/Parser.java @@ -0,0 +1,43 @@ +package seedu.duke; + +public class Parser implements ParserInterface{ + + public void parseCommand(String userInput){ + String[] commandArr = userInput.trim().split(" ", 0); + UiInterface ui = null; + switch(commandArr[0]) { + case "about": + ui.printAbout(); + break; + case "help": + ui.printHelp(); + break; + case "topics": + break; + case "textbook": + ui.printTextbook(); + break; + case "quiz": + QuizInterface quiz = null; + quiz.startQuiz(); + break; + case "exit": + System.exit(0); + break; + default: + break; + } + } + + public void parseAnswer(String quizAnswer) { + switch(quizAnswer.trim()){ + case "1": + case "2": + case "3": + case "4": + default: + break; + } + } + +} diff --git a/src/main/java/seedu/duke/ParserInterface.java b/src/main/java/seedu/duke/ParserInterface.java index 7245ed9bbe..a118d9877e 100644 --- a/src/main/java/seedu/duke/ParserInterface.java +++ b/src/main/java/seedu/duke/ParserInterface.java @@ -1,5 +1,5 @@ package seedu.duke; public interface ParserInterface { - CommandInterface parseCommand(String userInput); + void parseCommand(String userInput); } From 70c79f595f837f88d700beac52ee7cef013e54bd Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 7 Oct 2020 15:03:36 +0800 Subject: [PATCH 039/447] Add logic to Quiz class --- src/main/java/seedu/duke/quiz/Quiz.java | 31 +++++++++++++++---- .../java/seedu/duke/quiz/QuizInterface.java | 2 +- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/duke/quiz/Quiz.java b/src/main/java/seedu/duke/quiz/Quiz.java index e72c6162db..5e6e9fb693 100644 --- a/src/main/java/seedu/duke/quiz/Quiz.java +++ b/src/main/java/seedu/duke/quiz/Quiz.java @@ -1,7 +1,7 @@ package seedu.duke.quiz; import seedu.duke.TopicInterface; -import seedu.duke.UiInterface; +import seedu.duke.ui.UiInterface; import seedu.duke.option.OptionInterface; import seedu.duke.question.QuestionInterface; import seedu.duke.question.QuestionListInterface; @@ -19,18 +19,37 @@ public Quiz(TopicInterface topic, int numberOfQuestions) { @Override public void startQuiz(UiInterface ui) { - ui.printStartQuizPage(); + ui.printStartQuizPage(numberOfQuestions, topic.getTopic()); QuestionListInterface questionList = topic.getQuestionList(); questionList.setQuizQuestions(numberOfQuestions); + + goThroughQuizQuestions(ui, questionList); + + ui.printEndQuizPage(); + } + + private void goThroughQuizQuestions(UiInterface ui, QuestionListInterface questionList) { while (!questionList.areAllQuestionsAnswered()) { QuestionInterface question = questionList.getNextQuestion(); - ui.printQuestion(question); + ui.printQuestion(question, questionList.getQuestionCount()); + ArrayList options = question.getOptions(); - for (OptionInterface option: options) { - ui.printOption(option); + + for (int i = 0; i < options.size(); i++) { + ui.printOption(options.get(i), i + 1); } - int chosen = Integer.parseInt(ui.getInputFromUser()); + parseChosenOption(ui, options); + } + } + + private void parseChosenOption(UiInterface ui, ArrayList options) { + // Should probably use parser for this part to add hints also + int chosen = Integer.parseInt(ui.getInputFromUser()); + if (options.get(chosen).isCorrectAnswer()) { + ui.printAnswerIsCorrect(); + } else { + ui.printAnswerIsWrong(); } } } diff --git a/src/main/java/seedu/duke/quiz/QuizInterface.java b/src/main/java/seedu/duke/quiz/QuizInterface.java index 6cb4be3705..d2d24267f6 100644 --- a/src/main/java/seedu/duke/quiz/QuizInterface.java +++ b/src/main/java/seedu/duke/quiz/QuizInterface.java @@ -1,6 +1,6 @@ package seedu.duke.quiz; -import seedu.duke.UiInterface; +import seedu.duke.ui.UiInterface; public interface QuizInterface { void startQuiz(UiInterface ui); From 7bc46c792857df6c962098ce14e4182159d5bd54 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 7 Oct 2020 15:36:01 +0800 Subject: [PATCH 040/447] Fix import of TopicInterface with topic package --- src/main/java/seedu/eduke8/quiz/Quiz.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/quiz/Quiz.java b/src/main/java/seedu/eduke8/quiz/Quiz.java index 9e71cbe7b9..9060c332c4 100644 --- a/src/main/java/seedu/eduke8/quiz/Quiz.java +++ b/src/main/java/seedu/eduke8/quiz/Quiz.java @@ -1,6 +1,6 @@ package seedu.eduke8.quiz; -import seedu.eduke8.TopicInterface; +import seedu.eduke8.topic.TopicInterface; import seedu.eduke8.ui.UiInterface; import seedu.eduke8.option.OptionInterface; import seedu.eduke8.question.QuestionInterface; From c2af8a6d999be4ad58701faf51523067230431b5 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 8 Oct 2020 00:50:01 +0800 Subject: [PATCH 041/447] Integrate questions and quiz in terms of logic Renamed some methods and variables for clarity Tweaked methods in QuestionList class to fit better with quiz --- .../java/seedu/eduke8/question/Question.java | 4 +- .../eduke8/question/QuestionInterface.java | 4 +- .../seedu/eduke8/question/QuestionList.java | 41 ++++++++----------- .../question/QuestionListInterface.java | 11 ++--- src/main/java/seedu/eduke8/quiz/Quiz.java | 9 ++-- 5 files changed, 32 insertions(+), 37 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 076808d46f..a9c2e6a48b 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -84,7 +84,7 @@ public boolean wasAnsweredCorrectly() { } @Override - public void setAsAnsweredCorrectly() { + public void markAsAnsweredCorrectly() { wasAnsweredCorrectly = true; } @@ -100,7 +100,7 @@ public boolean wasAttempted() { @Override - public void setAsAttempted() { + public void markAsAttempted() { wasAttempted = true; } } diff --git a/src/main/java/seedu/eduke8/question/QuestionInterface.java b/src/main/java/seedu/eduke8/question/QuestionInterface.java index c4863fb8cc..654aead906 100644 --- a/src/main/java/seedu/eduke8/question/QuestionInterface.java +++ b/src/main/java/seedu/eduke8/question/QuestionInterface.java @@ -18,10 +18,10 @@ public interface QuestionInterface { boolean wasAnsweredCorrectly(); - void setAsAnsweredCorrectly(); + void markAsAnsweredCorrectly(); boolean wasAttempted(); - void setAsAttempted(); + void markAsAttempted(); } diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index 63ffbced0c..b7c9bfdd92 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -4,16 +4,16 @@ import java.util.Random; public class QuestionList implements QuestionListInterface { - private ArrayList allQuestions; - private ArrayList questionsForQuiz; - private int numberOfQuestionsAnswered; + private ArrayList allQuestions; // list of questions for the particular topic + private ArrayList quizQuestions; + private int currentQuestionNumber; private static final Random RANDOM = new Random(); public QuestionList(ArrayList loadedQuestions) { allQuestions = loadedQuestions; - questionsForQuiz = null; - numberOfQuestionsAnswered = 0; + quizQuestions = null; + currentQuestionNumber = 0; } @@ -34,7 +34,7 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz) { } // choose a random question from the question list and add it to the questions for quiz - questionsForQuiz.add(allQuestions.get(randomQuestionIndex)); + quizQuestions.add(allQuestions.get(randomQuestionIndex)); numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } @@ -42,33 +42,28 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz) { @Override - public int getQuestionCount() { - return questionsForQuiz.size(); + public int getNumberOfQuestionsInQuiz() { + return quizQuestions.size(); } - // should throw indexOutOfBounds exception as even though we might - // do a check in the program that calls this method, we still need the exception - // in case anything happens @Override - public void markQuestionAsAttempted() { - // mark the current question as attempted if method is called in the Quiz class - questionsForQuiz.get(numberOfQuestionsAnswered).setAsAttempted(); - // the last increment will make it be the same as the number of questions there are - // for instance, if there are 5 questions, the last call of this method will set the - // question at index 4 to be attempted, and will increment the variable questionsAnswered - // to 5, while not running again, since no more questions left. - numberOfQuestionsAnswered++; + public int getNumberOfQuestionsInTopic() { + return allQuestions.size(); } @Override public QuestionInterface getNextQuestion() { - // will be called after markQuestionAsAttempted(), so naturally the - // questionsAnswered would have incremented - return questionsForQuiz.get(numberOfQuestionsAnswered); + // Gets current question and increment count for number of questions shown to user + return quizQuestions.get(currentQuestionNumber++); + } + + @Override + public int getCurrentQuestionNumber() { + return currentQuestionNumber; } @Override public boolean areAllQuestionsAnswered() { - return numberOfQuestionsAnswered == questionsForQuiz.size(); + return currentQuestionNumber == quizQuestions.size(); } } diff --git a/src/main/java/seedu/eduke8/question/QuestionListInterface.java b/src/main/java/seedu/eduke8/question/QuestionListInterface.java index 487e69f55e..0188877a25 100644 --- a/src/main/java/seedu/eduke8/question/QuestionListInterface.java +++ b/src/main/java/seedu/eduke8/question/QuestionListInterface.java @@ -5,16 +5,13 @@ public interface QuestionListInterface { void setQuizQuestions(int numberOfQuestionsForQuiz); - // String addQuestion(QuestionInterface question); + int getNumberOfQuestionsInQuiz(); - // void deleteQuestion(QuestionInterface question); - - int getQuestionCount(); - - void markQuestionAsAttempted(); + int getNumberOfQuestionsInTopic(); QuestionInterface getNextQuestion(); - boolean areAllQuestionsAnswered(); + int getCurrentQuestionNumber(); + boolean areAllQuestionsAnswered(); } diff --git a/src/main/java/seedu/eduke8/quiz/Quiz.java b/src/main/java/seedu/eduke8/quiz/Quiz.java index 9060c332c4..e3d7cba3e9 100644 --- a/src/main/java/seedu/eduke8/quiz/Quiz.java +++ b/src/main/java/seedu/eduke8/quiz/Quiz.java @@ -31,7 +31,7 @@ public void startQuiz(UiInterface ui) { private void goThroughQuizQuestions(UiInterface ui, QuestionListInterface questionList) { while (!questionList.areAllQuestionsAnswered()) { QuestionInterface question = questionList.getNextQuestion(); - ui.printQuestion(question, questionList.getQuestionCount()); + ui.printQuestion(question, questionList.getCurrentQuestionNumber()); ArrayList options = question.getOptions(); @@ -39,17 +39,20 @@ private void goThroughQuizQuestions(UiInterface ui, QuestionListInterface questi ui.printOption(options.get(i), i + 1); } - parseChosenOption(ui, options); + parseChosenOption(ui, options, question); } } - private void parseChosenOption(UiInterface ui, ArrayList options) { + private void parseChosenOption(UiInterface ui, ArrayList options, QuestionInterface question) { // Should probably use parser for this part to add hints also int chosen = Integer.parseInt(ui.getInputFromUser()); if (options.get(chosen).isCorrectAnswer()) { ui.printAnswerIsCorrect(); + question.markAsAnsweredCorrectly(); } else { ui.printAnswerIsWrong(); } + + question.markAsAttempted(); } } From 8b301cf809af21ef0891bc71fe9dd87135e8c5ba Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 8 Oct 2020 13:48:17 +0800 Subject: [PATCH 042/447] Fix Parser Class for checkstyle approval --- src/main/java/seedu/eduke8/Parser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/Parser.java b/src/main/java/seedu/eduke8/Parser.java index 1586d059c9..9ea95c79aa 100644 --- a/src/main/java/seedu/eduke8/Parser.java +++ b/src/main/java/seedu/eduke8/Parser.java @@ -6,10 +6,10 @@ public class Parser implements ParserInterface { - public void parseCommand(String userInput){ + public void parseCommand(String userInput) { String[] commandArr = userInput.trim().split(" ", 0); UiInterface ui = null; - switch(commandArr[0]) { + switch (commandArr[0]) { case "about": ui.printAbout(); break; @@ -34,7 +34,7 @@ public void parseCommand(String userInput){ } public void parseAnswer(String quizAnswer) { - switch(quizAnswer.trim()){ + switch (quizAnswer.trim()) { case "1": case "2": case "3": From 19c667c86b2119e130d8acd0640121fe471024b8 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 8 Oct 2020 13:49:36 +0800 Subject: [PATCH 043/447] Implement the storage loading with constructors for the other classes --- .../java/seedu/eduke8/storage/Storage.java | 41 +++++++++++-------- src/main/java/seedu/eduke8/topic/Topic.java | 2 +- .../java/seedu/eduke8/topic/TopicList.java | 2 +- src/test/java/seedu/eduke8/StorageTest.java | 15 ++++--- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index 903abde04d..70ec6d1c28 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -4,12 +4,21 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.hint.HintInterface; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionInterface; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.option.OptionListInterface; +import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionInterface; +import seedu.eduke8.question.QuestionList; import seedu.eduke8.question.QuestionListInterface; +import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicInterface; +import seedu.eduke8.ui.Ui; import seedu.eduke8.ui.UiInterface; -import seedu.eduke8.option.OptionInterface; -import seedu.eduke8.option.OptionListInterface; + import java.io.File; import java.io.FileReader; import java.io.IOException; @@ -19,7 +28,7 @@ public class Storage implements StorageInterface { private String filePath = new File("").getAbsolutePath(); - private UiInterface ui; + private static UiInterface ui = new Ui(); public Storage(String filePath) { // Use relative path for Unix systems @@ -55,8 +64,7 @@ public ArrayList load() { return topicsAsObjects; } catch (IOException | ParseException e) { - e.printStackTrace(); - // ui.printError(); + ui.printError(); } return null; @@ -70,11 +78,9 @@ private static TopicInterface parseToTopicObject(JSONObject topic) { .map(question -> parseToQuestionObject((JSONObject) question)) .collect(toList()); - QuestionListInterface questionList = null; - // TODO construct questionList object when class is available + QuestionListInterface questionList = new QuestionList(questionsAsObjects); - TopicInterface topicAsObject = null; - // TODO construct topic object when class is available + TopicInterface topicAsObject = new Topic(topicTitle, questionList); return topicAsObject; } @@ -86,13 +92,13 @@ private static QuestionInterface parseToQuestionObject(JSONObject question) { .map(option -> parseToOptionObject((JSONObject) option)) .collect(toList()); - OptionListInterface optionList = null; - // TODO construct optionList object when class is available + OptionListInterface optionList = new OptionList(optionsAsObjects); String hintDescription = (String) question.get("hint"); - QuestionInterface questionAsObject = null; - // TODO construct question object when class is available + HintInterface hint = new Hint(hintDescription); + + QuestionInterface questionAsObject = new Question(questionDescription, optionList, hint); return questionAsObject; } @@ -101,8 +107,11 @@ private static OptionInterface parseToOptionObject(JSONObject option) { String optionDescription = (String) option.get("description"); boolean isCorrectAnswer = (boolean) option.get("correct"); - OptionInterface optionAsObject = null; - // TODO construct option object when class is available + OptionInterface optionAsObject = new Option(optionDescription); + + if (isCorrectAnswer) { + optionAsObject.markAsCorrectAnswer(); + } return optionAsObject; } @@ -114,7 +123,7 @@ private void createFileIfNotExists() { try { f.createNewFile(); } catch (IOException e) { - e.printStackTrace(); + ui.printError(); } } } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index bd9e20562f..9735b954ad 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -2,7 +2,7 @@ import seedu.eduke8.question.QuestionListInterface; -class Topic implements TopicInterface { +public class Topic implements TopicInterface { private String topicName; private QuestionListInterface allQuestions; diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 1f6b17d10b..cc22fc25f0 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -2,7 +2,7 @@ import java.util.ArrayList; -class TopicList implements TopicListInterface { +public class TopicList implements TopicListInterface { private ArrayList allTopics; public TopicList(ArrayList loadedTopics) { diff --git a/src/test/java/seedu/eduke8/StorageTest.java b/src/test/java/seedu/eduke8/StorageTest.java index 31a6bf1a32..7cee0c94ef 100644 --- a/src/test/java/seedu/eduke8/StorageTest.java +++ b/src/test/java/seedu/eduke8/StorageTest.java @@ -1,29 +1,34 @@ package seedu.eduke8; import org.junit.jupiter.api.Test; +import seedu.eduke8.question.QuestionListInterface; import seedu.eduke8.storage.Storage; import seedu.eduke8.topic.TopicInterface; - import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; class StorageTest { @Test - public void emptyTest() { + public void load_emptyJson_returnsNull() { Storage storage = new Storage("data/test/empty.json"); ArrayList topics = storage.load(); assertNull(topics); } @Test - public void loadTest() { + public void load_exampleJson_returnsTopicsFromJson() { Storage storage = new Storage("data/test/example.json"); ArrayList topics = storage.load(); + assertEquals(topics.size(), 2); + TopicInterface firstTopic = topics.get(0); - assertNull(firstTopic); - // TODO check content in firstTopic when classes are made + assertEquals(firstTopic.getTopic(), "OOP"); + + QuestionListInterface firstQuestionList = firstTopic.getQuestionList(); + assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); } } From 4fd318ad4662ea71b92dd3c044e4f25b5f8a5e7f Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 8 Oct 2020 14:18:08 +0800 Subject: [PATCH 044/447] Add JUnit test for getQuestionDescription --- .../seedu/eduke8/question/QuestionTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/test/java/seedu/eduke8/question/QuestionTest.java diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java new file mode 100644 index 0000000000..de42c5b64a --- /dev/null +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -0,0 +1,36 @@ +package seedu.eduke8.question; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class QuestionTest { + + @Test + void getQuestionDescription_questionDescription_returnsQuestionDescription() { + String inputQuestionDescription = "This is a question description."; + + Question question = new Question(inputQuestionDescription, null, null); + assertEquals(inputQuestionDescription, question.getQuestionDescription()); + } + + @Test + void getOptions() { + } + + @Test + void getHint() { + } + + @Test + void hintWasShown() { + } + + @Test + void wasAnsweredCorrectly() { + } + + @Test + void wasAttempted() { + } +} \ No newline at end of file From 39f2e6de71279131dc64d4f869ffe7d6e18b16ed Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 8 Oct 2020 18:45:20 +0800 Subject: [PATCH 045/447] Implement Eduke8 main --- src/main/java/seedu/eduke8/Eduke8.java | 47 ++++++++++++++++++-------- src/main/java/seedu/eduke8/ui/Ui.java | 2 +- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 3a8651600d..8dcef88eba 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,21 +1,40 @@ package seedu.eduke8; -import java.util.Scanner; +import seedu.eduke8.storage.Storage; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; public class Eduke8 { - /** - * Main entry-point for the java.duke.Duke application. - */ + private static final String FILE_PATH = "data"; + + private Parser parser; + private Storage storage; + private TopicList topicList; + private Ui ui; + + private Eduke8(String filePath) { + parser = new Parser(); + storage = new Storage(filePath); + ui = new Ui(); + topicList = new TopicList(storage.load()); + } + + private void run() { + start(); + String userInput = ui.getInputFromUser(); + parser.parseCommand(userInput); + exit(); + } + + private void start() { + ui.printGreetMessage(); + } + + private void exit() { + ui.printExitMessage(); + } + public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); - - Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); + new Eduke8(FILE_PATH).run(); } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index a034e09410..5d69694940 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -25,7 +25,7 @@ public class Ui implements UiInterface { private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " + "understand software engineering and OOP principles through a gamified platform and enhance their " + "learning experience. It also consolidates key concepts for easy revision. "; - private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\n What can I do for you?"; + private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\nWhat can I do for you?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can used:"; private static final String MESSAGE_COMMANDS = "1) about\n2) help\n3) topics\n4) textbook\n5) quiz\n6) stats\n" From 3ef2703e2d8b33d9939e45cffa01afdd7e9e34cf Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 8 Oct 2020 19:22:57 +0800 Subject: [PATCH 046/447] Add quiz constructor to parser, move parseChosenOption to the parser class, add a findTopic function to TopicList and TopicListInterface. --- src/main/java/seedu/eduke8/Parser.java | 38 +++++++++++++------ .../java/seedu/eduke8/ParserInterface.java | 4 +- src/main/java/seedu/eduke8/quiz/Quiz.java | 17 ++------- .../java/seedu/eduke8/topic/TopicList.java | 9 +++++ .../eduke8/topic/TopicListInterface.java | 2 + 5 files changed, 44 insertions(+), 26 deletions(-) diff --git a/src/main/java/seedu/eduke8/Parser.java b/src/main/java/seedu/eduke8/Parser.java index 9ea95c79aa..6276bae15c 100644 --- a/src/main/java/seedu/eduke8/Parser.java +++ b/src/main/java/seedu/eduke8/Parser.java @@ -1,13 +1,27 @@ package seedu.eduke8; -import seedu.eduke8.quiz.QuizInterface; +import seedu.eduke8.option.OptionInterface; +import seedu.eduke8.question.QuestionInterface; +import seedu.eduke8.quiz.Quiz; +import seedu.eduke8.topic.TopicListInterface; import seedu.eduke8.ui.UiInterface; +import java.util.ArrayList; + public class Parser implements ParserInterface { - public void parseCommand(String userInput) { + public Parser() { + } + + public void parseCommand(TopicListInterface topicList, String userInput) { + int numOfQuestions = 0; + String topicName = ""; String[] commandArr = userInput.trim().split(" ", 0); + if (commandArr.length == 3 && commandArr[0].equals("quiz")) { + numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); + topicName = commandArr[1].substring(2); + } UiInterface ui = null; switch (commandArr[0]) { case "about": @@ -22,7 +36,7 @@ public void parseCommand(String userInput) { ui.printTextbook(); break; case "quiz": - QuizInterface quiz = null; + Quiz quiz = new Quiz(topicList.findTopic(topicName), numOfQuestions); quiz.startQuiz(ui); break; case "exit": @@ -33,15 +47,17 @@ public void parseCommand(String userInput) { } } - public void parseAnswer(String quizAnswer) { - switch (quizAnswer.trim()) { - case "1": - case "2": - case "3": - case "4": - default: - break; + public void parseChosenOption(UiInterface ui, ArrayList options, QuestionInterface question) { + // Should probably use parser for this part to add hints also + int chosen = Integer.parseInt(ui.getInputFromUser()); + if (options.get(chosen).isCorrectAnswer()) { + ui.printAnswerIsCorrect(); + question.markAsAnsweredCorrectly(); + } else { + ui.printAnswerIsWrong(); } + + question.markAsAttempted(); } } diff --git a/src/main/java/seedu/eduke8/ParserInterface.java b/src/main/java/seedu/eduke8/ParserInterface.java index 1c0755b43d..0728efae1d 100644 --- a/src/main/java/seedu/eduke8/ParserInterface.java +++ b/src/main/java/seedu/eduke8/ParserInterface.java @@ -1,5 +1,7 @@ package seedu.eduke8; +import seedu.eduke8.topic.TopicListInterface; + public interface ParserInterface { - void parseCommand(String userInput); + void parseCommand(TopicListInterface topicList, String userInput); } diff --git a/src/main/java/seedu/eduke8/quiz/Quiz.java b/src/main/java/seedu/eduke8/quiz/Quiz.java index e3d7cba3e9..60acc3c506 100644 --- a/src/main/java/seedu/eduke8/quiz/Quiz.java +++ b/src/main/java/seedu/eduke8/quiz/Quiz.java @@ -1,5 +1,6 @@ package seedu.eduke8.quiz; +import seedu.eduke8.Parser; import seedu.eduke8.topic.TopicInterface; import seedu.eduke8.ui.UiInterface; import seedu.eduke8.option.OptionInterface; @@ -11,6 +12,7 @@ public class Quiz implements QuizInterface { private TopicInterface topic; private int numberOfQuestions; + Parser parser = new Parser(); public Quiz(TopicInterface topic, int numberOfQuestions) { this.topic = topic; @@ -39,20 +41,7 @@ private void goThroughQuizQuestions(UiInterface ui, QuestionListInterface questi ui.printOption(options.get(i), i + 1); } - parseChosenOption(ui, options, question); + parser.parseChosenOption(ui, options, question); } } - - private void parseChosenOption(UiInterface ui, ArrayList options, QuestionInterface question) { - // Should probably use parser for this part to add hints also - int chosen = Integer.parseInt(ui.getInputFromUser()); - if (options.get(chosen).isCorrectAnswer()) { - ui.printAnswerIsCorrect(); - question.markAsAnsweredCorrectly(); - } else { - ui.printAnswerIsWrong(); - } - - question.markAsAttempted(); - } } diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index cc22fc25f0..7d4324b7c1 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -27,6 +27,15 @@ public void deleteTopic(int index) { allTopics.remove(index); } + public TopicInterface findTopic(String topicName) { + for (TopicInterface topic : allTopics) { + if (topicName.equals(topic.getTopic())) { + return topic; + } + } + return null; + } + @Override public int getTopicCount() { return allTopics.size(); diff --git a/src/main/java/seedu/eduke8/topic/TopicListInterface.java b/src/main/java/seedu/eduke8/topic/TopicListInterface.java index 9698352a78..659196a860 100644 --- a/src/main/java/seedu/eduke8/topic/TopicListInterface.java +++ b/src/main/java/seedu/eduke8/topic/TopicListInterface.java @@ -7,6 +7,8 @@ public interface TopicListInterface { void deleteTopic(int index); + TopicInterface findTopic(String topicName); + int getTopicCount(); } \ No newline at end of file From a85a3bc17ca25c4ca47a80f71dc0c88f5ea6dfe0 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 8 Oct 2020 20:14:07 +0800 Subject: [PATCH 047/447] Fix naming of a variable. --- src/main/java/seedu/eduke8/Parser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/Parser.java b/src/main/java/seedu/eduke8/Parser.java index 6276bae15c..868e742cf8 100644 --- a/src/main/java/seedu/eduke8/Parser.java +++ b/src/main/java/seedu/eduke8/Parser.java @@ -49,8 +49,8 @@ public void parseCommand(TopicListInterface topicList, String userInput) { public void parseChosenOption(UiInterface ui, ArrayList options, QuestionInterface question) { // Should probably use parser for this part to add hints also - int chosen = Integer.parseInt(ui.getInputFromUser()); - if (options.get(chosen).isCorrectAnswer()) { + int chosenOption = Integer.parseInt(ui.getInputFromUser()); + if (options.get(chosenOption).isCorrectAnswer()) { ui.printAnswerIsCorrect(); question.markAsAnsweredCorrectly(); } else { From 2ca4fbdd506c93e7b36cd4e84ca42b9b05ac58a6 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 8 Oct 2020 20:16:51 +0800 Subject: [PATCH 048/447] Try to include the runCommandLoopUntilExit --- src/main/java/seedu/eduke8/Eduke8.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 8dcef88eba..596b805fe4 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -21,8 +21,7 @@ private Eduke8(String filePath) { private void run() { start(); - String userInput = ui.getInputFromUser(); - parser.parseCommand(userInput); + runCommandLoopUntilExit(); exit(); } @@ -30,6 +29,17 @@ private void start() { ui.printGreetMessage(); } + private void runCommandLoopUntilExit() { + //boolean isExit = false; + + //while(!isExit) { + String userInput = ui.getInputFromUser(); + parser.parseCommand(userInput); + //isExit = parser.parseCommand(userInput); + + //} + } + private void exit() { ui.printExitMessage(); } From 51fea4c7be130548cd4b1636d88c146b14a2ff74 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 8 Oct 2020 20:33:27 +0800 Subject: [PATCH 049/447] Update the input.txt and EXPECTED.txt files --- text-ui-test/EXPECTED.TXT | 21 +++++++++++++-------- text-ui-test/input.txt | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..80fd484a3f 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,14 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| + _____ _____ +| ___| ____ | _ | +| |___ | _ \| |_| | +| ___|| | | | _ | +| |___ | |_| | |_| | +|_____||____/|_____| -What is your name? -Hello James Gosling +------------------------------------------------------------------- +Hello! I'm E-Duke-8 +What can I do for you? +------------------------------------------------------------------- +------------------------------------------------------------------- +Bye bye. Hope you have a nice day and see you soon! +------------------------------------------------------------------- diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..0abaeaa993 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ -James Gosling \ No newline at end of file +bye \ No newline at end of file From 61bc10a5c65e20fd6287cee4329a10e5bf1aa29b Mon Sep 17 00:00:00 2001 From: anqi20 Date: Fri, 9 Oct 2020 01:08:48 +0800 Subject: [PATCH 050/447] Update the input of parseCommand method --- src/main/java/seedu/eduke8/Eduke8.java | 2 +- src/main/java/seedu/eduke8/Parser.java | 1 - src/main/java/seedu/eduke8/ui/UiInterface.java | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 596b805fe4..49394d8b66 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -34,7 +34,7 @@ private void runCommandLoopUntilExit() { //while(!isExit) { String userInput = ui.getInputFromUser(); - parser.parseCommand(userInput); + parser.parseCommand(topicList, userInput); //isExit = parser.parseCommand(userInput); //} diff --git a/src/main/java/seedu/eduke8/Parser.java b/src/main/java/seedu/eduke8/Parser.java index 868e742cf8..f3d79f144e 100644 --- a/src/main/java/seedu/eduke8/Parser.java +++ b/src/main/java/seedu/eduke8/Parser.java @@ -1,6 +1,5 @@ package seedu.eduke8; - import seedu.eduke8.option.OptionInterface; import seedu.eduke8.question.QuestionInterface; import seedu.eduke8.quiz.Quiz; diff --git a/src/main/java/seedu/eduke8/ui/UiInterface.java b/src/main/java/seedu/eduke8/ui/UiInterface.java index db0ff6287b..d34669cad3 100644 --- a/src/main/java/seedu/eduke8/ui/UiInterface.java +++ b/src/main/java/seedu/eduke8/ui/UiInterface.java @@ -1,13 +1,9 @@ package seedu.eduke8.ui; - import seedu.eduke8.hint.HintInterface; import seedu.eduke8.question.QuestionInterface; import seedu.eduke8.option.OptionInterface; - - - public interface UiInterface { String getInputFromUser(); From 81262b7d2a0f7f9e3caffb3d27cbfd1aee432b14 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 9 Oct 2020 19:20:17 +0800 Subject: [PATCH 051/447] Attempt to simplify interfaces into more common ones --- src/main/java/seedu/eduke8/Command.java | 12 ++ .../java/seedu/eduke8/CommandInterface.java | 12 -- src/main/java/seedu/eduke8/Eduke8.java | 15 ++- .../java/seedu/eduke8/ParserInterface.java | 7 - .../java/seedu/eduke8/common/Displayable.java | 8 ++ .../seedu/eduke8/common/DisplayableList.java | 11 ++ src/main/java/seedu/eduke8/hint/Hint.java | 14 +- .../java/seedu/eduke8/hint/HintInterface.java | 5 - src/main/java/seedu/eduke8/option/Option.java | 23 +++- .../seedu/eduke8/option/OptionInterface.java | 9 -- .../java/seedu/eduke8/option/OptionList.java | 24 ++-- .../eduke8/option/OptionListInterface.java | 12 -- .../{Parser.java => parser/MenuParser.java} | 34 ++--- src/main/java/seedu/eduke8/parser/Parser.java | 7 + .../java/seedu/eduke8/question/Question.java | 71 ++++------ .../eduke8/question/QuestionInterface.java | 27 ---- .../seedu/eduke8/question/QuestionList.java | 40 +++--- .../question/QuestionListInterface.java | 17 --- src/main/java/seedu/eduke8/quiz/Quiz.java | 45 +------ .../java/seedu/eduke8/quiz/QuizInterface.java | 8 -- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 48 +++++++ .../java/seedu/eduke8/storage/Storage.java | 126 +----------------- .../eduke8/storage/StorageInterface.java | 11 -- .../seedu/eduke8/storage/TopicsStorage.java | 124 +++++++++++++++++ src/main/java/seedu/eduke8/topic/Topic.java | 31 +++-- .../seedu/eduke8/topic/TopicInterface.java | 9 -- .../java/seedu/eduke8/topic/TopicList.java | 40 +++--- .../eduke8/topic/TopicListInterface.java | 14 -- src/main/java/seedu/eduke8/ui/Ui.java | 20 +-- .../java/seedu/eduke8/ui/UiInterface.java | 36 ----- src/test/java/seedu/eduke8/StorageTest.java | 34 ----- .../java/seedu/eduke8/TopicsStorageTest.java | 35 +++++ src/test/java/seedu/eduke8/hint/HintTest.java | 2 +- 33 files changed, 426 insertions(+), 505 deletions(-) create mode 100644 src/main/java/seedu/eduke8/Command.java delete mode 100644 src/main/java/seedu/eduke8/CommandInterface.java delete mode 100644 src/main/java/seedu/eduke8/ParserInterface.java create mode 100644 src/main/java/seedu/eduke8/common/Displayable.java create mode 100644 src/main/java/seedu/eduke8/common/DisplayableList.java delete mode 100644 src/main/java/seedu/eduke8/hint/HintInterface.java delete mode 100644 src/main/java/seedu/eduke8/option/OptionInterface.java delete mode 100644 src/main/java/seedu/eduke8/option/OptionListInterface.java rename src/main/java/seedu/eduke8/{Parser.java => parser/MenuParser.java} (55%) create mode 100644 src/main/java/seedu/eduke8/parser/Parser.java delete mode 100644 src/main/java/seedu/eduke8/question/QuestionInterface.java delete mode 100644 src/main/java/seedu/eduke8/question/QuestionListInterface.java delete mode 100644 src/main/java/seedu/eduke8/quiz/QuizInterface.java create mode 100644 src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java delete mode 100644 src/main/java/seedu/eduke8/storage/StorageInterface.java create mode 100644 src/main/java/seedu/eduke8/storage/TopicsStorage.java delete mode 100644 src/main/java/seedu/eduke8/topic/TopicInterface.java delete mode 100644 src/main/java/seedu/eduke8/topic/TopicListInterface.java delete mode 100644 src/main/java/seedu/eduke8/ui/UiInterface.java delete mode 100644 src/test/java/seedu/eduke8/StorageTest.java create mode 100644 src/test/java/seedu/eduke8/TopicsStorageTest.java diff --git a/src/main/java/seedu/eduke8/Command.java b/src/main/java/seedu/eduke8/Command.java new file mode 100644 index 0000000000..613bffd40c --- /dev/null +++ b/src/main/java/seedu/eduke8/Command.java @@ -0,0 +1,12 @@ +package seedu.eduke8; + +import seedu.eduke8.storage.Storage; +import seedu.eduke8.topic.TopicList; + + +public interface Command { + void execute(TopicList topics, Storage storage); + + boolean isExit(); + +} diff --git a/src/main/java/seedu/eduke8/CommandInterface.java b/src/main/java/seedu/eduke8/CommandInterface.java deleted file mode 100644 index 8c046501e6..0000000000 --- a/src/main/java/seedu/eduke8/CommandInterface.java +++ /dev/null @@ -1,12 +0,0 @@ -package seedu.eduke8; - -import seedu.eduke8.storage.StorageInterface; -import seedu.eduke8.topic.TopicListInterface; - - -public interface CommandInterface { - void execute(TopicListInterface topics, StorageInterface storage); - - boolean isExit(); - -} diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 49394d8b66..00ae049ee0 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,22 +1,23 @@ package seedu.eduke8; -import seedu.eduke8.storage.Storage; +import seedu.eduke8.parser.MenuParser; +import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; public class Eduke8 { private static final String FILE_PATH = "data"; - private Parser parser; - private Storage storage; + private MenuParser menuParser; + private TopicsStorage topicsStorage; private TopicList topicList; private Ui ui; private Eduke8(String filePath) { - parser = new Parser(); - storage = new Storage(filePath); + menuParser = new MenuParser(); + topicsStorage = new TopicsStorage(filePath); ui = new Ui(); - topicList = new TopicList(storage.load()); + topicList = new TopicList(topicsStorage.load()); } private void run() { @@ -34,7 +35,7 @@ private void runCommandLoopUntilExit() { //while(!isExit) { String userInput = ui.getInputFromUser(); - parser.parseCommand(topicList, userInput); + menuParser.parseCommand(topicList, userInput); //isExit = parser.parseCommand(userInput); //} diff --git a/src/main/java/seedu/eduke8/ParserInterface.java b/src/main/java/seedu/eduke8/ParserInterface.java deleted file mode 100644 index 0728efae1d..0000000000 --- a/src/main/java/seedu/eduke8/ParserInterface.java +++ /dev/null @@ -1,7 +0,0 @@ -package seedu.eduke8; - -import seedu.eduke8.topic.TopicListInterface; - -public interface ParserInterface { - void parseCommand(TopicListInterface topicList, String userInput); -} diff --git a/src/main/java/seedu/eduke8/common/Displayable.java b/src/main/java/seedu/eduke8/common/Displayable.java new file mode 100644 index 0000000000..c8060729fd --- /dev/null +++ b/src/main/java/seedu/eduke8/common/Displayable.java @@ -0,0 +1,8 @@ +package seedu.eduke8.common; + +public interface Displayable { + String getDescription(); + + boolean wasShown(); + +} diff --git a/src/main/java/seedu/eduke8/common/DisplayableList.java b/src/main/java/seedu/eduke8/common/DisplayableList.java new file mode 100644 index 0000000000..6afff083f5 --- /dev/null +++ b/src/main/java/seedu/eduke8/common/DisplayableList.java @@ -0,0 +1,11 @@ +package seedu.eduke8.common; + +import java.util.ArrayList; + +public interface DisplayableList { + ArrayList getInnerList(); + + void add(Displayable displayable); + + void delete(int index); +} diff --git a/src/main/java/seedu/eduke8/hint/Hint.java b/src/main/java/seedu/eduke8/hint/Hint.java index a3801724b3..bd67f88254 100644 --- a/src/main/java/seedu/eduke8/hint/Hint.java +++ b/src/main/java/seedu/eduke8/hint/Hint.java @@ -1,14 +1,24 @@ package seedu.eduke8.hint; -public class Hint implements HintInterface { +import seedu.eduke8.common.Displayable; + +public class Hint implements Displayable { private String description; + private boolean wasShown; public Hint(String description) { this.description = description; + wasShown = false; } @Override - public String getHintDescription() { + public String getDescription() { + wasShown = true; return description; } + + @Override + public boolean wasShown() { + return this.wasShown; + } } diff --git a/src/main/java/seedu/eduke8/hint/HintInterface.java b/src/main/java/seedu/eduke8/hint/HintInterface.java deleted file mode 100644 index 88f102226b..0000000000 --- a/src/main/java/seedu/eduke8/hint/HintInterface.java +++ /dev/null @@ -1,5 +0,0 @@ -package seedu.eduke8.hint; - -public interface HintInterface { - String getHintDescription(); -} diff --git a/src/main/java/seedu/eduke8/option/Option.java b/src/main/java/seedu/eduke8/option/Option.java index aaf5815848..eb74be34f3 100644 --- a/src/main/java/seedu/eduke8/option/Option.java +++ b/src/main/java/seedu/eduke8/option/Option.java @@ -1,16 +1,27 @@ package seedu.eduke8.option; -public class Option implements OptionInterface { - private String optionDescription; +import seedu.eduke8.common.Displayable; + +public class Option implements Displayable { + private String description; private boolean isCorrectAnswer; + private boolean wasShown; public Option(String description) { - this.optionDescription = description; - this.isCorrectAnswer = false; + this.description = description; + isCorrectAnswer = false; + wasShown = false; + } + + @Override + public String getDescription() { + wasShown = true; + return description; } - public String getOptionDescription() { - return optionDescription; + @Override + public boolean wasShown() { + return wasShown; } public boolean isCorrectAnswer() { diff --git a/src/main/java/seedu/eduke8/option/OptionInterface.java b/src/main/java/seedu/eduke8/option/OptionInterface.java deleted file mode 100644 index 63d254cae0..0000000000 --- a/src/main/java/seedu/eduke8/option/OptionInterface.java +++ /dev/null @@ -1,9 +0,0 @@ -package seedu.eduke8.option; - -public interface OptionInterface { - String getOptionDescription(); - - boolean isCorrectAnswer(); - - void markAsCorrectAnswer(); -} diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index 8731f98210..0ab45fa9e4 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -1,27 +1,33 @@ package seedu.eduke8.option; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + import java.util.ArrayList; -public class OptionList implements OptionListInterface { - private final ArrayList options; +public class OptionList implements DisplayableList { + private final ArrayList options; public OptionList() { options = new ArrayList<>(); } - public OptionList(ArrayList optionList) { - this.options = optionList; + public OptionList(ArrayList options) { + this.options = options; } - public void addOption(OptionInterface option) { - options.add(option); + @Override + public ArrayList getInnerList() { + return this.options; } - public void deleteOption(OptionInterface option) { + @Override + public void add(Displayable option) { options.remove(option); } - public ArrayList getOptionList() { - return this.options; + @Override + public void delete(int index) { + options.remove(index); } } diff --git a/src/main/java/seedu/eduke8/option/OptionListInterface.java b/src/main/java/seedu/eduke8/option/OptionListInterface.java deleted file mode 100644 index 8bea151799..0000000000 --- a/src/main/java/seedu/eduke8/option/OptionListInterface.java +++ /dev/null @@ -1,12 +0,0 @@ -package seedu.eduke8.option; - -import java.util.ArrayList; - -public interface OptionListInterface { - ArrayList getOptionList(); - - void addOption(OptionInterface option); - - void deleteOption(OptionInterface option); - -} diff --git a/src/main/java/seedu/eduke8/Parser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java similarity index 55% rename from src/main/java/seedu/eduke8/Parser.java rename to src/main/java/seedu/eduke8/parser/MenuParser.java index f3d79f144e..9390ae566a 100644 --- a/src/main/java/seedu/eduke8/Parser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,19 +1,20 @@ -package seedu.eduke8; +package seedu.eduke8.parser; -import seedu.eduke8.option.OptionInterface; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.quiz.Quiz; -import seedu.eduke8.topic.TopicListInterface; -import seedu.eduke8.ui.UiInterface; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.option.Option; +import seedu.eduke8.question.Question; +import seedu.eduke8.quiz.SingleTopicQuiz; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; import java.util.ArrayList; -public class Parser implements ParserInterface { +public class MenuParser implements Parser { - public Parser() { + public MenuParser() { } - public void parseCommand(TopicListInterface topicList, String userInput) { + public void parseCommand(TopicList topicList, String userInput) { int numOfQuestions = 0; String topicName = ""; String[] commandArr = userInput.trim().split(" ", 0); @@ -21,7 +22,7 @@ public void parseCommand(TopicListInterface topicList, String userInput) { numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } - UiInterface ui = null; + Ui ui = null; switch (commandArr[0]) { case "about": ui.printAbout(); @@ -35,8 +36,8 @@ public void parseCommand(TopicListInterface topicList, String userInput) { ui.printTextbook(); break; case "quiz": - Quiz quiz = new Quiz(topicList.findTopic(topicName), numOfQuestions); - quiz.startQuiz(ui); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topicList.findTopic(topicName), numOfQuestions); + singleTopicQuiz.startQuiz(ui); break; case "exit": System.exit(0); @@ -46,17 +47,16 @@ public void parseCommand(TopicListInterface topicList, String userInput) { } } - public void parseChosenOption(UiInterface ui, ArrayList options, QuestionInterface question) { + public void parseChosenOption(Ui ui, ArrayList options, Question question) { // Should probably use parser for this part to add hints also - int chosenOption = Integer.parseInt(ui.getInputFromUser()); - if (options.get(chosenOption).isCorrectAnswer()) { + int chosenIndex = Integer.parseInt(ui.getInputFromUser()); + Option chosenOption = (Option) options.get(chosenIndex); + if (chosenOption.isCorrectAnswer()) { ui.printAnswerIsCorrect(); question.markAsAnsweredCorrectly(); } else { ui.printAnswerIsWrong(); } - - question.markAsAttempted(); } } diff --git a/src/main/java/seedu/eduke8/parser/Parser.java b/src/main/java/seedu/eduke8/parser/Parser.java new file mode 100644 index 0000000000..7d49b8bebe --- /dev/null +++ b/src/main/java/seedu/eduke8/parser/Parser.java @@ -0,0 +1,7 @@ +package seedu.eduke8.parser; + +import seedu.eduke8.topic.TopicList; + +public interface Parser { + void parseCommand(TopicList topicList, String userInput); +} diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index a9c2e6a48b..594b0e6b1f 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -1,8 +1,8 @@ package seedu.eduke8.question; -import seedu.eduke8.hint.HintInterface; -import seedu.eduke8.option.OptionInterface; -import seedu.eduke8.option.OptionListInterface; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.OptionList; import java.util.ArrayList; @@ -10,21 +10,19 @@ * Represents a question of a certain topic. A Question object is represented by * its description, options and hint. */ -public class Question implements QuestionInterface { +public class Question implements Displayable { private String description; - private OptionListInterface options; - private HintInterface hint; - private boolean wasHintShown; + private OptionList optionList; + private Hint hint; private boolean wasAnsweredCorrectly; - private boolean wasAttempted; + private boolean wasShown; - public Question(String description, OptionListInterface options, HintInterface hint) { + public Question(String description, OptionList optionList, Hint hint) { this.description = description; - this.options = options; + this.optionList = optionList; this.hint = hint; - wasHintShown = false; wasAnsweredCorrectly = false; - wasAttempted = false; + wasShown = false; } /** @@ -33,18 +31,28 @@ public Question(String description, OptionListInterface options, HintInterface h * @return Question information. */ @Override - public String getQuestionDescription() { + public String getDescription() { + wasShown = true; return description; } + /** + * Returns a boolean variable indicating if the question was already attempted before. + * + * @return Indication of whether the question was attempted before or not. + */ + @Override + public boolean wasShown() { + return wasShown; + } + /** * Returns the multiple options of the question. * * @return An arraylist of options. */ - @Override - public ArrayList getOptions() { - return options.getOptionList(); + public ArrayList getOptionList() { + return optionList.getInnerList(); } /** @@ -52,9 +60,8 @@ public ArrayList getOptions() { * * @return Details of the hint. */ - @Override public String getHint() { - return hint.getHintDescription(); + return hint.getDescription(); } /** @@ -62,15 +69,8 @@ public String getHint() { * * @return Question information. */ - @Override - public boolean hintWasShown() { - return wasHintShown; - } - - - @Override - public void setHintShown() { - wasHintShown = true; + public boolean wasHintShown() { + return hint.wasShown(); } /** @@ -78,29 +78,12 @@ public void setHintShown() { * * @return True if question was answered correctly, false otherwise. */ - @Override public boolean wasAnsweredCorrectly() { return wasAnsweredCorrectly; } - @Override public void markAsAnsweredCorrectly() { wasAnsweredCorrectly = true; } - /** - * Returns a boolean variable indicating if the question was already attempted before. - * - * @return Indication of whether the question was attempted before or not. - */ - @Override - public boolean wasAttempted() { - return wasAttempted; - } - - - @Override - public void markAsAttempted() { - wasAttempted = true; - } } diff --git a/src/main/java/seedu/eduke8/question/QuestionInterface.java b/src/main/java/seedu/eduke8/question/QuestionInterface.java deleted file mode 100644 index 654aead906..0000000000 --- a/src/main/java/seedu/eduke8/question/QuestionInterface.java +++ /dev/null @@ -1,27 +0,0 @@ -package seedu.eduke8.question; - -import seedu.eduke8.option.OptionInterface; - -import java.util.ArrayList; - -public interface QuestionInterface { - - String getQuestionDescription(); - - ArrayList getOptions(); - - String getHint(); - - boolean hintWasShown(); - - void setHintShown(); - - boolean wasAnsweredCorrectly(); - - void markAsAnsweredCorrectly(); - - boolean wasAttempted(); - - void markAsAttempted(); - -} diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index b7c9bfdd92..076a7eac58 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -1,23 +1,24 @@ package seedu.eduke8.question; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + import java.util.ArrayList; import java.util.Random; -public class QuestionList implements QuestionListInterface { - private ArrayList allQuestions; // list of questions for the particular topic - private ArrayList quizQuestions; +public class QuestionList implements DisplayableList { + private ArrayList allQuestions; // list of questions for the particular topic + private ArrayList quizQuestions; private int currentQuestionNumber; private static final Random RANDOM = new Random(); - public QuestionList(ArrayList loadedQuestions) { - allQuestions = loadedQuestions; + public QuestionList(ArrayList questions) { + allQuestions = questions; quizQuestions = null; currentQuestionNumber = 0; } - - @Override public void setQuizQuestions(int numberOfQuestionsForQuiz) { int numberOfQuestionsSelected = 0; // prevent repeated questions from being selected again @@ -34,36 +35,45 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz) { } // choose a random question from the question list and add it to the questions for quiz - quizQuestions.add(allQuestions.get(randomQuestionIndex)); + quizQuestions.add((Question) allQuestions.get(randomQuestionIndex)); numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } } - - @Override public int getNumberOfQuestionsInQuiz() { return quizQuestions.size(); } - @Override public int getNumberOfQuestionsInTopic() { return allQuestions.size(); } - @Override - public QuestionInterface getNextQuestion() { + public Question getNextQuestion() { // Gets current question and increment count for number of questions shown to user return quizQuestions.get(currentQuestionNumber++); } - @Override public int getCurrentQuestionNumber() { return currentQuestionNumber; } - @Override public boolean areAllQuestionsAnswered() { return currentQuestionNumber == quizQuestions.size(); } + + @Override + public ArrayList getInnerList() { + return allQuestions; + } + + @Override + public void add(Displayable question) { + allQuestions.add(question); + } + + @Override + public void delete(int index) { + allQuestions.remove(index); + } } diff --git a/src/main/java/seedu/eduke8/question/QuestionListInterface.java b/src/main/java/seedu/eduke8/question/QuestionListInterface.java deleted file mode 100644 index 0188877a25..0000000000 --- a/src/main/java/seedu/eduke8/question/QuestionListInterface.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.eduke8.question; - -public interface QuestionListInterface { - // ArrayList getQuestions(); - - void setQuizQuestions(int numberOfQuestionsForQuiz); - - int getNumberOfQuestionsInQuiz(); - - int getNumberOfQuestionsInTopic(); - - QuestionInterface getNextQuestion(); - - int getCurrentQuestionNumber(); - - boolean areAllQuestionsAnswered(); -} diff --git a/src/main/java/seedu/eduke8/quiz/Quiz.java b/src/main/java/seedu/eduke8/quiz/Quiz.java index 60acc3c506..960ce755e6 100644 --- a/src/main/java/seedu/eduke8/quiz/Quiz.java +++ b/src/main/java/seedu/eduke8/quiz/Quiz.java @@ -1,47 +1,8 @@ package seedu.eduke8.quiz; -import seedu.eduke8.Parser; -import seedu.eduke8.topic.TopicInterface; -import seedu.eduke8.ui.UiInterface; -import seedu.eduke8.option.OptionInterface; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.question.QuestionListInterface; +import seedu.eduke8.ui.Ui; -import java.util.ArrayList; +public interface Quiz { + void startQuiz(Ui ui); -public class Quiz implements QuizInterface { - private TopicInterface topic; - private int numberOfQuestions; - Parser parser = new Parser(); - - public Quiz(TopicInterface topic, int numberOfQuestions) { - this.topic = topic; - this.numberOfQuestions = numberOfQuestions; - } - - @Override - public void startQuiz(UiInterface ui) { - ui.printStartQuizPage(numberOfQuestions, topic.getTopic()); - QuestionListInterface questionList = topic.getQuestionList(); - questionList.setQuizQuestions(numberOfQuestions); - - goThroughQuizQuestions(ui, questionList); - - ui.printEndQuizPage(); - } - - private void goThroughQuizQuestions(UiInterface ui, QuestionListInterface questionList) { - while (!questionList.areAllQuestionsAnswered()) { - QuestionInterface question = questionList.getNextQuestion(); - ui.printQuestion(question, questionList.getCurrentQuestionNumber()); - - ArrayList options = question.getOptions(); - - for (int i = 0; i < options.size(); i++) { - ui.printOption(options.get(i), i + 1); - } - - parser.parseChosenOption(ui, options, question); - } - } } diff --git a/src/main/java/seedu/eduke8/quiz/QuizInterface.java b/src/main/java/seedu/eduke8/quiz/QuizInterface.java deleted file mode 100644 index ceeb1b812a..0000000000 --- a/src/main/java/seedu/eduke8/quiz/QuizInterface.java +++ /dev/null @@ -1,8 +0,0 @@ -package seedu.eduke8.quiz; - -import seedu.eduke8.ui.UiInterface; - -public interface QuizInterface { - void startQuiz(UiInterface ui); - -} diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java new file mode 100644 index 0000000000..18a474a8bd --- /dev/null +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -0,0 +1,48 @@ +package seedu.eduke8.quiz; + +import seedu.eduke8.parser.MenuParser; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.option.Option; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.ui.Ui; + +import java.util.ArrayList; + +public class SingleTopicQuiz implements Quiz { + private Topic topic; + private int numberOfQuestions; + MenuParser menuParser = new MenuParser(); + + public SingleTopicQuiz(Topic topic, int numberOfQuestions) { + this.topic = topic; + this.numberOfQuestions = numberOfQuestions; + } + + @Override + public void startQuiz(Ui ui) { + ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); + QuestionList questionList = topic.getQuestionList(); + questionList.setQuizQuestions(numberOfQuestions); + + goThroughQuizQuestions(ui, questionList); + + ui.printEndQuizPage(); + } + + private void goThroughQuizQuestions(Ui ui, QuestionList questionList) { + while (!questionList.areAllQuestionsAnswered()) { + Question question = questionList.getNextQuestion(); + ui.printQuestion(question, questionList.getCurrentQuestionNumber()); + + ArrayList options = question.getOptionList(); + + for (int i = 0; i < options.size(); i++) { + ui.printOption((Option) options.get(i), i + 1); + } + + menuParser.parseChosenOption(ui, options, question); + } + } +} diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index 70ec6d1c28..8847bf7cb9 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -1,130 +1,12 @@ package seedu.eduke8.storage; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.hint.HintInterface; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionInterface; -import seedu.eduke8.option.OptionList; -import seedu.eduke8.option.OptionListInterface; -import seedu.eduke8.question.Question; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.question.QuestionList; -import seedu.eduke8.question.QuestionListInterface; -import seedu.eduke8.topic.Topic; -import seedu.eduke8.topic.TopicInterface; -import seedu.eduke8.ui.Ui; -import seedu.eduke8.ui.UiInterface; +import seedu.eduke8.common.Displayable; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; import java.util.ArrayList; -import static java.util.stream.Collectors.toList; +public interface Storage { + void save(ArrayList displayables); -public class Storage implements StorageInterface { - private String filePath = new File("").getAbsolutePath(); - private static UiInterface ui = new Ui(); + ArrayList load(); - public Storage(String filePath) { - // Use relative path for Unix systems - String[] filePathSplit = filePath.split("/"); - for (String path: filePathSplit) { - this.filePath += File.separator + path; - } - } - - @Override - public void save(ArrayList topics) { - createFileIfNotExists(); - - // For adding and removing questions for v2 - } - - @Override - public ArrayList load() { - //JSON parser object to parse read file - JSONParser jsonParser = new JSONParser(); - - try { - FileReader reader = new FileReader(filePath); - - //Read JSON file - JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); - - //Iterate over employee array - ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() - .map(topic -> parseToTopicObject((JSONObject) topic)) - .collect(toList()); - - return topicsAsObjects; - - } catch (IOException | ParseException e) { - ui.printError(); - } - - return null; - } - - private static TopicInterface parseToTopicObject(JSONObject topic) { - String topicTitle = (String) topic.get("topic"); - - JSONArray questionsArray = (JSONArray) topic.get("questions"); - ArrayList questionsAsObjects = (ArrayList) questionsArray.stream() - .map(question -> parseToQuestionObject((JSONObject) question)) - .collect(toList()); - - QuestionListInterface questionList = new QuestionList(questionsAsObjects); - - TopicInterface topicAsObject = new Topic(topicTitle, questionList); - - return topicAsObject; - } - - private static QuestionInterface parseToQuestionObject(JSONObject question) { - String questionDescription = (String) question.get("description"); - JSONArray optionsArray = (JSONArray) question.get("options"); - ArrayList optionsAsObjects = (ArrayList) optionsArray.stream() - .map(option -> parseToOptionObject((JSONObject) option)) - .collect(toList()); - - OptionListInterface optionList = new OptionList(optionsAsObjects); - - String hintDescription = (String) question.get("hint"); - - HintInterface hint = new Hint(hintDescription); - - QuestionInterface questionAsObject = new Question(questionDescription, optionList, hint); - - return questionAsObject; - } - - private static OptionInterface parseToOptionObject(JSONObject option) { - String optionDescription = (String) option.get("description"); - boolean isCorrectAnswer = (boolean) option.get("correct"); - - OptionInterface optionAsObject = new Option(optionDescription); - - if (isCorrectAnswer) { - optionAsObject.markAsCorrectAnswer(); - } - - return optionAsObject; - } - - private void createFileIfNotExists() { - File f = new File(filePath); - if (!f.exists()) { - f.getParentFile().mkdirs(); - try { - f.createNewFile(); - } catch (IOException e) { - ui.printError(); - } - } - } } diff --git a/src/main/java/seedu/eduke8/storage/StorageInterface.java b/src/main/java/seedu/eduke8/storage/StorageInterface.java deleted file mode 100644 index 76534b4ad5..0000000000 --- a/src/main/java/seedu/eduke8/storage/StorageInterface.java +++ /dev/null @@ -1,11 +0,0 @@ -package seedu.eduke8.storage; - -import seedu.eduke8.topic.TopicInterface; -import java.util.ArrayList; - -public interface StorageInterface { - void save(ArrayList topics); - - ArrayList load(); - -} diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java new file mode 100644 index 0000000000..bb5f0c0f17 --- /dev/null +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -0,0 +1,124 @@ +package seedu.eduke8.storage; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.ui.Ui; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import static java.util.stream.Collectors.toList; + +public class TopicsStorage implements Storage { + private String filePath = new File("").getAbsolutePath(); + private static Ui ui = new Ui(); + + public TopicsStorage(String filePath) { + // Use relative path for Unix systems + String[] filePathSplit = filePath.split("/"); + for (String path: filePathSplit) { + this.filePath += File.separator + path; + } + } + + @Override + public void save(ArrayList displayables) { + createFileIfNotExists(); + + // For adding and removing questions for v2 + } + + @Override + public ArrayList load() { + //JSON parser object to parse read file + JSONParser jsonParser = new JSONParser(); + + try { + FileReader reader = new FileReader(filePath); + + //Read JSON file + JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); + + //Iterate over employee array + ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() + .map(topic -> parseToTopicObject((JSONObject) topic)) + .collect(toList()); + + return topicsAsObjects; + + } catch (IOException | ParseException e) { + ui.printError(); + } + + return null; + } + + private static Topic parseToTopicObject(JSONObject topic) { + String topicTitle = (String) topic.get("topic"); + + JSONArray questionsArray = (JSONArray) topic.get("questions"); + ArrayList questionsAsObjects = (ArrayList) questionsArray.stream() + .map(question -> parseToQuestionObject((JSONObject) question)) + .collect(toList()); + + QuestionList questionList = new QuestionList(questionsAsObjects); + + Topic topicAsObject = new Topic(topicTitle, questionList); + + return topicAsObject; + } + + private static Question parseToQuestionObject(JSONObject question) { + String questionDescription = (String) question.get("description"); + JSONArray optionsArray = (JSONArray) question.get("options"); + ArrayList optionsAsObjects = (ArrayList) optionsArray.stream() + .map(option -> parseToOptionObject((JSONObject) option)) + .collect(toList()); + + OptionList optionList = new OptionList(optionsAsObjects); + + String hintDescription = (String) question.get("hint"); + + Hint hint = new Hint(hintDescription); + + Question questionAsObject = new Question(questionDescription, optionList, hint); + + return questionAsObject; + } + + private static Option parseToOptionObject(JSONObject option) { + String optionDescription = (String) option.get("description"); + boolean isCorrectAnswer = (boolean) option.get("correct"); + + Option optionAsObject = new Option(optionDescription); + + if (isCorrectAnswer) { + optionAsObject.markAsCorrectAnswer(); + } + + return optionAsObject; + } + + private void createFileIfNotExists() { + File f = new File(filePath); + if (!f.exists()) { + f.getParentFile().mkdirs(); + try { + f.createNewFile(); + } catch (IOException e) { + ui.printError(); + } + } + } +} diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 9735b954ad..4365188ba9 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -1,23 +1,30 @@ package seedu.eduke8.topic; -import seedu.eduke8.question.QuestionListInterface; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.question.QuestionList; -public class Topic implements TopicInterface { - - private String topicName; - private QuestionListInterface allQuestions; +public class Topic implements Displayable { + private String description; + private QuestionList questionList; + private boolean wasShown; + public Topic(String description, QuestionList questionList) { + this.description = description; + this.questionList = questionList; + wasShown = false; + } - public Topic(String topicName, QuestionListInterface allQuestions) { - this.topicName = topicName; - this.allQuestions = allQuestions; + @Override + public String getDescription() { + return description; } - public String getTopic() { - return topicName; + @Override + public boolean wasShown() { + return wasShown; } - public QuestionListInterface getQuestionList() { - return allQuestions; + public QuestionList getQuestionList() { + return questionList; } } diff --git a/src/main/java/seedu/eduke8/topic/TopicInterface.java b/src/main/java/seedu/eduke8/topic/TopicInterface.java deleted file mode 100644 index e824f41ab3..0000000000 --- a/src/main/java/seedu/eduke8/topic/TopicInterface.java +++ /dev/null @@ -1,9 +0,0 @@ -package seedu.eduke8.topic; - -import seedu.eduke8.question.QuestionListInterface; - -public interface TopicInterface { - String getTopic(); - - QuestionListInterface getQuestionList(); -} \ No newline at end of file diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 7d4324b7c1..7bad61d275 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -1,43 +1,49 @@ package seedu.eduke8.topic; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + import java.util.ArrayList; -public class TopicList implements TopicListInterface { - private ArrayList allTopics; +public class TopicList implements DisplayableList { + private ArrayList topics; - public TopicList(ArrayList loadedTopics) { - allTopics = loadedTopics; + public TopicList(ArrayList topics) { + this.topics = topics; } - @Override public void showTopics() { System.out.println("These are the available topics:"); - for (int i = 0; i < allTopics.size(); i++) { - System.out.println(allTopics.get(i).getTopic()); + for (int i = 0; i < topics.size(); i++) { + System.out.println(topics.get(i).getDescription()); } } @Override - public void addTopic(TopicInterface topic) { - allTopics.add(topic); + public ArrayList getInnerList() { + return topics; + } + + @Override + public void add(Displayable topic) { + topics.add(topic); } @Override - public void deleteTopic(int index) { - allTopics.remove(index); + public void delete(int index) { + topics.remove(index); } - public TopicInterface findTopic(String topicName) { - for (TopicInterface topic : allTopics) { - if (topicName.equals(topic.getTopic())) { - return topic; + public Topic findTopic(String topicName) { + for (Displayable topic : topics) { + if (topicName.equals(topic.getDescription())) { + return (Topic) topic; } } return null; } - @Override public int getTopicCount() { - return allTopics.size(); + return topics.size(); } } diff --git a/src/main/java/seedu/eduke8/topic/TopicListInterface.java b/src/main/java/seedu/eduke8/topic/TopicListInterface.java deleted file mode 100644 index 659196a860..0000000000 --- a/src/main/java/seedu/eduke8/topic/TopicListInterface.java +++ /dev/null @@ -1,14 +0,0 @@ -package seedu.eduke8.topic; - -public interface TopicListInterface { - void showTopics(); - - void addTopic(TopicInterface topic); - - void deleteTopic(int index); - - TopicInterface findTopic(String topicName); - - int getTopicCount(); - -} \ No newline at end of file diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 5d69694940..bfcb82b452 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -1,12 +1,12 @@ package seedu.eduke8.ui; -import seedu.eduke8.hint.HintInterface; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.option.OptionInterface; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.question.Question; import java.util.Scanner; -public class Ui implements UiInterface { +public class Ui { private static final int LAST_OPTION = 4; @@ -56,20 +56,20 @@ public void printExitMessage() { printMessage(MESSAGE_EXIT); } - public void printOption(OptionInterface option, int optionNumber) { - System.out.println(optionNumber + ") " + option.getOptionDescription()); + public void printOption(Option option, int optionNumber) { + System.out.println(optionNumber + ") " + option.getDescription()); if (optionNumber == LAST_OPTION) { System.out.println(HORIZONTAL_LINE); } } - public void printQuestion(QuestionInterface question, int questionNumber) { + public void printQuestion(Question question, int questionNumber) { System.out.println(HORIZONTAL_LINE); - System.out.println(questionNumber + ". " + question.getQuestionDescription()); + System.out.println(questionNumber + ". " + question.getDescription()); } - public void printHint(HintInterface hint) { - System.out.println("Hint: " + hint); + public void printHint(Hint hint) { + System.out.println("Hint: " + hint.getDescription()); } //Formatting of topicsChosen: separated by "," diff --git a/src/main/java/seedu/eduke8/ui/UiInterface.java b/src/main/java/seedu/eduke8/ui/UiInterface.java deleted file mode 100644 index d34669cad3..0000000000 --- a/src/main/java/seedu/eduke8/ui/UiInterface.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.eduke8.ui; - -import seedu.eduke8.hint.HintInterface; -import seedu.eduke8.question.QuestionInterface; -import seedu.eduke8.option.OptionInterface; - -public interface UiInterface { - String getInputFromUser(); - - void printGreetMessage(); - - void printExitMessage(); - - void printOption(OptionInterface option, int optionNumber); - - void printQuestion(QuestionInterface question, int questionNumber); - - void printHint(HintInterface hint); - - void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen); - - void printEndQuizPage(); - - void printAnswerIsWrong(); - - void printAnswerIsCorrect(); - - void printHelp(); - - void printAbout(); - - void printTextbook(); - - void printError(); - -} diff --git a/src/test/java/seedu/eduke8/StorageTest.java b/src/test/java/seedu/eduke8/StorageTest.java deleted file mode 100644 index 7cee0c94ef..0000000000 --- a/src/test/java/seedu/eduke8/StorageTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package seedu.eduke8; - -import org.junit.jupiter.api.Test; -import seedu.eduke8.question.QuestionListInterface; -import seedu.eduke8.storage.Storage; -import seedu.eduke8.topic.TopicInterface; - -import java.util.ArrayList; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - -class StorageTest { - @Test - public void load_emptyJson_returnsNull() { - Storage storage = new Storage("data/test/empty.json"); - ArrayList topics = storage.load(); - assertNull(topics); - } - - @Test - public void load_exampleJson_returnsTopicsFromJson() { - Storage storage = new Storage("data/test/example.json"); - ArrayList topics = storage.load(); - - assertEquals(topics.size(), 2); - - TopicInterface firstTopic = topics.get(0); - assertEquals(firstTopic.getTopic(), "OOP"); - - QuestionListInterface firstQuestionList = firstTopic.getQuestionList(); - assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); - } -} diff --git a/src/test/java/seedu/eduke8/TopicsStorageTest.java b/src/test/java/seedu/eduke8/TopicsStorageTest.java new file mode 100644 index 0000000000..72e881d495 --- /dev/null +++ b/src/test/java/seedu/eduke8/TopicsStorageTest.java @@ -0,0 +1,35 @@ +package seedu.eduke8; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.storage.TopicsStorage; +import seedu.eduke8.topic.Topic; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class TopicsStorageTest { + @Test + public void load_emptyJson_returnsNull() { + TopicsStorage topicsStorage = new TopicsStorage("data/test/empty.json"); + ArrayList topics = topicsStorage.load(); + assertNull(topics); + } + + @Test + public void load_exampleJson_returnsTopicsFromJson() { + TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); + ArrayList topics = topicsStorage.load(); + + assertEquals(topics.size(), 2); + + Topic firstTopic = (Topic) topics.get(0); + assertEquals(firstTopic.getDescription(), "OOP"); + + QuestionList firstQuestionList = firstTopic.getQuestionList(); + assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); + } +} diff --git a/src/test/java/seedu/eduke8/hint/HintTest.java b/src/test/java/seedu/eduke8/hint/HintTest.java index 815baa8533..7227f7525e 100644 --- a/src/test/java/seedu/eduke8/hint/HintTest.java +++ b/src/test/java/seedu/eduke8/hint/HintTest.java @@ -11,6 +11,6 @@ void getHintDescription_hintDescription_returnsHintDescription() { String inputHintDescription = "Please check the textbook page 88"; Hint hint = new Hint(inputHintDescription); - assertEquals(inputHintDescription, hint.getHintDescription()); + assertEquals(inputHintDescription, hint.getDescription()); } } \ No newline at end of file From 3473c146d122a2dd4651621071b9a439b80fb807 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 9 Oct 2020 22:29:06 +0800 Subject: [PATCH 052/447] Decrease coupling by removing some dependencies --- src/main/java/seedu/eduke8/Command.java | 6 +-- src/main/java/seedu/eduke8/Eduke8.java | 28 +++++++++----- .../java/seedu/eduke8/parser/MenuParser.java | 37 +++++++++---------- src/main/java/seedu/eduke8/parser/Parser.java | 5 ++- .../java/seedu/eduke8/parser/QuizParser.java | 32 ++++++++++++++++ .../java/seedu/eduke8/question/Question.java | 6 +-- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 17 +++++++-- .../java/seedu/eduke8/storage/Storage.java | 6 ++- .../seedu/eduke8/storage/TopicsStorage.java | 37 ++++++------------- .../java/seedu/eduke8/TopicsStorageTest.java | 33 ++++++++++++----- 10 files changed, 127 insertions(+), 80 deletions(-) create mode 100644 src/main/java/seedu/eduke8/parser/QuizParser.java diff --git a/src/main/java/seedu/eduke8/Command.java b/src/main/java/seedu/eduke8/Command.java index 613bffd40c..2f94955a17 100644 --- a/src/main/java/seedu/eduke8/Command.java +++ b/src/main/java/seedu/eduke8/Command.java @@ -1,11 +1,11 @@ package seedu.eduke8; -import seedu.eduke8.storage.Storage; -import seedu.eduke8.topic.TopicList; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; public interface Command { - void execute(TopicList topics, Storage storage); + void execute(DisplayableList displayableList, Ui ui); boolean isExit(); diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 00ae049ee0..b96682bb1a 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,12 +1,15 @@ package seedu.eduke8; +import org.json.simple.parser.ParseException; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import java.io.IOException; + public class Eduke8 { - private static final String FILE_PATH = "data"; + private static final String FILE_PATH = "data/test/example.json"; // Real path will be data/main/topics.json private MenuParser menuParser; private TopicsStorage topicsStorage; @@ -17,7 +20,11 @@ private Eduke8(String filePath) { menuParser = new MenuParser(); topicsStorage = new TopicsStorage(filePath); ui = new Ui(); - topicList = new TopicList(topicsStorage.load()); + try { + topicList = new TopicList(topicsStorage.load()); + } catch (ParseException | IOException e) { + ui.printError(); + } } private void run() { @@ -31,18 +38,19 @@ private void start() { } private void runCommandLoopUntilExit() { - //boolean isExit = false; - - //while(!isExit) { - String userInput = ui.getInputFromUser(); - menuParser.parseCommand(topicList, userInput); - //isExit = parser.parseCommand(userInput); - - //} + boolean isExit = false; + + while (!isExit) { + String userInput = ui.getInputFromUser(); + Command command = menuParser.parseCommand(topicList, userInput); + command.execute(topicList, ui); + isExit = command.isExit(); + } } private void exit() { ui.printExitMessage(); + System.exit(0); } public static void main(String[] args) { diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 9390ae566a..598f1bca49 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,20 +1,19 @@ package seedu.eduke8.parser; -import seedu.eduke8.common.Displayable; -import seedu.eduke8.option.Option; -import seedu.eduke8.question.Question; +import seedu.eduke8.Command; +import seedu.eduke8.common.DisplayableList; import seedu.eduke8.quiz.SingleTopicQuiz; +import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; -import java.util.ArrayList; - public class MenuParser implements Parser { public MenuParser() { } - public void parseCommand(TopicList topicList, String userInput) { + @Override + public Command parseCommand(DisplayableList topicList, String userInput) { int numOfQuestions = 0; String topicName = ""; String[] commandArr = userInput.trim().split(" ", 0); @@ -22,7 +21,9 @@ public void parseCommand(TopicList topicList, String userInput) { numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } - Ui ui = null; + + // Move all these executions with Ui to Command classes and pass Ui to the execute method + Ui ui = new Ui(); switch (commandArr[0]) { case "about": ui.printAbout(); @@ -31,13 +32,13 @@ public void parseCommand(TopicList topicList, String userInput) { ui.printHelp(); break; case "topics": + ((TopicList) topicList).showTopics(); break; case "textbook": ui.printTextbook(); break; case "quiz": - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topicList.findTopic(topicName), numOfQuestions); - singleTopicQuiz.startQuiz(ui); + parseQuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); break; case "exit": System.exit(0); @@ -45,18 +46,14 @@ public void parseCommand(TopicList topicList, String userInput) { default: break; } - } - public void parseChosenOption(Ui ui, ArrayList options, Question question) { - // Should probably use parser for this part to add hints also - int chosenIndex = Integer.parseInt(ui.getInputFromUser()); - Option chosenOption = (Option) options.get(chosenIndex); - if (chosenOption.isCorrectAnswer()) { - ui.printAnswerIsCorrect(); - question.markAsAnsweredCorrectly(); - } else { - ui.printAnswerIsWrong(); - } + return null; // Return command object instead } + // Should move this to its own Command class + private void parseQuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { + Topic topic = topicList.findTopic(topicName); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); + singleTopicQuiz.startQuiz(ui); + } } diff --git a/src/main/java/seedu/eduke8/parser/Parser.java b/src/main/java/seedu/eduke8/parser/Parser.java index 7d49b8bebe..7ec716047c 100644 --- a/src/main/java/seedu/eduke8/parser/Parser.java +++ b/src/main/java/seedu/eduke8/parser/Parser.java @@ -1,7 +1,8 @@ package seedu.eduke8.parser; -import seedu.eduke8.topic.TopicList; +import seedu.eduke8.Command; +import seedu.eduke8.common.DisplayableList; public interface Parser { - void parseCommand(TopicList topicList, String userInput); + Command parseCommand(DisplayableList displayableList, String userInput); } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java new file mode 100644 index 0000000000..c88af0bd58 --- /dev/null +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -0,0 +1,32 @@ +package seedu.eduke8.parser; + +import seedu.eduke8.Command; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.option.Option; +import seedu.eduke8.question.Question; +import seedu.eduke8.ui.Ui; + +import java.util.ArrayList; + +public class QuizParser implements Parser { + @Override + public Command parseCommand(DisplayableList optionList, String userInput) { + // Need to add hints case also + ArrayList options = optionList.getInnerList(); + int chosenIndex = Integer.parseInt(userInput); + Option chosenOption = (Option) options.get(chosenIndex); + + // Need to move this execution to Command class and feed this objects into the execute method + Ui ui = new Ui(); + Question question = null; + if (chosenOption.isCorrectAnswer()) { + ui.printAnswerIsCorrect(); + question.markAsAnsweredCorrectly(); + } else { + ui.printAnswerIsWrong(); + } + + return null; // Return command object instead + } +} diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 594b0e6b1f..8132c30576 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -4,8 +4,6 @@ import seedu.eduke8.hint.Hint; import seedu.eduke8.option.OptionList; -import java.util.ArrayList; - /** * Represents a question of a certain topic. A Question object is represented by * its description, options and hint. @@ -51,8 +49,8 @@ public boolean wasShown() { * * @return An arraylist of options. */ - public ArrayList getOptionList() { - return optionList.getInnerList(); + public OptionList getOptionList() { + return optionList; } /** diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 18a474a8bd..3d3fc1f761 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,8 +1,11 @@ package seedu.eduke8.quiz; -import seedu.eduke8.parser.MenuParser; +import seedu.eduke8.Command; import seedu.eduke8.common.Displayable; import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.parser.Parser; +import seedu.eduke8.parser.QuizParser; import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; @@ -13,7 +16,7 @@ public class SingleTopicQuiz implements Quiz { private Topic topic; private int numberOfQuestions; - MenuParser menuParser = new MenuParser(); + Parser quizParser = new QuizParser(); public SingleTopicQuiz(Topic topic, int numberOfQuestions) { this.topic = topic; @@ -36,13 +39,19 @@ private void goThroughQuizQuestions(Ui ui, QuestionList questionList) { Question question = questionList.getNextQuestion(); ui.printQuestion(question, questionList.getCurrentQuestionNumber()); - ArrayList options = question.getOptionList(); + OptionList optionList = question.getOptionList(); + + ArrayList options = optionList.getInnerList(); for (int i = 0; i < options.size(); i++) { ui.printOption((Option) options.get(i), i + 1); } - menuParser.parseChosenOption(ui, options, question); + String userInput = ui.getInputFromUser(); + + Command answerCommand = quizParser.parseCommand(optionList, userInput); + + answerCommand.execute(questionList, ui); } } } diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index 8847bf7cb9..ef4cd833af 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -1,12 +1,14 @@ package seedu.eduke8.storage; +import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import java.io.IOException; import java.util.ArrayList; public interface Storage { - void save(ArrayList displayables); + void save(ArrayList displayables) throws IOException; - ArrayList load(); + ArrayList load() throws IOException, ParseException; } diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index bb5f0c0f17..ded93f5199 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -11,7 +11,6 @@ import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; -import seedu.eduke8.ui.Ui; import java.io.File; import java.io.FileReader; @@ -22,7 +21,6 @@ public class TopicsStorage implements Storage { private String filePath = new File("").getAbsolutePath(); - private static Ui ui = new Ui(); public TopicsStorage(String filePath) { // Use relative path for Unix systems @@ -33,35 +31,28 @@ public TopicsStorage(String filePath) { } @Override - public void save(ArrayList displayables) { + public void save(ArrayList displayables) throws IOException { createFileIfNotExists(); // For adding and removing questions for v2 } @Override - public ArrayList load() { + public ArrayList load() throws IOException, ParseException { //JSON parser object to parse read file JSONParser jsonParser = new JSONParser(); - try { - FileReader reader = new FileReader(filePath); + FileReader reader = new FileReader(filePath); - //Read JSON file - JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); + //Read JSON file + JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); - //Iterate over employee array - ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() - .map(topic -> parseToTopicObject((JSONObject) topic)) - .collect(toList()); - - return topicsAsObjects; - - } catch (IOException | ParseException e) { - ui.printError(); - } + //Iterate over employee array + ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() + .map(topic -> parseToTopicObject((JSONObject) topic)) + .collect(toList()); - return null; + return topicsAsObjects; } private static Topic parseToTopicObject(JSONObject topic) { @@ -110,15 +101,11 @@ private static Option parseToOptionObject(JSONObject option) { return optionAsObject; } - private void createFileIfNotExists() { + private void createFileIfNotExists() throws IOException { File f = new File(filePath); if (!f.exists()) { f.getParentFile().mkdirs(); - try { - f.createNewFile(); - } catch (IOException e) { - ui.printError(); - } + f.createNewFile(); } } } diff --git a/src/test/java/seedu/eduke8/TopicsStorageTest.java b/src/test/java/seedu/eduke8/TopicsStorageTest.java index 72e881d495..8dc3ded373 100644 --- a/src/test/java/seedu/eduke8/TopicsStorageTest.java +++ b/src/test/java/seedu/eduke8/TopicsStorageTest.java @@ -1,35 +1,48 @@ package seedu.eduke8; +import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.question.QuestionList; import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.Topic; +import java.io.IOException; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; class TopicsStorageTest { @Test - public void load_emptyJson_returnsNull() { + public void load_invalidPath_expectIOException() { + TopicsStorage topicsStorage = new TopicsStorage("data/test/invalid.json"); + assertThrows(IOException.class, topicsStorage::load); + } + + @Test + public void load_emptyJson_expectParseException() { TopicsStorage topicsStorage = new TopicsStorage("data/test/empty.json"); - ArrayList topics = topicsStorage.load(); - assertNull(topics); + assertThrows(ParseException.class, topicsStorage::load); } @Test public void load_exampleJson_returnsTopicsFromJson() { TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); - ArrayList topics = topicsStorage.load(); - assertEquals(topics.size(), 2); + try { + ArrayList topics = topicsStorage.load(); + assertEquals(topics.size(), 2); + + Topic firstTopic = (Topic) topics.get(0); + assertEquals(firstTopic.getDescription(), "OOP"); + + QuestionList firstQuestionList = firstTopic.getQuestionList(); + assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); + } catch (ParseException | IOException e) { + e.printStackTrace(); + } - Topic firstTopic = (Topic) topics.get(0); - assertEquals(firstTopic.getDescription(), "OOP"); - QuestionList firstQuestionList = firstTopic.getQuestionList(); - assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); } } From cc977bc8e85ec94162d5fdb77e21441889091576 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 9 Oct 2020 22:35:31 +0800 Subject: [PATCH 053/447] Fix checkstyle build error --- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 2 +- .../java/seedu/eduke8/{ => storage}/TopicsStorageTest.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) rename src/test/java/seedu/eduke8/{ => storage}/TopicsStorageTest.java (92%) diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 3d3fc1f761..84147984ec 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -16,7 +16,7 @@ public class SingleTopicQuiz implements Quiz { private Topic topic; private int numberOfQuestions; - Parser quizParser = new QuizParser(); + private Parser quizParser = new QuizParser(); public SingleTopicQuiz(Topic topic, int numberOfQuestions) { this.topic = topic; diff --git a/src/test/java/seedu/eduke8/TopicsStorageTest.java b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java similarity index 92% rename from src/test/java/seedu/eduke8/TopicsStorageTest.java rename to src/test/java/seedu/eduke8/storage/TopicsStorageTest.java index 8dc3ded373..5554f4cfed 100644 --- a/src/test/java/seedu/eduke8/TopicsStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java @@ -1,10 +1,9 @@ -package seedu.eduke8; +package seedu.eduke8.storage; import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.question.QuestionList; -import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.Topic; import java.io.IOException; @@ -15,7 +14,7 @@ class TopicsStorageTest { @Test - public void load_invalidPath_expectIOException() { + public void load_invalidPath_expectIoException() { TopicsStorage topicsStorage = new TopicsStorage("data/test/invalid.json"); assertThrows(IOException.class, topicsStorage::load); } From b80f1af96cd6b3815709bcbe899407ce22532450 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 9 Oct 2020 22:42:07 +0800 Subject: [PATCH 054/447] Fix NullPointException by removing unimplemented method calls --- src/main/java/seedu/eduke8/Eduke8.java | 4 ++-- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index b96682bb1a..bec318de84 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -43,8 +43,8 @@ private void runCommandLoopUntilExit() { while (!isExit) { String userInput = ui.getInputFromUser(); Command command = menuParser.parseCommand(topicList, userInput); - command.execute(topicList, ui); - isExit = command.isExit(); + // command.execute(topicList, ui); + isExit = true; //command.isExit(); } } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 84147984ec..aa44a3eb2d 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -51,7 +51,7 @@ private void goThroughQuizQuestions(Ui ui, QuestionList questionList) { Command answerCommand = quizParser.parseCommand(optionList, userInput); - answerCommand.execute(questionList, ui); + // answerCommand.execute(questionList, ui); } } } From daad097edb1b68ea1b3d7564be4290bc05a73b35 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sun, 11 Oct 2020 13:29:08 +0800 Subject: [PATCH 055/447] Add more methods to DisplayableList and make Command abstract class --- src/main/java/seedu/eduke8/Command.java | 14 +++++++++++--- .../java/seedu/eduke8/common/DisplayableList.java | 4 ++++ src/main/java/seedu/eduke8/option/OptionList.java | 15 +++++++++++++++ src/main/java/seedu/eduke8/parser/MenuParser.java | 2 +- .../java/seedu/eduke8/question/QuestionList.java | 14 +++++++++++++- src/main/java/seedu/eduke8/topic/TopicList.java | 7 ++++--- 6 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/main/java/seedu/eduke8/Command.java b/src/main/java/seedu/eduke8/Command.java index 2f94955a17..12e814d76a 100644 --- a/src/main/java/seedu/eduke8/Command.java +++ b/src/main/java/seedu/eduke8/Command.java @@ -4,9 +4,17 @@ import seedu.eduke8.ui.Ui; -public interface Command { - void execute(DisplayableList displayableList, Ui ui); +public abstract class Command { + private boolean isExit; - boolean isExit(); + public Command() { + isExit = false; + } + + public abstract void execute(DisplayableList displayableList, Ui ui); + + public boolean isExit() { + return isExit; + }; } diff --git a/src/main/java/seedu/eduke8/common/DisplayableList.java b/src/main/java/seedu/eduke8/common/DisplayableList.java index 6afff083f5..84ec5aedbb 100644 --- a/src/main/java/seedu/eduke8/common/DisplayableList.java +++ b/src/main/java/seedu/eduke8/common/DisplayableList.java @@ -8,4 +8,8 @@ public interface DisplayableList { void add(Displayable displayable); void delete(int index); + + Displayable find(String description); + + int getCount(); } diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index 0ab45fa9e4..55106384b1 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -30,4 +30,19 @@ public void add(Displayable option) { public void delete(int index) { options.remove(index); } + + @Override + public Displayable find(String description) { + for (Displayable option : options) { + if (description.equals(option.getDescription())) { + return option; + } + } + return null; + } + + @Override + public int getCount() { + return options.size(); + } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 598f1bca49..f78370264e 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -52,7 +52,7 @@ public Command parseCommand(DisplayableList topicList, String userInput) { // Should move this to its own Command class private void parseQuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { - Topic topic = topicList.findTopic(topicName); + Topic topic = (Topic) topicList.find(topicName); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); } diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index 076a7eac58..1e639f6504 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -41,7 +41,8 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz) { } } - public int getNumberOfQuestionsInQuiz() { + @Override + public int getCount() { return quizQuestions.size(); } @@ -76,4 +77,15 @@ public void add(Displayable question) { public void delete(int index) { allQuestions.remove(index); } + + @Override + public Displayable find(String description) { + for (Displayable question : allQuestions) { + if (description.equals(question.getDescription())) { + return question; + } + } + return null; + } + } diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 7bad61d275..46ba17347b 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -34,16 +34,17 @@ public void delete(int index) { topics.remove(index); } - public Topic findTopic(String topicName) { + @Override + public Displayable find(String topicName) { for (Displayable topic : topics) { if (topicName.equals(topic.getDescription())) { - return (Topic) topic; + return topic; } } return null; } - public int getTopicCount() { + public int getCount() { return topics.size(); } } From 434af3a027292e9fd8600e978453d9531db53a7f Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sun, 11 Oct 2020 13:30:46 +0800 Subject: [PATCH 056/447] Fix checkstyle error --- src/main/java/seedu/eduke8/Command.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/Command.java b/src/main/java/seedu/eduke8/Command.java index 12e814d76a..3f857f8046 100644 --- a/src/main/java/seedu/eduke8/Command.java +++ b/src/main/java/seedu/eduke8/Command.java @@ -15,6 +15,6 @@ public Command() { public boolean isExit() { return isExit; - }; + } } From ad55e4bf072c264139ae14246424985bc722271d Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sun, 11 Oct 2020 14:07:07 +0800 Subject: [PATCH 057/447] Fix add method --- src/main/java/seedu/eduke8/option/OptionList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index 55106384b1..db3f4a25c4 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -23,7 +23,7 @@ public ArrayList getInnerList() { @Override public void add(Displayable option) { - options.remove(option); + options.add(option); } @Override From 471756e9d6f10f8260b6032e4655dc97ecd26671 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sun, 11 Oct 2020 15:06:03 +0800 Subject: [PATCH 058/447] Add AnswerCommand and HintCommand implementations --- src/main/java/seedu/eduke8/Eduke8.java | 1 + .../seedu/eduke8/command/AnswerCommand.java | 26 ++++++++++++ .../seedu/eduke8/{ => command}/Command.java | 2 +- .../seedu/eduke8/command/HintCommand.java | 18 +++++++++ .../java/seedu/eduke8/parser/MenuParser.java | 2 +- src/main/java/seedu/eduke8/parser/Parser.java | 2 +- .../java/seedu/eduke8/parser/QuizParser.java | 40 +++++++++++-------- .../java/seedu/eduke8/question/Question.java | 6 +-- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 11 ++--- 9 files changed, 81 insertions(+), 27 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/AnswerCommand.java rename src/main/java/seedu/eduke8/{ => command}/Command.java (91%) create mode 100644 src/main/java/seedu/eduke8/command/HintCommand.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index bec318de84..d9b798edb9 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,6 +1,7 @@ package seedu.eduke8; import org.json.simple.parser.ParseException; +import seedu.eduke8.command.Command; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.TopicList; diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java new file mode 100644 index 0000000000..3d680c531a --- /dev/null +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -0,0 +1,26 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.option.Option; +import seedu.eduke8.question.Question; +import seedu.eduke8.ui.Ui; + +public class AnswerCommand extends Command { + private Option option; + private Question question; + + public AnswerCommand(Option option, Question question) { + this.option = option; + this.question = question; + } + + @Override + public void execute(DisplayableList optionList, Ui ui) { + if (option.isCorrectAnswer()) { + ui.printAnswerIsCorrect(); + question.markAsAnsweredCorrectly(); + } else { + ui.printAnswerIsWrong(); + } + } +} diff --git a/src/main/java/seedu/eduke8/Command.java b/src/main/java/seedu/eduke8/command/Command.java similarity index 91% rename from src/main/java/seedu/eduke8/Command.java rename to src/main/java/seedu/eduke8/command/Command.java index 3f857f8046..d2c7bb83c4 100644 --- a/src/main/java/seedu/eduke8/Command.java +++ b/src/main/java/seedu/eduke8/command/Command.java @@ -1,4 +1,4 @@ -package seedu.eduke8; +package seedu.eduke8.command; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.ui.Ui; diff --git a/src/main/java/seedu/eduke8/command/HintCommand.java b/src/main/java/seedu/eduke8/command/HintCommand.java new file mode 100644 index 0000000000..d70cf60a5d --- /dev/null +++ b/src/main/java/seedu/eduke8/command/HintCommand.java @@ -0,0 +1,18 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.ui.Ui; + +public class HintCommand extends Command { + private Hint hint; + + public HintCommand(Hint hint) { + this.hint = hint; + } + + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ui.printHint(hint); + } +} diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index f78370264e..b58f67744d 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,6 +1,6 @@ package seedu.eduke8.parser; -import seedu.eduke8.Command; +import seedu.eduke8.command.Command; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.quiz.SingleTopicQuiz; import seedu.eduke8.topic.Topic; diff --git a/src/main/java/seedu/eduke8/parser/Parser.java b/src/main/java/seedu/eduke8/parser/Parser.java index 7ec716047c..ad74a3fb27 100644 --- a/src/main/java/seedu/eduke8/parser/Parser.java +++ b/src/main/java/seedu/eduke8/parser/Parser.java @@ -1,6 +1,6 @@ package seedu.eduke8.parser; -import seedu.eduke8.Command; +import seedu.eduke8.command.Command; import seedu.eduke8.common.DisplayableList; public interface Parser { diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index c88af0bd58..22fa8041a3 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -1,32 +1,40 @@ package seedu.eduke8.parser; -import seedu.eduke8.Command; +import seedu.eduke8.command.AnswerCommand; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.HintCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; -import seedu.eduke8.ui.Ui; import java.util.ArrayList; public class QuizParser implements Parser { + private Question question; + + public void setQuestion(Question question) { + this.question = question; + } + @Override public Command parseCommand(DisplayableList optionList, String userInput) { - // Need to add hints case also - ArrayList options = optionList.getInnerList(); - int chosenIndex = Integer.parseInt(userInput); - Option chosenOption = (Option) options.get(chosenIndex); + switch (userInput) { + case "hint": + return new HintCommand(question.getHint()); + case "back": + // To be implemented in v2 + return null; + default: + try { + ArrayList options = optionList.getInnerList(); + int chosenIndex = Integer.parseInt(userInput); + Option chosenOption = (Option) options.get(chosenIndex); - // Need to move this execution to Command class and feed this objects into the execute method - Ui ui = new Ui(); - Question question = null; - if (chosenOption.isCorrectAnswer()) { - ui.printAnswerIsCorrect(); - question.markAsAnsweredCorrectly(); - } else { - ui.printAnswerIsWrong(); + return new AnswerCommand(chosenOption, question); + } catch (NumberFormatException e) { + return null; + } } - - return null; // Return command object instead } } diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 8132c30576..77fad2ffe1 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -54,12 +54,12 @@ public OptionList getOptionList() { } /** - * Returns the description of the hint tied to the question. + * Returns the hint tied to the question. * * @return Details of the hint. */ - public String getHint() { - return hint.getDescription(); + public Hint getHint() { + return hint; } /** diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index aa44a3eb2d..be29a8548e 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,10 +1,9 @@ package seedu.eduke8.quiz; -import seedu.eduke8.Command; +import seedu.eduke8.command.Command; import seedu.eduke8.common.Displayable; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; -import seedu.eduke8.parser.Parser; import seedu.eduke8.parser.QuizParser; import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; @@ -16,11 +15,12 @@ public class SingleTopicQuiz implements Quiz { private Topic topic; private int numberOfQuestions; - private Parser quizParser = new QuizParser(); + private QuizParser quizParser; public SingleTopicQuiz(Topic topic, int numberOfQuestions) { this.topic = topic; this.numberOfQuestions = numberOfQuestions; + quizParser = new QuizParser(); } @Override @@ -49,9 +49,10 @@ private void goThroughQuizQuestions(Ui ui, QuestionList questionList) { String userInput = ui.getInputFromUser(); - Command answerCommand = quizParser.parseCommand(optionList, userInput); + quizParser.setQuestion(question); + Command command = quizParser.parseCommand(optionList, userInput); - // answerCommand.execute(questionList, ui); + command.execute(optionList, ui); } } } From c5d2ab9d4534061d9768aeb1d152a02535579873 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sun, 11 Oct 2020 15:06:21 +0800 Subject: [PATCH 059/447] Add AnswerCommand and HintCommand junit tests --- .../eduke8/command/AnswerCommandTest.java | 29 +++++++++++++++++++ .../seedu/eduke8/command/HintCommandTest.java | 19 ++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/test/java/seedu/eduke8/command/AnswerCommandTest.java create mode 100644 src/test/java/seedu/eduke8/command/HintCommandTest.java diff --git a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java new file mode 100644 index 0000000000..b712d0c2ab --- /dev/null +++ b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java @@ -0,0 +1,29 @@ +package seedu.eduke8.command; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class AnswerCommandTest { + @Test + public void execute_correctAnswer_markAnsweredCorrectly() { + Option option = new Option("test"); + option.markAsCorrectAnswer(); + OptionList optionList = new OptionList(); + optionList.add(option); + + Hint hint = new Hint("test"); + + Question question = new Question("test", optionList, hint); + + Command answerCommand = new AnswerCommand(option, question); + answerCommand.execute(optionList, new Ui()); + + assertTrue(question.wasAnsweredCorrectly()); + } +} diff --git a/src/test/java/seedu/eduke8/command/HintCommandTest.java b/src/test/java/seedu/eduke8/command/HintCommandTest.java new file mode 100644 index 0000000000..898aa07e81 --- /dev/null +++ b/src/test/java/seedu/eduke8/command/HintCommandTest.java @@ -0,0 +1,19 @@ +package seedu.eduke8.command; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class HintCommandTest { + @Test + public void execute_normal_hintWasShown() { + Hint hint = new Hint("test"); + Command hintCommand = new HintCommand(hint); + hintCommand.execute(new OptionList(), new Ui()); + + assertTrue(hint.wasShown()); + } +} From ddc4b97a9e364f6e634c37101136776217c521a8 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 11 Oct 2020 16:02:22 +0800 Subject: [PATCH 060/447] Tweak Javadoc comments --- src/main/java/seedu/eduke8/question/Question.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 8132c30576..f5b9e8d2cd 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -47,7 +47,7 @@ public boolean wasShown() { /** * Returns the multiple options of the question. * - * @return An arraylist of options. + * @return A list of options pertaining to this question. */ public OptionList getOptionList() { return optionList; @@ -63,9 +63,9 @@ public String getHint() { } /** - * Returns the description of the question. + * Returns a boolean variable indicating if the user had requested for a hint for this question. * - * @return Question information. + * @return Indication of whether the hint for this question was shown before, */ public boolean wasHintShown() { return hint.wasShown(); @@ -80,8 +80,10 @@ public boolean wasAnsweredCorrectly() { return wasAnsweredCorrectly; } + /** + * Marks this question as answered correctly. + */ public void markAsAnsweredCorrectly() { wasAnsweredCorrectly = true; } - } From e13bc695baf9c81047086e4b6e9af518a230b837 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 11 Oct 2020 17:26:36 +0800 Subject: [PATCH 061/447] Add QuizQuestionClass --- ...uestionList.java => QuizQuestionList.java} | 57 ++++--------------- .../eduke8/question/TopicQuestionList.java | 51 +++++++++++++++++ .../seedu/eduke8/quiz/SingleTopicQuiz.java | 17 +++--- .../seedu/eduke8/storage/TopicsStorage.java | 6 +- src/main/java/seedu/eduke8/topic/Topic.java | 10 ++-- .../eduke8/storage/TopicsStorageTest.java | 6 +- 6 files changed, 83 insertions(+), 64 deletions(-) rename src/main/java/seedu/eduke8/question/{QuestionList.java => QuizQuestionList.java} (52%) create mode 100644 src/main/java/seedu/eduke8/question/TopicQuestionList.java diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuizQuestionList.java similarity index 52% rename from src/main/java/seedu/eduke8/question/QuestionList.java rename to src/main/java/seedu/eduke8/question/QuizQuestionList.java index 1e639f6504..808694ef69 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionList.java @@ -1,55 +1,48 @@ package seedu.eduke8.question; import seedu.eduke8.common.Displayable; -import seedu.eduke8.common.DisplayableList; import java.util.ArrayList; import java.util.Random; +import java.util.logging.Logger; -public class QuestionList implements DisplayableList { - private ArrayList allQuestions; // list of questions for the particular topic +public class QuizQuestionList { private ArrayList quizQuestions; private int currentQuestionNumber; private static final Random RANDOM = new Random(); - public QuestionList(ArrayList questions) { - allQuestions = questions; + public QuizQuestionList() { quizQuestions = null; currentQuestionNumber = 0; } - public void setQuizQuestions(int numberOfQuestionsForQuiz) { + public void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) { + // Logger logger = Logger.getLogger("main"); + int numberOfQuestionsSelected = 0; - // prevent repeated questions from being selected again + + // prevent repeated questionsInTopic from being selected again ArrayList integersChosen = new ArrayList<>(); while (numberOfQuestionsSelected < numberOfQuestionsForQuiz) { // get a random question that is within the bounds of the size of the available question list - int randomQuestionIndex = RANDOM.nextInt(allQuestions.size() - 1); + int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size() - 1); // if the number is already selected - the question is already selected, we re run the loop // to select another random number if (integersChosen.contains(randomQuestionIndex)) { + // logger.info("chosen a repeated question"); continue; } - // choose a random question from the question list and add it to the questions for quiz - quizQuestions.add((Question) allQuestions.get(randomQuestionIndex)); + // choose a random question from the question list and add it to the questionsInTopic for quiz + quizQuestions.add((Question) questionsInTopic.get(randomQuestionIndex)); numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } } - @Override - public int getCount() { - return quizQuestions.size(); - } - - public int getNumberOfQuestionsInTopic() { - return allQuestions.size(); - } - public Question getNextQuestion() { // Gets current question and increment count for number of questions shown to user return quizQuestions.get(currentQuestionNumber++); @@ -62,30 +55,4 @@ public int getCurrentQuestionNumber() { public boolean areAllQuestionsAnswered() { return currentQuestionNumber == quizQuestions.size(); } - - @Override - public ArrayList getInnerList() { - return allQuestions; - } - - @Override - public void add(Displayable question) { - allQuestions.add(question); - } - - @Override - public void delete(int index) { - allQuestions.remove(index); - } - - @Override - public Displayable find(String description) { - for (Displayable question : allQuestions) { - if (description.equals(question.getDescription())) { - return question; - } - } - return null; - } - } diff --git a/src/main/java/seedu/eduke8/question/TopicQuestionList.java b/src/main/java/seedu/eduke8/question/TopicQuestionList.java new file mode 100644 index 0000000000..af7d72fbfb --- /dev/null +++ b/src/main/java/seedu/eduke8/question/TopicQuestionList.java @@ -0,0 +1,51 @@ +package seedu.eduke8.question; + +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + +import java.util.ArrayList; + +public class TopicQuestionList implements DisplayableList { + private ArrayList questions; // list of questions for the particular topic + + public TopicQuestionList(ArrayList questions) { + this.questions = questions; + } + + public QuizQuestionList getQuizQuestionList(int numberOfQuestionsForQuiz) { + QuizQuestionList quizQuestionList = new QuizQuestionList(); + quizQuestionList.setQuizQuestions(numberOfQuestionsForQuiz, questions); + + return quizQuestionList; + } + + @Override + public int getCount() { + return questions.size(); + } + + @Override + public ArrayList getInnerList() { + return questions; + } + + @Override + public void add(Displayable question) { + questions.add(question); + } + + @Override + public void delete(int index) { + questions.remove(index); + } + + @Override + public Displayable find(String description) { + for (Displayable question : questions) { + if (description.equals(question.getDescription())) { + return question; + } + } + return null; + } +} diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index be29a8548e..a74b6a8d6f 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -6,7 +6,8 @@ import seedu.eduke8.option.OptionList; import seedu.eduke8.parser.QuizParser; import seedu.eduke8.question.Question; -import seedu.eduke8.question.QuestionList; +import seedu.eduke8.question.TopicQuestionList; +import seedu.eduke8.question.QuizQuestionList; import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; @@ -26,18 +27,18 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { @Override public void startQuiz(Ui ui) { ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); - QuestionList questionList = topic.getQuestionList(); - questionList.setQuizQuestions(numberOfQuestions); + TopicQuestionList topicQuestionList = topic.getQuestionList(); + QuizQuestionList quizQuestionList = topicQuestionList.getQuizQuestionList(numberOfQuestions); - goThroughQuizQuestions(ui, questionList); + goThroughQuizQuestions(ui, quizQuestionList); ui.printEndQuizPage(); } - private void goThroughQuizQuestions(Ui ui, QuestionList questionList) { - while (!questionList.areAllQuestionsAnswered()) { - Question question = questionList.getNextQuestion(); - ui.printQuestion(question, questionList.getCurrentQuestionNumber()); + private void goThroughQuizQuestions(Ui ui, QuizQuestionList quizQuestionList) { + while (!quizQuestionList.areAllQuestionsAnswered()) { + Question question = quizQuestionList.getNextQuestion(); + ui.printQuestion(question, quizQuestionList.getCurrentQuestionNumber()); OptionList optionList = question.getOptionList(); diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index ded93f5199..1bde332071 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -9,7 +9,7 @@ import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; -import seedu.eduke8.question.QuestionList; +import seedu.eduke8.question.TopicQuestionList; import seedu.eduke8.topic.Topic; import java.io.File; @@ -63,9 +63,9 @@ private static Topic parseToTopicObject(JSONObject topic) { .map(question -> parseToQuestionObject((JSONObject) question)) .collect(toList()); - QuestionList questionList = new QuestionList(questionsAsObjects); + TopicQuestionList topicQuestionList = new TopicQuestionList(questionsAsObjects); - Topic topicAsObject = new Topic(topicTitle, questionList); + Topic topicAsObject = new Topic(topicTitle, topicQuestionList); return topicAsObject; } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 4365188ba9..5b1e6d0d8b 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -1,16 +1,16 @@ package seedu.eduke8.topic; import seedu.eduke8.common.Displayable; -import seedu.eduke8.question.QuestionList; +import seedu.eduke8.question.TopicQuestionList; public class Topic implements Displayable { private String description; - private QuestionList questionList; + private TopicQuestionList questionList; private boolean wasShown; - public Topic(String description, QuestionList questionList) { + public Topic(String description, TopicQuestionList topicQuestionList) { this.description = description; - this.questionList = questionList; + this.questionList = topicQuestionList; wasShown = false; } @@ -24,7 +24,7 @@ public boolean wasShown() { return wasShown; } - public QuestionList getQuestionList() { + public TopicQuestionList getQuestionList() { return questionList; } } diff --git a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java index 5554f4cfed..943f395bbb 100644 --- a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java @@ -3,7 +3,7 @@ import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; -import seedu.eduke8.question.QuestionList; +import seedu.eduke8.question.TopicQuestionList; import seedu.eduke8.topic.Topic; import java.io.IOException; @@ -36,8 +36,8 @@ public void load_exampleJson_returnsTopicsFromJson() { Topic firstTopic = (Topic) topics.get(0); assertEquals(firstTopic.getDescription(), "OOP"); - QuestionList firstQuestionList = firstTopic.getQuestionList(); - assertEquals(firstQuestionList.getNumberOfQuestionsInTopic(), 2); + TopicQuestionList firstTopicQuestionList = firstTopic.getQuestionList(); + assertEquals(firstTopicQuestionList.getCount(), 2); } catch (ParseException | IOException e) { e.printStackTrace(); } From 67f7fb3d729c81e1d47d7db1f04c4df75a717a18 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 11 Oct 2020 17:32:00 +0800 Subject: [PATCH 062/447] Enhance SRP for getDescription method --- src/main/java/seedu/eduke8/command/AnswerCommand.java | 1 + src/main/java/seedu/eduke8/question/Question.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index 3d680c531a..690c7807de 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -22,5 +22,6 @@ public void execute(DisplayableList optionList, Ui ui) { } else { ui.printAnswerIsWrong(); } + question.markAsShown(); } } diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 77fad2ffe1..0e845684c2 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -30,7 +30,6 @@ public Question(String description, OptionList optionList, Hint hint) { */ @Override public String getDescription() { - wasShown = true; return description; } @@ -44,6 +43,10 @@ public boolean wasShown() { return wasShown; } + public void markAsShown() { + wasShown = true; + } + /** * Returns the multiple options of the question. * From 8af2b4ed2bffd8c21ab3dae9684690ccb8b3cfe0 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 11 Oct 2020 17:55:00 +0800 Subject: [PATCH 063/447] Add exception handling for when number of quiz questions specified <= 0 --- src/main/java/seedu/eduke8/Eduke8.java | 7 ++++++- .../java/seedu/eduke8/exception/Eduke8Exception.java | 7 +++++++ src/main/java/seedu/eduke8/parser/MenuParser.java | 6 ++++-- src/main/java/seedu/eduke8/parser/Parser.java | 3 ++- .../java/seedu/eduke8/question/QuizQuestionList.java | 10 +++++++++- .../java/seedu/eduke8/question/TopicQuestionList.java | 4 +++- src/main/java/seedu/eduke8/quiz/Quiz.java | 3 ++- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 4 +++- 8 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 src/main/java/seedu/eduke8/exception/Eduke8Exception.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index d9b798edb9..d150440e13 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -2,6 +2,7 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.command.Command; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.TopicList; @@ -43,7 +44,11 @@ private void runCommandLoopUntilExit() { while (!isExit) { String userInput = ui.getInputFromUser(); - Command command = menuParser.parseCommand(topicList, userInput); + try { + Command command = menuParser.parseCommand(topicList, userInput); + } catch (Eduke8Exception e) { + ui.printError(); // able to call ui.printError(e.getMessage()) too if implemented + } // command.execute(topicList, ui); isExit = true; //command.isExit(); } diff --git a/src/main/java/seedu/eduke8/exception/Eduke8Exception.java b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java new file mode 100644 index 0000000000..ed37d8ce0d --- /dev/null +++ b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java @@ -0,0 +1,7 @@ +package seedu.eduke8.exception; + +public class Eduke8Exception extends Exception { + public Eduke8Exception(String message) { + super(message); + } +} diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index b58f67744d..23792baeec 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -2,6 +2,7 @@ import seedu.eduke8.command.Command; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.quiz.SingleTopicQuiz; import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; @@ -13,7 +14,7 @@ public MenuParser() { } @Override - public Command parseCommand(DisplayableList topicList, String userInput) { + public Command parseCommand(DisplayableList topicList, String userInput) throws Eduke8Exception { int numOfQuestions = 0; String topicName = ""; String[] commandArr = userInput.trim().split(" ", 0); @@ -51,7 +52,8 @@ public Command parseCommand(DisplayableList topicList, String userInput) { } // Should move this to its own Command class - private void parseQuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { + private void parseQuizCommand(TopicList topicList, int numOfQuestions, + String topicName, Ui ui) throws Eduke8Exception { Topic topic = (Topic) topicList.find(topicName); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); diff --git a/src/main/java/seedu/eduke8/parser/Parser.java b/src/main/java/seedu/eduke8/parser/Parser.java index ad74a3fb27..39d0a01cea 100644 --- a/src/main/java/seedu/eduke8/parser/Parser.java +++ b/src/main/java/seedu/eduke8/parser/Parser.java @@ -2,7 +2,8 @@ import seedu.eduke8.command.Command; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; public interface Parser { - Command parseCommand(DisplayableList displayableList, String userInput); + Command parseCommand(DisplayableList displayableList, String userInput) throws Eduke8Exception; } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionList.java b/src/main/java/seedu/eduke8/question/QuizQuestionList.java index 808694ef69..80d3de4da5 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionList.java @@ -1,12 +1,15 @@ package seedu.eduke8.question; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; import java.util.Random; import java.util.logging.Logger; public class QuizQuestionList { + private static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; + private ArrayList quizQuestions; private int currentQuestionNumber; @@ -17,9 +20,14 @@ public QuizQuestionList() { currentQuestionNumber = 0; } - public void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) { + public void setQuizQuestions(int numberOfQuestionsForQuiz, + ArrayList questionsInTopic) throws Eduke8Exception { // Logger logger = Logger.getLogger("main"); + if (numberOfQuestionsForQuiz <= 0) { + throw new Eduke8Exception(INVALID_QUIZ_QUESTION_NUMBER); + } + int numberOfQuestionsSelected = 0; // prevent repeated questionsInTopic from being selected again diff --git a/src/main/java/seedu/eduke8/question/TopicQuestionList.java b/src/main/java/seedu/eduke8/question/TopicQuestionList.java index af7d72fbfb..869970b093 100644 --- a/src/main/java/seedu/eduke8/question/TopicQuestionList.java +++ b/src/main/java/seedu/eduke8/question/TopicQuestionList.java @@ -2,17 +2,19 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; public class TopicQuestionList implements DisplayableList { + private ArrayList questions; // list of questions for the particular topic public TopicQuestionList(ArrayList questions) { this.questions = questions; } - public QuizQuestionList getQuizQuestionList(int numberOfQuestionsForQuiz) { + public QuizQuestionList getQuizQuestionList(int numberOfQuestionsForQuiz) throws Eduke8Exception { QuizQuestionList quizQuestionList = new QuizQuestionList(); quizQuestionList.setQuizQuestions(numberOfQuestionsForQuiz, questions); diff --git a/src/main/java/seedu/eduke8/quiz/Quiz.java b/src/main/java/seedu/eduke8/quiz/Quiz.java index 960ce755e6..11cc722a2a 100644 --- a/src/main/java/seedu/eduke8/quiz/Quiz.java +++ b/src/main/java/seedu/eduke8/quiz/Quiz.java @@ -1,8 +1,9 @@ package seedu.eduke8.quiz; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.ui.Ui; public interface Quiz { - void startQuiz(Ui ui); + void startQuiz(Ui ui) throws Eduke8Exception; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index a74b6a8d6f..3c5d922836 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -2,6 +2,7 @@ import seedu.eduke8.command.Command; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.parser.QuizParser; @@ -25,9 +26,10 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { } @Override - public void startQuiz(Ui ui) { + public void startQuiz(Ui ui) throws Eduke8Exception { ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); TopicQuestionList topicQuestionList = topic.getQuestionList(); + QuizQuestionList quizQuestionList = topicQuestionList.getQuizQuestionList(numberOfQuestions); goThroughQuizQuestions(ui, quizQuestionList); From 332b476fee5481b9d8d2c9a894878652d575781e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 11 Oct 2020 23:25:03 +0800 Subject: [PATCH 064/447] Revert TopicQuestionList class name to QuestionList --- .../{TopicQuestionList.java => QuestionList.java} | 4 ++-- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 6 +++--- src/main/java/seedu/eduke8/storage/TopicsStorage.java | 6 +++--- src/main/java/seedu/eduke8/topic/Topic.java | 10 +++++----- .../java/seedu/eduke8/storage/TopicsStorageTest.java | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) rename src/main/java/seedu/eduke8/question/{TopicQuestionList.java => QuestionList.java} (90%) diff --git a/src/main/java/seedu/eduke8/question/TopicQuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java similarity index 90% rename from src/main/java/seedu/eduke8/question/TopicQuestionList.java rename to src/main/java/seedu/eduke8/question/QuestionList.java index 869970b093..e288767b85 100644 --- a/src/main/java/seedu/eduke8/question/TopicQuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -6,11 +6,11 @@ import java.util.ArrayList; -public class TopicQuestionList implements DisplayableList { +public class QuestionList implements DisplayableList { private ArrayList questions; // list of questions for the particular topic - public TopicQuestionList(ArrayList questions) { + public QuestionList(ArrayList questions) { this.questions = questions; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 3c5d922836..5c04a1cc7b 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -7,7 +7,7 @@ import seedu.eduke8.option.OptionList; import seedu.eduke8.parser.QuizParser; import seedu.eduke8.question.Question; -import seedu.eduke8.question.TopicQuestionList; +import seedu.eduke8.question.QuestionList; import seedu.eduke8.question.QuizQuestionList; import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; @@ -28,9 +28,9 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { @Override public void startQuiz(Ui ui) throws Eduke8Exception { ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); - TopicQuestionList topicQuestionList = topic.getQuestionList(); + QuestionList questionList = topic.getQuestionList(); - QuizQuestionList quizQuestionList = topicQuestionList.getQuizQuestionList(numberOfQuestions); + QuizQuestionList quizQuestionList = questionList.getQuizQuestionList(numberOfQuestions); goThroughQuizQuestions(ui, quizQuestionList); diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 1bde332071..ded93f5199 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -9,7 +9,7 @@ import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; -import seedu.eduke8.question.TopicQuestionList; +import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; import java.io.File; @@ -63,9 +63,9 @@ private static Topic parseToTopicObject(JSONObject topic) { .map(question -> parseToQuestionObject((JSONObject) question)) .collect(toList()); - TopicQuestionList topicQuestionList = new TopicQuestionList(questionsAsObjects); + QuestionList questionList = new QuestionList(questionsAsObjects); - Topic topicAsObject = new Topic(topicTitle, topicQuestionList); + Topic topicAsObject = new Topic(topicTitle, questionList); return topicAsObject; } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 5b1e6d0d8b..4365188ba9 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -1,16 +1,16 @@ package seedu.eduke8.topic; import seedu.eduke8.common.Displayable; -import seedu.eduke8.question.TopicQuestionList; +import seedu.eduke8.question.QuestionList; public class Topic implements Displayable { private String description; - private TopicQuestionList questionList; + private QuestionList questionList; private boolean wasShown; - public Topic(String description, TopicQuestionList topicQuestionList) { + public Topic(String description, QuestionList questionList) { this.description = description; - this.questionList = topicQuestionList; + this.questionList = questionList; wasShown = false; } @@ -24,7 +24,7 @@ public boolean wasShown() { return wasShown; } - public TopicQuestionList getQuestionList() { + public QuestionList getQuestionList() { return questionList; } } diff --git a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java index 943f395bbb..59ec26da38 100644 --- a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java @@ -3,7 +3,7 @@ import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; -import seedu.eduke8.question.TopicQuestionList; +import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; import java.io.IOException; @@ -36,8 +36,8 @@ public void load_exampleJson_returnsTopicsFromJson() { Topic firstTopic = (Topic) topics.get(0); assertEquals(firstTopic.getDescription(), "OOP"); - TopicQuestionList firstTopicQuestionList = firstTopic.getQuestionList(); - assertEquals(firstTopicQuestionList.getCount(), 2); + QuestionList firstQuestionList = firstTopic.getQuestionList(); + assertEquals(firstQuestionList.getCount(), 2); } catch (ParseException | IOException e) { e.printStackTrace(); } From 93f095a390a073db75ca11175d54ec2ab6a7d2c2 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 00:06:45 +0800 Subject: [PATCH 065/447] Change QuizQuestionList class to QuizQuestionsManager Changed constructor for QuizQuestionsManager to set the quiz questions using it. --- .../seedu/eduke8/question/QuestionList.java | 11 ++++++----- ...tionList.java => QuizQuestionsManager.java} | 18 +++++++++++++----- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 17 +++++++++-------- 3 files changed, 28 insertions(+), 18 deletions(-) rename src/main/java/seedu/eduke8/question/{QuizQuestionList.java => QuizQuestionsManager.java} (77%) diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index e288767b85..f13eaa579d 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -2,7 +2,6 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; -import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; @@ -14,12 +13,14 @@ public QuestionList(ArrayList questions) { this.questions = questions; } - public QuizQuestionList getQuizQuestionList(int numberOfQuestionsForQuiz) throws Eduke8Exception { - QuizQuestionList quizQuestionList = new QuizQuestionList(); - quizQuestionList.setQuizQuestions(numberOfQuestionsForQuiz, questions); + /* + public QuizQuestionsManager getQuizQuestionList(int numberOfQuestionsForQuiz) throws Eduke8Exception { + QuizQuestionsManager quizQuestionsManager = new QuizQuestionsManager(); + quizQuestionsManager.setQuizQuestions(numberOfQuestionsForQuiz, questions); - return quizQuestionList; + return quizQuestionsManager; } + */ @Override public int getCount() { diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionList.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java similarity index 77% rename from src/main/java/seedu/eduke8/question/QuizQuestionList.java rename to src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index 80d3de4da5..f7df381244 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -5,19 +5,23 @@ import java.util.ArrayList; import java.util.Random; -import java.util.logging.Logger; +// import java.util.logging.Logger; -public class QuizQuestionList { +public class QuizQuestionsManager { private static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; + private static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = + "There is not enough questions in the topic for the quiz!"; - private ArrayList quizQuestions; + + private ArrayList quizQuestions = null; private int currentQuestionNumber; private static final Random RANDOM = new Random(); - public QuizQuestionList() { - quizQuestions = null; + public QuizQuestionsManager(int numberOfQuestionsForQuiz, + ArrayList questionsInTopic) throws Eduke8Exception { currentQuestionNumber = 0; + setQuizQuestions(numberOfQuestionsForQuiz, questionsInTopic); } public void setQuizQuestions(int numberOfQuestionsForQuiz, @@ -28,6 +32,10 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, throw new Eduke8Exception(INVALID_QUIZ_QUESTION_NUMBER); } + if (numberOfQuestionsForQuiz > questionsInTopic.size()) { + throw new Eduke8Exception(INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ); + } + int numberOfQuestionsSelected = 0; // prevent repeated questionsInTopic from being selected again diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 5c04a1cc7b..4f9d94e91c 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -8,7 +8,7 @@ import seedu.eduke8.parser.QuizParser; import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; -import seedu.eduke8.question.QuizQuestionList; +import seedu.eduke8.question.QuizQuestionsManager; import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; @@ -28,19 +28,20 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { @Override public void startQuiz(Ui ui) throws Eduke8Exception { ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); - QuestionList questionList = topic.getQuestionList(); + QuestionList topicQuestionList = topic.getQuestionList(); - QuizQuestionList quizQuestionList = questionList.getQuizQuestionList(numberOfQuestions); + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(numberOfQuestions, topicQuestionList.getInnerList()); - goThroughQuizQuestions(ui, quizQuestionList); + goThroughQuizQuestions(ui, quizQuestionsManager); ui.printEndQuizPage(); } - private void goThroughQuizQuestions(Ui ui, QuizQuestionList quizQuestionList) { - while (!quizQuestionList.areAllQuestionsAnswered()) { - Question question = quizQuestionList.getNextQuestion(); - ui.printQuestion(question, quizQuestionList.getCurrentQuestionNumber()); + private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsManager) { + while (!quizQuestionsManager.areAllQuestionsAnswered()) { + Question question = quizQuestionsManager.getNextQuestion(); + ui.printQuestion(question, quizQuestionsManager.getCurrentQuestionNumber()); OptionList optionList = question.getOptionList(); From ec3e2c6e39f56b730a5d53e80fe93bc6bb0706c4 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 01:01:52 +0800 Subject: [PATCH 066/447] Remove markAsShown method and incorporated it into getDescription() --- src/main/java/seedu/eduke8/command/AnswerCommand.java | 1 - src/main/java/seedu/eduke8/question/Question.java | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index 690c7807de..3d680c531a 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -22,6 +22,5 @@ public void execute(DisplayableList optionList, Ui ui) { } else { ui.printAnswerIsWrong(); } - question.markAsShown(); } } diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 0e845684c2..cac40c3e2d 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -30,6 +30,7 @@ public Question(String description, OptionList optionList, Hint hint) { */ @Override public String getDescription() { + wasShown = true; return description; } @@ -43,9 +44,6 @@ public boolean wasShown() { return wasShown; } - public void markAsShown() { - wasShown = true; - } /** * Returns the multiple options of the question. From c5ca6ec9720dd961b64f707142fb82aa9bd2eb55 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 12 Oct 2020 04:36:08 +0800 Subject: [PATCH 067/447] Add a command class for each command available in MenuParser. --- src/main/java/seedu/eduke8/Eduke8.java | 4 +-- .../seedu/eduke8/command/AboutCommand.java | 11 ++++++++ .../java/seedu/eduke8/command/Command.java | 2 +- .../seedu/eduke8/command/ExitCommand.java | 11 ++++++++ .../seedu/eduke8/command/HelpCommand.java | 11 ++++++++ .../seedu/eduke8/command/QuizCommand.java | 28 +++++++++++++++++++ .../seedu/eduke8/command/TextbookCommand.java | 11 ++++++++ .../seedu/eduke8/command/TopicsCommand.java | 12 ++++++++ .../java/seedu/eduke8/parser/MenuParser.java | 27 +++++------------- 9 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/AboutCommand.java create mode 100644 src/main/java/seedu/eduke8/command/ExitCommand.java create mode 100644 src/main/java/seedu/eduke8/command/HelpCommand.java create mode 100644 src/main/java/seedu/eduke8/command/QuizCommand.java create mode 100644 src/main/java/seedu/eduke8/command/TextbookCommand.java create mode 100644 src/main/java/seedu/eduke8/command/TopicsCommand.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index d9b798edb9..c8db2e6593 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -44,8 +44,8 @@ private void runCommandLoopUntilExit() { while (!isExit) { String userInput = ui.getInputFromUser(); Command command = menuParser.parseCommand(topicList, userInput); - // command.execute(topicList, ui); - isExit = true; //command.isExit(); + command.execute(topicList, ui); + isExit = command.isExit(); } } diff --git a/src/main/java/seedu/eduke8/command/AboutCommand.java b/src/main/java/seedu/eduke8/command/AboutCommand.java new file mode 100644 index 0000000000..4fbc43228d --- /dev/null +++ b/src/main/java/seedu/eduke8/command/AboutCommand.java @@ -0,0 +1,11 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +public class AboutCommand extends Command { + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ui.printAbout(); + } +} diff --git a/src/main/java/seedu/eduke8/command/Command.java b/src/main/java/seedu/eduke8/command/Command.java index d2c7bb83c4..a12727e0c4 100644 --- a/src/main/java/seedu/eduke8/command/Command.java +++ b/src/main/java/seedu/eduke8/command/Command.java @@ -5,7 +5,7 @@ public abstract class Command { - private boolean isExit; + protected boolean isExit; public Command() { isExit = false; diff --git a/src/main/java/seedu/eduke8/command/ExitCommand.java b/src/main/java/seedu/eduke8/command/ExitCommand.java new file mode 100644 index 0000000000..ee8f8cc30e --- /dev/null +++ b/src/main/java/seedu/eduke8/command/ExitCommand.java @@ -0,0 +1,11 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +public class ExitCommand extends Command { + @Override + public void execute(DisplayableList displayableList, Ui ui) { + isExit = true; + } +} diff --git a/src/main/java/seedu/eduke8/command/HelpCommand.java b/src/main/java/seedu/eduke8/command/HelpCommand.java new file mode 100644 index 0000000000..72092455cd --- /dev/null +++ b/src/main/java/seedu/eduke8/command/HelpCommand.java @@ -0,0 +1,11 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +public class HelpCommand extends Command { + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ui.printHelp(); + } +} diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java new file mode 100644 index 0000000000..92529603e4 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -0,0 +1,28 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.quiz.SingleTopicQuiz; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +public class QuizCommand extends Command { + private TopicList topicList; + private int numOfQuestions; + private String topicName; + private Ui ui; + + public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { + this.topicList = topicList; + this.numOfQuestions = numOfQuestions; + this.topicName = topicName; + this.ui = ui; + } + + @Override + public void execute(DisplayableList displayableList, Ui ui) { + Topic topic = (Topic) topicList.find(topicName); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); + singleTopicQuiz.startQuiz(ui); + } +} diff --git a/src/main/java/seedu/eduke8/command/TextbookCommand.java b/src/main/java/seedu/eduke8/command/TextbookCommand.java new file mode 100644 index 0000000000..ef3466b113 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/TextbookCommand.java @@ -0,0 +1,11 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +public class TextbookCommand extends Command { + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ui.printTextbook(); + } +} diff --git a/src/main/java/seedu/eduke8/command/TopicsCommand.java b/src/main/java/seedu/eduke8/command/TopicsCommand.java new file mode 100644 index 0000000000..82ad5ecc56 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/TopicsCommand.java @@ -0,0 +1,12 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +public class TopicsCommand extends Command { + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ((TopicList) displayableList).showTopics(); + } +} diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index b58f67744d..ee0bba7bd9 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,6 +1,6 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.Command; +import seedu.eduke8.command.*; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.quiz.SingleTopicQuiz; import seedu.eduke8.topic.Topic; @@ -26,34 +26,21 @@ public Command parseCommand(DisplayableList topicList, String userInput) { Ui ui = new Ui(); switch (commandArr[0]) { case "about": - ui.printAbout(); - break; + return new AboutCommand(); case "help": - ui.printHelp(); - break; + return new HelpCommand(); case "topics": - ((TopicList) topicList).showTopics(); - break; + return new TopicsCommand(); case "textbook": - ui.printTextbook(); - break; + return new TextbookCommand(); case "quiz": - parseQuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); - break; + return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); case "exit": - System.exit(0); - break; + return new ExitCommand(); default: break; } return null; // Return command object instead } - - // Should move this to its own Command class - private void parseQuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { - Topic topic = (Topic) topicList.find(topicName); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); - singleTopicQuiz.startQuiz(ui); - } } From 73d00d0c95af73c1a33b6730b6beba56d60fbb16 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 12 Oct 2020 04:42:00 +0800 Subject: [PATCH 068/447] Fix the library call in MenuParser, by calling each individual class. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index ee0bba7bd9..514ae1458f 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,9 +1,13 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.AboutCommand; +import seedu.eduke8.command.ExitCommand; +import seedu.eduke8.command.HelpCommand; +import seedu.eduke8.command.QuizCommand; +import seedu.eduke8.command.TextbookCommand; +import seedu.eduke8.command.TopicsCommand; import seedu.eduke8.common.DisplayableList; -import seedu.eduke8.quiz.SingleTopicQuiz; -import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; From 1809cb3653d39f3248c07e6bac096477adb30757 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 12 Oct 2020 04:56:56 +0800 Subject: [PATCH 069/447] Fix input for text-ui-test. --- text-ui-test/input.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 0abaeaa993..ae3bc0a936 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ -bye \ No newline at end of file +exit \ No newline at end of file From 6209d7fb81fd434d3872fc575c02c5f761154d2e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 08:25:14 +0800 Subject: [PATCH 070/447] Remove commented out code section --- src/main/java/seedu/eduke8/question/QuestionList.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index f13eaa579d..f11673e496 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -13,15 +13,6 @@ public QuestionList(ArrayList questions) { this.questions = questions; } - /* - public QuizQuestionsManager getQuizQuestionList(int numberOfQuestionsForQuiz) throws Eduke8Exception { - QuizQuestionsManager quizQuestionsManager = new QuizQuestionsManager(); - quizQuestionsManager.setQuizQuestions(numberOfQuestionsForQuiz, questions); - - return quizQuestionsManager; - } - */ - @Override public int getCount() { return questions.size(); From b778e465ffa969d8dcd69431b67807d641438ea4 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 16:01:08 +0800 Subject: [PATCH 071/447] Add JUnit tests for Question class. --- .../java/seedu/eduke8/question/Question.java | 6 +- .../seedu/eduke8/question/QuestionList.java | 1 + .../seedu/eduke8/question/QuestionTest.java | 76 ++++++++++++++++--- 3 files changed, 73 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index acf8866c14..ca261f3001 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -16,8 +16,12 @@ public class Question implements Displayable { private boolean wasShown; public Question(String description, OptionList optionList, Hint hint) { + // assert description != null; // for another pull request. this.description = description; + + // assert optionList != null; // for another pull request. this.optionList = optionList; + this.hint = hint; wasAnsweredCorrectly = false; wasShown = false; @@ -48,7 +52,7 @@ public boolean wasShown() { /** * Returns the multiple options of the question. * - * @return A list of options pertaining to this question. + * @return An arraylist of options pertaining to this question. */ public OptionList getOptionList() { return optionList; diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index f11673e496..d7c05a462d 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -10,6 +10,7 @@ public class QuestionList implements DisplayableList { private ArrayList questions; // list of questions for the particular topic public QuestionList(ArrayList questions) { + // assert questions.size() > 0; // for another pull request this.questions = questions; } diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index de42c5b64a..9249033d49 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -1,36 +1,94 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class QuestionTest { + private static final String PLACEHOLDER_QUESTION_DESCRIPTION = "This is a question description."; + private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final int OPTIONLIST_OPTIONS_COUNT = 2; + + @Test - void getQuestionDescription_questionDescription_returnsQuestionDescription() { - String inputQuestionDescription = "This is a question description."; + void getDescription_placeholderQuestionDescription_returnsQuestionDescription() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); - Question question = new Question(inputQuestionDescription, null, null); - assertEquals(inputQuestionDescription, question.getQuestionDescription()); + assertEquals(PLACEHOLDER_QUESTION_DESCRIPTION, question.getDescription()); } @Test - void getOptions() { + void wasShown_questionThatWasShownToUser_expectsTrue() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); + + // When question is being shown to user, it is marked as shown automatically. + String questionDescriptionShownToUser = question.getDescription(); + assertTrue(question.wasShown()); } @Test - void getHint() { + void getOptionList_optionListWithTwoOptions_returnsCountOfTwoOptions() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); + + assertEquals(OPTIONLIST_OPTIONS_COUNT, question.getOptionList().getCount()); } @Test - void hintWasShown() { + void getHint_hintObject_returnsHintDescription() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); + + assertEquals(PLACEHOLDER_HINT_DESCRIPTION, question.getHint().getDescription()); } + @Test - void wasAnsweredCorrectly() { + void wasHintShown_questionWithHintShown_expectsTrue() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); + + Hint hintThatWasShownToUser = question.getHint(); + + // Shows hint to user to mark hint as shown to user before + hintThatWasShownToUser.getDescription(); + + assertTrue(question.wasHintShown()); } + @Test - void wasAttempted() { + void wasAnsweredCorrectly_questionMarkedAsAnsweredCorrectly_expectsTrue() { + // Creates a question object with description, 2 options and a hint + Question question = createTestQuestion(); + + question.markAsAnsweredCorrectly(); + assertTrue(question.wasAnsweredCorrectly()); + } + + + // Creates a standard question for the tests with description, 2 options and a hint + private Question createTestQuestion() { + String inputQuestionDescription = PLACEHOLDER_QUESTION_DESCRIPTION; + + Option option1 = new Option("test1"); + Option option2 = new Option("test2"); + OptionList optionList = new OptionList(); + optionList.add(option1); + optionList.add(option2); + + String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; + Hint hint = new Hint(inputHintDescription); + + Question question = new Question(inputQuestionDescription, optionList, hint); + + return question; } } \ No newline at end of file From b5d2a93cf61964b428d7612217c3f90ac6704b4a Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 16:25:14 +0800 Subject: [PATCH 072/447] Add JUnit tests for QuestionList class --- .../eduke8/question/QuestionListTest.java | 87 +++++++++++++++++++ .../seedu/eduke8/question/QuestionTest.java | 2 +- 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 src/test/java/seedu/eduke8/question/QuestionListTest.java diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java new file mode 100644 index 0000000000..00c7cab000 --- /dev/null +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -0,0 +1,87 @@ +package seedu.eduke8.question; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class QuestionListTest { + + private static final String PLACEHOLDER_QUESTION_ONE_DESCRIPTION = "First question description."; + private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; + private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; + private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final int DEFAULT_QUESTION_COUNT = 2; + + + @Test + void getCount_twoQuestions_returnsCountOfTwo() { + QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + + assertEquals(DEFAULT_QUESTION_COUNT, questionList.getCount()); + } + + + @Test + void add_thirdQuestionToQuestionList_returnsCountOfThree() { + QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + + Question thirdQuestion = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); + questionList.add(thirdQuestion); + + assertEquals(DEFAULT_QUESTION_COUNT + 1, questionList.getCount()); + } + + @Test + void delete_questionListWithTwoQuestions_returnsCountOfOne() { + QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + + questionList.delete(1); + + assertEquals(DEFAULT_QUESTION_COUNT - 1, questionList.getCount()); + } + + @Test + void find_questionListWithTwoQuestions_returnsFirstQuestion() { + QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + + Displayable firstQuestionOfQuestionList = questionList.find(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + + assertEquals(PLACEHOLDER_QUESTION_ONE_DESCRIPTION, firstQuestionOfQuestionList.getDescription()); + } + + + // Creates a question list that holds two questions, each with a unique description + private QuestionList createQuestionListWithTwoUniqueQuestions() { + ArrayList questions = new ArrayList<>(); + Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + + questions.add(question1); + questions.add(question2); + + QuestionList questionList = new QuestionList(questions); + return questionList; + } + + // Creates a question with a specific description, 2 standard options and a standard hint + private Question createTestQuestionWithCustomDescription(String description) { + Option option1 = new Option("test1"); + Option option2 = new Option("test2"); + OptionList optionList = new OptionList(); + optionList.add(option1); + optionList.add(option2); + + String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; + Hint hint = new Hint(inputHintDescription); + + Question question = new Question(description, optionList, hint); + + return question; + } +} \ No newline at end of file diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index 9249033d49..1c43aefafb 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -91,4 +91,4 @@ private Question createTestQuestion() { return question; } -} \ No newline at end of file +} From 74a36a2057982e46cad203ce69f5b1023e6b2bf0 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 17:34:02 +0800 Subject: [PATCH 073/447] Add partial JUnit tests for QuizQuestionsManager class --- .../eduke8/question/QuizQuestionsManager.java | 10 ++- .../question/QuizQuestionsManagerTest.java | 78 +++++++++++++++++++ 2 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index f7df381244..a0c594d0dc 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -8,12 +8,12 @@ // import java.util.logging.Logger; public class QuizQuestionsManager { - private static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; - private static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = + public static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; + public static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = "There is not enough questions in the topic for the quiz!"; - private ArrayList quizQuestions = null; + protected ArrayList quizQuestions = null; private int currentQuestionNumber; private static final Random RANDOM = new Random(); @@ -71,4 +71,8 @@ public int getCurrentQuestionNumber() { public boolean areAllQuestionsAnswered() { return currentQuestionNumber == quizQuestions.size(); } + + public int getQuizQuestionsCount() { + return quizQuestions.size(); + } } diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java new file mode 100644 index 0000000000..78af76d15c --- /dev/null +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -0,0 +1,78 @@ +package seedu.eduke8.question; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class QuizQuestionsManagerTest { + + private static final String PLACEHOLDER_QUESTION_ONE_DESCRIPTION = "First question description."; + private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; + private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; + private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final int TOPIC_QUESTIONS_COUNT = 3; + private static final int QUIZ_QUESTIONS_COUNT = 2; + + + @Test + void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_returnsCountOfTwo() + throws Eduke8Exception { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(QUIZ_QUESTIONS_COUNT, topicQuestionList.getInnerList()); + + assertEquals(QUIZ_QUESTIONS_COUNT, quizQuestionsManager.getQuizQuestionsCount()); + } + + @Test + void getNextQuestion() { + } + + @Test + void getCurrentQuestionNumber() { + } + + @Test + void areAllQuestionsAnswered() { + } + + + // Creates a question list that holds two questions, each with a unique description + private QuestionList createQuestionListWithThreeUniqueQuestions() { + ArrayList questions = new ArrayList<>(); + Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + Question question3 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); + + questions.add(question1); + questions.add(question2); + questions.add(question3); + + QuestionList questionList = new QuestionList(questions); + return questionList; + } + + // Creates a question with a specific description, 2 standard options and a standard hint + private Question createTestQuestionWithCustomDescription(String description) { + Option option1 = new Option("test1"); + Option option2 = new Option("test2"); + OptionList optionList = new OptionList(); + optionList.add(option1); + optionList.add(option2); + + String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; + Hint hint = new Hint(inputHintDescription); + + Question question = new Question(description, optionList, hint); + + return question; + } +} \ No newline at end of file From 27a22dbed02882d74381b0ed71df4516cae1f137 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 12 Oct 2020 18:36:13 +0800 Subject: [PATCH 074/447] Fix issues in QuizCommand and add IncorrectCommand Class to be used under MenuParser to handle bad commands. --- .../eduke8/command/IncorrectCommand.java | 17 +++++++++++++ .../seedu/eduke8/command/QuizCommand.java | 12 ++++++--- .../java/seedu/eduke8/parser/MenuParser.java | 25 ++++++++----------- src/main/java/seedu/eduke8/ui/Ui.java | 4 +-- text-ui-test/EXPECTED.TXT | 18 +++++++++++++ text-ui-test/input.txt | 3 +++ 6 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/IncorrectCommand.java diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java new file mode 100644 index 0000000000..de2e6acab6 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -0,0 +1,17 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +public class IncorrectCommand extends Command { + String errorType = ""; + + public IncorrectCommand(String errorType) { + this.errorType = errorType; + } + + @Override + public void execute(DisplayableList displayableList, Ui ui) { + ui.printError(); //to implement in ui: print out messages according to string input indicating type of error + } +} diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 92529603e4..65449c8e97 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -1,6 +1,8 @@ package seedu.eduke8.command; +import seedu.eduke8.Eduke8; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.quiz.SingleTopicQuiz; import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; @@ -21,8 +23,12 @@ public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui @Override public void execute(DisplayableList displayableList, Ui ui) { - Topic topic = (Topic) topicList.find(topicName); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); - singleTopicQuiz.startQuiz(ui); + try { + Topic topic = (Topic) topicList.find(topicName); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); + singleTopicQuiz.startQuiz(ui); + } catch (Eduke8Exception ee) { + ui.printError(); //to implement in ui: specific error for QuizCommand issues + } } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 86c593db24..a9e623e00e 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,12 +1,6 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.AboutCommand; -import seedu.eduke8.command.ExitCommand; -import seedu.eduke8.command.HelpCommand; -import seedu.eduke8.command.QuizCommand; -import seedu.eduke8.command.TextbookCommand; -import seedu.eduke8.command.TopicsCommand; +import seedu.eduke8.command.*; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; @@ -19,15 +13,8 @@ public MenuParser() { @Override public Command parseCommand(DisplayableList topicList, String userInput) throws Eduke8Exception { - int numOfQuestions = 0; - String topicName = ""; String[] commandArr = userInput.trim().split(" ", 0); - if (commandArr.length == 3 && commandArr[0].equals("quiz")) { - numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); - topicName = commandArr[1].substring(2); - } - // Move all these executions with Ui to Command classes and pass Ui to the execute method Ui ui = new Ui(); switch (commandArr[0]) { case "about": @@ -39,12 +26,20 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws case "textbook": return new TextbookCommand(); case "quiz": + int numOfQuestions = 0; + String topicName = ""; + if (commandArr.length == 3) { + numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); + topicName = commandArr[1].substring(2); + } else if (commandArr.length < 3) { + return new IncorrectCommand("empty"); + } return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); case "exit": return new ExitCommand(); default: break; } - return null; // Return command object instead + return new IncorrectCommand("unrecognised"); } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index bfcb82b452..e9aa877ebe 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -24,7 +24,7 @@ public class Ui { private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " + "understand software engineering and OOP principles through a gamified platform and enhance their " - + "learning experience. It also consolidates key concepts for easy revision. "; + + "learning experience. It also consolidates key concepts for easy revision."; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\nWhat can I do for you?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can used:"; @@ -129,7 +129,7 @@ private void printStartQuizTopics(String topicsChosen) { } private void printStartQuizQuestions(int numberOfQuestionsChosen) { - System.out.println("You have chosen to complete " + numberOfQuestionsChosen + "question"); + System.out.print("You have chosen to complete " + numberOfQuestionsChosen + " question"); if (numberOfQuestionsChosen < 2) { System.out.println("."); } else { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 80fd484a3f..528c356386 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -10,5 +10,23 @@ Hello! I'm E-Duke-8 What can I do for you? ------------------------------------------------------------------- ------------------------------------------------------------------- +E-Duke-8 is a desktop app that helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. It also consolidates key concepts for easy revision. +------------------------------------------------------------------- +------------------------------------------------------------------- +These are the commands that you can used: +------------------------------------------------------------------- +------------------------------------------------------------------- +1) about +2) help +3) topics +4) textbook +5) quiz +6) stats +7) exit +------------------------------------------------------------------- +------------------------------------------------------------------- +The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html +------------------------------------------------------------------- +------------------------------------------------------------------- Bye bye. Hope you have a nice day and see you soon! ------------------------------------------------------------------- diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index ae3bc0a936..21a76f0754 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1,4 @@ +about +help +textbook exit \ No newline at end of file From 164d05cc1c5b1ea04cc47f016af0529afa6dbf7f Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 12 Oct 2020 18:48:10 +0800 Subject: [PATCH 075/447] Add JUnit tests for QuizQuestionsManager Fixed bug with quizQuestions arraylist in QuizQuestionsManager too --- .../eduke8/question/QuizQuestionsManager.java | 2 +- .../question/QuizQuestionsManagerTest.java | 52 +++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index a0c594d0dc..a640336f56 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -13,7 +13,7 @@ public class QuizQuestionsManager { "There is not enough questions in the topic for the quiz!"; - protected ArrayList quizQuestions = null; + private ArrayList quizQuestions = new ArrayList<>(); private int currentQuestionNumber; private static final Random RANDOM = new Random(); diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index 78af76d15c..b8a4b17163 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -10,6 +10,9 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + class QuizQuestionsManagerTest { @@ -21,11 +24,13 @@ class QuizQuestionsManagerTest { private static final int QUIZ_QUESTIONS_COUNT = 2; + // This test tests for getQuizQuestionsCount() method too @Test void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_returnsCountOfTwo() throws Eduke8Exception { QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + // Creating a quiz with 2 questions selected from a total of 3 questions from the topic QuizQuestionsManager quizQuestionsManager = new QuizQuestionsManager(QUIZ_QUESTIONS_COUNT, topicQuestionList.getInnerList()); @@ -33,18 +38,57 @@ void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_ret } @Test - void getNextQuestion() { + void quizQuestionsManagerConstructor_lessThanZeroNumberOfQuizQuestions_expectsException() { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + assertThrows(Eduke8Exception.class, () -> { + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(-1, topicQuestionList.getInnerList()); + }); } + // Number of quiz questions requested by user exceeds the number of questions in the topic @Test - void getCurrentQuestionNumber() { + void quizQuestionsManagerConstructor_invalidNumberOfQuizQuestions_expectsException() { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + assertThrows(Eduke8Exception.class, () -> { + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(TOPIC_QUESTIONS_COUNT + 1, topicQuestionList.getInnerList()); + }); + } + + + // This test tests for getCurrentQuestionNumber() method too + @Test + void getNextQuestion_currentQuestionNumberAtZero_returnsCurrentQuestionNumberAtOne() + throws Eduke8Exception { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + // Creating a quiz with 2 questions selected from a total of 3 questions from the topic + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(QUIZ_QUESTIONS_COUNT, topicQuestionList.getInnerList()); + + quizQuestionsManager.getNextQuestion(); + assertEquals(1, quizQuestionsManager.getCurrentQuestionNumber()); } @Test - void areAllQuestionsAnswered() { + void areAllQuestionsAnswered_fullyAnsweredQuiz_expectsTrue() throws Eduke8Exception { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + // Creating a quiz with 2 questions selected from a total of 3 questions from the topic + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(QUIZ_QUESTIONS_COUNT, topicQuestionList.getInnerList()); + + quizQuestionsManager.getNextQuestion(); // Displays first question to user + quizQuestionsManager.getNextQuestion(); // Displays second question to user + + assertTrue(quizQuestionsManager.areAllQuestionsAnswered()); } + // Creates a question list that holds two questions, each with a unique description private QuestionList createQuestionListWithThreeUniqueQuestions() { ArrayList questions = new ArrayList<>(); @@ -75,4 +119,4 @@ private Question createTestQuestionWithCustomDescription(String description) { return question; } -} \ No newline at end of file +} From dad862ba44ab34e1337f068410e484cd5629edd6 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 12 Oct 2020 19:17:38 +0800 Subject: [PATCH 076/447] Fix a minor library import issue. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index a9e623e00e..cd556fbcbb 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,6 +1,13 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.AboutCommand; +import seedu.eduke8.command.ExitCommand; +import seedu.eduke8.command.HelpCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.TextbookCommand; +import seedu.eduke8.command.TopicsCommand; +import seedu.eduke8.command.QuizCommand; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; From 0cfbbd36cd432a015feb0f912f785d352d96d0ab Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 12 Oct 2020 21:12:35 +0800 Subject: [PATCH 077/447] Add test for 0 questions passed to Quiz --- .../eduke8/quiz/SingleTopicQuizTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java diff --git a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java new file mode 100644 index 0000000000..550b893869 --- /dev/null +++ b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java @@ -0,0 +1,30 @@ +package seedu.eduke8.quiz; + +import org.json.simple.parser.ParseException; +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.storage.TopicsStorage; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.ui.Ui; + +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class SingleTopicQuizTest { + @Test + public void startQuiz_zeroQuestions_expectEduke8Exception() throws ParseException, IOException { + TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); + + ArrayList topics = topicsStorage.load(); + + assert topics != null; + + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz((Topic) topics.get(0), 0); + + assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); + } + +} From 05038253007500ef1d0d1e6a7b21c2e90f5967c3 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 12 Oct 2020 21:12:52 +0800 Subject: [PATCH 078/447] Add assertions to SingleTopicQuiz --- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 4f9d94e91c..6e1fe9e282 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,5 +1,7 @@ package seedu.eduke8.quiz; +import seedu.eduke8.command.AnswerCommand; +import seedu.eduke8.command.HintCommand; import seedu.eduke8.command.Command; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; @@ -33,6 +35,8 @@ public void startQuiz(Ui ui) throws Eduke8Exception { QuizQuestionsManager quizQuestionsManager = new QuizQuestionsManager(numberOfQuestions, topicQuestionList.getInnerList()); + assert !quizQuestionsManager.areAllQuestionsAnswered(); + goThroughQuizQuestions(ui, quizQuestionsManager); ui.printEndQuizPage(); @@ -56,6 +60,8 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan quizParser.setQuestion(question); Command command = quizParser.parseCommand(optionList, userInput); + assert (command instanceof AnswerCommand || command instanceof HintCommand); + command.execute(optionList, ui); } } From 2d8693056ade2945142fc250f82d4fb5a143e6cd Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 12 Oct 2020 21:18:43 +0800 Subject: [PATCH 079/447] Add too many questions test case --- .../eduke8/quiz/SingleTopicQuizTest.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java index 550b893869..0bdcda2f44 100644 --- a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java +++ b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java @@ -14,15 +14,28 @@ import static org.junit.jupiter.api.Assertions.assertThrows; public class SingleTopicQuizTest { - @Test - public void startQuiz_zeroQuestions_expectEduke8Exception() throws ParseException, IOException { - TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); + private Topic topic; + public SingleTopicQuizTest() throws ParseException, IOException { + TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); ArrayList topics = topicsStorage.load(); - assert topics != null; + topic = (Topic) topics.get(0); + assert topic != null; + } + + @Test + public void startQuiz_zeroQuestions_expectEduke8Exception() { + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, 0); + + assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); + } + + @Test + public void startQuiz_tooManyQuestions_expectEduke8Exception() { + int questionsInTopic = topic.getQuestionList().getCount(); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz((Topic) topics.get(0), 0); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, questionsInTopic + 1); assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); } From db15eda7bff58aa501a05c312ccef5ace8800d5d Mon Sep 17 00:00:00 2001 From: anqi20 Date: Tue, 13 Oct 2020 11:50:57 +0800 Subject: [PATCH 080/447] Add JUnit tests for Option and OptionList classes --- .../seedu/eduke8/option/OptionListTest.java | 71 +++++++++++++++++++ .../java/seedu/eduke8/option/OptionTest.java | 33 +++++++++ 2 files changed, 104 insertions(+) create mode 100644 src/test/java/seedu/eduke8/option/OptionListTest.java create mode 100644 src/test/java/seedu/eduke8/option/OptionTest.java diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java new file mode 100644 index 0000000000..aedd4c3116 --- /dev/null +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -0,0 +1,71 @@ +package seedu.eduke8.option; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; + +class OptionListTest { + private static final String PLACEHOLDER_OPTION_ONE_DESCRIPTION = "Option one"; + private static final String PLACEHOLDER_OPTION_TWO_DESCRIPTION = "Option two"; + private static final int DEFAULT_OPTION_COUNT = 1; + + @Test + void getCount_oneOption_returnsCountOfOne() { + OptionList optionList = createOptionList(); + + assertEquals(DEFAULT_OPTION_COUNT, optionList.getCount()); + } + + @Test + void getInnerList_oneOption_expectsTrue() { + OptionList optionList = createOptionList(); + ArrayList options = new ArrayList<>(); + + Option optionOne = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + options.add(optionOne); + OptionList optionListTest = new OptionList(options); + + String optionListDescription = optionList.getInnerList().get(0).getDescription(); + String optionListTestDescription = optionListTest.getInnerList().get(0).getDescription(); + + assertEquals(optionListDescription, optionListTestDescription); + } + + @Test + void add_oneOption_returnsCountOfTwo() { + OptionList optionList = createOptionList(); + Option optionThree = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); + + optionList.add(optionThree); + assertEquals(DEFAULT_OPTION_COUNT + 1, optionList.getCount()); + } + + @Test + void delete_oneOption_returnsCountOfZero() { + OptionList optionList = createOptionList(); + + optionList.delete(0); + assertEquals(DEFAULT_OPTION_COUNT - 1, optionList.getCount()); + } + + @Test + void find_twoOptions_returnOptionOne() { + OptionList optionList = createOptionList(); + Displayable optionOne = optionList.find(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + + assertEquals(PLACEHOLDER_OPTION_ONE_DESCRIPTION, optionOne.getDescription()); + } + + private OptionList createOptionList() { + ArrayList options = new ArrayList<>(); + Option optionOne = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + + options.add(optionOne); + OptionList optionList = new OptionList(options); + + return optionList; + } +} diff --git a/src/test/java/seedu/eduke8/option/OptionTest.java b/src/test/java/seedu/eduke8/option/OptionTest.java new file mode 100644 index 0000000000..ff1a640e28 --- /dev/null +++ b/src/test/java/seedu/eduke8/option/OptionTest.java @@ -0,0 +1,33 @@ +package seedu.eduke8.option; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class OptionTest { + private static final String PLACEHOLDER_OPTION_DESCRIPTION = "Option"; + + @Test + void getDescription_placeholderOptionDescription_returnsOptionDescription() { + Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + + assertEquals(PLACEHOLDER_OPTION_DESCRIPTION, option.getDescription()); + } + + @Test + void wasShown_placeholderOptionDescription_expectsTrue() { + Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + + String optionDescription = option.getDescription(); + assertTrue(option.wasShown()); + } + + @Test + void markAsCorrectAnswer_optionMarkedAsCorrectOption_expectsTrue() { + Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + + option.markAsCorrectAnswer(); + assertTrue(option.isCorrectAnswer()); + } +} From 8e19027ced0c592402906184f26f65ca5f8342f0 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Tue, 13 Oct 2020 13:54:14 +0800 Subject: [PATCH 081/447] Added JUnit tests for Topic and TopicList --- src/main/java/seedu/eduke8/topic/Topic.java | 1 + .../seedu/eduke8/topic/TopicListTest.java | 106 ++++++++++++++++++ .../java/seedu/eduke8/topic/TopicTest.java | 67 +++++++++++ 3 files changed, 174 insertions(+) create mode 100644 src/test/java/seedu/eduke8/topic/TopicListTest.java create mode 100644 src/test/java/seedu/eduke8/topic/TopicTest.java diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 4365188ba9..4803dc68e3 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -16,6 +16,7 @@ public Topic(String description, QuestionList questionList) { @Override public String getDescription() { + wasShown = true; return description; } diff --git a/src/test/java/seedu/eduke8/topic/TopicListTest.java b/src/test/java/seedu/eduke8/topic/TopicListTest.java new file mode 100644 index 0000000000..74484beb95 --- /dev/null +++ b/src/test/java/seedu/eduke8/topic/TopicListTest.java @@ -0,0 +1,106 @@ +package seedu.eduke8.topic; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestTemplate; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +class TopicListTest { + + private static final String TOPIC_ONE_DESCRIPTION = "First Topic"; + private static final String TOPIC_TWO_DESCRIPTION = "Second Topic"; + private static final String TOPIC_THREE_DESCRIPTION = "Third Topic"; + private static final String QUESTION_ONE_DESCRIPTION = "First Question"; + private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; + private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; + private static final String HINT = "Hint"; + private static final int DEFAULT_TOPIC_COUNT = 2; + + @Test + void getCount_TwoTopics_returnsCountOfTwo() { + TopicList topicList = createTestTopicList(); + + assertEquals(DEFAULT_TOPIC_COUNT, topicList.getCount()); + } + + @Test + void add_thirdTopicToTopicList_returnsCountOfThree() throws Eduke8Exception { + TopicList topicList = createTestTopicList(); + Topic thirdTopic = createTestTopic(TOPIC_THREE_DESCRIPTION); + topicList.add(thirdTopic); + + assertEquals(DEFAULT_TOPIC_COUNT + 1, topicList.getCount()); + } + + @Test + void delete_thirdTopicToTopicList_returnsCountOfOne() throws Eduke8Exception { + TopicList topicList = createTestTopicList(); + topicList.delete(1); + + assertEquals(DEFAULT_TOPIC_COUNT - 1, topicList.getCount()); + } + + @Test + void find_topicListWithTwoTopics_returnsFirstTopic() throws Eduke8Exception { + TopicList topicList = createTestTopicList(); + Displayable topic1 = topicList.find(TOPIC_ONE_DESCRIPTION); + + assertEquals(TOPIC_ONE_DESCRIPTION, topic1.getDescription()); + } + + + private TopicList createTestTopicList() { + ArrayList topics = new ArrayList<>(); + Topic topic1 = createTestTopic(TOPIC_ONE_DESCRIPTION); + Topic topic2 = createTestTopic(TOPIC_TWO_DESCRIPTION); + + topics.add(topic1); + topics.add(topic2); + + TopicList topicList = new TopicList(topics); + return topicList; + } + + private Topic createTestTopic(String description) { + QuestionList questionList = createQuestionList(); + Topic topic = new Topic(description, questionList); + + return topic; + } + + private QuestionList createQuestionList() { + ArrayList questions = new ArrayList<>(); + Question question1 = createTestQuestion(QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestion(QUESTION_TWO_DESCRIPTION); + Question question3 = createTestQuestion(QUESTION_THREE_DESCRIPTION); + + questions.add(question1); + questions.add(question2); + questions.add(question3); + + QuestionList questionList = new QuestionList(questions); + return questionList; + } + + private Question createTestQuestion(String description) { + Option option1 = new Option("test1"); + Option option2 = new Option("test2"); + OptionList optionList = new OptionList(); + optionList.add(option1); + optionList.add(option2); + + Hint hint = new Hint(HINT); + + Question question = new Question(description, optionList, hint); + + return question; + } +} diff --git a/src/test/java/seedu/eduke8/topic/TopicTest.java b/src/test/java/seedu/eduke8/topic/TopicTest.java new file mode 100644 index 0000000000..50b57b39a7 --- /dev/null +++ b/src/test/java/seedu/eduke8/topic/TopicTest.java @@ -0,0 +1,67 @@ +package seedu.eduke8.topic; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +class TopicTest { + + private static final String QUESTION_ONE_DESCRIPTION = "First Question"; + private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; + private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; + private static final String HINT = "Hint"; + private static final String INPUT = "JUnit: Basic"; + + @Test + void getsTopicDescription_topicDescription_returnsTopicDescription() throws Eduke8Exception { + String input = INPUT; + Topic topic = new Topic(input, createQuestionList()); + + assertEquals(input, topic.getDescription()); + } + + @Test + void getsQuestionList_questionList_returnsQuestionList() throws Eduke8Exception { + String input = INPUT; + QuestionList questionList = createQuestionList(); + Topic topic = new Topic(input, questionList); + + assertEquals(questionList, topic.getQuestionList()); + } + + private QuestionList createQuestionList() { + ArrayList questions = new ArrayList<>(); + Question question1 = createTestQuestion(QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestion(QUESTION_TWO_DESCRIPTION); + Question question3 = createTestQuestion(QUESTION_THREE_DESCRIPTION); + + questions.add(question1); + questions.add(question2); + questions.add(question3); + + QuestionList questionList = new QuestionList(questions); + return questionList; + } + + private Question createTestQuestion(String description) { + Option option1 = new Option("test1"); + Option option2 = new Option("test2"); + OptionList optionList = new OptionList(); + optionList.add(option1); + optionList.add(option2); + + Hint hint = new Hint(HINT); + + Question question = new Question(description, optionList, hint); + + return question; + } +} From 5c0aeb6c07e66d0d16af735340012f447d4194a3 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 13 Oct 2020 14:20:20 +0800 Subject: [PATCH 082/447] Remove unnecessary variable in QuizQuestionsManager --- .../java/seedu/eduke8/question/QuizQuestionsManager.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index a640336f56..d2d779403d 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -36,12 +36,10 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, throw new Eduke8Exception(INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ); } - int numberOfQuestionsSelected = 0; - // prevent repeated questionsInTopic from being selected again ArrayList integersChosen = new ArrayList<>(); - while (numberOfQuestionsSelected < numberOfQuestionsForQuiz) { + while (quizQuestions.size() < numberOfQuestionsForQuiz) { // get a random question that is within the bounds of the size of the available question list int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size() - 1); @@ -54,7 +52,6 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, // choose a random question from the question list and add it to the questionsInTopic for quiz quizQuestions.add((Question) questionsInTopic.get(randomQuestionIndex)); - numberOfQuestionsSelected++; integersChosen.add(randomQuestionIndex); } } From f9c9473547e8f11985f7cbaa2982921d096d0b00 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 13 Oct 2020 14:25:55 +0800 Subject: [PATCH 083/447] Add assertions for Question and QuestionList classes --- src/main/java/seedu/eduke8/question/Question.java | 4 ++-- src/main/java/seedu/eduke8/question/QuestionList.java | 4 +++- .../java/seedu/eduke8/question/QuizQuestionsManager.java | 9 ++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index ca261f3001..d4bf446b6d 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -16,10 +16,10 @@ public class Question implements Displayable { private boolean wasShown; public Question(String description, OptionList optionList, Hint hint) { - // assert description != null; // for another pull request. + assert description != null; // A question must have its description this.description = description; - // assert optionList != null; // for another pull request. + assert optionList != null; // A question must have some options this.optionList = optionList; this.hint = hint; diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index d7c05a462d..64a9f1dc7b 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -10,7 +10,9 @@ public class QuestionList implements DisplayableList { private ArrayList questions; // list of questions for the particular topic public QuestionList(ArrayList questions) { - // assert questions.size() > 0; // for another pull request + // The question list for topics must contain some questions about the topic + assert questions.size() > 0; + this.questions = questions; } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index d2d779403d..1236fe4224 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -36,15 +36,14 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, throw new Eduke8Exception(INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ); } - // prevent repeated questionsInTopic from being selected again + // Stores the questions' indexes selected from the topic question list ArrayList integersChosen = new ArrayList<>(); while (quizQuestions.size() < numberOfQuestionsForQuiz) { - // get a random question that is within the bounds of the size of the available question list + // Gets a random question that is within the bounds of the size of the available question list int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size() - 1); - // if the number is already selected - the question is already selected, we re run the loop - // to select another random number + // To ensure we do not pick the same question again if (integersChosen.contains(randomQuestionIndex)) { // logger.info("chosen a repeated question"); continue; @@ -57,7 +56,7 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, } public Question getNextQuestion() { - // Gets current question and increment count for number of questions shown to user + // Automatically increases question count when a question is shown to the user return quizQuestions.get(currentQuestionNumber++); } From 4d06dac00e44e4acf4fd39ac0774ab7071441092 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 13 Oct 2020 14:29:03 +0800 Subject: [PATCH 084/447] Add logging to indicate that the random number generated is repeated To ensure that we are checking for repeated questions so that they do not get added to the quiz --- .../java/seedu/eduke8/question/QuizQuestionsManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index 1236fe4224..7f4af23906 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.Random; -// import java.util.logging.Logger; +import java.util.logging.Logger; public class QuizQuestionsManager { public static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; @@ -26,7 +26,7 @@ public QuizQuestionsManager(int numberOfQuestionsForQuiz, public void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) throws Eduke8Exception { - // Logger logger = Logger.getLogger("main"); + Logger logger = Logger.getLogger("main"); if (numberOfQuestionsForQuiz <= 0) { throw new Eduke8Exception(INVALID_QUIZ_QUESTION_NUMBER); @@ -45,7 +45,7 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, // To ensure we do not pick the same question again if (integersChosen.contains(randomQuestionIndex)) { - // logger.info("chosen a repeated question"); + logger.info("Chosen a repeated question"); continue; } From 48a80004e159e1d64d5e403edca5c1b0b1fc2160 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 13 Oct 2020 16:00:44 +0800 Subject: [PATCH 085/447] Add extra test case to select 3 questions from 3 topic questions --- .../eduke8/question/QuizQuestionsManager.java | 8 +++++--- .../eduke8/question/QuizQuestionsManagerTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index 7f4af23906..b979f4e1d3 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Random; +import java.util.logging.Level; import java.util.logging.Logger; public class QuizQuestionsManager { @@ -12,6 +13,8 @@ public class QuizQuestionsManager { public static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = "There is not enough questions in the topic for the quiz!"; + private static Logger logger = Logger.getLogger("Main"); + private ArrayList quizQuestions = new ArrayList<>(); private int currentQuestionNumber; @@ -26,7 +29,6 @@ public QuizQuestionsManager(int numberOfQuestionsForQuiz, public void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) throws Eduke8Exception { - Logger logger = Logger.getLogger("main"); if (numberOfQuestionsForQuiz <= 0) { throw new Eduke8Exception(INVALID_QUIZ_QUESTION_NUMBER); @@ -41,11 +43,11 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, while (quizQuestions.size() < numberOfQuestionsForQuiz) { // Gets a random question that is within the bounds of the size of the available question list - int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size() - 1); + int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size()); // To ensure we do not pick the same question again if (integersChosen.contains(randomQuestionIndex)) { - logger.info("Chosen a repeated question"); + logger.log(Level.INFO, "Chosen a repeated question"); continue; } diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index b8a4b17163..53650fde65 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -22,6 +22,7 @@ class QuizQuestionsManagerTest { private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; private static final int TOPIC_QUESTIONS_COUNT = 3; private static final int QUIZ_QUESTIONS_COUNT = 2; + private static final int QUIZ_QUESTIONS_COUNT_MAX = 3; // This test tests for getQuizQuestionsCount() method too @@ -37,6 +38,20 @@ void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_ret assertEquals(QUIZ_QUESTIONS_COUNT, quizQuestionsManager.getQuizQuestionsCount()); } + + @Test + void quizQuestionsManagerConstructor_threeQuizQuestionsFromThreeTopicQuestions_returnsCountOfTwo() + throws Eduke8Exception { + QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + + // Creating a quiz with 3 questions selected from a total of 3 questions from the topic + QuizQuestionsManager quizQuestionsManager = + new QuizQuestionsManager(QUIZ_QUESTIONS_COUNT_MAX, topicQuestionList.getInnerList()); + + assertEquals(QUIZ_QUESTIONS_COUNT_MAX, quizQuestionsManager.getQuizQuestionsCount()); + } + + @Test void quizQuestionsManagerConstructor_lessThanZeroNumberOfQuizQuestions_expectsException() { QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); From e45476825cc7c85193ac6fa180ea8b3620082afd Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 16:21:52 +0800 Subject: [PATCH 086/447] Fix first working version of quiz --- src/main/java/seedu/eduke8/Eduke8.java | 2 +- .../java/seedu/eduke8/parser/QuizParser.java | 7 +++--- .../eduke8/question/QuizQuestionsManager.java | 2 +- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 23 +++++++++++++++---- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 6e898aa82b..27f2f479fa 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -11,7 +11,7 @@ import java.io.IOException; public class Eduke8 { - private static final String FILE_PATH = "data/test/example.json"; // Real path will be data/main/topics.json + private static final String FILE_PATH = "data/main/topics.json"; // Real path will be data/main/topics.json private MenuParser menuParser; private TopicsStorage topicsStorage; diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 22fa8041a3..27e9c1db8e 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -3,6 +3,7 @@ import seedu.eduke8.command.AnswerCommand; import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; +import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.option.Option; @@ -24,16 +25,16 @@ public Command parseCommand(DisplayableList optionList, String userInput) { return new HintCommand(question.getHint()); case "back": // To be implemented in v2 - return null; + return new IncorrectCommand("Not implemented yet"); default: try { ArrayList options = optionList.getInnerList(); - int chosenIndex = Integer.parseInt(userInput); + int chosenIndex = Integer.parseInt(userInput) - 1; Option chosenOption = (Option) options.get(chosenIndex); return new AnswerCommand(chosenOption, question); } catch (NumberFormatException e) { - return null; + return new IncorrectCommand("Please choose the answer by index"); } } } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index a640336f56..05cf0bb4a7 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -43,7 +43,7 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, while (numberOfQuestionsSelected < numberOfQuestionsForQuiz) { // get a random question that is within the bounds of the size of the available question list - int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size() - 1); + int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size()); // if the number is already selected - the question is already selected, we re run the loop // to select another random number diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 6e1fe9e282..bd539e6062 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -29,7 +29,6 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { @Override public void startQuiz(Ui ui) throws Eduke8Exception { - ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); QuestionList topicQuestionList = topic.getQuestionList(); QuizQuestionsManager quizQuestionsManager = @@ -37,6 +36,8 @@ public void startQuiz(Ui ui) throws Eduke8Exception { assert !quizQuestionsManager.areAllQuestionsAnswered(); + ui.printStartQuizPage(numberOfQuestions, topic.getDescription()); + goThroughQuizQuestions(ui, quizQuestionsManager); ui.printEndQuizPage(); @@ -55,14 +56,28 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan ui.printOption((Option) options.get(i), i + 1); } - String userInput = ui.getInputFromUser(); - quizParser.setQuestion(question); - Command command = quizParser.parseCommand(optionList, userInput); + Command command; + + command = getCommand(ui, optionList); assert (command instanceof AnswerCommand || command instanceof HintCommand); + while (command instanceof HintCommand) { + command.execute(optionList, ui); + command = getCommand(ui, optionList); + } + + assert command instanceof AnswerCommand; + command.execute(optionList, ui); } } + + private Command getCommand(Ui ui, OptionList optionList) { + Command command; + String userInput = ui.getInputFromUser(); + command = quizParser.parseCommand(optionList, userInput); + return command; + } } From c915b74ea789027ad9797d2466fad883f5e88189 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 16:22:23 +0800 Subject: [PATCH 087/447] Update recursion testing --- .gitignore | 4 +- data/main/topics.json | 100 +++++++++++++++++++++++++++++ text-ui-test/EXPECTED.TXT | 41 ++++++++++++ text-ui-test/data/main/topics.json | 29 +++++++++ text-ui-test/input.txt | 6 ++ 5 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 data/main/topics.json create mode 100644 text-ui-test/data/main/topics.json diff --git a/.gitignore b/.gitignore index 5aca276f4c..81589b7106 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,4 @@ src/main/resources/docs/ bin/ /text-ui-test/ACTUAL.txt -text-ui-test/EXPECTED-UNIX.TXT - -/data/main/ \ No newline at end of file +text-ui-test/EXPECTED-UNIX.TXT \ No newline at end of file diff --git a/data/main/topics.json b/data/main/topics.json new file mode 100644 index 0000000000..8d1f182bb4 --- /dev/null +++ b/data/main/topics.json @@ -0,0 +1,100 @@ +[ + { + "topic": "OOP", + "questions": [ + { + "description": "What is encapsulation?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + }, + { + "description": "What is abstraction?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": false + }, + { + "description": "B", + "correct": true + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + }, + { + "topic": "Style", + "questions": [ + { + "description": "How do you name classes?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + }, + { + "description": "What is the appropriate indentation?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": false + }, + { + "description": "B", + "correct": true + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + } +] \ No newline at end of file diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 528c356386..937778b9d5 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -27,6 +27,47 @@ These are the commands that you can used: ------------------------------------------------------------------- The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------- +These are the available topics: +OOP +------------------------------------------------------------------- +Start of quiz: +You have chosen to complete 1 question. +The topic chosen is: OOP +------------------------------------------------------------------- +------------------------------------------------------------------- +1. What is encapsulation? +1) A +2) B +3) C +4) D +------------------------------------------------------------------- +Hint: check the textbook +------------------------------------------------------------------- +Congrats! This answer is correct! Well Done! +------------------------------------------------------------------- +------------------------------------------------------------------- +This is the end of the quiz! +Hope you have learnt something new! +------------------------------------------------------------------- +------------------------------------------------------------------- +Start of quiz: +You have chosen to complete 1 question. +The topic chosen is: OOP +------------------------------------------------------------------- +------------------------------------------------------------------- +1. What is encapsulation? +1) A +2) B +3) C +4) D +------------------------------------------------------------------- +------------------------------------------------------------------- +Oops! Please try again! Do visit the textbook to read up more. +------------------------------------------------------------------- +------------------------------------------------------------------- +This is the end of the quiz! +Hope you have learnt something new! +------------------------------------------------------------------- ------------------------------------------------------------------- Bye bye. Hope you have a nice day and see you soon! ------------------------------------------------------------------- diff --git a/text-ui-test/data/main/topics.json b/text-ui-test/data/main/topics.json new file mode 100644 index 0000000000..b2259b1a66 --- /dev/null +++ b/text-ui-test/data/main/topics.json @@ -0,0 +1,29 @@ +[ + { + "topic": "OOP", + "questions": [ + { + "description": "What is encapsulation?", + "hint": "check the textbook", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + } +] \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 21a76f0754..acdc1b4cd9 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,4 +1,10 @@ about help textbook +topics +quiz t/OOP n/1 +hint +1 +quiz t/OOP n/1 +2 exit \ No newline at end of file From 03e8f9c5aabceecba0f51b275208edd457ac5c1f Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 16:35:15 +0800 Subject: [PATCH 088/447] Fix runtest.bat not loading from storage --- text-ui-test/runtest.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 25ac7a2989..6f1ecfdf0c 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -12,8 +12,8 @@ for /f "tokens=*" %%a in ( set jarloc=%%a ) -java -jar %jarloc% < ..\..\text-ui-test\input.txt > ..\..\text-ui-test\ACTUAL.TXT - cd ..\..\text-ui-test +java -jar ..\build\libs\%jarloc% < input.txt > ACTUAL.TXT + FC ACTUAL.TXT EXPECTED.TXT >NUL && ECHO Test passed! || Echo Test failed! From 1f9fb6522874af8111010686f1d0cf099cf1483d Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 17:27:06 +0800 Subject: [PATCH 089/447] Add logging to local file --- .gitignore | 3 +- src/main/java/seedu/eduke8/Eduke8.java | 17 +++++-- .../eduke8/question/QuizQuestionsManager.java | 4 +- .../seedu/eduke8/storage/LocalStorage.java | 16 ++++++ .../java/seedu/eduke8/storage/LogStorage.java | 51 +++++++++++++++++++ .../java/seedu/eduke8/storage/Storage.java | 2 +- .../seedu/eduke8/storage/TopicsStorage.java | 14 +---- 7 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 src/main/java/seedu/eduke8/storage/LocalStorage.java create mode 100644 src/main/java/seedu/eduke8/storage/LogStorage.java diff --git a/.gitignore b/.gitignore index 5aca276f4c..7b3a8bb77a 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT -/data/main/ \ No newline at end of file +/data/main/ +/data/logs/ \ No newline at end of file diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 6e898aa82b..b2b7ada981 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -4,26 +4,35 @@ import seedu.eduke8.command.Command; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; +import seedu.eduke8.storage.LogStorage; import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; public class Eduke8 { - private static final String FILE_PATH = "data/test/example.json"; // Real path will be data/main/topics.json + private static final String DATA_PATH = "data/test/example.json"; // Real path will be data/main/topics.json + private static final LocalDateTime DATE_TIME_NOW = LocalDateTime.now(); + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"); + private static final String LOG_PATH = "data/logs/" + DATE_TIME_NOW.format(DATE_TIME_FORMATTER) + ".log"; private MenuParser menuParser; private TopicsStorage topicsStorage; + private LogStorage logStorage; private TopicList topicList; private Ui ui; - private Eduke8(String filePath) { + private Eduke8(String dataPath, String logPath) { menuParser = new MenuParser(); - topicsStorage = new TopicsStorage(filePath); + topicsStorage = new TopicsStorage(dataPath); + logStorage = new LogStorage(logPath); ui = new Ui(); try { topicList = new TopicList(topicsStorage.load()); + logStorage.save(); } catch (ParseException | IOException e) { ui.printError(); } @@ -61,6 +70,6 @@ private void exit() { } public static void main(String[] args) { - new Eduke8(FILE_PATH).run(); + new Eduke8(DATA_PATH, LOG_PATH).run(); } } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index b979f4e1d3..368ab18daf 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -13,7 +13,7 @@ public class QuizQuestionsManager { public static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = "There is not enough questions in the topic for the quiz!"; - private static Logger logger = Logger.getLogger("Main"); + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private ArrayList quizQuestions = new ArrayList<>(); @@ -47,7 +47,7 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, // To ensure we do not pick the same question again if (integersChosen.contains(randomQuestionIndex)) { - logger.log(Level.INFO, "Chosen a repeated question"); + LOGGER.log(Level.INFO, "Chosen a repeated question"); continue; } diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java new file mode 100644 index 0000000000..8ca504d8fc --- /dev/null +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -0,0 +1,16 @@ +package seedu.eduke8.storage; + +import java.io.File; +import java.io.IOException; + +public abstract class LocalStorage implements Storage { + protected String filePath = new File("").getAbsolutePath(); + + protected void createFileIfNotExists() throws IOException { + File f = new File(filePath); + if (!f.exists()) { + f.getParentFile().mkdirs(); + f.createNewFile(); + } + } +} diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java new file mode 100644 index 0000000000..876ee59076 --- /dev/null +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -0,0 +1,51 @@ +package seedu.eduke8.storage; + +import org.json.simple.parser.ParseException; +import seedu.eduke8.common.Displayable; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.logging.ConsoleHandler; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.LogManager; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +public class LogStorage extends LocalStorage { + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + + public LogStorage(String filePath) { + // Use relative path for Unix systems + String[] filePathSplit = filePath.split("/"); + for (String path: filePathSplit) { + this.filePath += File.separator + path; + } + } + + // Set up save to file inside of print to console + @Override + public void save() throws IOException { + createFileIfNotExists(); + + LogManager.getLogManager().reset(); + LOGGER.setLevel(Level.ALL); + + // Only log severe to console + ConsoleHandler ch = new ConsoleHandler(); + ch.setLevel(Level.SEVERE); + LOGGER.addHandler(ch); + + // Log all to the file + FileHandler fh = new FileHandler(filePath); + fh.setFormatter(new SimpleFormatter()); + fh.setLevel(Level.ALL); + LOGGER.addHandler(fh); + } + + @Override + public ArrayList load() throws IOException, ParseException { + return null; + } +} diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index ef4cd833af..35936e5e36 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -7,7 +7,7 @@ import java.util.ArrayList; public interface Storage { - void save(ArrayList displayables) throws IOException; + void save() throws IOException; ArrayList load() throws IOException, ParseException; diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index ded93f5199..bb46ff381b 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -19,9 +19,7 @@ import static java.util.stream.Collectors.toList; -public class TopicsStorage implements Storage { - private String filePath = new File("").getAbsolutePath(); - +public class TopicsStorage extends LocalStorage { public TopicsStorage(String filePath) { // Use relative path for Unix systems String[] filePathSplit = filePath.split("/"); @@ -31,7 +29,7 @@ public TopicsStorage(String filePath) { } @Override - public void save(ArrayList displayables) throws IOException { + public void save() throws IOException { createFileIfNotExists(); // For adding and removing questions for v2 @@ -100,12 +98,4 @@ private static Option parseToOptionObject(JSONObject option) { return optionAsObject; } - - private void createFileIfNotExists() throws IOException { - File f = new File(filePath); - if (!f.exists()) { - f.getParentFile().mkdirs(); - f.createNewFile(); - } - } } From 91fa9f1b7f2554d7505bb5827de59a97e94c6733 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 17:31:10 +0800 Subject: [PATCH 090/447] Ignore logs in testing --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bdd156be77..effce28882 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT -/data/logs/ \ No newline at end of file +/data/logs/ +/text-ui-test/data/logs \ No newline at end of file From 463fe7830221b798d84d59d0fefcfdd59f5eccb8 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Tue, 13 Oct 2020 19:04:58 +0800 Subject: [PATCH 091/447] Move constructors to abstract class --- src/main/java/seedu/eduke8/storage/LocalStorage.java | 8 ++++++++ src/main/java/seedu/eduke8/storage/LogStorage.java | 7 +------ src/main/java/seedu/eduke8/storage/TopicsStorage.java | 8 ++------ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 8ca504d8fc..97d9d9decd 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -6,6 +6,14 @@ public abstract class LocalStorage implements Storage { protected String filePath = new File("").getAbsolutePath(); + public LocalStorage(String filePath) { + // Use relative path for Unix systems + String[] filePathSplit = filePath.split("/"); + for (String path: filePathSplit) { + this.filePath += File.separator + path; + } + } + protected void createFileIfNotExists() throws IOException { File f = new File(filePath); if (!f.exists()) { diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index 876ee59076..de690aa23c 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -3,7 +3,6 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.logging.ConsoleHandler; @@ -17,11 +16,7 @@ public class LogStorage extends LocalStorage { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public LogStorage(String filePath) { - // Use relative path for Unix systems - String[] filePathSplit = filePath.split("/"); - for (String path: filePathSplit) { - this.filePath += File.separator + path; - } + super(filePath); } // Set up save to file inside of print to console diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index bb46ff381b..8004da3194 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -12,7 +12,6 @@ import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; -import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; @@ -20,12 +19,9 @@ import static java.util.stream.Collectors.toList; public class TopicsStorage extends LocalStorage { + public TopicsStorage(String filePath) { - // Use relative path for Unix systems - String[] filePathSplit = filePath.split("/"); - for (String path: filePathSplit) { - this.filePath += File.separator + path; - } + super(filePath); } @Override From 58576610f190c6f1ebbec82f68b828c703d2dded Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 14 Oct 2020 09:54:18 +0800 Subject: [PATCH 092/447] Add logging and assertions --- build.gradle | 1 + src/main/java/seedu/eduke8/Eduke8.java | 2 +- .../seedu/eduke8/command/AnswerCommand.java | 2 ++ .../seedu/eduke8/command/HintCommand.java | 2 ++ .../java/seedu/eduke8/parser/QuizParser.java | 2 ++ .../seedu/eduke8/quiz/SingleTopicQuiz.java | 21 ++++++++++--- .../seedu/eduke8/storage/LocalStorage.java | 6 ++++ .../java/seedu/eduke8/storage/LogStorage.java | 4 +-- .../seedu/eduke8/storage/TopicsStorage.java | 31 ++++++++++++------- 9 files changed, 52 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index e34af566a6..fc604fc155 100644 --- a/build.gradle +++ b/build.gradle @@ -45,4 +45,5 @@ checkstyle { run{ standardInput = System.in + enableAssertions = true } diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 1029889b28..5143a7b62c 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -31,8 +31,8 @@ private Eduke8(String dataPath, String logPath) { logStorage = new LogStorage(logPath); ui = new Ui(); try { - topicList = new TopicList(topicsStorage.load()); logStorage.save(); + topicList = new TopicList(topicsStorage.load()); } catch (ParseException | IOException e) { ui.printError(); } diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index 3d680c531a..540886a5e5 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -19,8 +19,10 @@ public void execute(DisplayableList optionList, Ui ui) { if (option.isCorrectAnswer()) { ui.printAnswerIsCorrect(); question.markAsAnsweredCorrectly(); + assert question.wasAnsweredCorrectly(); } else { ui.printAnswerIsWrong(); + assert !question.wasAnsweredCorrectly(); } } } diff --git a/src/main/java/seedu/eduke8/command/HintCommand.java b/src/main/java/seedu/eduke8/command/HintCommand.java index d70cf60a5d..848b86c538 100644 --- a/src/main/java/seedu/eduke8/command/HintCommand.java +++ b/src/main/java/seedu/eduke8/command/HintCommand.java @@ -14,5 +14,7 @@ public HintCommand(Hint hint) { @Override public void execute(DisplayableList displayableList, Ui ui) { ui.printHint(hint); + + assert hint.wasShown(); } } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 27e9c1db8e..6ddd20c3cf 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -15,6 +15,8 @@ public class QuizParser implements Parser { private Question question; public void setQuestion(Question question) { + assert question != null; + this.question = question; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index bd539e6062..817bbd3728 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,8 +1,8 @@ package seedu.eduke8.quiz; import seedu.eduke8.command.AnswerCommand; -import seedu.eduke8.command.HintCommand; import seedu.eduke8.command.Command; +import seedu.eduke8.command.HintCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; @@ -15,13 +15,20 @@ import seedu.eduke8.ui.Ui; import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; public class SingleTopicQuiz implements Quiz { + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private Topic topic; private int numberOfQuestions; private QuizParser quizParser; public SingleTopicQuiz(Topic topic, int numberOfQuestions) { + assert topic != null; + assert numberOfQuestions >= 0; + this.topic = topic; this.numberOfQuestions = numberOfQuestions; quizParser = new QuizParser(); @@ -29,6 +36,8 @@ public SingleTopicQuiz(Topic topic, int numberOfQuestions) { @Override public void startQuiz(Ui ui) throws Eduke8Exception { + LOGGER.log(Level.INFO, "New quiz started."); + QuestionList topicQuestionList = topic.getQuestionList(); QuizQuestionsManager quizQuestionsManager = @@ -41,6 +50,8 @@ public void startQuiz(Ui ui) throws Eduke8Exception { goThroughQuizQuestions(ui, quizQuestionsManager); ui.printEndQuizPage(); + + LOGGER.log(Level.INFO, "Quiz ended."); } private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsManager) { @@ -48,6 +59,8 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan Question question = quizQuestionsManager.getNextQuestion(); ui.printQuestion(question, quizQuestionsManager.getCurrentQuestionNumber()); + assert question.wasShown(); + OptionList optionList = question.getOptionList(); ArrayList options = optionList.getInnerList(); @@ -66,18 +79,18 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan while (command instanceof HintCommand) { command.execute(optionList, ui); command = getCommand(ui, optionList); + LOGGER.log(Level.INFO, "Hint shown"); } assert command instanceof AnswerCommand; + LOGGER.log(Level.INFO, "Question answered"); command.execute(optionList, ui); } } private Command getCommand(Ui ui, OptionList optionList) { - Command command; String userInput = ui.getInputFromUser(); - command = quizParser.parseCommand(optionList, userInput); - return command; + return quizParser.parseCommand(optionList, userInput); } } diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 97d9d9decd..3cef8cead7 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -2,11 +2,15 @@ import java.io.File; import java.io.IOException; +import java.util.logging.Logger; public abstract class LocalStorage implements Storage { protected String filePath = new File("").getAbsolutePath(); + protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public LocalStorage(String filePath) { + assert filePath != null; + // Use relative path for Unix systems String[] filePathSplit = filePath.split("/"); for (String path: filePathSplit) { @@ -20,5 +24,7 @@ protected void createFileIfNotExists() throws IOException { f.getParentFile().mkdirs(); f.createNewFile(); } + + assert f.exists(); } } diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index de690aa23c..c840eb37cc 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -13,8 +13,6 @@ import java.util.logging.SimpleFormatter; public class LogStorage extends LocalStorage { - private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - public LogStorage(String filePath) { super(filePath); } @@ -37,6 +35,8 @@ public void save() throws IOException { fh.setFormatter(new SimpleFormatter()); fh.setLevel(Level.ALL); LOGGER.addHandler(fh); + + LOGGER.log(Level.INFO, "Logging to file started"); } @Override diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 8004da3194..07d44e0470 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -15,6 +15,7 @@ import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.logging.Level; import static java.util.stream.Collectors.toList; @@ -39,47 +40,51 @@ public ArrayList load() throws IOException, ParseException { FileReader reader = new FileReader(filePath); //Read JSON file - JSONArray topicsArray = (JSONArray) jsonParser.parse(reader); + JSONArray topicsAsJsonArray = (JSONArray) jsonParser.parse(reader); //Iterate over employee array - ArrayList topicsAsObjects = (ArrayList) topicsArray.stream() + ArrayList topicsAsObjects = (ArrayList) topicsAsJsonArray.stream() .map(topic -> parseToTopicObject((JSONObject) topic)) .collect(toList()); + assert topicsAsObjects.get(0) instanceof Topic; + + LOGGER.log(Level.INFO, "Topics loaded from file"); + return topicsAsObjects; } private static Topic parseToTopicObject(JSONObject topic) { String topicTitle = (String) topic.get("topic"); - JSONArray questionsArray = (JSONArray) topic.get("questions"); - ArrayList questionsAsObjects = (ArrayList) questionsArray.stream() + JSONArray questionsAsJsonArray = (JSONArray) topic.get("questions"); + ArrayList questionsAsObjects = (ArrayList) questionsAsJsonArray.stream() .map(question -> parseToQuestionObject((JSONObject) question)) .collect(toList()); - QuestionList questionList = new QuestionList(questionsAsObjects); + assert questionsAsObjects.get(0) instanceof Question; - Topic topicAsObject = new Topic(topicTitle, questionList); + QuestionList questionList = new QuestionList(questionsAsObjects); - return topicAsObject; + return new Topic(topicTitle, questionList); } private static Question parseToQuestionObject(JSONObject question) { String questionDescription = (String) question.get("description"); - JSONArray optionsArray = (JSONArray) question.get("options"); - ArrayList optionsAsObjects = (ArrayList) optionsArray.stream() + JSONArray optionsAsJsonArray = (JSONArray) question.get("options"); + ArrayList optionsAsObjects = (ArrayList) optionsAsJsonArray.stream() .map(option -> parseToOptionObject((JSONObject) option)) .collect(toList()); + assert optionsAsObjects.get(0) instanceof Option; + OptionList optionList = new OptionList(optionsAsObjects); String hintDescription = (String) question.get("hint"); Hint hint = new Hint(hintDescription); - Question questionAsObject = new Question(questionDescription, optionList, hint); - - return questionAsObject; + return new Question(questionDescription, optionList, hint); } private static Option parseToOptionObject(JSONObject option) { @@ -92,6 +97,8 @@ private static Option parseToOptionObject(JSONObject option) { optionAsObject.markAsCorrectAnswer(); } + assert optionAsObject.isCorrectAnswer() == isCorrectAnswer; + return optionAsObject; } } From c50e21391b7d20ea71ff63381a66489db6e980b1 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 14 Oct 2020 10:00:34 +0800 Subject: [PATCH 093/447] Add assertions to constructors --- src/main/java/seedu/eduke8/command/AnswerCommand.java | 2 ++ src/main/java/seedu/eduke8/command/HintCommand.java | 2 ++ src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 3 +-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index 540886a5e5..da26806000 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -10,6 +10,8 @@ public class AnswerCommand extends Command { private Question question; public AnswerCommand(Option option, Question question) { + assert option != null && question != null; + this.option = option; this.question = question; } diff --git a/src/main/java/seedu/eduke8/command/HintCommand.java b/src/main/java/seedu/eduke8/command/HintCommand.java index 848b86c538..bd089fa7ac 100644 --- a/src/main/java/seedu/eduke8/command/HintCommand.java +++ b/src/main/java/seedu/eduke8/command/HintCommand.java @@ -8,6 +8,8 @@ public class HintCommand extends Command { private Hint hint; public HintCommand(Hint hint) { + assert hint != null; + this.hint = hint; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 817bbd3728..5ba4f3c457 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -70,9 +70,8 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } quizParser.setQuestion(question); - Command command; - command = getCommand(ui, optionList); + Command command = getCommand(ui, optionList); assert (command instanceof AnswerCommand || command instanceof HintCommand); From 78f1074bdb32112bb711e3024b895a90057d2f24 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 14 Oct 2020 10:05:49 +0800 Subject: [PATCH 094/447] Add WARNING level logs to catch statements --- src/main/java/seedu/eduke8/Eduke8.java | 4 ++++ src/main/java/seedu/eduke8/parser/QuizParser.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 5143a7b62c..024ccad312 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -12,12 +12,15 @@ import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.logging.Level; +import java.util.logging.Logger; public class Eduke8 { private static final String DATA_PATH = "data/main/topics.json"; private static final LocalDateTime DATE_TIME_NOW = LocalDateTime.now(); private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"); private static final String LOG_PATH = "data/logs/" + DATE_TIME_NOW.format(DATE_TIME_FORMATTER) + ".log"; + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private MenuParser menuParser; private TopicsStorage topicsStorage; @@ -35,6 +38,7 @@ private Eduke8(String dataPath, String logPath) { topicList = new TopicList(topicsStorage.load()); } catch (ParseException | IOException e) { ui.printError(); + LOGGER.log(Level.WARNING, "Error reading or writing local files."); } } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 6ddd20c3cf..b65881f985 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -10,8 +10,12 @@ import seedu.eduke8.question.Question; import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; public class QuizParser implements Parser { + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private Question question; public void setQuestion(Question question) { @@ -36,6 +40,7 @@ public Command parseCommand(DisplayableList optionList, String userInput) { return new AnswerCommand(chosenOption, question); } catch (NumberFormatException e) { + LOGGER.log(Level.WARNING, "A non-number was given when answering question."); return new IncorrectCommand("Please choose the answer by index"); } } From bb58b15cf5096914674eac5071094704dc4ef0df Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 14 Oct 2020 10:44:31 +0800 Subject: [PATCH 095/447] Add 5 questions to revision control topic --- data/main/topics.json | 115 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/data/main/topics.json b/data/main/topics.json index 8d1f182bb4..832254fddd 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -96,5 +96,120 @@ ] } ] + }, + { + "topic": "Revision Control", + "questions": [ + { + "description": "Which of these is not considered a benefit of a typical RCS?", + "hint": "Typical RCS may not use any graphics", + "options": [ + { + "description": "Help a single user manage revisions of a single file", + "correct": false + }, + { + "description": "Depicts information about tasks and their details in terms of subtasks", + "correct": true + }, + { + "description": "Makes it easier for a group of developers to collaborate on a project", + "correct": false + }, + { + "description": "Detect when multiple developers make incompatible changes to the same file", + "correct": false + } + ] + }, + { + "description": "Merge conflicts can occur when:", + "hint": "Conflicts can normally occur when different developer change the same line of code", + "options": [ + { + "description": "team members don't like each other", + "correct": false + }, + { + "description": "changes happen at different locations in the codebase", + "correct": false + }, + { + "description": "git cannot create a fast forward merge", + "correct": false + }, + { + "description": "a developer deletes a file while others were modifying it", + "correct": true + } + ] + }, + { + "description": "Git:", + "hint": "Git can be quite flexible in its use", + "options": [ + { + "description": "supports distributed revision control", + "correct": true + }, + { + "description": "is centralized revision control", + "correct": false + }, + { + "description": "is distributed revision control", + "correct": false + }, + { + "description": "requires a remote repo on GitHub", + "correct": false + } + ] + }, + { + "description": "Your local repository can communicate with ___ remote repositories:", + "hint": "Recall adding remote repositories through git", + "options": [ + { + "description": "zero", + "correct": false + }, + { + "description": "only one", + "correct": false + }, + { + "description": "only two", + "correct": false + }, + { + "description": "any number of", + "correct": true + } + ] + }, + { + "description": "What is branching?", + "hint": "Think about the use of branching for your team project", + "options": [ + { + "description": "Restoring the state of the working directory at a point in the past", + "correct": false + }, + { + "description": "Saving a snapshot of the current state of the tracked files in the revision control history", + "correct": false + }, + { + "description": "The process of evolving multiple versions of the software in parallel", + "correct": true + }, + { + "description": "Making a remote copy of a remote repo", + "correct": false + } + ] + } + ] } ] \ No newline at end of file From f1e4c5e7a1cd60d28da8ea987c0c25b815b87559 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 14 Oct 2020 13:48:22 +0800 Subject: [PATCH 096/447] Make topic description one word with _ --- data/main/topics.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/main/topics.json b/data/main/topics.json index 832254fddd..a1b91b238c 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -98,7 +98,7 @@ ] }, { - "topic": "Revision Control", + "topic": "Revision_Control", "questions": [ { "description": "Which of these is not considered a benefit of a typical RCS?", From 18bda02b1b0d07cf5286bfd9bdd9b50969570b21 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 01:10:52 +0800 Subject: [PATCH 097/447] Updated the UI for error handling --- src/main/java/seedu/eduke8/Eduke8.java | 7 +- .../eduke8/command/IncorrectCommand.java | 4 +- .../seedu/eduke8/command/QuizCommand.java | 5 +- .../seedu/eduke8/command/TopicsCommand.java | 2 +- .../eduke8/exception/ExceptionMessages.java | 18 +++++ .../java/seedu/eduke8/parser/MenuParser.java | 7 +- .../java/seedu/eduke8/parser/QuizParser.java | 7 +- .../eduke8/question/QuizQuestionsManager.java | 11 ++- .../java/seedu/eduke8/topic/TopicList.java | 7 -- src/main/java/seedu/eduke8/ui/Ui.java | 79 ++++++++++++++----- 10 files changed, 104 insertions(+), 43 deletions(-) create mode 100644 src/main/java/seedu/eduke8/exception/ExceptionMessages.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 27f2f479fa..a1d0c66072 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -2,6 +2,7 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.command.Command; +import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.TopicsStorage; @@ -10,6 +11,8 @@ import java.io.IOException; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_STORAGE_FAIL; + public class Eduke8 { private static final String FILE_PATH = "data/main/topics.json"; // Real path will be data/main/topics.json @@ -25,7 +28,7 @@ private Eduke8(String filePath) { try { topicList = new TopicList(topicsStorage.load()); } catch (ParseException | IOException e) { - ui.printError(); + new IncorrectCommand(ERROR_STORAGE_FAIL); } } @@ -50,7 +53,7 @@ private void runCommandLoopUntilExit() { command.execute(topicList, ui); isExit = command.isExit(); } catch (Eduke8Exception e) { - ui.printError(); // able to call ui.printError(e.getMessage()) too if implemented + new IncorrectCommand(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index de2e6acab6..6d58d9bd35 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -4,7 +4,7 @@ import seedu.eduke8.ui.Ui; public class IncorrectCommand extends Command { - String errorType = ""; + String errorType; public IncorrectCommand(String errorType) { this.errorType = errorType; @@ -12,6 +12,6 @@ public IncorrectCommand(String errorType) { @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(); //to implement in ui: print out messages according to string input indicating type of error + ui.printError(errorType); } } diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 65449c8e97..77af002ff5 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -1,6 +1,5 @@ package seedu.eduke8.command; -import seedu.eduke8.Eduke8; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.quiz.SingleTopicQuiz; @@ -27,8 +26,8 @@ public void execute(DisplayableList displayableList, Ui ui) { Topic topic = (Topic) topicList.find(topicName); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); - } catch (Eduke8Exception ee) { - ui.printError(); //to implement in ui: specific error for QuizCommand issues + } catch (Eduke8Exception e) { + new IncorrectCommand(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/command/TopicsCommand.java b/src/main/java/seedu/eduke8/command/TopicsCommand.java index 82ad5ecc56..26a633f91e 100644 --- a/src/main/java/seedu/eduke8/command/TopicsCommand.java +++ b/src/main/java/seedu/eduke8/command/TopicsCommand.java @@ -7,6 +7,6 @@ public class TopicsCommand extends Command { @Override public void execute(DisplayableList displayableList, Ui ui) { - ((TopicList) displayableList).showTopics(); + ui.printAllTopics((TopicList) displayableList); } } diff --git a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java new file mode 100644 index 0000000000..8b35bbc2e3 --- /dev/null +++ b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java @@ -0,0 +1,18 @@ +package seedu.eduke8.exception; + +public class ExceptionMessages { + + public static final String ERROR_STORAGE_FAIL = "Oh no! An error has occurred when accessing the file." + + "Please check again!"; + public static final String ERROR_UNKNOWN = "Oh no! An unknown error has occurred."; + public static final String ERROR_UNRECOGNIZED_COMMAND = "Oops! The command cannot be understood.\n" + + "Please use the \"help\" to get the list of available commands. "; + public static final String ERROR_QUIZ_WRONG_FORMAT = "Invalid command! The command for quiz is as follows:\n" + + "quiz t/ n/"; + public static final String ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED = "Oh! This command has yet to be implemented. " + + "Stay tune for Version 2.0!"; + public static final String ERROR_QUIZ_ANSWER_NOT_INDEX = "Please choose the answer by index!"; + public static final String ERROR_QUIZ_INVALID_QUESTION_NUMBER = "The number of quiz questions must be more than 1!"; + public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = + "There is not enough questions in the topic for the quiz!"; +} diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index cd556fbcbb..3b73a1059d 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -13,6 +13,9 @@ import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_WRONG_FORMAT; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNRECOGNIZED_COMMAND; + public class MenuParser implements Parser { public MenuParser() { @@ -39,7 +42,7 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } else if (commandArr.length < 3) { - return new IncorrectCommand("empty"); + return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); case "exit": @@ -47,6 +50,6 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws default: break; } - return new IncorrectCommand("unrecognised"); + return new IncorrectCommand(ERROR_UNRECOGNIZED_COMMAND); } } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 27e9c1db8e..9241f9345a 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -9,6 +9,9 @@ import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; + import java.util.ArrayList; public class QuizParser implements Parser { @@ -25,7 +28,7 @@ public Command parseCommand(DisplayableList optionList, String userInput) { return new HintCommand(question.getHint()); case "back": // To be implemented in v2 - return new IncorrectCommand("Not implemented yet"); + return new IncorrectCommand(ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED); default: try { ArrayList options = optionList.getInnerList(); @@ -34,7 +37,7 @@ public Command parseCommand(DisplayableList optionList, String userInput) { return new AnswerCommand(chosenOption, question); } catch (NumberFormatException e) { - return new IncorrectCommand("Please choose the answer by index"); + return new IncorrectCommand(ERROR_QUIZ_ANSWER_NOT_INDEX); } } } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index f201946f9d..b19ad43f47 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -3,16 +3,15 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INVALID_QUESTION_NUMBER; + import java.util.ArrayList; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; public class QuizQuestionsManager { - public static final String INVALID_QUIZ_QUESTION_NUMBER = "Number of quiz questions must be more than 1"; - public static final String INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ = - "There is not enough questions in the topic for the quiz!"; - private static Logger logger = Logger.getLogger("Main"); @@ -32,11 +31,11 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) throws Eduke8Exception { if (numberOfQuestionsForQuiz <= 0) { - throw new Eduke8Exception(INVALID_QUIZ_QUESTION_NUMBER); + throw new Eduke8Exception(ERROR_QUIZ_INVALID_QUESTION_NUMBER); } if (numberOfQuestionsForQuiz > questionsInTopic.size()) { - throw new Eduke8Exception(INSUFFICIENT_TOPIC_QUESTIONS_FOR_QUIZ); + throw new Eduke8Exception(ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS); } // Stores the questions' indexes selected from the topic question list diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 46ba17347b..f559abb0e1 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -12,13 +12,6 @@ public TopicList(ArrayList topics) { this.topics = topics; } - public void showTopics() { - System.out.println("These are the available topics:"); - for (int i = 0; i < topics.size(); i++) { - System.out.println(topics.get(i).getDescription()); - } - } - @Override public ArrayList getInnerList() { return topics; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index e9aa877ebe..bd1a11b997 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -3,11 +3,20 @@ import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; +import seedu.eduke8.topic.TopicList; import java.util.Scanner; -public class Ui { +import static seedu.eduke8.exception.ExceptionMessages.ERROR_STORAGE_FAIL; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INVALID_QUESTION_NUMBER; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNRECOGNIZED_COMMAND; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNKNOWN; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_WRONG_FORMAT; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; +public class Ui { private static final int LAST_OPTION = 4; private static final String TEXTBOOK_WEBSITE = @@ -18,24 +27,23 @@ public class Ui { + "| |___ | _ \\| |_| |\n" + "| ___|| | | | _ |\n" + "| |___ | |_| | |_| |\n" - + "|_____||____/|_____|\n"; + + "|_____||____/|_____|"; private static final Scanner SCANNER = new Scanner(System.in); private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; - private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and " - + "understand software engineering and OOP principles through a gamified platform and enhance their " - + "learning experience. It also consolidates key concepts for easy revision."; + private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and\n" + + "understand software engineering and OOP principles through a\ngamified platform and enhance their " + + "learning experience. It also\nconsolidates key concepts for easy revision."; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8\nWhat can I do for you?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; - private static final String MESSAGE_HELP = "These are the commands that you can used:"; - private static final String MESSAGE_COMMANDS = "1) about\n2) help\n3) topics\n4) textbook\n5) quiz\n6) stats\n" - + "7) exit"; + private static final String MESSAGE_HELP = "These are the commands that you can used:\n1) about\n2) help\n" + + "3) topics\n4) textbook\n5) quiz t/ n/\n6) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!\nHope you have learnt something new!"; private static final String MESSAGE_ANSWER_WRONG = "Oops! Please try again! Do visit the textbook to read up more."; private static final String MESSAGE_ANSWER_CORRECT = "Congrats! This answer is correct! Well Done!"; - private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at: " + TEXTBOOK_WEBSITE; - + private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at:\n" + TEXTBOOK_WEBSITE; + private static final String MESSAGE_HINT = "Hint: "; public String getInputFromUser() { return SCANNER.nextLine(); @@ -64,12 +72,13 @@ public void printOption(Option option, int optionNumber) { } public void printQuestion(Question question, int questionNumber) { - System.out.println(HORIZONTAL_LINE); System.out.println(questionNumber + ". " + question.getDescription()); } public void printHint(Hint hint) { - System.out.println("Hint: " + hint.getDescription()); + System.out.println(HORIZONTAL_LINE); + System.out.println(MESSAGE_HINT + hint.getDescription()); + System.out.println(HORIZONTAL_LINE); } //Formatting of topicsChosen: separated by "," @@ -87,7 +96,8 @@ public void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen) } public void printEndQuizPage() { - printMessage(MESSAGE_QUIZ_END); + System.out.println(MESSAGE_QUIZ_END); + System.out.println(HORIZONTAL_LINE); } public void printAnswerIsWrong() { @@ -98,23 +108,56 @@ public void printAnswerIsCorrect() { printMessage(MESSAGE_ANSWER_CORRECT); } - //Shows list of commands that can be used. public void printHelp() { printMessage(MESSAGE_HELP); - printMessage(MESSAGE_COMMANDS); } public void printAbout() { printMessage(MESSAGE_ABOUT); } + public void printAllTopics(TopicList topics) { + System.out.println(HORIZONTAL_LINE); + + System.out.println("These are the available topics:"); + for (int i = 0; i < topics.getCount(); i++) { + System.out.println(i + 1 + ") " + topics.getInnerList().get(i).getDescription()); + } + + System.out.println(HORIZONTAL_LINE); + } + public void printTextbook() { printMessage(MESSAGE_TEXTBOOK); } - public void printError() { - //Writing messages for the different errors - //Completed when more error handling are done + public void printError(String errorType) { + switch (errorType) { + case ERROR_STORAGE_FAIL: + printMessage(ERROR_STORAGE_FAIL); + break; + case ERROR_UNRECOGNIZED_COMMAND: + printMessage(ERROR_UNRECOGNIZED_COMMAND); + break; + case ERROR_QUIZ_WRONG_FORMAT: + printMessage(ERROR_QUIZ_WRONG_FORMAT); + break; + case ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED: + printMessage(ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED); + break; + case ERROR_QUIZ_ANSWER_NOT_INDEX: + printMessage(ERROR_QUIZ_ANSWER_NOT_INDEX); + break; + case ERROR_QUIZ_INVALID_QUESTION_NUMBER: + printMessage(ERROR_QUIZ_INVALID_QUESTION_NUMBER); + break; + case ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS: + printMessage(ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS); + break; + default: + printMessage(ERROR_UNKNOWN); + break; + } } private void printStartQuizTopics(String topicsChosen) { From aa11e4f9ffde2498b9a6395764486f46d13e2834 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 02:50:48 +0800 Subject: [PATCH 098/447] Change errorType to errorMessage --- src/main/java/seedu/eduke8/command/IncorrectCommand.java | 8 ++++---- src/main/java/seedu/eduke8/command/QuizCommand.java | 2 +- src/main/java/seedu/eduke8/exception/Eduke8Exception.java | 4 ++-- src/main/java/seedu/eduke8/ui/Ui.java | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index 6d58d9bd35..2613c07308 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -4,14 +4,14 @@ import seedu.eduke8.ui.Ui; public class IncorrectCommand extends Command { - String errorType; + String errorMessage; - public IncorrectCommand(String errorType) { - this.errorType = errorType; + public IncorrectCommand(String errorMessage) { + this.errorMessage = errorMessage; } @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(errorType); + ui.printError(errorMessage); } } diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 77af002ff5..c76af1b136 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -27,7 +27,7 @@ public void execute(DisplayableList displayableList, Ui ui) { SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { - new IncorrectCommand(e.getMessage()); + ui.printError(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/exception/Eduke8Exception.java b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java index ed37d8ce0d..b9c055c29b 100644 --- a/src/main/java/seedu/eduke8/exception/Eduke8Exception.java +++ b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java @@ -1,7 +1,7 @@ package seedu.eduke8.exception; public class Eduke8Exception extends Exception { - public Eduke8Exception(String message) { - super(message); + public Eduke8Exception(String errorType) { + super(errorType); } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index bd1a11b997..4c9d00e62b 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -131,8 +131,8 @@ public void printTextbook() { printMessage(MESSAGE_TEXTBOOK); } - public void printError(String errorType) { - switch (errorType) { + public void printError(String errorMessage) { + switch (errorMessage) { case ERROR_STORAGE_FAIL: printMessage(ERROR_STORAGE_FAIL); break; From 896b5eb4b6b801bb4ddd73c098ae11d202e624a8 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 02:56:29 +0800 Subject: [PATCH 099/447] Add error printing capabilities and allow users to re-enter answer for quiz if he did not enter a number --- src/main/java/seedu/eduke8/Eduke8.java | 4 ++-- src/main/java/seedu/eduke8/command/IncorrectCommand.java | 8 ++++---- src/main/java/seedu/eduke8/command/QuizCommand.java | 4 ++-- src/main/java/seedu/eduke8/parser/MenuParser.java | 4 ++-- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 9 +++++++-- src/main/java/seedu/eduke8/ui/Ui.java | 3 ++- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 024ccad312..e75b7a575a 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -37,7 +37,7 @@ private Eduke8(String dataPath, String logPath) { logStorage.save(); topicList = new TopicList(topicsStorage.load()); } catch (ParseException | IOException e) { - ui.printError(); + ui.printError("Error reading or writing local files."); LOGGER.log(Level.WARNING, "Error reading or writing local files."); } } @@ -63,7 +63,7 @@ private void runCommandLoopUntilExit() { command.execute(topicList, ui); isExit = command.isExit(); } catch (Eduke8Exception e) { - ui.printError(); // able to call ui.printError(e.getMessage()) too if implemented + ui.printError(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index de2e6acab6..f3af0cf34c 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -4,14 +4,14 @@ import seedu.eduke8.ui.Ui; public class IncorrectCommand extends Command { - String errorType = ""; + String errorMessage = ""; - public IncorrectCommand(String errorType) { - this.errorType = errorType; + public IncorrectCommand(String errorMessage) { + this.errorMessage = errorMessage; } @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(); //to implement in ui: print out messages according to string input indicating type of error + ui.printError(errorMessage); // print out messages according to string input indicating type of error } } diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 65449c8e97..15a0f3fe0b 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -27,8 +27,8 @@ public void execute(DisplayableList displayableList, Ui ui) { Topic topic = (Topic) topicList.find(topicName); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); - } catch (Eduke8Exception ee) { - ui.printError(); //to implement in ui: specific error for QuizCommand issues + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index cd556fbcbb..ce19573703 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -39,7 +39,7 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } else if (commandArr.length < 3) { - return new IncorrectCommand("empty"); + return new IncorrectCommand("Please use the format: quiz t/ n/"); } return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); case "exit": @@ -47,6 +47,6 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws default: break; } - return new IncorrectCommand("unrecognised"); + return new IncorrectCommand("Please enter in a valid command. Enter 'help' for more info!"); } } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 5ba4f3c457..6ed2bbbf51 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -3,6 +3,7 @@ import seedu.eduke8.command.AnswerCommand; import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; +import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; @@ -75,10 +76,14 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan assert (command instanceof AnswerCommand || command instanceof HintCommand); - while (command instanceof HintCommand) { + while (!(command instanceof AnswerCommand)) { command.execute(optionList, ui); command = getCommand(ui, optionList); - LOGGER.log(Level.INFO, "Hint shown"); + if (command instanceof IncorrectCommand) { + LOGGER.log(Level.INFO, "Invalid answer given for question"); + } else { + LOGGER.log(Level.INFO, "Hint shown"); + } } assert command instanceof AnswerCommand; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index e9aa877ebe..827157af51 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -112,9 +112,10 @@ public void printTextbook() { printMessage(MESSAGE_TEXTBOOK); } - public void printError() { + public void printError(String errorMessage) { //Writing messages for the different errors //Completed when more error handling are done + printMessage(errorMessage); } private void printStartQuizTopics(String topicsChosen) { From f034206d8413564beee37df35feabcefbfe1256d Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 03:03:07 +0800 Subject: [PATCH 100/447] Resolve issue with testing --- text-ui-test/EXPECTED.TXT | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 937778b9d5..9664888b97 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -4,47 +4,49 @@ | ___|| | | | _ | | |___ | |_| | |_| | |_____||____/|_____| - ------------------------------------------------------------------- Hello! I'm E-Duke-8 What can I do for you? ------------------------------------------------------------------- ------------------------------------------------------------------- -E-Duke-8 is a desktop app that helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. It also consolidates key concepts for easy revision. +E-Duke-8 is a desktop app that helps CS2113/T students learn and +understand software engineering and OOP principles through a +gamified platform and enhance their learning experience. It also +consolidates key concepts for easy revision. ------------------------------------------------------------------- ------------------------------------------------------------------- These are the commands that you can used: -------------------------------------------------------------------- -------------------------------------------------------------------- 1) about 2) help 3) topics 4) textbook -5) quiz -6) stats -7) exit +5) quiz t/ n/ +6) exit +------------------------------------------------------------------- ------------------------------------------------------------------- +The textbook for this module is available at: +https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------- -The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------- These are the available topics: -OOP +1) OOP +------------------------------------------------------------------- ------------------------------------------------------------------- Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP ------------------------------------------------------------------- -------------------------------------------------------------------- 1. What is encapsulation? 1) A 2) B 3) C 4) D ------------------------------------------------------------------- +------------------------------------------------------------------- Hint: check the textbook ------------------------------------------------------------------- -Congrats! This answer is correct! Well Done! ------------------------------------------------------------------- +Congrats! This answer is correct! Well Done! ------------------------------------------------------------------- This is the end of the quiz! Hope you have learnt something new! @@ -54,7 +56,6 @@ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP ------------------------------------------------------------------- -------------------------------------------------------------------- 1. What is encapsulation? 1) A 2) B @@ -64,7 +65,6 @@ The topic chosen is: OOP ------------------------------------------------------------------- Oops! Please try again! Do visit the textbook to read up more. ------------------------------------------------------------------- -------------------------------------------------------------------- This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------- From 5f55bb2086e37ea96065786934ebfec8e2fe1fa0 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 03:04:15 +0800 Subject: [PATCH 101/447] Add MenuParserTest and QuizParserTest. Updated Ui.printError() to print error messages appropriately. --- src/main/java/seedu/eduke8/Eduke8.java | 4 +- .../eduke8/command/IncorrectCommand.java | 2 +- .../seedu/eduke8/command/QuizCommand.java | 2 +- src/main/java/seedu/eduke8/ui/Ui.java | 27 ++++++++++- .../seedu/eduke8/parser/MenuParserTest.java | 26 ++++++++++ .../seedu/eduke8/parser/QuizParserTest.java | 48 +++++++++++++++++++ 6 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 src/test/java/seedu/eduke8/parser/MenuParserTest.java create mode 100644 src/test/java/seedu/eduke8/parser/QuizParserTest.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 1029889b28..56b2a3600c 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -34,7 +34,7 @@ private Eduke8(String dataPath, String logPath) { topicList = new TopicList(topicsStorage.load()); logStorage.save(); } catch (ParseException | IOException e) { - ui.printError(); + ui.printError("Eduk8 Constructor Exception"); } } @@ -59,7 +59,7 @@ private void runCommandLoopUntilExit() { command.execute(topicList, ui); isExit = command.isExit(); } catch (Eduke8Exception e) { - ui.printError(); // able to call ui.printError(e.getMessage()) too if implemented + ui.printError("runCommandLoopUntilExit() Exception"); // able to call ui.printError(e.getMessage()) too if implemented } } } diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index de2e6acab6..a7e46388e8 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -12,6 +12,6 @@ public IncorrectCommand(String errorType) { @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(); //to implement in ui: print out messages according to string input indicating type of error + ui.printError(errorType); //to implement in ui: print out messages according to string input indicating type of error } } diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 65449c8e97..3f4dbd63da 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -28,7 +28,7 @@ public void execute(DisplayableList displayableList, Ui ui) { SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception ee) { - ui.printError(); //to implement in ui: specific error for QuizCommand issues + ui.printError("QuizCommand execute Exception"); //to implement in ui: specific error for QuizCommand issues } } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index e9aa877ebe..aea6fe5b70 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -112,7 +112,32 @@ public void printTextbook() { printMessage(MESSAGE_TEXTBOOK); } - public void printError() { + public void printError(String errorType) { + switch (errorType) { + case "unrecognised": + printMessage("ERROR: Command received not recognised. Please try again."); + break; + case "empty": + printMessage("ERROR: Command received is missing information. Please try again."); + break; + case "Eduk8 Constructor Exception": + printMessage("ERROR: An exception was thrown while loading the save file from storage."); + break; + case "runCommandLoopUntilExit() Exception": + printMessage("ERROR: An exception was thrown while running the main loop."); + break; + case "QuizCommand execute Exception": + printMessage("ERROR: An exception was thrown while executing the Quiz Command."); + break; + case "Not implemented yet": + printMessage("ERROR: This function has not been implemented yet."); + break; + case "Please choose the answer by index": + printMessage("ERROR: Please choose the answer by using numeric digits as per the choices given."); + break; + default: + break; + } //Writing messages for the different errors //Completed when more error handling are done } diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java new file mode 100644 index 0000000000..3d723256f5 --- /dev/null +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -0,0 +1,26 @@ +package seedu.eduke8.parser; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.command.*; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class MenuParserTest { + @Test + public void menuParser_wrongStringInput_expectEduk8Exception() { + Ui ui = new Ui(); + TopicList topicList = new TopicList(null); + MenuParser menuParser = new MenuParser(); + + try { + Command badCommand = menuParser.parseCommand(topicList, "quiz /twrongtopic /nbadnnum"); + assertThrows(Eduke8Exception.class, () -> { + badCommand.execute(topicList, ui); + }); + } catch (Exception ignored) { + } + } +} diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java new file mode 100644 index 0000000000..07b75c1cff --- /dev/null +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -0,0 +1,48 @@ +package seedu.eduke8.parser; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.command.AnswerCommand; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.HintCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; + +import static org.junit.jupiter.api.Assertions.assertTrue; + + +public class QuizParserTest { + + @Test + public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { + OptionList optionList = new OptionList(); + QuizParser quizParser = new QuizParser(); + + Command badCommand = quizParser.parseCommand(optionList, "one"); + assertTrue(badCommand instanceof IncorrectCommand); + + badCommand = quizParser.parseCommand(optionList, "back"); + assertTrue(badCommand instanceof IncorrectCommand); + } + + @Test + public void quizParser_correctStringInput_success() { + Hint hint = new Hint("description"); + OptionList optionList = new OptionList(); + QuizParser quizParser = new QuizParser(); + Question question = new Question("description", optionList, hint); + + quizParser.setQuestion(question); + Command resultCommand = quizParser.parseCommand(optionList, "hint"); + assertTrue(resultCommand instanceof HintCommand); + + optionList.add(new Option("1")); + quizParser.setQuestion(question); + resultCommand = quizParser.parseCommand(optionList, "1"); + assertTrue(resultCommand instanceof AnswerCommand); + + } +} + From 9d1bab49c93240b89223117959ecf879944511d2 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 03:16:04 +0800 Subject: [PATCH 102/447] Add a couple of assertions for Question class --- src/main/java/seedu/eduke8/question/QuestionList.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index 64a9f1dc7b..6a02d74de2 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -28,11 +28,13 @@ public ArrayList getInnerList() { @Override public void add(Displayable question) { + assert question != null; // Exception in future if user can add question questions.add(question); } @Override public void delete(int index) { + assert (index > 0 && index < questions.size()); // Exception in future if user can delete question questions.remove(index); } From e322693ae4e77c4986078fdc54e393eaf63c5277 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 03:35:50 +0800 Subject: [PATCH 103/447] Update questions in question bank --- data/main/topics.json | 115 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/data/main/topics.json b/data/main/topics.json index 8d1f182bb4..a1b91b238c 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -96,5 +96,120 @@ ] } ] + }, + { + "topic": "Revision_Control", + "questions": [ + { + "description": "Which of these is not considered a benefit of a typical RCS?", + "hint": "Typical RCS may not use any graphics", + "options": [ + { + "description": "Help a single user manage revisions of a single file", + "correct": false + }, + { + "description": "Depicts information about tasks and their details in terms of subtasks", + "correct": true + }, + { + "description": "Makes it easier for a group of developers to collaborate on a project", + "correct": false + }, + { + "description": "Detect when multiple developers make incompatible changes to the same file", + "correct": false + } + ] + }, + { + "description": "Merge conflicts can occur when:", + "hint": "Conflicts can normally occur when different developer change the same line of code", + "options": [ + { + "description": "team members don't like each other", + "correct": false + }, + { + "description": "changes happen at different locations in the codebase", + "correct": false + }, + { + "description": "git cannot create a fast forward merge", + "correct": false + }, + { + "description": "a developer deletes a file while others were modifying it", + "correct": true + } + ] + }, + { + "description": "Git:", + "hint": "Git can be quite flexible in its use", + "options": [ + { + "description": "supports distributed revision control", + "correct": true + }, + { + "description": "is centralized revision control", + "correct": false + }, + { + "description": "is distributed revision control", + "correct": false + }, + { + "description": "requires a remote repo on GitHub", + "correct": false + } + ] + }, + { + "description": "Your local repository can communicate with ___ remote repositories:", + "hint": "Recall adding remote repositories through git", + "options": [ + { + "description": "zero", + "correct": false + }, + { + "description": "only one", + "correct": false + }, + { + "description": "only two", + "correct": false + }, + { + "description": "any number of", + "correct": true + } + ] + }, + { + "description": "What is branching?", + "hint": "Think about the use of branching for your team project", + "options": [ + { + "description": "Restoring the state of the working directory at a point in the past", + "correct": false + }, + { + "description": "Saving a snapshot of the current state of the tracked files in the revision control history", + "correct": false + }, + { + "description": "The process of evolving multiple versions of the software in parallel", + "correct": true + }, + { + "description": "Making a remote copy of a remote repo", + "correct": false + } + ] + } + ] } ] \ No newline at end of file From 87aa3a72eda13ddc54740179fea9eb926bd05169 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 04:10:08 +0800 Subject: [PATCH 104/447] Fix minor checkstyle errors. --- src/main/java/seedu/eduke8/Eduke8.java | 2 +- src/main/java/seedu/eduke8/command/IncorrectCommand.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index f50893f8ab..0c12593113 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -63,7 +63,7 @@ private void runCommandLoopUntilExit() { command.execute(topicList, ui); isExit = command.isExit(); } catch (Eduke8Exception e) { - ui.printError("runCommandLoopUntilExit() Exception"); // able to call ui.printError(e.getMessage()) too if implemented + ui.printError("runCommandLoopUntilExit() Exception"); } } } diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index a7e46388e8..df07756b72 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -12,6 +12,6 @@ public IncorrectCommand(String errorType) { @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(errorType); //to implement in ui: print out messages according to string input indicating type of error + ui.printError(errorType); } } From a0d776c5f4ef32b98c74d391ea841b117fc6c7bd Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 04:15:02 +0800 Subject: [PATCH 105/447] Add 6 OOP questions to question bank --- data/main/topics.json | 205 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 193 insertions(+), 12 deletions(-) diff --git a/data/main/topics.json b/data/main/topics.json index 8d1f182bb4..298b4f341a 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -3,46 +3,112 @@ "topic": "OOP", "questions": [ { - "description": "What is encapsulation?", - "hint": "check the textbook", + "description": "Choose the correct statements?", + "hint": "Recall the differences between the two core OOP concepts: abstraction and encapsulation.", "options": [ { - "description": "A", + "description": "An object is an encapsulation because it packages data and behavior into one bundle.", "correct": true }, { - "description": "B", + "description": "An object is an encapsulation because it lets us think in terms of higher level concepts \nsuch as Students rather than student-related functions and data separately.", "correct": false }, { - "description": "C", + "description": "Nil", "correct": false }, { - "description": "D", + "description": "Nil", "correct": false } ] }, { - "description": "What is abstraction?", - "hint": "check the textbook", + "description": "OO is a higher level mechanism than the procedural paradigm.", + "hint": "OOP four core concepts are: Encapsulation, Abstraction, Inheritance and Polymorphism.", "options": [ { - "description": "A", + "description": "True", + "correct": true + }, + { + "description": "False", "correct": false }, { - "description": "B", + "description": "Nil", + "correct": false + }, + { + "description": "Nil", + "correct": false + } + ] + }, + { + "description": "Which of the following is NOT a core concept of OOP?", + "hint": "Think about what you have done when writing OOP code and what OOP is useful for", + "options": [ + { + "description": "Inheritance", + "correct": false + }, + { + "description": "Abstraction", + "correct": false + }, + { + "description": "Encapsulation", + "correct": false + }, + { + "description": "Implementation", "correct": true + } + ] + }, + { + "description": "Choose the WRONG statement", + "hint": "We are using OOP to help model solutions like how objects in real world work, in Java", + "options": [ + { + "description": "OO is a programming paradigm", + "correct": false }, { - "description": "C", + "description": "OO guides us in how to structure the solution", "correct": false }, { - "description": "D", + "description": "OO is mainly an abstraction mechanism", "correct": false + }, + { + "description": "OO is a programming language", + "correct": true + } + ] + }, + { + "description": "Choose the WRONG statement", + "hint": "C language is not an OO language. Java code is able to be written like C code.", + "options": [ + { + "description": "Java and C++ are OO languages", + "correct": false + }, + { + "description": "C language follows the Functional Programming paradigm", + "correct": true + }, + { + "description": "Java can be used to write procedural code", + "correct": false + }, + { + "description": "Prolog follows the Logic Programming paradigm", + "correct": true } ] } @@ -96,5 +162,120 @@ ] } ] + }, + { + "topic": "Revision_Control", + "questions": [ + { + "description": "Which of these is not considered a benefit of a typical RCS?", + "hint": "Typical RCS may not use any graphics", + "options": [ + { + "description": "Help a single user manage revisions of a single file", + "correct": false + }, + { + "description": "Depicts information about tasks and their details in terms of subtasks", + "correct": true + }, + { + "description": "Makes it easier for a group of developers to collaborate on a project", + "correct": false + }, + { + "description": "Detect when multiple developers make incompatible changes to the same file", + "correct": false + } + ] + }, + { + "description": "Merge conflicts can occur when:", + "hint": "Conflicts can normally occur when different developer change the same line of code", + "options": [ + { + "description": "team members don't like each other", + "correct": false + }, + { + "description": "changes happen at different locations in the codebase", + "correct": false + }, + { + "description": "git cannot create a fast forward merge", + "correct": false + }, + { + "description": "a developer deletes a file while others were modifying it", + "correct": true + } + ] + }, + { + "description": "Git:", + "hint": "Git can be quite flexible in its use", + "options": [ + { + "description": "supports distributed revision control", + "correct": true + }, + { + "description": "is centralized revision control", + "correct": false + }, + { + "description": "is distributed revision control", + "correct": false + }, + { + "description": "requires a remote repo on GitHub", + "correct": false + } + ] + }, + { + "description": "Your local repository can communicate with ___ remote repositories:", + "hint": "Recall adding remote repositories through git", + "options": [ + { + "description": "zero", + "correct": false + }, + { + "description": "only one", + "correct": false + }, + { + "description": "only two", + "correct": false + }, + { + "description": "any number of", + "correct": true + } + ] + }, + { + "description": "What is branching?", + "hint": "Think about the use of branching for your team project", + "options": [ + { + "description": "Restoring the state of the working directory at a point in the past", + "correct": false + }, + { + "description": "Saving a snapshot of the current state of the tracked files in the revision control history", + "correct": false + }, + { + "description": "The process of evolving multiple versions of the software in parallel", + "correct": true + }, + { + "description": "Making a remote copy of a remote repo", + "correct": false + } + ] + } + ] } ] \ No newline at end of file From b9945184816befdd86dabd9fdc6177c903e23bca Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 04:19:39 +0800 Subject: [PATCH 106/447] Fix more checkstyle errors. --- src/main/java/seedu/eduke8/command/IncorrectCommand.java | 2 +- src/test/java/seedu/eduke8/parser/MenuParserTest.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index df07756b72..3af17f2531 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -12,6 +12,6 @@ public IncorrectCommand(String errorType) { @Override public void execute(DisplayableList displayableList, Ui ui) { - ui.printError(errorType); + ui.printError(errorType); } } diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index 3d723256f5..b5d7854cb3 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -1,7 +1,7 @@ package seedu.eduke8.parser; import org.junit.jupiter.api.Test; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; @@ -20,7 +20,8 @@ public void menuParser_wrongStringInput_expectEduk8Exception() { assertThrows(Eduke8Exception.class, () -> { badCommand.execute(topicList, ui); }); - } catch (Exception ignored) { + } catch (Eduke8Exception ee) { + ee.printStackTrace(); } } } From c095a3d2a23b9557ed46f65f20900586b7561f1f Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 04:43:20 +0800 Subject: [PATCH 107/447] Fix JUnit test errors. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 8 ++++++-- .../java/seedu/eduke8/parser/MenuParserTest.java | 14 ++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index cd556fbcbb..dd1c0b44ec 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -36,8 +36,12 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws int numOfQuestions = 0; String topicName = ""; if (commandArr.length == 3) { - numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); - topicName = commandArr[1].substring(2); + try { + numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); + topicName = commandArr[1].substring(2); + } catch (NumberFormatException nfe) { + return new IncorrectCommand("Please choose the answer by index"); + } } else if (commandArr.length < 3) { return new IncorrectCommand("empty"); } diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index b5d7854cb3..49e3faa5d2 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -2,26 +2,24 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.command.Command; -import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class MenuParserTest { @Test - public void menuParser_wrongStringInput_expectEduk8Exception() { + public void menuParser_wrongStringInput_expectIncorrectCommand() { Ui ui = new Ui(); TopicList topicList = new TopicList(null); MenuParser menuParser = new MenuParser(); try { Command badCommand = menuParser.parseCommand(topicList, "quiz /twrongtopic /nbadnnum"); - assertThrows(Eduke8Exception.class, () -> { - badCommand.execute(topicList, ui); - }); - } catch (Eduke8Exception ee) { - ee.printStackTrace(); + assertTrue(badCommand instanceof IncorrectCommand); + } catch (Exception e) { + e.printStackTrace(); } } } From 37064a83d663458986e5520c9d2238caf8de6738 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 15 Oct 2020 11:18:42 +0800 Subject: [PATCH 108/447] Add assertions and logging to Topic and TopicList classes --- .../java/seedu/eduke8/command/TopicsCommand.java | 2 +- src/main/java/seedu/eduke8/topic/Topic.java | 3 +++ src/main/java/seedu/eduke8/topic/TopicList.java | 16 +++++++++++----- src/main/java/seedu/eduke8/ui/Ui.java | 9 +++++++++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/TopicsCommand.java b/src/main/java/seedu/eduke8/command/TopicsCommand.java index 82ad5ecc56..40832daa92 100644 --- a/src/main/java/seedu/eduke8/command/TopicsCommand.java +++ b/src/main/java/seedu/eduke8/command/TopicsCommand.java @@ -7,6 +7,6 @@ public class TopicsCommand extends Command { @Override public void execute(DisplayableList displayableList, Ui ui) { - ((TopicList) displayableList).showTopics(); + ((TopicList) displayableList).showTopics(ui); } } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 4803dc68e3..7cb2f1b1fe 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -9,6 +9,9 @@ public class Topic implements Displayable { private boolean wasShown; public Topic(String description, QuestionList questionList) { + assert description != null; + assert questionList != null; + this.description = description; this.questionList = questionList; wasShown = false; diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 46ba17347b..f17b78cde4 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -4,19 +4,21 @@ import seedu.eduke8.common.DisplayableList; import java.util.ArrayList; +import seedu.eduke8.ui.Ui; +import java.util.logging.Level; +import java.util.logging.Logger; public class TopicList implements DisplayableList { private ArrayList topics; + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public TopicList(ArrayList topics) { + assert topics.size() > 0; this.topics = topics; } - public void showTopics() { - System.out.println("These are the available topics:"); - for (int i = 0; i < topics.size(); i++) { - System.out.println(topics.get(i).getDescription()); - } + public void showTopics(Ui ui) { + ui.printTopicList(topics); } @Override @@ -26,12 +28,16 @@ public ArrayList getInnerList() { @Override public void add(Displayable topic) { + String message = "Topic " + topic.getDescription() + " added"; topics.add(topic); + LOGGER.log(Level.INFO, message); } @Override public void delete(int index) { + String message = "Topic " + topics.get(index).getDescription() + " deleted"; topics.remove(index); + LOGGER.log(Level.INFO, message); } @Override diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index e9aa877ebe..3b8bf0ee11 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -1,9 +1,11 @@ package seedu.eduke8.ui; +import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; +import java.util.ArrayList; import java.util.Scanner; public class Ui { @@ -117,6 +119,13 @@ public void printError() { //Completed when more error handling are done } + public void printTopicList(ArrayList topics) { + System.out.println("These are the available topics:"); + for (int i = 0; i < topics.size(); i++) { + System.out.println(topics.get(i).getDescription()); + } + } + private void printStartQuizTopics(String topicsChosen) { if (topicsChosen.contains(",")) { int indexOfSplit = topicsChosen.indexOf(","); From 8b8dc2f51cb979104542ac4464aaa7c080869a4d Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 15 Oct 2020 13:02:04 +0800 Subject: [PATCH 109/447] Added 5 questions to QuestionBank --- data/main/topics.json | 115 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/data/main/topics.json b/data/main/topics.json index a1b91b238c..3add14e647 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -211,5 +211,120 @@ ] } ] + }, + { + "topic": "Java Basics", + "questions": [ + { + "description": "What is the value of the following expression? \n 4 * 5 - 1", + "hint": "* has higher precedence than -", + "options": [ + { + "description": "19", + "correct": true + }, + { + "description": "16", + "correct": false + }, + { + "description": "15", + "correct": false + }, + { + "description": "4", + "correct": false + } + ] + }, + { + "description": "What is the value of the following expression? \n 4 * (5 - 1)", + "hint": "Parentheses ( ) have higher precedence than *", + "options": [ + { + "description": "19", + "correct": false + }, + { + "description": "16", + "correct": true + }, + { + "description": "15", + "correct": false + }, + { + "description": "4", + "correct": false + } + ] + }, + { + "description": "What is the value of the following expression? \n 4 * (5 - 1)", + "hint": "Parentheses ( ) have higher precedence than *", + "options": [ + { + "description": "19", + "correct": false + }, + { + "description": "16", + "correct": true + }, + { + "description": "15", + "correct": false + }, + { + "description": "4", + "correct": false + } + ] + }, + { + "description": "Which of the following expressions gives a boolean value of false?", + "hint": "What are the precedences of parentheses and conditional operators?", + "options": [ + { + "description": "true && true", + "correct": false + }, + { + "description": "(true || false) && true", + "correct": false + }, + { + "description": "true && false || true", + "correct": false + }, + { + "description": "true && false", + "correct": true + } + ] + }, + { + "description": "Consider\nint[] scores = new int[4]\nscores[5] = 0\nWhat is the error here?", + "hint": "The int array in the question has the size of 4", + "options": [ + { + "description": "There is no error here", + "correct": false + }, + { + "description": "ArrayIndexOutOfBoundsException", + "correct": true + }, + { + "description": "NullPointerException", + "correct": false + }, + { + "description": "StackOverflowError", + "correct": false + } + ] + } + ] } ] \ No newline at end of file From 2d6b1ce8f81fb9c11bdebed72c00acc40d0f2fe7 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 13:04:15 +0800 Subject: [PATCH 110/447] Update the problem on IncorrectCommand --- src/main/java/seedu/eduke8/Eduke8.java | 4 ++-- .../java/seedu/eduke8/command/AnswerCommand.java | 15 ++++++++++++++- src/main/java/seedu/eduke8/ui/Ui.java | 9 ++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 1f86fdf939..f93ca91243 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -40,7 +40,7 @@ private Eduke8(String dataPath, String logPath) { logStorage.save(); topicList = new TopicList(topicsStorage.load()); } catch (ParseException | IOException e) { - new IncorrectCommand(ERROR_STORAGE_FAIL); + ui.printError(ERROR_STORAGE_FAIL); LOGGER.log(Level.WARNING, "Error reading or writing local files."); } } @@ -66,7 +66,7 @@ private void runCommandLoopUntilExit() { command.execute(topicList, ui); isExit = command.isExit(); } catch (Eduke8Exception e) { - new IncorrectCommand(e.getMessage()); + ui.printError(e.getMessage()); } } } diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index da26806000..b7e1a11db2 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -18,13 +18,26 @@ public AnswerCommand(Option option, Question question) { @Override public void execute(DisplayableList optionList, Ui ui) { + int correctOption; + if (option.isCorrectAnswer()) { ui.printAnswerIsCorrect(); question.markAsAnsweredCorrectly(); assert question.wasAnsweredCorrectly(); } else { - ui.printAnswerIsWrong(); + correctOption = findCorrectOption(optionList); + ui.printAnswerIsWrong(correctOption); assert !question.wasAnsweredCorrectly(); } } + + private int findCorrectOption(DisplayableList optionList) { + for(int i=0; i n/\n6) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!\nHope you have learnt something new!"; - private static final String MESSAGE_ANSWER_WRONG = "Oops! Please try again! Do visit the textbook to read up more."; + private static final String MESSAGE_ANSWER_WRONG = "Oops! The correct answer is "; + private static final String MESSAGE_ANSWER_WRONG_SECOND = "! Do visit the textbook to read up more."; private static final String MESSAGE_ANSWER_CORRECT = "Congrats! This answer is correct! Well Done!"; private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at:\n" + TEXTBOOK_WEBSITE; private static final String MESSAGE_HINT = "Hint: "; @@ -100,8 +101,10 @@ public void printEndQuizPage() { System.out.println(HORIZONTAL_LINE); } - public void printAnswerIsWrong() { - printMessage(MESSAGE_ANSWER_WRONG); + public void printAnswerIsWrong(int correctAnswer) { + System.out.println(HORIZONTAL_LINE); + System.out.println(MESSAGE_ANSWER_WRONG + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); + System.out.println(HORIZONTAL_LINE); } public void printAnswerIsCorrect() { From 6a026be77a9660fe37c427003bc1d119817ece84 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 13:11:46 +0800 Subject: [PATCH 111/447] Add 5 questions on the topic of 'Requirements'. --- data/main/topics.json | 117 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/data/main/topics.json b/data/main/topics.json index 298b4f341a..8a9f95ccfc 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -1,4 +1,119 @@ [ + { + "topic": "Requirements", + "questions": [ + { + "description": "A software project may come in the form of:", + "hint": "Recall the types of software projects that exist.", + "options": [ + { + "description": "A brown-field project and a green-field project.", + "correct": true + }, + { + "description": "A green-field project and a blue-field project.", + "correct": false + }, + { + "description": "A blue-field project and a red-field project.", + "correct": false + }, + { + "description": "A red-field project and a brown-field project.", + "correct": false + } + ] + }, + { + "description": "Which of the following is a characteristic of a well-defined requirement?", + "hint": "Try to remember about what purpose requirements serve to pick out the correct answer.", + "options": [ + { + "description": "Qualitative", + "correct": false + }, + { + "description": "Unambiguous", + "correct": true + }, + { + "description": "Idealistic", + "correct": false + }, + { + "description": "Malleable", + "correct": false + } + ] + }, + { + "description": "Requirements come from stakeholders.", + "hint": "Think about what you have done when writing OOP code and what OOP is useful for", + "options": [ + { + "description": "True", + "correct": true + }, + { + "description": "False", + "correct": false + }, + { + "description": "NIL", + "correct": false + }, + { + "description": "NIL", + "correct": false + } + ] + }, + { + "description": "Requirements should be prioritised based on:", + "hint": "Think about how a stakeholder would rank a list of requirements in order.", + "options": [ + { + "description": "Order of creation and amount of work needed to be done to complete the requirement.", + "correct": false + }, + { + "description": "There is no need to prioritise requirements.", + "correct": false + }, + { + "description": "How much time it takes to implement the requirement and its level of intricacy. ", + "correct": false + }, + { + "description": "Importance and urgency of the requirement.", + "correct": true + } + ] + }, + { + "description": "True or False: I can omit the benefit specified in a User Story if it is obvious.", + "hint": "If something is obvious, such that everyone knows what it does, is there a need to state it?", + "options": [ + { + "description": "True", + "correct": true + }, + { + "description": "False", + "correct": false + }, + { + "description": "NIL", + "correct": false + }, + { + "description": "NIL", + "correct": false + } + ] + } + ] + }, { "topic": "OOP", "questions": [ @@ -108,7 +223,7 @@ }, { "description": "Prolog follows the Logic Programming paradigm", - "correct": true + "correct": false } ] } From ac35d6d216f702bf136c5e91aa8f82dbe73fc167 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 15 Oct 2020 13:14:48 +0800 Subject: [PATCH 112/447] Add method to find the correct option --- src/main/java/seedu/eduke8/command/AnswerCommand.java | 3 +++ src/main/java/seedu/eduke8/option/OptionList.java | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index da26806000..e1278f3a16 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -1,7 +1,9 @@ package seedu.eduke8.command; +import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; import seedu.eduke8.ui.Ui; @@ -23,6 +25,7 @@ public void execute(DisplayableList optionList, Ui ui) { question.markAsAnsweredCorrectly(); assert question.wasAnsweredCorrectly(); } else { + Displayable correctOption = ((OptionList) optionList).findCorrectOption(); ui.printAnswerIsWrong(); assert !question.wasAnsweredCorrectly(); } diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index db3f4a25c4..d91003a381 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -41,6 +41,15 @@ public Displayable find(String description) { return null; } + public Displayable findCorrectOption() { + for (Displayable option : options) { + if (((Option) option).isCorrectAnswer()) { + return option; + } + } + return null; + } + @Override public int getCount() { return options.size(); From 335fa5e005b556b6301b222069fded3a8d6cd934 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 15 Oct 2020 13:32:25 +0800 Subject: [PATCH 113/447] Amended JSON file --- data/main/topics.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/main/topics.json b/data/main/topics.json index 3add14e647..b656b83618 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -213,7 +213,7 @@ ] }, { - "topic": "Java Basics", + "topic": "Java_Basics", "questions": [ { "description": "What is the value of the following expression? \n 4 * 5 - 1", From b12e713ba94b87f629b627f47f995ae6f14701a3 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 15 Oct 2020 13:36:59 +0800 Subject: [PATCH 114/447] Add IOOB exception --- .../java/seedu/eduke8/parser/QuizParser.java | 31 +++++++++---------- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 1 - 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index b65881f985..d8c648f979 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -26,23 +26,22 @@ public void setQuestion(Question question) { @Override public Command parseCommand(DisplayableList optionList, String userInput) { - switch (userInput) { - case "hint": + if ("hint".equals(userInput)) { return new HintCommand(question.getHint()); - case "back": - // To be implemented in v2 - return new IncorrectCommand("Not implemented yet"); - default: - try { - ArrayList options = optionList.getInnerList(); - int chosenIndex = Integer.parseInt(userInput) - 1; - Option chosenOption = (Option) options.get(chosenIndex); - - return new AnswerCommand(chosenOption, question); - } catch (NumberFormatException e) { - LOGGER.log(Level.WARNING, "A non-number was given when answering question."); - return new IncorrectCommand("Please choose the answer by index"); - } + } + + try { + ArrayList options = optionList.getInnerList(); + int chosenIndex = Integer.parseInt(userInput) - 1; + Option chosenOption = (Option) options.get(chosenIndex); + + return new AnswerCommand(chosenOption, question); + } catch (NumberFormatException e) { + LOGGER.log(Level.WARNING, "A non-number was given when answering question."); + return new IncorrectCommand("Please choose the answer by index"); + } catch (IndexOutOfBoundsException e) { + LOGGER.log(Level.WARNING, "An index out of bounds was given when answering question."); + return new IncorrectCommand("Please choose only 1, 2, 3 or 4"); } } } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 6ed2bbbf51..1d9a3c5edd 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -86,7 +86,6 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } } - assert command instanceof AnswerCommand; LOGGER.log(Level.INFO, "Question answered"); command.execute(optionList, ui); From 396ee72cbb0251e0d7be3b0f650bfd57d1e85f25 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 13:57:46 +0800 Subject: [PATCH 115/447] Update text files --- src/main/java/seedu/eduke8/ui/Ui.java | 43 ++++++--------------------- text-ui-test/EXPECTED.TXT | 4 +-- 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 33513440e9..1623409474 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -8,15 +8,6 @@ import java.util.ArrayList; import java.util.Scanner; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_STORAGE_FAIL; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INVALID_QUESTION_NUMBER; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNRECOGNIZED_COMMAND; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNKNOWN; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_WRONG_FORMAT; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; - public class Ui { private static final int LAST_OPTION = 4; @@ -33,40 +24,24 @@ public class Ui { private static final Scanner SCANNER = new Scanner(System.in); private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and" - + System.lineSeparator() - + "understand software engineering and OOP principles through a" - + System.lineSeparator() - + "gamified platform and enhance their " - + "learning experience. It also" - + System.lineSeparator() - + "consolidates key concepts for easy revision."; - private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8" - + System.lineSeparator() + + System.lineSeparator() + "understand software engineering and OOP principles through a" + + System.lineSeparator() + "gamified platform and enhance their " + "learning experience. It also" + + System.lineSeparator() + "consolidates key concepts for easy revision."; + private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8" + System.lineSeparator() + "What can I do for you?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can used:" - + System.lineSeparator() - + "1) about" - + System.lineSeparator() - + "2) help" - + System.lineSeparator() - + "3) topics" - + System.lineSeparator() - + "4) textbook" - + System.lineSeparator() - + "5) quiz t/ n/" - + System.lineSeparator() - + "6) exit"; + + System.lineSeparator() + "1) about" + System.lineSeparator() + "2) help" + System.lineSeparator() + + "3) topics" + System.lineSeparator() + "4) textbook" + System.lineSeparator() + + "5) quiz t/ n/" + System.lineSeparator() + "6) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!" - + System.lineSeparator() - + "Hope you have learnt something new!"; + + System.lineSeparator() + "Hope you have learnt something new!"; private static final String MESSAGE_ANSWER_WRONG = "Oops! The correct answer is "; private static final String MESSAGE_ANSWER_WRONG_SECOND = "! Do visit the textbook to read up more."; private static final String MESSAGE_ANSWER_CORRECT = "Congrats! This answer is correct! Well Done!"; private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at:" - + System.lineSeparator() - + TEXTBOOK_WEBSITE; + + System.lineSeparator() + TEXTBOOK_WEBSITE; private static final String MESSAGE_HINT = "Hint: "; public String getInputFromUser() { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 9664888b97..9a7ae79bd8 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -29,7 +29,7 @@ https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------- ------------------------------------------------------------------- These are the available topics: -1) OOP +OOP ------------------------------------------------------------------- ------------------------------------------------------------------- Start of quiz: @@ -63,7 +63,7 @@ The topic chosen is: OOP 4) D ------------------------------------------------------------------- ------------------------------------------------------------------- -Oops! Please try again! Do visit the textbook to read up more. +Oops! The correct answer is 1! Do visit the textbook to read up more. ------------------------------------------------------------------- This is the end of the quiz! Hope you have learnt something new! From 9c6313a696adb691f2aee305fa5f7519ba0f26cd Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 14:51:44 +0800 Subject: [PATCH 116/447] Enhance Ui to improve user experience --- .../java/seedu/eduke8/exception/Eduke8Exception.java | 4 ++-- .../seedu/eduke8/exception/ExceptionMessages.java | 12 ++++++------ src/main/java/seedu/eduke8/ui/Ui.java | 12 +++++++----- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/seedu/eduke8/exception/Eduke8Exception.java b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java index b9c055c29b..32efd58208 100644 --- a/src/main/java/seedu/eduke8/exception/Eduke8Exception.java +++ b/src/main/java/seedu/eduke8/exception/Eduke8Exception.java @@ -1,7 +1,7 @@ package seedu.eduke8.exception; public class Eduke8Exception extends Exception { - public Eduke8Exception(String errorType) { - super(errorType); + public Eduke8Exception(String exceptionMessage) { + super(exceptionMessage); } } diff --git a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java index 1c2a8543ff..531a1bbe17 100644 --- a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java +++ b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java @@ -5,16 +5,16 @@ public class ExceptionMessages { + "Please check again!"; public static final String ERROR_UNKNOWN = "Oh no! An unknown error has occurred."; public static final String ERROR_UNRECOGNIZED_COMMAND = "Oops! The command cannot be understood." - + System.lineSeparator() - + "Please enter in \"help\" to get the list of available commands. "; + + System.lineSeparator() + "Please enter in \"help\" to get the list of available commands. "; public static final String ERROR_QUIZ_WRONG_FORMAT = "Invalid command! The command for quiz is as follows:" - + System.lineSeparator() - + "quiz t/ n/"; + + System.lineSeparator() + "quiz t/ n/" + System.lineSeparator() + + "(Topics available can be found using the \"topics\" command)"; public static final String ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED = "Oh! This command has yet to be implemented. " + System.lineSeparator() + "Stay tune for Version 2.0!"; - public static final String ERROR_QUIZ_ANSWER_NOT_INDEX = "Please choose the answer by index!"; - public static final String ERROR_QUIZ_INVALID_QUESTION_NUMBER = "The number of quiz questions must be more than 1!"; + public static final String ERROR_QUIZ_ANSWER_NOT_INDEX = "Please choose the answer using its index (1,2,3 or 4)!"; + public static final String ERROR_QUIZ_INVALID_QUESTION_NUMBER = "The number of quiz questions" + + " must be more than 1!"; public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = "There is not enough questions in the topic for the quiz!"; } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 1623409474..ecc214d406 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -4,6 +4,7 @@ import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; +import seedu.eduke8.topic.Topic; import java.util.ArrayList; import java.util.Scanner; @@ -29,7 +30,7 @@ public class Ui { + System.lineSeparator() + "consolidates key concepts for easy revision."; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8" + System.lineSeparator() + "What can I do for you?"; - private static final String MESSAGE_EXIT = "Bye bye. Hope you have a nice day and see you soon!"; + private static final String MESSAGE_EXIT = "Bye bye. Hope you had a fruitful revision and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can used:" + System.lineSeparator() + "1) about" + System.lineSeparator() + "2) help" + System.lineSeparator() + "3) topics" + System.lineSeparator() + "4) textbook" + System.lineSeparator() @@ -39,7 +40,7 @@ public class Ui { + System.lineSeparator() + "Hope you have learnt something new!"; private static final String MESSAGE_ANSWER_WRONG = "Oops! The correct answer is "; private static final String MESSAGE_ANSWER_WRONG_SECOND = "! Do visit the textbook to read up more."; - private static final String MESSAGE_ANSWER_CORRECT = "Congrats! This answer is correct! Well Done!"; + private static final String MESSAGE_ANSWER_CORRECT = "Great Job! That is the correct answer! Keep it up!"; private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at:" + System.lineSeparator() + TEXTBOOK_WEBSITE; private static final String MESSAGE_HINT = "Hint: "; @@ -71,7 +72,7 @@ public void printOption(Option option, int optionNumber) { } public void printQuestion(Question question, int questionNumber) { - System.out.println(questionNumber + ". " + question.getDescription()); + System.out.println(questionNumber + ". " + question.getDescription() + System.lineSeparator()); } public void printHint(Hint hint) { @@ -128,9 +129,10 @@ public void printError(String errorMessage) { public void printTopicList(ArrayList topics) { System.out.println(HORIZONTAL_LINE); - System.out.println("These are the available topics:"); + System.out.println("These are the available topics and the number of available questions in each:"); for (int i = 0; i < topics.size(); i++) { - System.out.println(topics.get(i).getDescription()); + Topic topic = (Topic) topics.get(i); + System.out.println(topic.getDescription() + " [" + topic.getQuestionList().getCount() + "]"); } System.out.println(HORIZONTAL_LINE); From b2c3916ba4443c857bca0b87834032042d3de993 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 15:03:43 +0800 Subject: [PATCH 117/447] Fix I/O test case and also made it more comprehensive --- src/main/java/seedu/eduke8/exception/ExceptionMessages.java | 2 ++ src/main/java/seedu/eduke8/parser/QuizParser.java | 6 +++--- .../java/seedu/eduke8/question/QuizQuestionsManager.java | 6 +++--- text-ui-test/input.txt | 6 ++++++ 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java index 531a1bbe17..2d86aabe94 100644 --- a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java +++ b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java @@ -17,4 +17,6 @@ public class ExceptionMessages { + " must be more than 1!"; public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = "There is not enough questions in the topic for the quiz!"; + public static final String ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS = + "Please choose only options 1, 2, 3 or 4"; } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index b1680aee5c..54abe2d544 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -10,7 +10,7 @@ import seedu.eduke8.question.Question; import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS; import java.util.ArrayList; import java.util.logging.Level; @@ -41,10 +41,10 @@ public Command parseCommand(DisplayableList optionList, String userInput) { return new AnswerCommand(chosenOption, question); } catch (NumberFormatException e) { LOGGER.log(Level.WARNING, "A non-number was given when answering question."); - return new IncorrectCommand("Please choose the answer by index"); + return new IncorrectCommand(ERROR_QUIZ_ANSWER_NOT_INDEX); } catch (IndexOutOfBoundsException e) { LOGGER.log(Level.WARNING, "An index out of bounds was given when answering question."); - return new IncorrectCommand("Please choose only 1, 2, 3 or 4"); + return new IncorrectCommand(ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS); } } } diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index 4ba908b974..2a569ceb5c 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -3,14 +3,14 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INVALID_QUESTION_NUMBER; - import java.util.ArrayList; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_INVALID_QUESTION_NUMBER; + public class QuizQuestionsManager { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index acdc1b4cd9..972c676159 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -7,4 +7,10 @@ hint 1 quiz t/OOP n/1 2 +quiz t/OOP n/-1 +quiz t/OOP n/50 +quiz t/OOP n/1 +a +7 +1 exit \ No newline at end of file From 0fbff88929b830882efbfb68c41b808197590042 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 15 Oct 2020 15:19:27 +0800 Subject: [PATCH 118/447] Update expected.txt of I/O test --- text-ui-test/EXPECTED.TXT | 40 +++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 9a7ae79bd8..ab5be370f6 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -28,8 +28,8 @@ The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------- ------------------------------------------------------------------- -These are the available topics: -OOP +These are the available topics and the number of available questions in each: +OOP [1] ------------------------------------------------------------------- ------------------------------------------------------------------- Start of quiz: @@ -37,6 +37,7 @@ You have chosen to complete 1 question. The topic chosen is: OOP ------------------------------------------------------------------- 1. What is encapsulation? + 1) A 2) B 3) C @@ -46,7 +47,7 @@ The topic chosen is: OOP Hint: check the textbook ------------------------------------------------------------------- ------------------------------------------------------------------- -Congrats! This answer is correct! Well Done! +Great Job! That is the correct answer! Keep it up! ------------------------------------------------------------------- This is the end of the quiz! Hope you have learnt something new! @@ -57,6 +58,7 @@ You have chosen to complete 1 question. The topic chosen is: OOP ------------------------------------------------------------------- 1. What is encapsulation? + 1) A 2) B 3) C @@ -69,5 +71,35 @@ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------- ------------------------------------------------------------------- -Bye bye. Hope you have a nice day and see you soon! +The number of quiz questions must be more than 1! +------------------------------------------------------------------- +------------------------------------------------------------------- +There is not enough questions in the topic for the quiz! +------------------------------------------------------------------- +------------------------------------------------------------------- +Start of quiz: +You have chosen to complete 1 question. +The topic chosen is: OOP +------------------------------------------------------------------- +1. What is encapsulation? + +1) A +2) B +3) C +4) D +------------------------------------------------------------------- +------------------------------------------------------------------- +Please choose the answer using its index (1,2,3 or 4)! +------------------------------------------------------------------- +------------------------------------------------------------------- +Please choose only options 1, 2, 3 or 4 +------------------------------------------------------------------- +------------------------------------------------------------------- +Great Job! That is the correct answer! Keep it up! +------------------------------------------------------------------- +This is the end of the quiz! +Hope you have learnt something new! +------------------------------------------------------------------- +------------------------------------------------------------------- +Bye bye. Hope you had a fruitful revision and see you soon! ------------------------------------------------------------------- From 0439fba545912516b11743904a5d84867110991a Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 16:26:21 +0800 Subject: [PATCH 119/447] Add Assertions and Loggers for parsers and quiz command. --- .../seedu/eduke8/command/AboutCommand.java | 1 + .../java/seedu/eduke8/command/QuizCommand.java | 11 ++++++++++- .../seedu/eduke8/command/TopicsCommand.java | 1 + .../java/seedu/eduke8/parser/MenuParser.java | 18 +++++++++++++++++- .../java/seedu/eduke8/parser/QuizParser.java | 1 + 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/AboutCommand.java b/src/main/java/seedu/eduke8/command/AboutCommand.java index 4fbc43228d..ea69f9e5f8 100644 --- a/src/main/java/seedu/eduke8/command/AboutCommand.java +++ b/src/main/java/seedu/eduke8/command/AboutCommand.java @@ -4,6 +4,7 @@ import seedu.eduke8.ui.Ui; public class AboutCommand extends Command { + @Override public void execute(DisplayableList displayableList, Ui ui) { ui.printAbout(); diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 15a0f3fe0b..f5ef8e6a5b 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -1,6 +1,6 @@ package seedu.eduke8.command; -import seedu.eduke8.Eduke8; + import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.quiz.SingleTopicQuiz; @@ -8,13 +8,21 @@ import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import java.util.logging.Level; +import java.util.logging.Logger; + public class QuizCommand extends Command { + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private TopicList topicList; private int numOfQuestions; private String topicName; private Ui ui; public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { + assert topicList != null; + assert numOfQuestions != 0; + this.topicList = topicList; this.numOfQuestions = numOfQuestions; this.topicName = topicName; @@ -28,6 +36,7 @@ public void execute(DisplayableList displayableList, Ui ui) { SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { + LOGGER.log(Level.WARNING, "QuizCommand Execution: An error took place."); ui.printError(e.getMessage()); } } diff --git a/src/main/java/seedu/eduke8/command/TopicsCommand.java b/src/main/java/seedu/eduke8/command/TopicsCommand.java index 40832daa92..db2d692480 100644 --- a/src/main/java/seedu/eduke8/command/TopicsCommand.java +++ b/src/main/java/seedu/eduke8/command/TopicsCommand.java @@ -7,6 +7,7 @@ public class TopicsCommand extends Command { @Override public void execute(DisplayableList displayableList, Ui ui) { + assert displayableList != null; ((TopicList) displayableList).showTopics(ui); } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index ce19573703..9f596d5826 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -13,24 +13,35 @@ import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import java.util.logging.Level; +import java.util.logging.Logger; + public class MenuParser implements Parser { + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public MenuParser() { } @Override public Command parseCommand(DisplayableList topicList, String userInput) throws Eduke8Exception { + assert topicList != null; + + LOGGER.log(Level.INFO, "Begin parsing command."); String[] commandArr = userInput.trim().split(" ", 0); Ui ui = new Ui(); switch (commandArr[0]) { case "about": + LOGGER.log(Level.INFO, "Parsing complete: about command chosen."); return new AboutCommand(); case "help": + LOGGER.log(Level.INFO, "Parsing complete: help command chosen."); return new HelpCommand(); case "topics": + LOGGER.log(Level.INFO, "Parsing complete: topics command chosen."); return new TopicsCommand(); case "textbook": + LOGGER.log(Level.INFO, "Parsing complete: textbook command chosen."); return new TextbookCommand(); case "quiz": int numOfQuestions = 0; @@ -38,15 +49,20 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws if (commandArr.length == 3) { numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); - } else if (commandArr.length < 3) { + } else { + LOGGER.log(Level.WARNING, "Parsing Error: Wrong number of fields used in quiz command."); return new IncorrectCommand("Please use the format: quiz t/ n/"); } + LOGGER.log(Level.INFO, "Parsing complete: quiz command chosen."); return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); case "exit": + LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); default: break; } + LOGGER.log(Level.WARNING, "Parsing Error: Unrecognised command was entered."); return new IncorrectCommand("Please enter in a valid command. Enter 'help' for more info!"); } + } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index b65881f985..0484b2e667 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -28,6 +28,7 @@ public void setQuestion(Question question) { public Command parseCommand(DisplayableList optionList, String userInput) { switch (userInput) { case "hint": + LOGGER.log(Level.INFO, "Parsing complete: hint command chosen."); return new HintCommand(question.getHint()); case "back": // To be implemented in v2 From 7a1f057d0724266f4f1aae2a64810e7bf06cb4e5 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 17:21:10 +0800 Subject: [PATCH 120/447] Fix MenuParserTest errors. --- src/main/java/seedu/eduke8/ui/Ui.java | 2 +- .../seedu/eduke8/parser/MenuParserTest.java | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 99b4594e7d..e39bb7f68f 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -47,7 +47,7 @@ public class Ui { public String getInputFromUser() { return SCANNER.nextLine(); } - + private static void printMessage(String message) { System.out.println(HORIZONTAL_LINE); diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index 49e3faa5d2..c9950e72b1 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -3,16 +3,34 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.command.Command; import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import java.lang.reflect.Array; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.assertTrue; public class MenuParserTest { @Test public void menuParser_wrongStringInput_expectIncorrectCommand() { Ui ui = new Ui(); - TopicList topicList = new TopicList(null); + Hint hint = new Hint("description"); + OptionList optionList = new OptionList(); + ArrayList questions = new ArrayList<>(); + Question question = new Question("description", optionList, hint); + questions.add(question); + QuestionList questionList = new QuestionList(questions); + Topic topic = new Topic("description", questionList); + ArrayList topics = new ArrayList<>(); + topics.add(topic); + TopicList topicList = new TopicList(topics); MenuParser menuParser = new MenuParser(); try { From afe3912044afb73cda22bd10cf0ff67a13ed9b23 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 18:04:22 +0800 Subject: [PATCH 121/447] Add asserts --- src/main/java/seedu/eduke8/option/Option.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/seedu/eduke8/option/Option.java b/src/main/java/seedu/eduke8/option/Option.java index eb74be34f3..237b8242ce 100644 --- a/src/main/java/seedu/eduke8/option/Option.java +++ b/src/main/java/seedu/eduke8/option/Option.java @@ -8,6 +8,8 @@ public class Option implements Displayable { private boolean wasShown; public Option(String description) { + assert description != null; + this.description = description; isCorrectAnswer = false; wasShown = false; From 938f9650d9dd3b991622cef370154f980ae4c5fe Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 15 Oct 2020 18:32:29 +0800 Subject: [PATCH 122/447] Add 5 questions to Question Bank (Code Quality) --- data/main/topics.json | 92 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 13 deletions(-) diff --git a/data/main/topics.json b/data/main/topics.json index 3c9d595764..8e0f036c03 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -230,48 +230,114 @@ ] }, { - "topic": "Style", + "topic": "Code Quality", "questions": [ { - "description": "How do you name classes?", - "hint": "check the textbook", + "description": "What does SLAP stand for?", + "hint": "SLAP is used to avoid varying the level of abstraction within a code fragment.", "options": [ { - "description": "A", + "description": "Single Level of Abstraction Per method", "correct": true }, { - "description": "B", + "description": "Single Level of Abstraction Per class", "correct": false }, { - "description": "C", + "description": "Simple Level of Abstraction Per method", "correct": false }, { - "description": "D", + "description": "Simple Level of Association Per class", "correct": false } ] }, { - "description": "What is the appropriate indentation?", - "hint": "check the textbook", + "description": "Which of the following options is NOT a drawback of optimizing code prematurely?", + "hint": "We have to avoid premature optimizations.", "options": [ { - "description": "A", + "description": "You may not know which parts are the real performance bottlenecks.", "correct": false }, { - "description": "B", + "description": "Optimizing code prematurely allows users to view shorter code.", "correct": true }, { - "description": "C", + "description": "Optimizing can complicate the code.", "correct": false }, { - "description": "D", + "description": "Hand-optimized code can be harder for the compiler to optimize.", + "correct": false + } + ] + }, + { + "description": "Which of the following option should we strive to have in our code?", + "hint": "Coders would prefer to have a simple solution in favor of a complicated one.", + "options": [ + { + "description": "Arrowhead style code", + "correct": false + }, + { + "description": "Long methods", + "correct": false + }, + { + "description": "Magic numbers", + "correct": false + }, + { + "description": "Keep it simple, stupid (KISS)", + "correct": true + } + ] + }, + { + "description": "Which of the following option is true?", + "hint": "We should always aim to have excellent documentation value.", + "options": [ + { + "description": "Imported classes should always be listed explicitly.", + "correct": true + }, + { + "description": "There is no need for javadoc header comment.", + "correct": false + }, + { + "description": "Coders should follow their own coding style so that it can be traced to the author easily.", + "correct": false + }, + { + "description": "One should never prioritize efficiency or performance over readability.", + "correct": false + } + ] + }, + { + "description": "Which of the following standards is FALSE? ", + "hint": "Following coding standards makes it easier for everyone to understand the code.", + "options": [ + { + "description": "Line length should be no longer than 120 characters.", + "correct": false + }, + { + "description": "Indentation for wrapped lines should be 8 spaces.", + "correct": false + }, + { + "description": "It is not mandatory for the naming of boolean variables to sound like booleans (eg isSet)", + "correct": true + }, + { + "description": "We should always use Egytian Style.", "correct": false } ] From 91cd2fc5ae4ab77be08976f8345b5fd951b45fea Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 15 Oct 2020 19:00:43 +0800 Subject: [PATCH 123/447] Update docs using our discussion notes --- docs/AboutUs.md | 10 +-- docs/DeveloperGuide.md | 4 +- docs/README.md | 3 +- docs/UserGuide.md | 108 ++++++++++++++++++++++++------ docs/team/{johndoe.md => anqi.md} | 0 docs/team/joel.md | 6 ++ docs/team/joseph.md | 6 ++ docs/team/zhiyou.md | 6 ++ 8 files changed, 116 insertions(+), 27 deletions(-) rename docs/team/{johndoe.md => anqi.md} (100%) create mode 100644 docs/team/joel.md create mode 100644 docs/team/joseph.md create mode 100644 docs/team/zhiyou.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 3cd4be5f77..74c8074f9e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -2,8 +2,8 @@ Display | Name | Github Profile | Portfolio --------|:----:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | Tang Zhi You | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Lim An Qi | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Joel Ng | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://avatars0.githubusercontent.com/u/35717847?s=460&u=fd4a6977a95813022f82662ada8694105196b9a0&v=4) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) +![](https://via.placeholder.com/100.png?text=Photo) | Tang Zhi You | [Github](https://github.com/Zhi-You) | [Portfolio](docs/team/zhiyou.md) +![](https://via.placeholder.com/100.png?text=Photo) | Joseph Abraham | [Github](https://github.com/josephhhhhhhhh) | [Portfolio](docs/team/joseph.md) +![](https://via.placeholder.com/100.png?text=Photo) | Lim An Qi | [Github](https://github.com/anqi20) | [Portfolio](docs/team/anqi.md) +![](https://via.placeholder.com/100.png?text=Photo) | Joel Ng | [Github](https://github.com/joelngyx) | [Portfolio](docs/team/joel.md) +![](https://via.placeholder.com/100.png?text=Photo) | Kingston Kuan | [Github](https://github.com/kstonekuan) | [Portfolio](docs/team/kingston.md) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0ec3db103d..28ad7e350f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -8,11 +8,11 @@ ## Product scope ### Target user profile -{Describe the target user profile} +CS2113/T Students ### Value proposition -{Describe the value proposition: what problem does it solve?} +Help CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. Consolidate key concepts for easy revision. ## User Stories diff --git a/docs/README.md b/docs/README.md index bbcc99c1e7..54f28d61b7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,7 @@ # Duke -{Give product intro here} +E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified +platform and enhance their learning experience. It also consolidates key concepts for easy revision. Useful links: * [User Guide](UserGuide.md) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..06c28eeb87 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -2,41 +2,111 @@ ## Introduction -{Give a product intro} +E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified +platform and enhance their learning experience. It also consolidates key concepts for easy revision. ## Quick Start -{Give steps to get started quickly} - 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `Duke` from [here](http://link.to/duke). +2. Download the latest version of `E-Duke-8` from [here](https://github.com/AY2021S1-CS2113T-F12-3/tp/releases). +3. Copy the files to the folder you want to use as the eduke8 folder for the application. +4. Run E- Duke 8. +5. Type a command in the terminal and press Enter to execute it. e.g. typing help and pressing Enter will list all the commands that you can use in this application. Here is a list of commands you can try: + - about : Provides product information. + - topics : Lists the topics involved in CS2113T. + - textbook : Links to the CS2113T website. + - quiz : Starts a quiz. Eg. quiz n/30 t/TOPIC_1 will start a quiz based on content in topic 1. + - hint : Shows a hint to the current question + - exit : Exits the app. + +6. Refer to the Features below for details of each command. ## Features -{Give detailed description of each feature} +ℹ️ Notes about the command format: +- Words in UPPER_CASE are the parameters to be supplied by the user. +- e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe. +- Items in square brackets are optional. +- e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe. +- Items with …​ after them can be used multiple times including zero times. +- e.g. [t/TAG]…​ can be used as (i.e. 0 times), t/friend, t/friend t/family etc. +- Parameters can be in any order. +- e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable. -### Adding a todo: `todo` -Adds a new item to the list of todo items. +### Loading data -Format: `todo n/TODO_NAME d/DEADLINE` +Data is loaded from the .txt files in the E-Duke-8 folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. -* The `DEADLINE` can be in a natural language format. -* The `TODO_NAME` cannot contain punctuation. +### Viewing Product Information : `about` -Example of usage: +Shows a message explaining the purpose of using eduke8. -`todo n/Write the rest of the User Guide d/next week` +[to be replaced by graphics] -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` +Format: `about` -## FAQ +### Viewing help : `help` + +Shows a list of commands that can be used. + +[insert graphics for help] + +Format: `help` + +### Listing all topics : `topics` + +Shows the entire list of topics that are listed in the CS2113T Github.io website. + +[insert graphics for list of topics] + +Format: `topics` + +### Accessing the CS2113T textbook content: `textbook` + +Redirects users to the github textbook website. + +[insert graphics] -**Q**: How do I transfer my data to another computer? +Format: `textbook` -**A**: {your answer here} +### Starting a quiz: `quiz` + +Starts a quiz with a specified number of questions from up to two topics + +Format: `quiz t/TOPIC n/QUESTIONS` +- The quiz will contain QUESTIONS number of questions +- TOPIC follows that of the topics shown when using the topics command +- Questions in the quiz will be related to the topics you chose + +Examples: +- `quiz t/OOP n/5` will start a quiz that contains 5 questions from the topic on OOP. + +### Showing a hint : `hint` + +Shows a hint to the current question + +Format: `hint` +- A maximum of one hint can be shown for each question + +### Exiting the program : `exit` + +Exits the program. + +Format: `exit` + +## FAQ +**Q**: How do I change the questions in the quizzes? +**A**: Open topics.json in any text editor to edit the questions, make sure to follow the format of the questions already provided. -## Command Summary +## Command summary -{Give a 'cheat sheet' of commands here} +| Action | Format, Examples | +| ------ | ---------------- | +| About | `about` | +| Textbook | `textbook` | +| Quiz | `quiz t/TOPIC n/QUESTIONS`
e.g. `quiz t/OOP n/5` | +| Hint | `hint` | +| List Topics | `topics` | +| Help | `help` | +| Exit | `exit` | -* Add todo `todo n/TODO_NAME d/DEADLINE` diff --git a/docs/team/johndoe.md b/docs/team/anqi.md similarity index 100% rename from docs/team/johndoe.md rename to docs/team/anqi.md diff --git a/docs/team/joel.md b/docs/team/joel.md new file mode 100644 index 0000000000..ab75b391b8 --- /dev/null +++ b/docs/team/joel.md @@ -0,0 +1,6 @@ +# John Doe - Project Portfolio Page + +## Overview + + +### Summary of Contributions diff --git a/docs/team/joseph.md b/docs/team/joseph.md new file mode 100644 index 0000000000..ab75b391b8 --- /dev/null +++ b/docs/team/joseph.md @@ -0,0 +1,6 @@ +# John Doe - Project Portfolio Page + +## Overview + + +### Summary of Contributions diff --git a/docs/team/zhiyou.md b/docs/team/zhiyou.md new file mode 100644 index 0000000000..ab75b391b8 --- /dev/null +++ b/docs/team/zhiyou.md @@ -0,0 +1,6 @@ +# John Doe - Project Portfolio Page + +## Overview + + +### Summary of Contributions From ace2d6a001a8a5618b0240b3c5543f11091eeea9 Mon Sep 17 00:00:00 2001 From: Kingston <35717847+kstonekuan@users.noreply.github.com> Date: Thu, 15 Oct 2020 20:49:21 +0800 Subject: [PATCH 124/447] Update README.md to force github action on PR --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 698b938529..0f88bed369 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Duke project template +# E-Duke-8 This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it. From ff24bc2d4fc2cdac1faf89c2109fc23e4eb6dcd5 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 15 Oct 2020 23:53:24 +0800 Subject: [PATCH 125/447] Fix the error handling in QuizCommand and MenuParser. --- src/main/java/seedu/eduke8/command/QuizCommand.java | 6 +++++- src/main/java/seedu/eduke8/parser/MenuParser.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 17d04c39e1..2c6c175e45 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -35,8 +35,12 @@ public void execute(DisplayableList displayableList, Ui ui) { SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { - LOGGER.log(Level.WARNING, "QuizCommand Execution: An error took place."); ui.printError(e.getMessage()); + } catch (NullPointerException e) { + LOGGER.log(Level.WARNING, "QuizCommand Execution: A NullPointerException was thrown."); + ui.printError("Error! There is no such topic listed in our storage. Please try again."); } + } } + diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index e95974b5e9..f51eafb46e 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -56,7 +56,9 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } catch (NumberFormatException nfe) { - return new IncorrectCommand("Please choose the answer by index"); + return new IncorrectCommand("Oops! The number of questions has been entered " + + "incorrectly.\nPlease enter the command again: quiz t/ n\n" + + "Remember that the number of questions has to be typed in numeric form!"); } } else { LOGGER.log(Level.WARNING, "Parsing Error: Wrong number of fields used in quiz command."); From ca12df9d574f0e8ddae80a6a278e3f1500837a08 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Fri, 16 Oct 2020 00:22:46 +0800 Subject: [PATCH 126/447] Update UG --- data/main/topics.json | 2 +- docs/UserGuide.md | 20 ++++++++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/data/main/topics.json b/data/main/topics.json index 8e0f036c03..c32d5d659b 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -230,7 +230,7 @@ ] }, { - "topic": "Code Quality", + "topic": "Code_Quality", "questions": [ { "description": "What does SLAP stand for?", diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 06c28eeb87..08494c3d47 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,19 +3,19 @@ ## Introduction E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified -platform and enhance their learning experience. It also consolidates key concepts for easy revision. +platform and enhances their learning experience. It also consolidates key concepts for easy revision. ## Quick Start 1. Ensure that you have Java 11 or above installed. 2. Download the latest version of `E-Duke-8` from [here](https://github.com/AY2021S1-CS2113T-F12-3/tp/releases). 3. Copy the files to the folder you want to use as the eduke8 folder for the application. -4. Run E- Duke 8. -5. Type a command in the terminal and press Enter to execute it. e.g. typing help and pressing Enter will list all the commands that you can use in this application. Here is a list of commands you can try: +4. Run E-Duke-8. +5. Type a command in the terminal and press Enter to execute it. e.g. typing 'help' and pressing Enter will list all the commands that you can use in this application. Here is a list of commands you can try: - about : Provides product information. - topics : Lists the topics involved in CS2113T. - textbook : Links to the CS2113T website. - - quiz : Starts a quiz. Eg. quiz n/30 t/TOPIC_1 will start a quiz based on content in topic 1. + - quiz : Starts a quiz. Eg. quiz t/OOP n/5 will start a quiz with five questions based on OOP concepts. - hint : Shows a hint to the current question - exit : Exits the app. @@ -25,21 +25,17 @@ platform and enhance their learning experience. It also consolidates key concept ℹ️ Notes about the command format: - Words in UPPER_CASE are the parameters to be supplied by the user. -- e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe. +- e.g. in add t/TOPIC, TOPIC is a parameter which can be used as quiz t/OOP. - Items in square brackets are optional. -- e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe. -- Items with …​ after them can be used multiple times including zero times. -- e.g. [t/TAG]…​ can be used as (i.e. 0 times), t/friend, t/friend t/family etc. -- Parameters can be in any order. -- e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable. +- e.g quiz t/TOPIC [t/TOPIC] can be used as quiz t/OOP t/Requirements or as quiz t/OOP. ### Loading data Data is loaded from the .txt files in the E-Duke-8 folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. -### Viewing Product Information : `about` +### Viewing product Information : `about` -Shows a message explaining the purpose of using eduke8. +Shows a message explaining the purpose of using E-Duke-8. [to be replaced by graphics] From c856f82721a37d729743ad89bba17b89fd4b5fda Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 16 Oct 2020 00:40:05 +0800 Subject: [PATCH 127/447] Fix a minor checkstyle issue. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index f51eafb46e..928e142905 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -56,9 +56,9 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } catch (NumberFormatException nfe) { - return new IncorrectCommand("Oops! The number of questions has been entered " + - "incorrectly.\nPlease enter the command again: quiz t/ n\n" + - "Remember that the number of questions has to be typed in numeric form!"); + return new IncorrectCommand("Oops! The number of questions has been entered " + + "incorrectly.\nPlease enter the command again: quiz t/ n\n" + + "Remember that the number of questions has to be typed in numeric form!"); } } else { LOGGER.log(Level.WARNING, "Parsing Error: Wrong number of fields used in quiz command."); From b78b970d3ba933bc07904b0b970d61a4fac7d7f7 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Fri, 16 Oct 2020 00:43:58 +0800 Subject: [PATCH 128/447] Fix some parser and eduke8 main logic --- src/main/java/seedu/eduke8/Eduke8.java | 10 +++------- .../java/seedu/eduke8/exception/ExceptionMessages.java | 8 ++++---- src/main/java/seedu/eduke8/parser/MenuParser.java | 4 ++-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index a2c6737e1f..6ce64bb3f5 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -60,13 +60,9 @@ private void runCommandLoopUntilExit() { while (!isExit) { String userInput = ui.getInputFromUser(); - try { - Command command = menuParser.parseCommand(topicList, userInput); - command.execute(topicList, ui); - isExit = command.isExit(); - } catch (Eduke8Exception e) { - ui.printError(e.getMessage()); - } + Command command = menuParser.parseCommand(topicList, userInput); + command.execute(topicList, ui); + isExit = command.isExit(); } } diff --git a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java index 2d86aabe94..4551bd92c6 100644 --- a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java +++ b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java @@ -10,13 +10,13 @@ public class ExceptionMessages { + System.lineSeparator() + "quiz t/ n/" + System.lineSeparator() + "(Topics available can be found using the \"topics\" command)"; public static final String ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED = "Oh! This command has yet to be implemented. " - + System.lineSeparator() - + "Stay tune for Version 2.0!"; + + System.lineSeparator() + "Stay tune for Version 2.0!"; public static final String ERROR_QUIZ_ANSWER_NOT_INDEX = "Please choose the answer using its index (1,2,3 or 4)!"; + public static final String ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS = + "Please choose only options 1, 2, 3 or 4"; public static final String ERROR_QUIZ_INVALID_QUESTION_NUMBER = "The number of quiz questions" + " must be more than 1!"; public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = "There is not enough questions in the topic for the quiz!"; - public static final String ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS = - "Please choose only options 1, 2, 3 or 4"; + } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index e95974b5e9..dadfdbee08 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -28,7 +28,7 @@ public MenuParser() { } @Override - public Command parseCommand(DisplayableList topicList, String userInput) throws Eduke8Exception { + public Command parseCommand(DisplayableList topicList, String userInput) { assert topicList != null; LOGGER.log(Level.INFO, "Begin parsing command."); @@ -56,7 +56,7 @@ public Command parseCommand(DisplayableList topicList, String userInput) throws numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); topicName = commandArr[1].substring(2); } catch (NumberFormatException nfe) { - return new IncorrectCommand("Please choose the answer by index"); + return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } } else { LOGGER.log(Level.WARNING, "Parsing Error: Wrong number of fields used in quiz command."); From 703d365765e39e20cdca01076a924f5c33411da4 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 16 Oct 2020 19:16:20 +0800 Subject: [PATCH 129/447] Add LogStorageTest to test log file creation --- .../seedu/eduke8/storage/LocalStorage.java | 10 ++--- .../seedu/eduke8/storage/LogStorageTest.java | 41 +++++++++++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 src/test/java/seedu/eduke8/storage/LogStorageTest.java diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 3cef8cead7..41b5379219 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -19,12 +19,12 @@ public LocalStorage(String filePath) { } protected void createFileIfNotExists() throws IOException { - File f = new File(filePath); - if (!f.exists()) { - f.getParentFile().mkdirs(); - f.createNewFile(); + File file = new File(filePath); + if (!file.exists()) { + file.getParentFile().mkdirs(); + file.createNewFile(); } - assert f.exists(); + assert file.exists(); } } diff --git a/src/test/java/seedu/eduke8/storage/LogStorageTest.java b/src/test/java/seedu/eduke8/storage/LogStorageTest.java new file mode 100644 index 0000000000..79ed94b166 --- /dev/null +++ b/src/test/java/seedu/eduke8/storage/LogStorageTest.java @@ -0,0 +1,41 @@ +package seedu.eduke8.storage; + +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Scanner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class LogStorageTest { + private static final LocalDateTime DATE_TIME_NOW = LocalDateTime.now(); + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"); + private static final String LOG_PATH = "data/logs/LOG_TEST_" + DATE_TIME_NOW.format(DATE_TIME_FORMATTER) + ".log"; + + + @Test + public void save_newLogFile_newLogFileCreated() throws IOException { + LogStorage logStorage = new LogStorage(LOG_PATH); + logStorage.save(); + + String filePath = new File("").getAbsolutePath(); + String[] logPathSplit = LOG_PATH.split("/"); + for (String path: logPathSplit) { + filePath += File.separator + path; + } + + File logFile = new File(filePath); + assertTrue(logFile.exists()); + + Scanner logReader = new Scanner(logFile); + logReader.nextLine(); // Skip first line with datetime info + String logData = logReader.nextLine(); + logReader.close(); + + assertEquals(logData, "INFO: Logging to file started"); + } +} From 4d33d6bbf7c5eab4f8758a7d94c43b21c421c244 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 16 Oct 2020 19:40:37 +0800 Subject: [PATCH 130/447] SLAP some methods --- .../seedu/eduke8/storage/LocalStorage.java | 18 ++++++++++--- .../java/seedu/eduke8/storage/LogStorage.java | 8 +++--- .../seedu/eduke8/storage/LogStorageTest.java | 26 ++++++++++++++----- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 41b5379219..2bf2636ebe 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -12,19 +12,29 @@ public LocalStorage(String filePath) { assert filePath != null; // Use relative path for Unix systems - String[] filePathSplit = filePath.split("/"); - for (String path: filePathSplit) { - this.filePath += File.separator + path; + this.filePath = appendRelativePath(this.filePath, filePath); + } + + private String appendRelativePath(String originalPath, String relativePath) { + String fullPath = originalPath; + String[] relativePathSplit = relativePath.split("/"); + for (String path: relativePathSplit) { + fullPath += File.separator + path; } + + return fullPath; } - protected void createFileIfNotExists() throws IOException { + protected File createFileIfNotExists() throws IOException { File file = new File(filePath); + if (!file.exists()) { file.getParentFile().mkdirs(); file.createNewFile(); } assert file.exists(); + + return file; } } diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index c840eb37cc..1fa1c7e9c3 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -3,13 +3,13 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.LogManager; -import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class LogStorage extends LocalStorage { @@ -20,8 +20,6 @@ public LogStorage(String filePath) { // Set up save to file inside of print to console @Override public void save() throws IOException { - createFileIfNotExists(); - LogManager.getLogManager().reset(); LOGGER.setLevel(Level.ALL); @@ -31,7 +29,9 @@ public void save() throws IOException { LOGGER.addHandler(ch); // Log all to the file - FileHandler fh = new FileHandler(filePath); + File logFile = createFileIfNotExists(); + + FileHandler fh = new FileHandler(logFile.getAbsolutePath()); fh.setFormatter(new SimpleFormatter()); fh.setLevel(Level.ALL); LOGGER.addHandler(fh); diff --git a/src/test/java/seedu/eduke8/storage/LogStorageTest.java b/src/test/java/seedu/eduke8/storage/LogStorageTest.java index 79ed94b166..cc649a5acd 100644 --- a/src/test/java/seedu/eduke8/storage/LogStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/LogStorageTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -22,20 +23,31 @@ public void save_newLogFile_newLogFileCreated() throws IOException { LogStorage logStorage = new LogStorage(LOG_PATH); logStorage.save(); - String filePath = new File("").getAbsolutePath(); - String[] logPathSplit = LOG_PATH.split("/"); - for (String path: logPathSplit) { - filePath += File.separator + path; - } - + String filePath = appendRelativePath(new File("").getAbsolutePath(), LOG_PATH); File logFile = new File(filePath); + assertTrue(logFile.exists()); + String logData = getSecondLineOfLogs(logFile); + + assertEquals(logData, "INFO: Logging to file started"); + } + + private String getSecondLineOfLogs(File logFile) throws FileNotFoundException { Scanner logReader = new Scanner(logFile); logReader.nextLine(); // Skip first line with datetime info String logData = logReader.nextLine(); logReader.close(); + return logData; + } - assertEquals(logData, "INFO: Logging to file started"); + private String appendRelativePath(String originalPath, String relativePath) { + String fullPath = originalPath; + String[] relativePathSplit = relativePath.split("/"); + for (String path: relativePathSplit) { + fullPath += File.separator + path; + } + + return fullPath; } } From 4e7b477aa2eacf22c35f82d036e35ac76211269a Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 19 Oct 2020 17:55:38 +0800 Subject: [PATCH 131/447] Add images --- docs/UserGuide.md | 18 +++++++++++++----- docs/images/about.png | Bin 0 -> 18596 bytes docs/images/exit.png | Bin 0 -> 5822 bytes docs/images/help.png | Bin 0 -> 16790 bytes docs/images/hint.png | Bin 0 -> 7104 bytes docs/images/quiz.png | Bin 0 -> 20428 bytes docs/images/textbook.png | Bin 0 -> 12181 bytes docs/images/topics.png | Bin 0 -> 16640 bytes docs/images/welcome.png | Bin 0 -> 8226 bytes 9 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 docs/images/about.png create mode 100644 docs/images/exit.png create mode 100644 docs/images/help.png create mode 100644 docs/images/hint.png create mode 100644 docs/images/quiz.png create mode 100644 docs/images/textbook.png create mode 100644 docs/images/topics.png create mode 100644 docs/images/welcome.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 08494c3d47..85b150c389 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -31,13 +31,15 @@ platform and enhances their learning experience. It also consolidates key concep ### Loading data -Data is loaded from the .txt files in the E-Duke-8 folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. +Data is loaded from the .json files in the data folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. Upon successful startup this screen should shown: + +![welcome](./images/welcome.png) ### Viewing product Information : `about` Shows a message explaining the purpose of using E-Duke-8. -[to be replaced by graphics] +![about](./images/about.png) Format: `about` @@ -45,7 +47,7 @@ Format: `about` Shows a list of commands that can be used. -[insert graphics for help] +![help](./images/help.png) Format: `help` @@ -53,7 +55,7 @@ Format: `help` Shows the entire list of topics that are listed in the CS2113T Github.io website. -[insert graphics for list of topics] +![topics](./images/topics.png) Format: `topics` @@ -61,7 +63,7 @@ Format: `topics` Redirects users to the github textbook website. -[insert graphics] +![textbook](./images/textbook.png) Format: `textbook` @@ -69,6 +71,8 @@ Format: `textbook` Starts a quiz with a specified number of questions from up to two topics +![quiz](./images/quiz.png) + Format: `quiz t/TOPIC n/QUESTIONS` - The quiz will contain QUESTIONS number of questions - TOPIC follows that of the topics shown when using the topics command @@ -81,6 +85,8 @@ Examples: Shows a hint to the current question +![hint](./images/hint.png) + Format: `hint` - A maximum of one hint can be shown for each question @@ -88,6 +94,8 @@ Format: `hint` Exits the program. +![exit](./images/exit.png) + Format: `exit` ## FAQ diff --git a/docs/images/about.png b/docs/images/about.png new file mode 100644 index 0000000000000000000000000000000000000000..fa59befaca00182126974f5807d9e8b84caf8f4a GIT binary patch literal 18596 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 literal 0 HcmV?d00001 diff --git a/docs/images/exit.png b/docs/images/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..85b3ab071ed9c36da61c8a949eacfb05e45b15e1 GIT binary patch literal 5822 zcmc&&XH-+$whq@Ls1&b95$PTkP(ZL!q(oFiL_nn1;DHEufPi!Y35tkHQ;;T2MBq>Z zgeD>607B>ykd_cakxmE@NJ8ohp8M{5W4tl$edqmoKX%sKW3RRLoO93b%bMS-`({R> zholYx002?rJGUMH0Q(qxJL7;L|Mx!j#(n-E5b(h02B304W|@EUlZSz+0RT{)B+P!e zpMQVQ?~Z){03aK?cL^lTZ-N1UeisnX=MUea0P_6d z@%5;^xmQpAAp`(KN&S6#9{_M&^uUGy0PsQZAIlt3C{)O12Y+AY?b^r)Ni~}E1cV;s zpfj_rY#N+YYd9ok?0AO!=1-&c_u98x%E`fZ@Ta_DKb_w*J{lIvV#R;F{AsoA-riCD zvxoko7yn1+|HZPZGy(4DXt0((Mr3SkY=*g|yXNBq&f}*8Fju}P&K{$*!H|PcqUQ@u zBODYVUsV?=Gcfn+Y42PW`P1Gk^R93~1_|>#xR?MXlAlBJ;5#nB>D@Ak{0ZR2KPNZ{ zGD1QcW`>syLU*^op<#YfmFw#@=KP0I{;Ddy}bVz>u+Me0&B6O`q+XDEXCj1RmLMm>`)FCU9sn_`=-`Y-}j z8uu!?RD2(sln16yYPNSL$Tm*uVhP24{Xe}1?$Yr_oiFI6)T?SVbU?hM`*ajHdiM8df@{_dhwE9ThEQ+g7&&ffztqAbYxynmZU>X(SeVhM#w zr6z$6l=cy_b!eVrAZ05QMGt=~g=@>$;qhmGs6QmYB@(R}Lj&vC=Fc`)d#P0o&LUk6 zDI|I#u6=&jg*I@XDZ<&F*m*ViG2DL;-M&WApyAf_ToB3_E<3aTy61}&gi&`rN`b#! zRPn>#LP9hX+91BZLz*Aa)Ly?KnJELH&Ch>ebkRMq?sXI|{9^Wd3{~H0J~sqNrp|gC zUaD`OA#~%0NIDp^dOa5S+di+oYO+jlcBiatpOlfSzkwR=uXs)xCI{a@5f8;u;>u<* zTrH8W!zH_?4Yr9y9|k)gQv;(MVx2lpL|u!N6m!gR*FkFXJ(@mv0=j>XhQ?Ko%BAd~ z!TaaG%1-|R;Qxx${_3*&;E)i?Y+P1W)^>vD4=De#eI@ZuD^r- zu^rcGQ$p^%ksWj`NS0Vx0mDBsYe-HGF@c;Qe{coc? z$AlEIi|Kr1UULHF#-b}K)>1kMwKd_dZASEMCe#EzJdObX^}3uDg&ITONK*sC!XyWh z=xz1Uq?DsVSTCJM-CR4~E-fIeIR`DQ+BQn_*D^7mQEDQ8y*7DJ9n{jt$*v@g%uuv6_5+sj~VoQ zzQ8qZWH1LMeWS#~xhsaj3Qb2HAi&r%f@lVw$uaQ^X+nY7Z?uCDv}QryQ4AI+jDx~ z4p+R;^X(XpXkxSG)^b3xflp@+@_c`Ts>`6EM_sN22>%j<%BPZVGPXFjg(~HV3z`$z z8_Xr=Q0hlXDULcN_{M5GtL@!@X+J~~Sstik$?CSLP84<){lez5kGDi{VVDR(I8quP z3u#{j;V2^(nr0<3B?T6}%8SZ`PBvJa_nomNU%BBtQ#x~+l;vJ%Ys4~^1@jj2uiaf; z9Fd>th$9U-J{2tbt_ktxyzt$^tkH#5ew70^d@eU&W%`Q~4Tv7#O_ejOAuMu3(e@G1 zOeZ1~q*`1m++hS2&(WSd&^wB_z)W_IgE#@{gFT;>h^- zwf#gm`~?KmNlLcppxZprm98j|O!T0>FUFNV&axdeGNRTdv|!hS3wl09#w*iWTTCSb zzNeOuunU@y5f%)irj)9qyCTOPzYaooy`RPKM5O$hn|Qm9!CsinQ_b(I^!rCgT^Ofz za)VnEmYtFlr&l|So5oFj(_d-wVi&qQZcsQpdLF4A>%OS-%D|Z0J4Zes0czi*Z9rGw zkic<19+Zg2*Fgq-l<41duCyU-5!g`+w|lbl=aJcEp3?KZkAsqZf6;qc81xP;VOmz; zav}YjxdS3)3wp)B^Sv>09z`iEW>o!b#u_eDK_NTP5IC&+)&icSZ zAo!V`D-RweEWip0=tHULBZ}c4U`ivKZmgbh5@#0)U!7uO+b$`t^SU*#?A&Z?Qm%?l zZbDgs5IQA(xqMEm&m+guLV8~P115oOqyc9hV%3y z;nOToH_GC4bH>+pU10dpaE^%*`)abT^SqX1Ob3wU)6h0E;FmhrZlm<+=F4%0L?8uD zJ+ofk9TJjE8L+XN()JeJss-XLyhCB>2 z#4(To8IGFnM;0a*QcdbtPob{mLO}i~R-SojQCJ_cluaZT`@Jy<7#~=<=n~dLZja83 zHcu5ykoI}Ol(ofDX{i`}IJ62QjNoOAlTyQ0t~d2_IB@r@VGfX%&MT59SuQ~Nxl`ap z27>HwckBO_>*HcA?_A{bPEzwkfT~d@^Lz>^fk+Q~qA18n;Ka3wCvL0S4;4X0x42ib zP^hvETR3}Tb_D%G78kyQ;D!)DhnD9&j6663#@W74tWT5^6@_LSV(sT3E%xIR727ED z6v{vmc9Q54L+4OrwJ$rwvIi8zqIr>^pJ&U$t$@qHsYiBv}tzdvq@r-5PYS*_~J0nhQ0XTD% zk~Q@PT#B`eCy&y9j6OFVdo9YT(+VH|eaY!OI0%*(7ie z@Z;lOVIBw66h|%A*MjoPZR`f9^$DdtkF6C)1`+TY%jE=*{F+}Aag}DmWzsONc7FMZ zf{?@0#cvH@G9R|fUYTkbanjaQJXR^mWagzO%T?uPuB`>dY)Ph>?tK+nEVB=*WTWzbz-9v&qLCTtWt&5 zUIba4EwfIeX8X8pg6nc;#b2Q3sD5E#VTeTLu#S-)j|4$W5c3|2Z*p`A&2n5(-o3Mk zvSDwyeq`vN{^*Fvj*bHs%<6H1YlfeS_)0qO3QVvq6l##iLP04$7+s(k78>Vh`7njG z1g6{X1?Br^P=%QddqI^X;>Pb?2DMU5!?aIK6>B_V8helDv7k=Wq}EeM+m{W5wW2Y% z65bA11mP$(9KHCV^d}0B-X14vtXSFj;~kq$jyHDXjeb+~y{vk7jlzs0&lev!%tE=} zbK0B@kKFv!F+H_#s~J!YA3}9p5M$770^xcIES(N>I3Hfebrri7`v8$8+S^| z{Rqq!lO?QYAd{kTSr0Gh6aw{@T9J*L7p3M9VvF!jvtgHK>u|US;>lxvJxFKE_Uq;6 zOQ|R?KJamC>PQ`V($Q+f%k9ttEZ4ri96O71eOh<5`V~P0nTbKjsMe?FoyyLV(rv1; zO`S#e`&)Fj&N@u2r&oSLf3z+cD@lU&M2@omL7Vo+>nQ2nluJFO@SkT$#=~`?TXOQ# zz>{jUO$D9%+Z13Jr!vGfGgJ`nr``|A?~ybaVd#m_M_4)!I9rZr`+-ND0$r{eq{gG? zhD8M5o(`&=eUe-3quNw1XsI}6Sh?OrK0LGim?nU`NiXYovI5d8w|eDMSyuO(t*{M> zZS&PuOoAz8b|g2v4F5Ng<73xe?&GfIexIaSJ)FTJ4ec!Q>T2}E<1_c5)|xSw3*JdZ zjzTiomBTG?*78X`d`FE417DOAig6qC_#A^5h-@QnUDIVd6;LB{m4POd~lGmAQ z)ao5eacPvkMp~~J(s={&TP&A2nWX>zv^sqBBA-fj=EKGbYHIJQbJ)3RVgW7bXv=C3 zL^9=sAl7k{HJ~n(Gh9msfngwwj&Yu-e8)NCRmLPa!h@i@E5$#83M!qF8>v+MHh9vj zjKS!v^R!L!kyhwYhRb{FHs*Q6^=}U;_W%7 z;@$64H&;78I9pZrX+S;%dD=!lwXPBBSQJ*@nwm(MOuAcIj*wYPF}@yR)&FhUtA3cQ zEe17~oj3QzHoa~&7yBL?Ph1TCITS3~47%46MC+qB_28``}&h8d@%xb9LLx=(S zWkSQA&QSjczk{hAlu^i8zo|6YloQO@fH9wGJ9dlF+^PaXu=@2LR_b=p>E5}3com14 zum!eR=qJOe(k)a7%vtNsKura8JTWIo_4mftT*78ho;q%jJdS@Yw7net(l>eRFa;yQ z4HgfoT?@X-|K@H}HLr(iKU;^#B~yGkBI;(d@v)&vuA9%hnu|uDq$-hhIOT&+!iZ?j z_b7aP%*7&dp|Fwjwuj%bLh$yOJldf1U9e8lC4y6GYYWhgkYgisIJ3dIzlm2QceZS> zrP6h@7MV68^_^bb^9=$LkDOm>8T2CG%f9VU-&{nA&AhnW1A~ZTkzvf9OABOVk1sWx zHkf&iWd8_sVPVO!FXObbC8m&ynvLXD@AM8|VIAZ6YI@c3TZem63(LjTvcDSmUTm?) zO@ngep0~H#c=As!JyWZz!8-Xw-ac>8X;)Ud+(>$SE0(7ZA@dATL@Hizs9OBwS&Qet;I4lmu~O;vP=4Zdo3 z@$>zKxawCd3-Qt=6`?qCVbNr%%~Mbw@QlyLoKZ`EXbK70vNhi-GM8%P(6{MbZ8PFg zQJSPi_!BwyCam1QXNzRG&wo>337{o zO`rJ{^Oh3~Dy}vGw%_gZ_cb+5aA?t6VwRhGSaiSZH@71dRF zxfkkGRA&fORHsZXoCltqPjp%X{+)7GmwirE+{?TQ{5WeNr6ff~RTh4k@a7!w`=W!K zt}_)COYrgEsqn=uGb$>nhw?9^G(C(kQxYok%Jm0Z4{?zjpWUxD)9XjnT-$m`wJMaQ za!Ri9E+p(0dluW>$a@l5FYm2zLO2;dzvLy^-?^o~UObs1>X1*c_-)#zoGgp<AMO z{hx0V*x1P`vAXS1N&S4#xF`Uk~_)@u1W7UtZAs`*{EE#A*&_GK0u%ENTDsZqFS zvmw=Dk*sw-=bj{-d=ZZk3|iG)gUGAlr%cKusa0gv-CMZ!{k|DLb0RK)6fn8h5MfLM zd+Bd66+=3zwhDk~ZM@M`X4*}1(ygGq(z%>4Qcc|@zPTj9yu0`tG*{xmo*O*PPWha1 z^NS|zIm{Wn-NFtIWdH34AF7e7Z#IuP!F)HYLEJYnoWqAiU*e*+&lWiJr)|RGo`q^x zTB{Fb1IDz=gb9j=FncT9%g#X$Z>Ia`%Z=01jB6#S0ru!ZEAoA4K+r|aEea#T!WRB! zz%end^MtTU>5ikE#MA>DC?r1~88 z<1Sugb-j~G;#rO4!J!ogWd#Q}ZUDUT#yFL57vFi+6I-37&h3dUit;kftI0yu>by|oV)(YKhiFD^+Z**Q~&GH|AIFCKi`DYvB{V-CTkiJkHfjI zjwLf2}418fYC(@4L0jsK_0& zHfZJg#BFmCGgsSm2rztU()ZamJ?2za`C5ZYtY3*WL*KbxV}Mtuc1va*?$9!{Ir%U{ zs#x&gSi^S-jDQ{~iJI9f9Z>ugO==H~3}N)d1L?X^+k zFDk?@OB^Hmk-2S%u|s-5iw`|*#mFn!uBbeTsle+$ zq2;MZ?=EaCIj%XCSVLUXP|M1$LgAk4Vuw4Zpn2}Rs6^Zdrk43TggF8C1yXpp*m;?m zDHF3GhhLEKHAHn4P04uG8;W1)cHAipW7^SOIgnEqv5B4c6tdUxs#5eMe0dV5GX?+F z3)$;!06i`KnZv>qVjvnpoF`jcn2nU5SqA6j(ZYbxrHeVCp$I^zix2O zNppbA7dlP7-eVpfd`uf3J6f&mM5FSsep{l=AHmX72%qTH((;|Q7onn(&(>=pFW0#5 z^k10zXw~{wmodd6FMcjsBGyH9!15~y?(koRK;XVw4D0!2TZQqrwcMddbe?=pRJXg< zbZBK_?zGG-lb}*x&4lVs3atA>i?ye(2GYxBd{0c}A^g*xQVT~|0sC%`LH0;&SYi#0 z2**;<{?qweu^8ZFT0-*u~1hgUyyt`&(L}FnfssKK4rv?&$3R8&fl#9pT8sxl%>x# zya>qtwLB11=rbi}MlSYcwd>6B#YY>s`vfD5N=uX)InGc;L}{M!B}!YSjy<)_OG*Ap zB2~Gm80;XvX_{_m@Ah;SUFDvf{+_Hey4AVH6o%(AQ_|{xHy*90G$Ely3P0TWi+x9_ z+chh9S(m9tPz?1%lxhvjqK~IHaxVmUC81k)G5gw>|HU zLJaP^x?!h;tn2o3SSI?Gez+JMT9X*F?N0|dWtd4m$;-nq=q-&Ux$o8L8Bg7ljo+aS z%yfn%KQ_NjfT&KA?MN*0>e})i;%L7YZFY(nW7n4Htv-k$uQ`)SG(elrN@H}w9_)cSA*AjKPb~jQnzIjf{Gat zh47gw(FX^7*aan8>2lb=xY;Lq%9#x^5JN4|SGE-71tV2+v!?Xc-X2lnSGm_kIy_=0 zvYE#j&jV3+O$p|nQu>qyjT|izetQtoGYN_7s0h9h z?wLNX)_fT1&Pq5cKooy}Sg6U26>cLEY_WcA)$tZp<(4dcidf_N$N(o(OV>nd)tO^#{f&U(3$R8C>M3~8WYs8 z8x>FiR>ef?dnK2r=j)v}22thmJdM!4;#WL1+*}|qJ?i%dV0!u{tF~2{Mrk(vbcjOe z@57Yeo|P91j6?@3HQGiw0M<5gf8M9mzJ@in^{8>j0BqP4ri2ygy~<{ubuz+&oTd$8zDA zh&hM`{;2nkE$DhTCOzXuV>rv0DAbqF^(GF2+HhZ99)4k>0a|$teM@r*hvj=JtRHnO zwTsM0Oyk4|t&MsenB97*D>n0&B(y!4VM|5mKCS=JSLgeoJMX8W3`BjN)8*BdC}X7aBn9 zf5n|8c#WmJFVFa)W8f^UgsUIAnB)IWVxOkz-C9b5;p1_i_-uP^A}Qb~Xv7l1u|&t- z*7?f|;l8t71CzSC^jY|WM6o}8!-Ez{k(FORdh&I+ zn6Q6_s#HGd>Op|72X&N8!P*_&zChTiQpmHBqW%|dvoXu{rRn7KI$`vbd<8rw>620s zHpk{Yq(vz(UdgXoE;JKXORE=aKJ0J8#Uz%xyvH?)>`+;&{uo%oRR3NBk$h`q0iq)E zdJjK=hfK8v&+V8&SkLv;X~Y0JpbPJwYF51`=8GSKZ2%US7np~1hvOiumIk+#6fx_= zK!>oXQ_XMJq8GiQUkdx+%I-Tcb9DYxTh#3)Fx1CG^jk$|_E#ZpTWg8bfTVrZo|0_) zy1h;F0yq6s&nY=%Vsv_TdH85UceCdkfgHRkR)wZ@SrIM%naNi@d@5B7dH`_k8*2$_ zjhOxF-t`)AD>{rs-iwR3mvRS><=EY)@*|ADZvquJM>7P-zbm#9u;N( zaUIbSl`4x)4OA+|F3*S91{GQm9~F7s_p+Hd9DO*jM~lh|i@zL3E1?ZrYIyafzw|ml zRoRPEyVZ4|9-VWdxIV8(&O2`Tz`QMWmun+NCH2q(!GTdYmMJe&Y+D%ToBL0~U6kcCM>GQ zT{to+^xKB%3QvWRk-bszW0F9&%}q2DeV*&ZBJa($9R04cyuA^?)Qr;GkG|wWUKu3$ zpw@kGJ>)R2#!q~rVv@tN>y_DV6<+1#LbhujA{VDN2YN9Q*PB=ccxq?diuQ$)Z>zBzR-6YR%O&8qOtuA32I9 zV^n;nPEnZ%R^PKUhI`%>cC8rF0RNl^Zx*BFN<=YB>&nEY{b8j+k0*OZ@k1BCn16As zU-OCX7iHq8aCjGFMLIIiaN`mM6OR&iZQnv#{0lqh1^e1_M%^E)ielr1>x&1TpmAbl z+6MlP&O@M>3XmRY%V%KSUMs3hiKS1Bs!`~a`upE*$TeG`hwQJsrsP`0`T{HW2kQDz z&mtOBbnoaINA0}7>&!q(M^EBtm&@9Vv~vJO-Xdz1}YiMaoucH^(rMZ}JXfX|N$ zRDRlkvyV(&IYs3c@jT-m&dtUp7jmyh608e2q9GHX83FKPE_uqk8CHBziGLS}Uz*~N zafdN6vDL{&<6DZ5VGy`gMhR3^ZyUC{1X^(j`+bfu?jUtHjZpp7jLkapJ1-gFg0%sINB7aqUOt-|7~k^n48m@CAgQj-KHv%)4qP7E(1i@AHVqLBJ>5E5}_vUcY#tlx}R_v7;}`xcKcBX1VLYr{N~w5})Ec zsoN*Wg#~cs+Nl!o+C`kQxxwb# zwnld*Bl0(buF=#9@4*ag<(56&E(d_&@UBKw>|Fv~Yq^kEpE{pX++H-J+i(M0GmO4F zJ}dB;)_y&odIr;iW=r|NwiTo~lDqxA%VMZ!KukXIi5Ucs|pCF8$otZpASaVaO7nyt$C)6IXw{0+anytW&gSSrsbOp!>5qVy79AaDbpVe;mQ`h zD4`PjFqrA%l`f?o4%SDk@;^TK+i5uzAQv7QRrqN2o=1qi$*|*c9N$lK(Omre;TR*O zqGF1$Y$6}x!$s95A}BtenMo8SiwERe<2<`70Qr11l*7)X4pESzOmjV_?8f?>;0B2WRD@Q7D3A< z({8hBpQma|08<-FeqnMh7_qD_q7g;_yzt-4;o&Af;CZ(X z`ig%kf@V6~!ViA=I!>Kch#htEq^^E^``+=WCKcrcv$R$-xzvrH&g$;I>|92ub9q)_ zd~d*)!$e^u1AMM}xmne7`B;0`fF>kH;$_s%Y6g|@`giZe-xZZ>vFSPBukJ10ns<6b z#QzGqJlsL>^%hzFn4J+K8ej^<<9hLG6@LkfotX%LrVBq3543Mb4oy5 z+9h{~>A`_yE>Bwz4ELr}K};@Hk8R^~=INdCu%oHeVO~&x9pJaYd^g7Q4pwunj_Yu0 zE|5I;&z#dK!cFy{U+A3I*jI|J!e$Ov+d|vbq?b7yvLH@^uIzpZcxxL7gJTnO5K5>0l zxt^m(vY8?-R7u+)G6@GKBb6WQz{x5k>?U~8n7m`mJr=IwcG7W_Z7&OQOkOIJ9f8|% zC&Sv%{|6v;j8&6yzI(Pl-?;n9cQn+Qg5dz<>YU5{QW&#u<+R1WNs5Skp23a);J^Ia z#iqV*0u>ae8O`v#-I4npp}WC(Hb8y?xU}Q+u96)#@3`Bxy<#X}vDCU`&PaJtXv{u? zs9MTaP^_DB_k`k%4OgqV)wz3UXQ+ue!(PP+yrLV~>g^W&U`@2Aj}LQ$@_GQ^y8~DC z%WHt~p{s>%$mOcVeY1-PaVnHeMkp`qu3bJ$Obd6PYbBUjPNpUFQJOb-B>*O8J0oin*(yX;HJeciL@mDtp`NH=4Q8fU*eYI*b5{}8$ z!@Txc;6LuC4E5|{Z3H1)tR1TvqEA9L`p9qfYvcQt!6%3?)#|0hUG$yC@%64d94!Pu z>eAz&fLc3?RP8^_2R--j+QI zysd4jZHT1_{F9*^FZ`H}Iks~-&y z@m;UFg_-y7e_t@J)NT6g;$ZiC9$|Pxxq)z|s=9|QJ+8q^I6=G=*!d!5)$ch|)87r) z?LW}K1Qorw2YZNp zBKRQAb8`(~o$G5+{43xuPPAWoP=!ObBj@q?lhTzB1A6rxba!sjrdnttSszvOB=DbL z?)FNCcPSq}6cU{QH^79emJ@fj|3J1u6Z=rmhEH>_ce-sSK>WKk0h4nW^q4DSlq{XrpRds)IM_{RKn*#L}2HHp|7KrEtnQR7sc$JoXc^6h$g zTYrap(ZGr-@`>?Z7-dvjDGc$tXV?#Q7Jrp#TMTnB@t!iH(%83WNLwawx1BX5zST|S z2hmwl>^Wy*Q34xAwH#*2$LdCD=hpM03B<6@H)Ic9$HOoL@-nUy75T{+YI~l1X1q>& zN6Pn9<9J+q#D(ML&*a!=K(zbe(z@9AY{A)Z?t_{_UvNwWpItjlNvwWbhPJEp_a}y*L+r zI=p=6zRHOBbLn$yhgEd~Ueiu&L|ZF53Tei;{!TMR;#IYeJd^i3CchA4N9!3Ha<(?_ z1l?97*O~@hNf!BK2zWfA_II-&0=J)epQ^S6gL}rdga1bP-*dLS>{4bar_jysoD$$s zyvWducZTP9g&?zWNet=*RoTlws#VAz(PD$>qSR6cPpjL>sg>3b&f+O+`XzAjBrDfs zp1?tL6QheXN8c7+Mrnn(NFO(#x^p!Tu?aFlO-QbVRU$^2St(Ed%4Xa|vwN~6MTR}v zp**oswmJn@9>&?U#W+t?)#?%`%Y5dhe)%9cfZEg1fN6b56o8`uIw~nhSf2QhW8y)J z6!Y|-r6e`akklI=PI+~}D4nU2qVxcedt|X%FXnBPbpMH33CgD5qy^AAgj;td&5?er zf5LB+JAmLMR%I(iPLBdacX5HYcsd1aKpPw3W3dhlsg9+3C)_+#uuofqZ976dW+EP1|$X zUf);-!6S-Oj0B7wst+TsuaKM|T9uwH$3>b6Lkw##to?4hP!+ZKtb1{dK%DTZ-p>NHw zoay+2tE=LDYd=+Eh(m(4I?d2bu}k|^Z_8|)Scer?Yi#~7-e`|PF2WL{#H1c*`e-cX z&zcwyp)z-bCI=ZQ?6UpV{3@J=R|!)^^S+fX7sAy;niFmUWbbRI&EM|OdH={$=EDo& zOrad(Oz-pW7*!jJ`Xg4kJfX5_#Kav|yT%-Yj2|z}?2FYN6z} z!h~iKEtlRvha#VhtbN2tkq_RJi`Ep+HOYOi0XB`&tktMW!;w3udN#f|QAFpf-M1iP z>KJnak3BE%iYf%RgDoQN@_yB^);bEX*Vl3`3_v08j3K0F_X6(dJQ!pW7n1e7{COl# zcqx$!rMYO^f1EYt;Phs<6tU~?f^1OZ&0%88Ki{Wap+2)J%E#dkna9J5Mi7~&UL+Bc zoUBszaM#z5iSbPG(QuYAb>noY&wYIJTS+K+i{mqXdn#$-QYP;u!JwZ*(o5sZbc@hA zHd5aFQgEH%dhU-o3mp;r4*-s87QBhyLxfeU#_ga56E`Ry>{U8TATGU^lN5YpT*Nc2 zy5;p6rpy~Oj)!3b@pFXaiNA~hIp}*Bhf|aZWg5(zLl|C!ogk2gH$kjVGQRKJY-p6P z(TYEcqIIOur~ZxIRkBHc{8DS#LD4XLkl!0Qale^}?^5QG1$XD=u~;HH+1Cn0#B%UK zG^B^O*>9gc?q~D+t5ZCsT@e0_hKG&0=h(*5 zP^x!SD6?(f2>#t`f-) zw5CQ>NcccX6`!)};+Z9bI=U$#GO{I`Gv`5(4AdaKv_d~tcmd5hbLJQ=b5#no-3 z95wZ#tD&ur+QAarkZASl~bl*##)W;{XAA zDJWpmNtVF??mq0)Cj1k?Dm2Wz=Dw2!wYguT=0m9cDZY98MU58wT#f5_twtIcl2{;u zub7@`6r4=GM{fS{GKHCv$F4;9PyBZnO^%8F?hVL?i)F~*!P(;8}T->E^8FGwr|iWb@ycnmSW+4 z+p(dz%>poV6|_ImS)>55Y2NJdG)X9hP;>W$2^>`QRZ@9F%Je>sq+3Z9#$n2|J;T*p zc};}cp$IF$@@qcRKMoVb6FeL?9qzjEpXSoGe{kcrj1%a)?H{;jck(Eh(WMxs5!KQX zx~{<$@iq>fVSM$VdUK5)O0KDRb+1U|EkZ|8-7Rs;#29?*9;I5tZ}-J%QaTsBIJD7o zPtst(VJtq)*Q9|wl_d9RL%_k&=TY1KV)zx4IQ##~ zSS5vNt|?k;1KD-V2-jj|M|EiVJSahk%J5g&8#n0-2FqyA$<)#gB7=s$F52ZUR)5%b z=#OWDCWOe|u+#i=q9z($fH2!kA9WwLkt%-P_c$shbp9NE`po6MK=r2yQ|Bn+Qp$L9 zQ})bE{jilj_{5k+*|9*M2j@Dyd;6M#LCM~fgof1YzWijJo^HJ!@JuIMMiq4KcO9Qs zobag849k$#oyzW6yIWotp4Gn_Lg4l~s`XS0cKSH2RMg#m&L&L41O16yo^;2XPt}p& z2cC=}+v%ysKS1GZuj$AAMkWFNrAouJi-{E}+%ElET7b!z{dwYH*GP;Lh<#g;AVUWr zTa8t8%elL`XUFQQr=gNJA`zX|1_?KhyX6}ubyiEY=9XW}$(oXLTFndin~U61n5SojIW{x@dDTj?U?K5RCK@JM~XO{u5)V}ILVqbB|1 zpySU{6?}TPs-ho7C7=N(P3Rq-Nf^|F-pyo(hz&LLM1d6MYJ5>mITsScn58I zVnu<;UmwCjnZf7eJAePl#%ypTePJzwaN+2f8SY#jAK9c%*j%RmAb(CO@8X@3Wf3|M zkTJfM6>Hz_U6bAU;>_-U)nLiEOb09nDXlUn4CY239L}Q|3Tg!FB_7pxU&rTK9mG4$~S6QF^Xv~%Kmyr0@q`3KLPFHVFK~=v5)V;FDT-2wy@J2bRd}sv&W_;eSPqtk- zPvJ^Wbs!UwbUPzqW^{KRAxsFN71gn94Ec0M>zU8wx;Mz2^Q&<(mvqzWo!U3QKPJ7g zIdqNiCQjZKUPR2d2gBT_Q7v)0ODi~KQQLM{`vFelhm|4L&gen4MpSur9pu{e3R;=A zxS#wKdl!-a%Id)Nj{AnrQ4liD;yX$_P7iq?Vk#;Dh%6kQU?*2c6%cMt&(nezw)XZFTGw+h^!VB| zrDUx?s@rSIMqPcrESa7|F{|o=H9=6_$ix-l5sFJl<@bHq`hYC~-DcHBp+=Jzka<^m zSDXt5s#buDDN?Tq)N6pPw3b@(qC6?}C2wJ&WIP<>B0$EI7sxbZ4bmQ%ob69M_;unG znnR>e(Y*77Y%iUwC3Z<^Wt z);Gj1mErg7ST6^DCTNUm6#EbkgwmRKM#4kc9~Vc^Pi+?tS<2PEj`>Esf(*0zpAd&5Fb$d%_8&`R<_1{+RhHBOD zX5ZTHo87DZ`lH)3GPt?lC$73O-qY4?eQb;a4GaYJ?GkLk0GoKPt*tFXN8?C3tR(A( zab~UdX{v~X;pqMUhlQ^~JXn1)EluOd;^{fLG11;K#Kwge)xNl@moUVJtxrxXSwcO^ zs_nL}GHv@^{TksINEkxUc(cpnx7Cis#XDcjSqmW)sHg-4Z*SI11!@}r+wIkTK-K2x5 z@_F7pTptVF7+tm({$(BXogB^+ZXc8Vx>#XZ*S3#^#_dTl)q+xL@c>Y`b}XWT?!!kN zJ4r`>3J4S8!xd5Q!!N^B3|2>Y1u?+|_S+>Ty^G(Ol{*(cqY05ASP`{N(C`Yj!51WBMhvKYt>+BbubL%|H^UvYPE8fc` zJ3rb5YV!#x+#oT@K?C!Y6#Ux$B>VcMAAjet#MI1PY&_a9^UE2@hQ=L-k#%Yn#75Z>FW5;2%`g8Q6WA=UBB_REs z=`?KtFUBrb=Z8JmgA=d=i>X>qb`pl7>yuUy4_&{jFh>uKiay#G%L~tof9mN)`~uD) z?3FE#<^HlMDO*$;DqqI_nDIhaF8&zDNp_FbLBo9t)={OFi&J3G_Vz6dP2_K3u~2I> zZUm05ShvfjfZxzA1p$C}m4Gq|MWn4+=s)ZnuyniV;c|YdM!AKZ@M+rTJ8scwSH>im zaM(z!rRt6|EYB;fffLeSq0aWg%JgDkWd)TomR}`)3FmWv*MV^|R+10>69|Nt%FUhM-^$L9E7Q_# z$gb&Dd{Q4Db`<~(jw{sY#K%ogKH9~dn3yaxs4p~Jg2VM&g>IL@AnmQW;^?EVRxV4) zmq%x-#M^B7G)xoh6pOWbjST}P7!`$>enl_JEI5;6_xXd9jwBT7pt-y?+$A{sdAEAK zwQM(t@hm~5yhy}7^gNZ18IXMgN`QSQ%!#c;?DUIHm#b23F8f-z17&@yj4Ry_g!eMn z9-LAbFGXEhGF>tYW;1vJf5I(F+J?&@wuSJkXPfK1TVK9sC2?Nj;QZV*;;_XJ=a8Fv zZJdDFP_X}`Ji2tg2W4!x#lw;Y%f3uV}8iO6QT&jAS4cC|j)t zuz9=9!@ZJmZ8v?ygh+hwwDwS{`d{xL2BC_k3Gta>qAVXK4iAHW57gQYr0-Wj3svgP z&kf3Km{{E5ow!b4S@owFTD#mF4r@Td)A4avvQ zZ;L&`vi4Z;Qr`!m;sN>M*gQkj2)rwqTwqh+m{ccoh6+~P;b)8*Yita)lBzR|ewU-J zN8;Kof$ww7%;>L)n&ntd*A~Ilz+((Ouq)4ny;_=|`F4N)QvIb^n7>MGEojvaDR?W5 zXlfVpix}}TNDhI|pB|~QU5eAh6uZ9@7jx*;f}?yV|MJ>uT%PE9DidH2)(uZ82!%+|jOAv*NIstBY- zWpN^_!rmaCzGT`^zLcnxh4QJupymwP0wK4W4;tz`foneJD_n&>@3Em;9A zR+)#&)ZEA7AR0!XBtFxg8Gw+s_7I*+P?&sz0m}BUb{VRGw9)_svk4&t4?@}JjIKT+ z2Hcu#pvT?c6C(i?a55Wu#Uc(&p>`&k{QTK`N7WZlW4uwCJ-fPd&`nNVX7AeX1roe%HFPz)YFe9NW$jmU7K@S)XFc_rA_89q%_-1-Cq${u$GYSnxHjQ2 zO|ZkAr&Ym{b*r|jExAcQ+{|%{Q(svg7Y|;GPii@ao9_Q9#=+*#C|`wb;i-9EQX^Vo zSs_C7Ah8V%em*-Dleo&>+C?HLp?>>@tB=8F)m%T~~xBi>F zYK;87N;_(*L(!AE0VSCNguR=TVpOWVK4M*ciSZr{yGnJ*_ary%;Y5vgfj zwtwl|5HDVFnDSUIaVZKyV?`-vfM{2~Q`lX&l2Op9@09sVmR zojzRoCPHqNJ%R=7T%-KD+GOb{bS!e->bkD6Xbzq?v&;59+j&SB15~x%G9e9qdu$A= zb{;P(Cz;z@ln$-+{T{c(f90ah&{pI-eax^hBUR}T{iOrftI47UapljV^?7zcld9Xv zKa$10JOrVU7N4w1`Du0dmWO7|yHfk=+luxYJ-E16ayhu%G|e7QUCgPMbA`Vy^X@E% z(_+WI#%3I@bITpZIviN376?QTYg^zwOBSLB8{W+8|m zQ0v_CE;0F>Jd{~5Yxwzd-4MaUW+LG(NJNrbR3^dJb$=u7c79hwXtwov=-I%&fSe{T z$iw|SZ|zrpH+PY6eed$J8FP7_53HFUv!tMmEGv2c$+5y;&i)l<@lSl_wd}+d3ydzF zer69UFr7fP^>*z-N}=4@{SBAyYgL;Ct7r}?mmeG+e5)?D@cA27R3IGLzkTu7FA)y| z9_wgCXj6>oAnk=V*;D<8G^zeBi$`zd6jQ(h#kBXm4Q#t!&*Y`R(UlpfOrd@I4nh$x zoiM6>Po~G1Ou}bg?e%hiZ(}IR6IAjV37%cNu*4!J8O0neiIo~j=KENy-G_wg>h2L(7z{)O2rS#SbGY`J zHPQ%S-XVtzQBZ0ISiq84O9Pb76LPdofs#SyDXM;R(N%ZDz53y3w<3-Wg(6BLEhP1 zM*?P!$K9oQ&l_UXwpb;&=yJQtr#|Yyk}0gf%yzCW!`csoB`la&8SOjwy=}`{-A|9J z&*hDq&y9Ej^0GQ)ux+e5Kb{O9pIE@EMG^6b9=X-decey>v>R)XUXi55E~Cuov0;j6 z&H0sWJo4AeS2ICH1S&p(u&^Fiyjw0|6xwa z&-wNIS30u+h@>bXu3rz^e{j}P{px|@Ua<@MKK=x5wo$MG5NOSKq?Ov|5gI8lCAMXX z(`y1Vi?W4Wld}Nwf{ivSJn@eWy z7?4u?{1TrrSE-UU9?tW2#hjRu&pUH`e&wiTl`KkoDK@S_xN|?{BeLK)h=C<3*L?f| z7mM0%4hHIg%p!I$6tMnv$tOl%mXFnS*g;FpY`w7a_z(bck4`Pf?Hv387ED{5Ku7N~ zSN!}}`Z9HXQ}Z0&3QtK!Mg+u8kkGW59Uue|)aAdLyr16M{#tj<;bxC;K4dMia(60;9gTNTZ zWi^x=1tWev+uZ!^Qub#9We`CYzG=L2?UG=iPNC#XGAs2zyx z-66hMA~d%Ij-5J}^|~?Ei|fdJXrh^RC1wA)`~hXZ#yEh3bZ39qU**a*U@|^Ndy=&J zDQHg)r-Ajx{)7|mfKj}#pZ2ufNOzC4-`7KQFf&l&^CulKV`A4btxq6-%h>1L>7$b~ zvgHeVvtR-TwfS5)Ax==R*rx`+5z1q4Y$);DC+{5z@eROO$I-N~?CEgS*`*ra(vqY} z9GlcmIx411Po?41ncfFhTfr?K#HYvM3;@{5c8S>t<<$)HJ#du0Lt(oyC8H)X1SJy8 zr`Tf8iiKR`q~Ak{4HogS?m|hVd8J#p#d^`$RKP{_y4(H7CG1X(ha!-L{d%sy;~XEc znz$HLx#n711;MAdRePQwD(!>69uvGC9U9ehR7Kx>A}J|S60N6C$XJ>`YOsHCaJLny zpC#;1_7a@BB~Fc++qrNB-;)l8)`~G^`(>P^Y;e8JqZy!l%ae`P>oH7KV}CZCPc)u; zMHE}E^t0w-iAuF4d{zOwI--1%e@SZaBO{ENHd)(aK07SN9~f?jIAZ2anSFNz&V0n{ z#P)txjuEvA<;Mu~4Ea80@XO^KL86D9Pvovt*{BJeTY}GrVUhetec0V-6whwNTbNpu zr0hf;+CTNm{gZQ|CJf^o#LNl&Hdy2I)E)WMOQFzS`|V=uURgTA?O|*%tGZ^1_T}C^ z2QTyY;;oh_Ib(Oj3-`D5IizMg%jMovicb! zzNCXvo?E~HSD1E}G6O~8o_SsJ_V$+2$E!Co4STdXHD>t|&m}JF=waW^S<<}%iQ=b& zZ-1|>vyv2y(`C{>KV(m?6}0Mv-Z0G7g@%)CX=)x+b*-8nQX@HglglYQ-F>5D5bW_I z0yrNWW^LWeg8=2*H=7s(ejGk_`LYmM8CsZMkzM(4I2ad6p~1&HFaJ{cMe%bJ|Nj9h0xk*w literal 0 HcmV?d00001 diff --git a/docs/images/hint.png b/docs/images/hint.png new file mode 100644 index 0000000000000000000000000000000000000000..992a2f5ff8d835824573eb32c42e18e764b363d1 GIT binary patch literal 7104 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 literal 0 HcmV?d00001 diff --git a/docs/images/quiz.png b/docs/images/quiz.png new file mode 100644 index 0000000000000000000000000000000000000000..f76a4412c7c845c35c076c78b781363210c54867 GIT binary patch literal 20428 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 LRV{gJ{pNoGbV`Y@ literal 0 HcmV?d00001 diff --git a/docs/images/topics.png b/docs/images/topics.png new file mode 100644 index 0000000000000000000000000000000000000000..766e0cf80235b46671f3cd7f5a6bb40ed559bff4 GIT binary patch literal 16640 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 literal 0 HcmV?d00001 diff --git a/docs/images/welcome.png b/docs/images/welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..a2105aa93792a73cff7da2d745cd4d081216b5e7 GIT binary patch literal 8226 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 RqCe=&Zx?>8ICb^ze*mGaY25$- literal 0 HcmV?d00001 From 39784f529f2aa0debb89e6456772464e130c88fc Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 19 Oct 2020 20:41:03 +0800 Subject: [PATCH 132/447] Add class diagram and sequence diagram for loading data --- docs/DeveloperGuide.md | 14 ++++++++++++-- docs/diagrams/TopicsStorage.drawio | 1 + docs/diagrams/TopicsStorage_load.drawio | 1 + docs/images/TopicsStorage.png | Bin 0 -> 33640 bytes docs/images/TopicsStorage_load.png | Bin 0 -> 57759 bytes .../seedu/eduke8/storage/TopicsStorage.java | 6 +++--- 6 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 docs/diagrams/TopicsStorage.drawio create mode 100644 docs/diagrams/TopicsStorage_load.drawio create mode 100644 docs/images/TopicsStorage.png create mode 100644 docs/images/TopicsStorage_load.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 28ad7e350f..fcfa4e0b58 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -4,6 +4,17 @@ {Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +### Loading Data + +Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. + +![TopicsStorage Class Diagram](./images/TopicsStorage.png) + +Given below is an example usage scenario of loading in two topics with two questions each. + +When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method which will return a `TopicList` object. The following sequence diagram shows how the load operation works: + +![TopicsStorage load](./images/TopicsStorage_load.png) ## Product scope ### Target user profile @@ -18,8 +29,7 @@ Help CS2113/T students learn and understand software engineering and OOP princip |Version| As a ... | I want to ... | So that I can ...| |--------|----------|---------------|------------------| -|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| -|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| +|v1.0|new user|answer given questions|start testing myself immediately| ## Non-Functional Requirements diff --git a/docs/diagrams/TopicsStorage.drawio b/docs/diagrams/TopicsStorage.drawio new file mode 100644 index 0000000000..dba55b639f --- /dev/null +++ b/docs/diagrams/TopicsStorage.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/diagrams/TopicsStorage_load.drawio b/docs/diagrams/TopicsStorage_load.drawio new file mode 100644 index 0000000000..95ffde22c7 --- /dev/null +++ b/docs/diagrams/TopicsStorage_load.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/images/TopicsStorage.png b/docs/images/TopicsStorage.png new file mode 100644 index 0000000000000000000000000000000000000000..fa80c4d09f4f640982970f484c446fe8f0883bd4 GIT binary patch literal 33640 zcmd42cUV(R_cp4CijN|Kh?OGULWhI^f~1f@3cZ9T9YPwA0*MGBDosJKpdd)I3rJO( zs8~RyHvs_)y-Fw|^_%GXe82ZP*ZKZ9=bv*fw_#_`WcIAJXV$vcz1EJgAfSc+Iq=Vh z4I6|_F-WTo8w5BTHf($$v;|z5-XW&GVZ)9@Cdz?H4e=pSyf-LlA^x5zXsY|s8B7H& zq=KfVdq9Ay7s=f>$eqeirFk>KCD2Z#dy#xd-d=zEXsT(=f*?m?vg8ig;6H`CqsuONPwI1^7uh&5Z?7^Y&$paoi3lm809_6}l@ z=(NAxG_+K8`BLzI%;W@k|GnxQYE{P&O5Y#&awjkq-D^ z2MrA<5lMq0xNJ)gE0Q}yGmsdp?da!)qoaXpJQ*m62He-(j!36sf=m&%b`aAbKTHtU z*xEe+qmHnlS#r6SWHgR}!g&x7XpXMEI)dnk_A%B4zcw>t5*Q{dFQz4hiZV0vMC&5$ zbUeVsEPWy17Fd?LEsad$pxwD_e^a1T2U-9bspannLD6*47z>UyDuC*Mbg=Lx+Hw&N zU_c8yV_X27WhTOb7vf5I@i-nCls!?&qiOX>LvM z^7M5;g2UJkLcqB5@8#ti4EktT+M3#G_#u5EY!qAzkHKO6?NOi=ZtQ~zCPG4VXts1+ z@EvCrOoy9$`338kU_gYxBvcd%* zb$u+f$eK74INBUyO4G%xq%!F~!KUu!ICW|;9m??W zW$OAs5stRLFk1qcbby(5Fv`--Q&Zbf3ktR+9Ph* z4hHq`H?s?2aJ{vNI15XET`1h$-V)s018WP`B#Oqg>InNl zEY!q?jb&IO0_YGTg-XF{Vz?Y&Uf>o8CWg)QfPx|TJDyAR@$n7_p$GVD>R{}^1w2&4 zk$~|>!mK@l?I0%R-W)U)feo^?;!OLZi;vmBA?RJgwmjTSP{$VA>=rED~>yw4l*Vw1Ef+OT3k)wmT|_ zKm^}NCLxZ%?7#!SBuq@q;4ptnHo}ueL&DLx02mPoGdI@2I}+huP?$w90;l6^XJdgt z=$dh@NG4<-J4Y5t+bST$pXf<2rg-bXC~#kx2TfPYQp1a?qt5uVd#LI(y0te+8|}|G zhHxvG1KQRs(8}Dw%iJ{3*vj0V7GxI$TCC9irVLbo6*G`(LC4x7yiIjI&9qF&AzTwO zo8^h71o~6`f{_plGb-p!@iVuv0ejjH;o+^pGI8`UR@cP(U^KC2mOx~CzJ6&`goTN{ zp9z!g%XT-1AVN?Gf4m0W(aH~@8(?Av^`nH)-~Qrrb z0LK&tb-k- z$<|~V7Kbhh)_%#wicchp?Nmv-w7)?MRj02D% zf!e_)Y=)_}S+F-X(AL76VePGHZ4B(3iM6@0WdIRwO+`9z;QkDv8Qag=9Y(bWO+h$Q zjt7L`KrqwrMC(x1Lp-d>!B86lKG?=WR~KjE=MaRjp<>*v@LG0EV-5T?3hTLweNUn9^_8|`7@?hApFk=}v9w2)v=qz29gYiu3l?h#^# z(y*a2u?zx@j5D?LL*d>1u)+RTNIO5Ki6+&bgyB#)Iz%{>uBpi+pe#9_7$7Xskxp>b zHDNg-w5-*&tzfojmbH$tRwe3Ofhs%k~_jZ5MhUfk-WVTcJ2Y*-tJ7k&vB>ul7oyP>cD!qlLG0w=3E$rzX^~e zI|vZiM8nG)_!JWjM-q~&<-qdscQ-Njz%$ucTN^ta2X!okWy%dScc)@Cfe03$XE2Zo z03iNh73@t82n-B#w+IB^FeV6!F2ak((A5m_1DFhsb$55Lfoqym;f@S-bBdKQ6lRQv zQ4kgkyaqs2V70(W_7H0>6N}TZL3%RPG4>b-D|NOX&YzBjv3!|y?EomAVdrH=3SbAq zgV@FvXe%PgkwS3Cn|YFGx=^&Eqo+3zm|*2)O$dhhd*dv1*ho_xN?n_1=VQ#I`Ll6I zh_y~gFdD-0=Wix<5C=!MQuo7p*+3{(=14EBIudHfAtHd~^U-$qr{XjNEtx(rA5AY` zZMr)bN2Fak`x6`uWTQD1(jz5D&L9l5kph`H!%fx|&a4@qCf)eaJ0%1BB z1lP-2m)~S+<>PBZ#CmJm>H-I6;teb%mt<^ik2bb5)e5kK2Vy)S2p^UmA4@q{dizmH zmRyoGB9NiW_MmujNY>iHNN)-X$?$}j`w%H?B8TsELTq(I&;(24Ade8Hr7?x+qeJ?G zN&ExYFn5L-)D)u2g5ot9#%$0Vt`)%5F~b16NrPy@;V=yx0wAnlauCc95lGST#5($V z+fWH1A=ccGK%%D&lB*raw&l-9m#ag!^sx@%!tA`PwfUaI%*5IP!o+KMd1$HIL;XYe zM%&DT&9&3zV2R8izQpc+0Z2`X1q2@gaX0s3Tl!J8q1rkWM?T&J`Zo!%r{Nf0-tHPq ztdBnxLt)zEO+5i-bMUZ7VWBWbl)E|}<^}V@xr6=$JVYCd3e+-3G2uk}5K|3vD+eDh z4}c@owQaQQX+9>PmkGv%ZygB)Hr5@(vGt_zfs= zZQ9)~B`XfwApR-`>Q!UcAJ^y6zLfiSNFbp8_9~)FS;*~=CH8zl31YFu75k1IqntdP zD(tv4^m`_4Af;+*_S2^`L+iI-{SjB*FB^vE&6YLX{@vI4TdVO>e0=-?SNW3y;7C(= z8t@Iy82oU(q1(Ks0`KCTDnl8=XAL2oWyx|H+1uOc}Amf@LlVu1%rHQBj3toKtY zwDD7l&d1v)PIr8|sUc^-c4c=|(|Y;Xso2UqZan)c5cK6%WvSwst?RPBq{J9jdEf3=_ng zYgj{{Zs{(uXNT}bL4zMgX07iNQ0MTn%tcCliq23|CZhS*K`2f8PAJb*yrieVGpeh| z*L)7PR()ofy{TEryQ}$xkmsO^1;2Y%$5n}o$vv7|2+cag^8}j=P8=r zX7UY8c@YkT^4V>tv?1jlA??8Zo=VQ_NvXE&mci3~RS$MVt6ht1RM)vw9T>BCmDzpI z^L_kV5@p6Nr>cJLw!ifj zeuAmosS`v(>ztWda~TUaWIU;X#8&D(D8z}$Y!vgmabn$3iioQrnh8ys;-r~Us<;_Ra^SDRG5!GD(_e~ zgFZ)Wwisa561A`Mm6pVRqT>g;3OfhNVhwINwtqn~@5UJD3yg@>IaP<9DfVgVyY8eN z)O9z#Z*Z+sp#ep?TYC(CnFD@{c_}Aw*uX0e$(u_th*m>ROBsglGw&>qu2eElM>gx@ z?tDlwdM*_{&TCB5-#ah#+kmPSgYLbjX$>C8Ld_%DJS%#fbiZEE69yVGp z`#l7$-cODGW^1%DwsL8I(H60hJ>cxyl(=j8n ziE5>YNubx?sdur-L%Fe|46%&bkJ~QQnaVH)N^7xt6p8n? zpIhzqQoN@jZ(b&p;DUy3;V!UPAGTW>RPE|F3|7e%sgqsptq4X(t?WE~VXqt~v;T5f zu@QEF6bL1?$j^2-(NV4a;+*=$c-j2@4NoozauFxv3?@RZZ5}d>YRPKeMPIn~<{>ub~N z5QoO-(~fU?Ppu7}GVzf+fpXQ7%Bdw^)FK~_=-bsKD{{F7P0T?(VM>Wc7LK@t-$%J7 zM|2%h=9N$2yA3a$mEaJ+6VT~Lco!{mhfc><`s)^oiwRvktMXy);AW=a7%&i)*QOUH zdo&JKUi1f6;TC->hO6e+`BgJ1x!;qt^`DOw?v`1V1@N854c6Gckq6{1;^2*f&XO?c z7UO{kgyTR%X<}mKP^C#?=OJ(Vg%FD(6jLoaN3K`lX zue!be%y4q?N4@ckfy&9ck8LHPv6YSYPbuMUx*0A{XwA;&ho9(Hzs5RzB9GL1?^c50 zlJe5>@8LTMQ17|X*$dnErW~`+LsFfex^?7Us~>V3$*>YuN-`?TJ}2NHEdiD;gMNW)N3W9N9y)7Kc+!oAIOWRC5( zVcB0Wlq#v^*%lTU5x~D0;-4|c_P0eNaX>UpC=j_^p za}J_2Lt~78pXx~g6|u#iH6ryr^lIwQcpIS;Dho@;d2JVp3cY7+R2t5-C6aQIkGQVnzV*COdsV1}nVpxuiPXQv zKuL|`7O;oT>Z=y#sO;>1lEOE_JTZ*e>6=qhl9KgK*X&1IWjUnQJG)$iOywI~w?C3Q zt(O%1?e&F`630TUJ(}mGqMQ|UYK@otV?NVC>1g8fCz$l~5ABHtC#oj)EdFyTQ1nRX z50swY-mu!qqX)KTJ;`>F-hXr?9mufRzcdjqxuOGnohfR`C zX-!xCa#cg6S5??SG{0Wn7Q#4(tLi2X2N)q<9_~&qRy2<@=(30)*+lC)N3VT51jQwO z6n`SYc`*GlVpH?4=T8;sA8)86$}ovn?FaMRrA_Gei2_c)r@9NI7<=d(U98Hbf!_g9 zO97+_jjEb`;k(4w8^d{)3{^CScrFkkP*GO&(;5zwN3rqXuq7= z@h~Hg?f&u>1NR;^ACiz%j@ZTSwENawC~MBExgkq$e~=~Yay;8#qZPHq6jBlNa2AG0 z>`d-^!)}AWoL9`f8zf;SaB7#(x7!AK6%~TI1jXeB+sgL31ljzGUwc&OXHTX{0+%Z_{s93=777u{nW$J;cGhoIm_6b5#4`R>9Bf zA7IV%FzfSLC|6j&I&>R=rp1Je+OPfP&Dt4IemlOioPA#Q_7R@*sHP;pJ;V&OPm`?u z?6z)ux~`y~>#v$8YDDN{|5VJXo7|-wWL@HUge-jPWV^`KE5yRd-=Np^-5i#o@4mW^ z{daE3$p{>(6bNERr7o?^Hl{BBnht)xS-a|^;5~e*kKxitwkkAJqQ~W}Q(EKx*h)v| zkML!9Mnh`8+NIC&3)`OFDV>hIqT;rGZ1{|QSYB3QYsuist1lZx!F@NMkHXKNKRb?i zy_-QYX%qtYWjq*X+!OLO;eGghvCNde_gMm{E$bbZ?`^C){BkXM!pweVs9QAlzaHw> zBO7NwRJ&>KUKEmOhlq_fi8WBG*m9Y7;bda!hrK-{w5}kq8|M-6D!J!2 zET7Uu*{cE}m3fawz8%kgCg@CW=@W3P(K9}~TD+S!mYX;cUYExLJCv7QJ3dK$f6>;M zFV;WH4qLXJ-LQOQ**KN2@8;ma;iCsibi_G>p*3GlD1kLI1`~rcA_TVYRn@l7bDn9^ zOc57|*t}ih=Er2UsHQf@?vbV2fqNpwIVI0yE+hfW{r7k|EC^QYF}44(Km0X&Qb0#c zS@uKWrz5flU@lJCkwoUNZQ^AQ%lrLHfqwWZI=<09(SDc#7S5Bsx2ik&lDHz=e(>AQ z3I^@wTN%EbK^2$x!(}ao>-UPGOaEX#jLfaGC-1_C2E zR{0zLy|(nPdgONpoN0I-YvS@zYrDkpeS`WUUGw0cV=^y;9XpJ#dxKtcF=ro#F!n@l zl5O0lrKhLYt>jACzU|6cCBfJoX6ZKxT7Tv!z7eb+N7KZax&1)Rm3-%YCHZ8c@e#Tt z&YZ7oL$L?km1D98j_^V!_7}$pa^V?c#(7E(pLdAKL~Iax9v_Z+lX}eX-)D3s_3XGz za)q1EAJsH&dmj5t@4acPL8Jb*dbtSI-47T)$29kL6Zk{JU$Sm9_gqdnj*?p54cK349v{V%iwP9?3dr#34-OgjM|L0!G#t!U*)@ia_X-;B+guuZM?49 znz&)xfTD$$#Rr#dT72D}jS_q$wf<+ti|B8`b%VgKtHAU9zHtdPR|<&YsK6=TRtaC4 zd)W0nFq>H7fBlwza2~_Zba8RUv&iG^Ka830Z%5>)n_d8HV&ljO#j1V^Js1H`Q!Tr3ip5#`3~s#Dnhn z@lLrJoxtx%#@Ck-ixo3J-isi4OfLd@kU1C7n0{i*YcUq}^V3&{3`2F}+f3J>{h_V5 z^@AG@8HIiMH?+m2>FGS$e&<^`d(u&!aQ9H?#htNkGa??t?*TYOcDS#K**(xzw)-DTt{h6^o^yp zMRMd_J|fbF+EF_tHThs0+4|7>e%6D7FKS9SvqKI8_30;0pZsY|0dT(YxMQ)hShVui z&W1GodJqh5MW#x)xA>nf?O5Kp$fDrsZ4gSg zNeH2$4M@A!EzE=@=Zv^kkzGWJTr43-Xg-;Os_?!GD@_X5(IoZ9ZRn080CEll^r$ z=Rv9jN9^s@l5jCrs!{lhTUx#iH={H1ke%UcE59)z@Y-);hk-h~F+c0tSY0I-uj|Kc zjz0{RpzOOPp(g410`Iz-ZRb1Io!|BZ1l_r>{5k|B3`tuEMGM469a%z{drn0E(8Nrc+rO$-}-vr^~;kM77@tyX;J~b!2rDBrOxu0)h zb|d6C<%xRmi;Ze7<>K2_SDeC)7(<^N2881VNQu62ww)L$D5tnvl40*UFO%G}!DpY$ z$?&I$VpEyowc+kQ+3)r33F4f*97i*IFMRrwG_2#*t(N!h8+faH>3p%EGyCz>nr7b@ z88R;^i@{a79Y5gi;@pu^shy~F5OG$wF~y+ktnB!TW02_MdYP|!wW1zcV9GwaMK`O8K|DI_2y)w_cNtv{Dan^iy7)fids&DYwC)ez_l-mhJ$1%fg6;0WC3a z#S3C&pb?GS5L_eB@{sYs`Q`(03-%n_~uD-_S%Gm_IQ3<7ZCR4JEF2+@s zgCXyRStaKJy>u=}h|=>6vuYU%Z~2g|Y}@mlL1o*0F2aHKD2eu+2QLhKYJ?NUE${uA zz~if6UnbCGAQuEf~U0q=H4qH^||lVU4&{2z734bvciv{s(U9?!F13ru-hsPPpBw|K2Wk-uW1!Y*{IKcdk^n`<$yBf*kA=D^=S;9hy$+~z92 z+D*2QS>5qr^K1;rrKJJ+LC>j34h=9I3X*`md=4)C;rzx zfHgO$dULsS%B~H(wXX0CvYlh->E8o!qi~VTd*Z@4y{zZSG zAn;Ed7fPf6o56w z4?N(>Jp?j^#|)oKecxFDE7%xG=7s(gqV5vNyu8)0I9WE~m-HY18oF=5pL{!NGb1=R zijZmgYHfrexjuGj(Q;sBi#(v3E(7OnpSm$(&nE^?fD!UOh`3bt;g`m|1Iir|66V9~W>HgWChW*d#@ix;!gVI_$A zZwCXC(gqLA9Q*DcTPfRiGYX)om<_1(-S^&!HA`R4^g(Uo8!lEXv~#D)zc?yrw-D8$ zQTV~P9dqcKm&D!;5nzdnOx~^ifyW5QTO8ady``-CKn{G1>xM>^v5BO8Mkw4XP3h=Sn^FI{sT_i(wa0g zhsJ&-Qjup@)ym}B>MqD8K>w<3>`}LIGwm+eXT~|>9UjWN&jV@cjTNnvs7Hho%f&X&H#4H))l&4KEhD+YsOSE zbX25zMKnbxbG}*+L}&e@*J>-mR+r8`-Tew0JmuWEaDxEc*nz{_g`!XTMV3$J-8BmR zWl=r3J$Lyo(cQtSTj~;!OAWetRzWBvU8%bRcp6u4y^vVy-%Q;izQ?IF3 zHJ9{zuGM^h-S{tuHyyUfmr=%fS@-6$_AO=arA<)e__ks)SL?gI&B^7(}fs-5BtkmAD=iqYXFQsT@Kg%s{r$bEGX;=TQ_vWN9~CBeHwkQHI$hpqLuw3I;9Z;uw3taTd?78aJ-n6M3O z7tR+79iMGf$-?itSg@{8QASX`E5}hMniu2|ixlI7y5OR%Y0=m40HwwEeLE2=M#PHU zNE!yuF;MR^>1Hj$@zze)QVQ{S-_Nr61K;~KFF!%`0a9)Y#L;44vxY=L;vP|es~^?A z$%xG~Iv4aT__FspmK{TWlOK&ZCdw)I5Vaw9=1K0d1ms?ATyJ6YJ@0MGr&}+yjmq-m zWfzCT*M^6T)_xdejk?8r(MYn-=}{Ni_ME>y-#vV2Gl#a$A)1SU&37v8dwofi@E%Uh zKZVdEwJDVf*c&^d4MM{JG*wQDDmg8-%BO|jQ`)ZRaB3qTTCGTvf5bkii(Hi*dHM{UsLWonwuMpUUJ+)OG<n#MlVk0 zp$-)P*jv4bD$Y(G9@xytFU;J$ZBe~;k9Jzue_|g1-y5P&DahuFUpRE@jINSeR2j}p z;MHzmHqLEDZ2Qf%YT&vwhks;)}#ph!5Wy}U!y%=eW&1p zeA9uAAg<8aMAYC1j%`Q~jJCrFRs-z=&JtJwc{f~Iu<@icFy5eHJ~Qg6u>98} zV3um;sS_o{&>t5%r$(y+GplA^w`T$}q?5+{AWLA){eicGCpRS zaa9o5V7+ZQ-r1uGHzaq3%!4>YGJ~Kh&WY$}QVh4XnPxP+dQ7NTc7&`p+c&baT|kGh zpv#MUW;9W*qW+%{AfiN`jV%9v<8V||cw8N?rgd4K>^ z3?E<`dFl1=_qTDI2AwO|DnqQ*B^HA>V9FS2I_yiZy7^d=1M|7=^scXxt$wCR5P0tt zYC(U=h3_Jlj?50#$E6kcHl}yK3qMhMf;;Co;xHX7^02eqV(E?rlS)q$HJV0A(PUI6 zkUx!u%AI9puCRfVcqsev?h|)X3$pKN=whF(vqFs9fD7;dFfalsbJ9Nwo60;8TUq&L zDY1`rWgJajrK5z_UTS>@Tqd7~_jz||ze(6gjXo-Dap$bRi|5c&ZpGpmp;hx`02SNo zydTs?KKNWpb$WENP>v(3OY46@PJs{heC?2+1@Sz9*-|Cy_+CKfk_uF!2P_w>a}7yH=??cD(JOwNG7=LZVA_L)Rzd zhS=y-7-Q%rMyciOWcy?LY~zWJT&IG|i%wz9W?ddNK*V}L73>JztnU_i!cF1#j``8r zoQ0TP!^Pc@6CpokKFq$}u67fj3K3rHj~{sDtIwW@{{2!lhxm-<@5Y3AQr0N--m zmlymPX_5BP1|Lhyrq?h_qC0$+7?)0S7q<0}4r98taOo_fCsb;ze|_!O58^>d%WDO@ z7Ba#W8)Ta;!qtHcl38}?r(T0-qg{{Wd z+?GTK6}I7=7Vk#1f8X>ShZdwZUzwYhKi!$E}4a#eryv4mD zs2}auc7MO06G&tpLLEHC8N9CSlA?U!sYJm)?hoXyk#Mnn4xj9e_!e*}clwm@nO|r- z8~i)P( z{0WKC;d4^S^CEM_1x|4WzYA2X-*_BMCp|#CgXt%IwmIdOo&MsNQ7Q>I%=Yl>COnIW zFN~SPX?m=&m)Z&~vdGJ|H`fMpP*N@ORGEN19By}`#KQ&g%vHL+w%P)GASUFEc)moY zs;r20XSZsXy8F67{lU7{$W$q3`2!b^5Kot%q~9)&2ZM2~fnU0IXgx&h!Cf_(;x}f9&u%pqyRh7{SqYoxLnU=YW!WM1VIPe$%2owMC zM9|0m4dnQ^F-&vKYT$QRr}(qRsO4O%#N<776@bDy8I`Y}lq`9hfCT*l}F+ddr*cW+_6bC_vt$m?pBe4|v3_NJIi zYpxp@R8mUApSCyqhv014+s`34;aQz;tp>*&XG{bhoe-M`wGVe%viE0Mh!=$StZ}fw4#4{+p&0 zi$JkEyFC#4D2W!2NAsZ0Wab9fX~4THZp5Lbi)Pwdv(LdI89C|}H<9zUU-n9lVd%YJ z`5wum(=ZMqXc4hg*RUJy+@O-;BIx*<6-b+XG zeu;ue&XPIbfv?ZSmVgAK(WUd-!`{G0NCoI{anBFV?YrF8u|p&L@Nx4rDjiw+b6u8R zsVtyy%)ECi*^WxL;@CzTL_4oIHpJ>dnk72EK{xIkoBXY0I^ll9i^(iLk?p`}5`-TV z;lnM-hr4APOEmaY_t(7}cZ>y*0$(*6-ER?(8csjmaNPNMQ{}I|)8d@4URh&e_OkvB z^>0F&&bttc&^*I4>CdWI%q{;`pF}vkQ4eY(_`1pGOHMt}NjvG6XdvB zs4J!2Z?vzDoDL()N4NE!GmY(X!n)@hMmTT&GK2x2roZ=iNwKaMINaRXq{+LAV=+T*)Ml}xO<37}|n zT@K&tAv% z+03d-1M|!29^;q{TfS0r1%5sWTB^~C67(VXtu{t2SPg7uUo9w;Z<6Pe0*XE3r(Ncv zrlrQ7odFygp>t@Wu`~Y^6ksOoCs016qXmLFjedUUKJmH0^V4wLUNs0PsDjAJ$u-y+ zoLOq4e0kpd#IfXPfvQUrh~?|~WnGg!&$1JKO>}tzl3!{y&2}db6k_qK%jA=(R?u!H zD3W@v8oF~!oP^4Or~60qT&oUL)rNj~9{8>_7yzA_V5`#lbv_t*8@s2u6BO~puU!<$ zNn13iOMenn*qso{cd4Gqahu%xm*&UiNmJ%)v?gtYOBHIuT;N^5tg<{Z~A zOrE>a(R@s@>uPi}psed7Hf_BW3JqIX+!(0n?OGY4p>z4U4SM>eFtEyZRD!gzshb2_ zLF&Sj9pZfnsrL%Fs(PRQfPsR~;-`yiD_G-p;$1C?_|FCIHCq^qKi#!JN+v@2=C#ZV zS93U1Wy7ED-w8W_?kTPjo1?puvSPm{?^Yrp zClUQkgRdaY(I*vAhvp|8Q0vBR``8$HwTJ5iF~^}s&I9?0k=!sJ)=-AgSkA}7C{dx@ zbr!qaPH=l)M0C^-kbCej-k=nxds6(P#BROU-rG0CJQ?Bf>+QD5#_TgyDnzBn8yFXV zPSjpLtg`;D?U)pg9Tu%1y3=Ye@+$Hx@x=>{>V z&-JO$AES;!Izoq-+Q=VscURA?xVfRf$)D-gemEBisFhR@u_Ga&<4*mWMl0V$ejK4r zdL{?)OGQw7{$M${-!JJ~c_+fxLJfMK$R(1(h!yO~eVHk5-%CAtG-BkJ5M2o%`OX!$ zeTteuW0B?EmD*PZh?GY z2B@NVhmR9EU4IkT*)6IiS$6JuOQMSDX@J^C7()8Uyrhl>Z#>lOH0rqGOk{0hkec&z z^`|rfME>ZWTjOklF*Up6IZwc6R57%a4pm zf4BgOOMa?{=^ecxj{2nKO^&OSUEMl>6MHGr4uPpA*g%{JoAc#Qe; z(>0-f^hdR=*6!Ta4bJJsfuNx5bU`^z3qH`beVFBV%cH&ZO3T}c%VLfL3i!KSS*?Uk zuQD$4##w50+U{4Z5NV*B7kz5QWtQSvE9kY6EndrT>Y+FMSMCt-23;D%|FAtT%6vg7{nY`%&h}an2&s{ z*AkRGnfaMKornJ()tJ;V&~<1oMVn~7)#+)2`T5MMp-=Ip{}`#{ctM|5ZD)VZ`z$Z2 zAWD?nCS?~-xd?Uvw(>AMp4+^t^l)|8nVS#-Z~JGr6zA>j<(&gvt7w24i>$NW=O*mf zv;QT=6(vL5!RJWCWh~4F+_lc%HdYb=g&TV;51l{OcpJ7mZP~|sd9?S!QOx3Gt0(>?+$6`Wgqf*ee3xmNNs887=id zWZ?N3mV5-j9eP(uJ)FgR-~hZ?y4NY@Zwg!J`en1QVAGJaCvoW>Z#(UhB2ef zQ{HMt76Y77i32FW7;T7X0L7w*{`s=u{fEcOj1d~q^O2#F>g4UpLUw6lwORE*7c=o$ zu5I_NXSDtn>w(`xqTPVtXcFHj{jS<7(EwB&R>b1yV_N->9&BuuTfV&4_F9kEez6kl z=^|5Cr!g;h;x8vU@acn-2mfaIZFl{2UpXevd*o;E5v12gjQDPJ&Dv)>D18W(Z|WL# zly+|cE)3-#-cR=HAz_ggk;@q&&D{HYw>(0KH|kpTnaHuT4asG(flp!-v?0(dbX2)VH8MJMWi zgBdW<>SZk_G@u#(V6<Lw^6DHBn2Fw z_y1QJy#aSld97!#(<8-Lnem%9I0UeOrC85e@kUIKRZiH-hbmAizTsF~iC=Tp#y(6i zh{+d|bE(sS=6Sa=R&pk2tnFdQ&+8la8@7j;6)HWx{bV8ex6aPxj{H;7za>PXwOV#*8}Po`TX!CcmOHao)ma_Xqh7jwKG46rm=q{4 za%XfT!ywLU;ud&S@eu6L!fpS1dyDO{eya(sB??Oiq#iwYK7WAb@#QIxjE67Oo%GA9q-81)f8IyIP?V=w7DPc zQk!~yhWD^8{_#hdnDj5|MZS%Y_wkZ(Sy;V)Jkdu6I=3651;_p`fQr0wOeyzLj`9^1 z-b9In)&1zrLR-%;#v7Y=u83XT_%iJ5_=9V%HSV3;mXnVY#d@3es<~bY+YGM@UtjJ| z$l^xlkRatQevS07*@Lt6^#!`9`ENp)LU-iV6Ml!+lV8l;ec-yHlxXNQkkhVK?KgSq zu^0@+NrloO|H&CiX_aK6q_*ho*H+*P>HqsGfg*q=yEbFR2uVX_!|7Ug!j?$KeM)MJ zR~tm(+`^tNuFFYd0#5M#$AnEeR%^D ztx5;0HF3jLp#-M7)4=E{(}nyaxAaQxAG^CFI$1k$Ye7U*X*ANM5x}Y+4{?%p&DO;W z{bJw5+>cDc%k~MLzn_Cxt(l0T*76JC(E=ttPiB1s+cz~`RWkPw1#f}WKfk>1r%Zs1 z^JG-jf)+3GmgI%q{da}g+_UE$-Z4j>y_i>-t&v_+m-uRGeT=Q$A?5dqcirAKCe-g2 znrI+=>I1VV9tpUfoV5~iXT0bmVrb4JG4U->QP|1)+pwbcwVNgKvZSBC+^-y)wHR~i zvsg_;4~z=$sX<$->w`zE~M?QV2^;hxY(6P0c3 zW9PMg5I;uKy9E(fU$6^S@lU$m4&XYA4DJIIA$J_3zXr3;3 zB|nOWx7ZZK)gC)o7fGcqpkpgbFZw^@_Ww6SFj^?!>9UbK%DoMVb`S*=A=3}r~9*a)1 zbw!Hi?EF}BnWr-wuGa78Mv<+q3EvsTxF*pjSvuv7cVh~(WEKVDj#S6|v>fm@X?bhTU?-LR_%1!n3lkQ)*P<0P)baP%$m$-eX zT+zH^^M@%%p-a=D!}`rMrx=TFef{|jcM8eN%>J9Fw%^akFSV?{46q-g1LkI7nZKXU6saqz31J$q8+v%IdfCl0y~)+%o9 z`Zfd#uDTQ6wk;$G)`>u(H^d2{dR#gN4yW~2Ppm1+x`ak9Z)w&??w!!#Q0Lwoh+Jvf zGH*Z`Gh6-^C7r@&zd*&Esus0NQ~|*c#GKv7CZzYd9MiuJNIOM*L{A0wf>XC|= z$CG$o=H%|>+Xnh(zHu|!{bNBnt6-t^B$iazZLiDeeZt!`1YQQ4p}7>F5@dICtvlD0 z;k)&@hb;-*iw+e1`1rJ(*eic!#%#@t?|)XV<{H zJd6i@s;^sS#U3o(*4=TAl&Z$-?qDw+-O5a!51~GLc6mvow(i0MrTDLj(nf$oQw@FL z_DUdfz1-g@Ue@t>Kqd#2*DLe7pNl&99;zF!3Ay6?B}pSYSM_9Kr^N3qW9?+j+|u(x zTe(>O>X|IcE&On@u$FDw$^Na1ti_j6rwUockGFdR%4xIO1#h|ckwdF4m;oKSA{l_u z5m|uu>Q4)Q--)$&%CCw^8E!n#x-G!K??tf1fKKCWourfMg1Qf&l@kuIh?^#o(n3)_3znzlK~%u;26W2=7rwttLRT$~?WMt&3MC z&tBzHWS39PHr%cKAMWng$9BNLg)$cu)WrNEH@IpoHKV0VELl%kfUp|pLT(F=DV)*ZH0oqOBQ-DjG{^Hh)fPG7_{x89n2mM#Kh*clY*2&!Ul{}yFe_-GEJd!TTb@mfc zZkr$iq)AWZ-7{L@q5V3ZuIo$(##Rp9Dl!3YF!Ar@j1ONNOlW%IzE1A@0p7p*e}b$3 z@8-8uqZWSNM;NG1YWh#{OZhD*-BtE3s93mF#u&aQR(bkY9`SFD3j3N5pq6|G4cNAL}T`v^@plj8X`f-!c0$>W&#&-Mhla{xaqS_J%8;|Qxa9dZ>@2eQz z9n6@z3cZy1KWd#J#28%ODq`!b3KtfcWQ}(S3+)&P|6jGec{Ek;-#*?zky#>S=$JD_ z=2?!+Q;N(f^PI6`%q&F5kj$BtF;j(7N(jl2F+^l0$B?=2Yt#FAKEL;Gt!J(0x4u8i zAJ%rCefGZZ*S_!9eZ8*h+JI1HKkQy-CBzCkd2g@TvQibOCsPjdHU5Nb6nnRw5@R`6 z6H31CH}Qe6(&zWmQGut583b|!MifEh?Bpz{V_MDeFUtv0p9=tT-l*h;)w+_wSOy#3)ZFYW_7m)cxH=i*H2{<+0_zbb|+0b`tT zOSo?{9P7Wvvieza`2$vp!K1s2x9W74pt1GmG}?&XJVLR(EjS&D0tn6@IJfiK`cNDt z{=G#F$7LhNp*XA5CB{YeMvYPsz)J767KeX$&O)jdWR|Duc;1kgl4JDCOdpuW#Q1Ku zv#HwckS+e{PI^OCef*CKx{tcNmTYKG39n#H9B9C(54BPhZxO-O>7$88)zPvb(YmC~ z@0-N}tRK$bVO4J3xhgAumv|yacFS?YbmE0CR014E*22y92|DOD8h%Qfs!omvJ~)|A zeat3^8XxD<+{^MIDyDGu=>@4@f1y!P?F@D7TuTz#&>euopYGDix3zRmSy4nnq8#(V z_^J=&!)anBl0X(v?o|zGD`m<)N@hkOe=DHRJ;&v^)@0JjI_j#p0H|2&?4cgJ?;*&Z z<42*wNnpfkwjU!7d7(aHH;(G5Mi$Lbr?|&0DePZ8qspouc6rur5;`g-LxszqDlybK z3?0&&v9-QkPMr9f=17*D1ut$`b)#=XI z94}ikNy*E3{ob=D)55Ys&-dlBDXLZ7E6cS)Nu2iX*@^f?D|90CX_Wd zoGI-)MARl{T^9&Sec@6oZcLiIbU7bM_bKJdNB}9L)Z>@=0#EsC)dwG~b2xmpKicG6 zliuxArTZu1nY~@Zvv>DVWf$UjfPo0|veU{?e0|n3n)^@){~42~1iyORtYC6jFa0TZ zLkd!F35^sB{*8VzA89|%RQ|YZ{rBjM4A)+YN>=R2x~i56#T06T8fBFsF>Io&#^hkC zw#D(2*;frG2^35;Q)C%8z`^X$7l2&-G^W<*am6SzI?1WT&^-R)v-ii|4+8ZTx2T| zRvQw2rWhmb@o18`Upb?=$PF}?WYS4ypuT)$A~DqvoQm9$pwkoDEFRg=sMR1sHHFi40F4$Gs=jT@a}*AXr@OUu*P#Eh#u_EMhd7 zw^(|nz$(2VpQ+b&@fCn_r6bk0AfW8(>9w7nY+W*ZEqRUT_DFuNpoN4!F6w452{{db zem|{~EO%P>8K+1j$N0FeK4P55wT}#l7ah5b1V;SdM5nX&Jon&<1NRPi<^?n>LsU<@*N_wY_pa7#XaFS%`G5~^faP*7R=Z!eIV91N;LOPxyLHiaZhi&GQKVa-e)(?HDxQQru z&Z>S-1_@ZS=_^-Do6GEQgc%g%e*x_@QTiUld*KM-HM#G}U0phix2_*;A&=bbaQ45A zfJLugTQr6co)=1XL?B1xv!6j>K3_baB6_Z@aAzepz~RmQdRZzU?IO-ckW>(91nNq5 zIqY=wg@urai9HZ{zu77X*ydP$;OzSzp)ptp@h|Yb>pT4ByP8m+bUV3qi!u8yx#yo> zWPfg&`Ycu}{}M=DI2E6jE&?{gEV6zY3FH@7;RsZ>AY}lcy3s3bPieJ0APGmS{LPh4v zsxjfAViEeGN&&`!VJZEoFjpkU$4e>ww4&YGhj)Gi!U2EAy`P;WQq=Mj)oM@XzK~&* zwORDfS8*2q$kc2yjv)D+q;AfrPO6nq4krB$#{qJGl#(DC{&kbo%WAq!AGOZp*T|&Me=frkF5`j%?G|8Y145@)ukz-%aEHbw|1<0Y@O2NemXs8!FnhmP zj9>;p9)kcly7&7|9&c_-5fuj!=;#i{b_mY#HLNBRUw3l7r_ABZ!5zvW<%adng6bOR zZM}M)w7WuZTsXs~&QE`@`E4?Y5-wd}$2%G+wQ>C5%3!uT0d1W&Tj{yE zaP@caN&W_FpgP>i0`n`l#Hq%n4}bd&*tn7PeP6sPZ^37_ALt#9NQe?V*;1KFb^?l~ zT)yq<2VEg|>;XisJ+X)Eh3uC3aHhdihh4D`7d+n(%k6kx(KJuY;OyVQ?nNR`q-u}n zF{&)n-?Hd$Dgz1iqLlr)Z z%!HNY-)q)}l8vdkySY_v3sKLqgYe((gd6kdv@S7(vA*E1cOcn>4}69wP16xL5C476 z^iLRyB5mJmjowhfPCwwbA^3aA7VyB{KG_Ou2tN%U`(e*Rtq>YlhrLNXqdV!*<6Lzh z^jBtTloMAd}PW!W|t7MN`?`7QMqST+4)`fBcMXiMVhVnpztV zy8>a{Kqq7^TEBx3TjMr@S{f2@vPi_O+LrKUw-lY>C*t@Uai8Eau7?Rm2XW#We_b+C zIc)3)jYoc)=kUVFP>FK?6P}HDL8mc)IqF=*(X=X02>&6eJ7r(!8<)HHBkVXU`z-O% z82bsR>2QgintDOt${295DG?NeAl%6}G~PDyG~mUUSk^=q540AQb-*vtblj z@C+i2ebiPq1)`8E*m@|UrGi6A^6(31GW5RoN5qps%4cIi0NLMlGs*f(UHG9SyN$(6 zr+c+?WcpI>ZNKqcOhKe8LfU3PVfp+5%4##t=*7u8fD=IL;-QS;JWiu%dW50sxCZff zRs_>^(8Y^Fe=w{DYX^t|Uqvhqp}2BphtIbsUs}2A3dMuF(O6o%`(Ms4A{6Q@h45_O zvq~1<-kuF!QT#|7O{4N7vHjf49m3nBR_7;Aa(|>W2JFxbD9X3oFV5GIx_5qK5Brko zrZ8&@WVQ?mJyEqNDPpTl(G!~L)!&_sQA3D@k6-v~HwnGS4B*>Tm#3@_7 zGE>Kk18wdl5g)j8^Uo5u3x4?wv|38HyUNO#IKBKZ9jF=pZXc?)Kbapu+e%OJ#LF}1 zzMmhbojhx!TJ}%dvDsO}2q_-?z=w@wXaW)1U!(4&1aqV~vyMiEFeDiU~)fh`Yf9CQ30Q zL*%PvluOT+uwgoNCP&Hab4La%pG=cxh^gg`E+$15@QLb?rK^_fL6K#efxLJ-D?$Lz z<45=p&@6TU75o9Cs5`AEe|a;v56Sa(a=Gubg{IwxxBFZ2=IJaOyd7$U{T4b+CdP70 zs4yDcPA~b0?}Gm75@1qMG|I!ev=>#h8s^@8Va&CR)Xz7A0>S690&DG9brKfALMGxM zHkICYruWb3J%5#BPD5216YOH{UTv{ZBpZpYalmru_(#0p!E*cv7gOf%`SK%-kHxY6 zaxc>*Jk-y%v)M@zEz^QlXKbB$8JCiU6w3?nc~MLJ)9Z^xxg=(WlO*(Iap0^X zxgT|fZ+^+hF@foFfKzZ$ETEKIGl`Lo-LP4EvIWT5O#j7v7K>Wy>$g>>5W5#T37+gn zM-7$wfVcr0*SJy=8Pms}YFpT!uAI6ZTFmiC7*p}{H_Q;&=QzxeRa|3w)=ApIOrP)QW_ImK@t`?Z zK`3mRl$15>*KU0eCYyMt2dt6d5-Tk~D2B6)n%I-|2`UDsJ0TME&hhxdqn<0bhE4=; zAxePIVb0h(`%K6vsW5N8dHHhwq`_2hi`aUV_;nWChf7dhZm;(08q%#dm=50VZb+#K z-g{*`vG`R9+t0Z3(auwxqfFqo>$MNcjEbf)OIPi$%23(=dph>lynOM5k9ArwO3(JC8A`@p@$pAH&4%D{q94?nP2n*i)CO6K_2b_Fo@;4%6q( zQr6r;PD@dYWe!{Qc^p6~XVV?of;wfS5>aKfd~fAnN<6xrfDVYx<2**zocaBmnz5J& zemKjIKQFsU*-INacyh$xCMFhYAH}1}>=}0&M|rT;nWyt|95-I+o{e598urIeo^17Q z&P6Z(`U4Ov{Z6%YtvY5)ynBMDUQ1?+Rf33Y{d))P_I32#4mwi7ro6Vd(}ou8iDhFY z!#e#}tlVJ5@>y%X5y1LDUhqx**3Z-v;gmm!B{At)^kHfN)s>qv1}T zH*x&xZ|x<-lZ;*cG5G@;gC7}Yub=wa4`dGime-|*B7kD;gg4+yY3#8P^rXzDFh#N! zT0Be)R+?Iu2iu;gF{i+unRTw!7XC6`3E;)CPF4~0baVrnIraW%8@Z=$zWV*K;=qRW zw>F)#p}lQvW%}W!V8^?F3vf6k@X^l`r6hhEtO;VPsijX0XCgU zG)IgKvb}7ROv4Kl8M7@m=+5zO0)4R`H$Jwx546dyKZ?DBA~Pr7BV@zC`?Vg)< zS`f3ieL?P<9mTm2qbAvW*KL*&Cfmv*+om-EH-~=2)yEOb3NE(2SzecPnF^mnrf<{4 z$7`C#4c^!4kkz%Vp>+u8GPx$^CIFP6&-xEe(D3n5m?0DI{v$3!$C%eym-F=+>Psx#@)8+H8( zj`dT1|8y%=NrY4~DMG)HqtZTMu*GP<%Dfq-h(k{fW(#StYW>MxE~MwWATc2(L)9#C z>h~r9^taxHQb`1bRo9?!&~lAfq3>=8lb0=4$_eMvkPKgA;33VXXsRTA1KbYw>7-LR1NFGO`K3T=8OefDrp8(-RNXx@kq6Itsd^3 z%)q^wEMI=hCyqC~f|n-=XiWSw^X=XR2D>zgs<%$e#9G|jpfjNj{`Foh+Z&uN&JJuQ zR@Lc6NxjZGJ~g{SV1M7T{;hQEAMk{${4i3T_Do}WZK0FxWC*EcLCgHZ%FCi>j-5^_ zZl1kFhD;<$$i(GsC+2uMDS&$CHpNb*?3==2%EW*>4y*CUfxf!t0FM8eR3RYiO=aJH}Gce~FAN_DD>WS=ykk)KN z4oG!tiRdoDrbVE)I0Ek*p$oaE^;fj&b`IgE;vBAH3!NHRrv^sARs7_Lly4qPiyo(t zvc{JbSG%Mseb`xKo-NF-lL-nJt$@txUsr{hY zTcRYLRvWqvzM4=#`@fowPtt}2tfr1V1|4sJ$k^^r(ctkOcZG2>Q`RpWhzXRR9qDk~ zW!TS~1mj7ueuv;$8uj0CTz$Rl*Lm~pe&?TEt<}Ub-=_C{?qjSp0qzZn4)UDPeF`g8 z0^+G$-UKdkxz@Og%1uaFb&Ayy{c#oQDE>qU~%6~7oOaT z4~ZgAi(5_yo;-h{CWn_isyiRx`iQVrJLY@xoBaC|{Owu++dVe7o0$HrFj@BwLjP_Bl= zbL@G9>I858!%s*mQhR?!Nmg*Vel=!mGF~ftI{+7-i5^p6*36I+_tw@*5#myfori_v z4xa9Uk~rc7kbKcRXz-0+-Ek9k71Ueh470r;GR1$TH0NI9Q@FuRDZgx~dPV$*<#`e7R}trS>C+*7pelAHITKGv{e9>_aRfxhUev ztqc=XDm~D5pniGW((e2zY&h36uTc$pQQe-Yd)(*ZlNPrHW5U+%zR7ndf7MAlw#^Pr z6q~r>vSz?0wHAqA?u-l09Euq%@6AzUO*UC4D8gI%p)5>{HttTTXYC4gbvJ<>gvX5g z`;_zcr`Xba(^+vqF=HYW29g+;^=p}5yIZTzkJKzOS?a@sqRq97DV(@-((vead%j^WiR$^9y#Ou`AM30tQJ7j%8UcI(PtbiH?RwTk zpP$?oDRl*RPEsevf-m^u*j?;#o7P;ueNF@X%6Pfk5Z?3(Bi;Zv#qga4#uNzsPIBkl z!+D@ci@{mk)G!)U&R8f-tPZl_3jsfd`RtA}*AXXNh0<2H1#N}6DcTS)KeT&nofy~5 zv~KjCPWj1yC%>ItM!-)Kp#$NZ;Pt4=X=HI0_Z&#v*`6;;C6n1?j$Ame8kYVVN-=5i zNz^NqsTP^>1&;BBqws)Ej8tO^?C)5CoGo*z~n``{1MNLeh&;pL3a_ulF_!rf_^$2ylAy)x1v`OOrolZ(kj8 zWw2hyNKu;qF{~k^PQy$u%UqVS2qY z!Foemes|VnWBbc`uJBzx-5PJ{ixG2`lIvLIjqwE)=e0Y24|2>ha=-)7{5Rl`<$Ild zaFHPQYPQ%?Xow@H&z)rG@}{FH!OrS0JW0A8^=n8j+3M?*^8EArvnORY<=w+L(6l11 zty3sm)y4PMiu~3ndgDwv!mIC~zT`d!P3S{CksDHwKCSFLw=7sFhlk@-vOUgj+3Ladw<~!9y(Ri+ zY=1404N^D)oU6n5gcTsR!%ZEs4Odq+-=pJ1LY z%ytaebkQ^=HCCS!4}|cXzUyrXTiCL1tsmDy5p+;$Hdr>r`$wqRq^$-6p6^VjM^%(1 zd;6&e;3pr37nUx`>g@HRWTC)+E9PGtRqX#CiPit-jO>5@pp=sHxI4!9u7Ou~o>px0 zZ$Rv5{<92XE;pa>_<90We&%%&LiRwXea=aJcr8Do z4VcAB7%tqo^wC>_q>a3dT7?J7h5y|0!*mIIF+3{MwUV)En}E_#I&`M-HvY8AF_PI| zTOb(d08;;ivI!$LT+m%QLL!?76PthKA)8gts0Y^+*fDf7XK!|^@h5{|8GZSh5+jAi zE)W73zLE%}tuLvgFU$U={(R*3@N&P-A9n}lu?PPz%s6IL^|UNskS(IW10jRe4OS8g z`Cb-&HZ4J34Fc7nS`=o3=&MIA4i>C`Tm_yJBu3=@%+E;>EaACzJ;@7L@B&yJCDCI7(u&t;QsZhP}#tqbMe5r2QMBCc*N=nb!-O<`8~r0&)KkNpY%u@uVahz&u!<> z#qczd!EVNXGmDTL7HY2kYA_Y9uhKYUiDpbW*@fSgAWXt@*0{;x3~)Qn7bMTDN5z!R zDMD2Ezrz0Ou|z>kcr2Bsi#QreDW=xcQK!7G?A-#CCrMj;_4)QG|10#6ZOg1haQHZc zn0PNJOD^7gyoY-oRZ?m>>uxYrTk~4^wJk>M%{7&tdsr(ckT40hI1^2kVv-(^XVCRmB9P@f`L~)dcai=+8 zx4CrdGrdp1{%U3_@Zy>`c4ss9pKis=Zk=95Hby_2W%r-Ia-C9L8*%HDwl4nx)<~Hh zmOFoT0{-ypZ_BXex2(2B0dKsaR(}nHw=d+>0b~t^-otEv5divFeX{1~_P09Sh@U=85?0 zZ;Ch$36T@38?x|noFTq_gu=0*gn;LKOWrq-VO$9xnIEL>5OS~C z3m!dCx{S=AK=4Wh6Ih-@`OV&ZJ16bk+nymUDM9ZBvYC%E9J)$5ll98y;8iI1PJ*3c z0!NUh2(ya2CQ*aXRn*&DWA&}eE)gxkjyHx=H=M;uc%y#L_=BmIVShJQV6-Y6FJdhh}3>u>|UYm0+ zy14o6lDB{D65FY7IZSbC&i3}a*|<_{PG7kox^z?g;~T%7XzDD3G9#dN4PBQ=Njy`n zDoJVgxTU9VZBcMxRWe@0@72X}tz#_`jA}bupfm6CMmxOiQL?ct`OPD#*s+qAAK3W* z78g#+{geg}l^gxnkJ4bnZIv+1LX4X=H+!Zp&s{p-!??hy#U#jwHb$FvpTJK>eGs~s z9qlUS(`|+CGo<6}^l*C_N;SzL%31RtiPQyHB0ZrLu}OZnyrLj*6%aDJd=^ZE;e?yd zg#l_UTNIhjYt~Hj6tVk9Zw%1SSCH1y+$mEu9U9DX{mgmeQrvX^!1p@H+ury@Y~TY0 zpp*YaT||AA@+g`Auj8xw0qgo*z04s>r?K_9ESYF!UXxlO-O0fqjbZM(u|HF0`)sZc z)#>XZ>#KfyT07R4Yn^BTg@HGgy5g~6pCzk?(tCXyqqxrQvjf;+FlW~+g0Jqd#G819yNfTu?{p1xsKTg>F()?%gP zl#kz=f~Xdsz4iVMBj?v=oR74^j_K!~d7XVIM|MJlkSgmnEwda4^l60FxW#6xk->{I zK5H}1-gULt1B{kfbmRvk#w*y%?92<2U42*VeV_J#0g}XQg##t0GUR{qF2a^>6d18N z4xs2~h)98IeeFxq>{aRN$V%1~=VALgDe^=jK&moq)ESgZIwx+(atBuKq^*oNk(?CU}dp z!?klyi@seTEnkuduGw}ok+FO=3)T7oN#(Z+2W?eT_c>QTMm^(FW!1=+DB^3lkNXr^ zFLTkRQdV^QcHfE-6u%e18tgn0jpCvIUReHz!UULio4ArYk|e#InX!5K;CJzqFQ@lU z@)X@jfO)ul(?6ZdZTa!OQrAyN`L;MG~L}mgpdjv>yw|WM856_p-XLzI@3U%mvaJC zj2A5!?wS(Z(uClfI=0GUX z#-r!-X|T95ChAUJ-bY>tv0Lj2NP5TZsw9M1v&#Y+>7$uKyg10BXbBkzWGJM_uYxN@ zbO>3#%(A2sorbZl&UoqIMq~nX&@Wz)f~w;_na%t z&U|sR;`$+d;(&K13*&p86NkR5@_{618nK;xtZ+?DY1ra|D~L}|1hn-Q5ww8uLNm%4 z$Ov6yTKXHR$ySJ`wM!%Z(Z8P7C}I)B)4Jj}B*M?jLt4;y6qhM@hDb-=z*=!b&4R+xa|&2Okp(sfA-bt{54B7*1~0Ml zW6oyd>(RNe#lssH-f{+|iIj)(PkOK-Xj#|VGxTzIEgl{f>V_dg&mF!(;R~k81kAYm zUs7ZP{HZ7^S%QX06Zl0C7I=k1AH$GmmQ=Dt-z^>$?N3#fvkA`s zSOkJkj=s(5gJ_O|xDCZhMUXKh0yu~GRVJt_CAe3qsRK(wE4!s9-|pyrsllnKlRA%&q9T_dhq*VE?+bOp zw4Ij@Hi`NU5Y7C{Z{9y7JBG^?DEz-xaLwh^`{=iSYfu3A}ROyA@zLzUVi9@-o698$P}bkVqGVGO>+#mYlk z5}rI%D(9v7M#$elt-f-(P`$4N&aoU?m`;$=3W^ zj7d&CD8@)%kH)zyv;y6KLO8Udj@om)p;Kmu=MESSFq~VcoLz9kRV;j58mdQWEo*94 z#Mjvqxw}{$lG0}I0lF}K`F!-sOb7jYQudkxhxuxUa`)lSrB1bSMK4#fTQlC*B6O)I znJ~p|&-QnhRCs-uvl%IGOpVU49BdUeC0?a!IOIspT!OR7_#`>b^MKS}VqSvofCM&5 z4ou+#Ql&pcVeIR`L&_x&G_Jr)&cw5W$xZ+GHR=OKRUlB@h}y>;oc>b8s=yfuJOvOQ zZl#xvQ8`>ikcTw=!HE;0Z4ogW5h`#F;bt|1X&*B07DAiL>r%su!obQa8&NoTk;9YI za8zQPosRauSjR})bvXLW`V*zf6Ct>qZUTdYnG_FrZ~U8laz|uz4ev34i}){Y zb0FLh(T6Svb|k8Mm0=LCyyQv2i-gA9sxezgciqDa0b7HeV}y6%-<=8tUs#dIoH+|$ z5+fe{GYm$apIEl?;I(Jk9B}lX`~g+QEM|4cB8z}1#(bgumks1q-pjTBRk48QCe{F~ zUX4G(Mx?zpo}&Y(J?&r_LD}YW$eQv?um%T4#0mhZa9bg7M=E(SDmb>k@uCAv5!*q` zG_m`)+`+Wj&i9Rv1_MGUfsbJ@yXHMw{nrY@u~YetzzJL{BZfk1kR6Ae+gF;i>~~I{ zcKPwGu448~!({Px{AG);wLaMHQ&>ykGR?r~0 zQ}HhK84M@Qv4T%+HL@iR1jzk-Y}CXXgT+G^-zCvAnDB1{taZ?QXE7Z9s zBGP?NWZ?(KvE!<=d$Cfz`1FoGRm!!P)qDeBm|HxGIi;B*)T$2FM$|TjlPXmjN!(Ju zXi-5oU6GyoH^iAmr)m!%0xQ5Uj$@@d7&cme*D_vIV5Lm53X|Z2L>E>ZBiOi3CJBw( z1@P5mF-T6 zAEo5WDmjG%;ZpuJCaJsRTGgoZj3I?Bq}~l5mv_wumKl820`TOys&+z}0JAqZ0c?kILA~V<9i_rb=321M3_eHc$BVr!L z&5bJKz9B(g6gclvkv7Wbt9XQHDs6snK;L)B;>1d!)64hO`+{tJnDy46EP@Re4ubt< zL=$HSQQsu&3f!5y^Tp+gXI866b{(ZPFrZtF zd)1au5|e_;EKUv~TiaGiCmoZYTs(X;ps=a#OvT49OJP(PQc?E!!)X>_mF^sim1Zj} zpy}zmHb~~I68==*ua*6{(XU)Wp=8elK{VC)7zTww;o=saH{D2Sp@$bG^2}UZB*cc- zZ(KQcAIElIY9PIuy)&bx`c)gJ_Yrdc2L* z3@BX12almEl#x;~y@w0QbztebF-!2oan#9GiX0!9VCIfXs<|Yx3~&4+Q4jd!UgTug z{gH@5aN`R3b3Y_i&}pm3*7IObO4c|IQ#-P5f#TrYeI=SvPu8n1G|CoxQu%NZQn`t) zzg`rNR}O;LyUTF_!h->l zsjOq1JS8X;x82kmZt1><^(wn^#ibSFz5&`9e_m%+G89?Ts7b2GNU{i+6LnIHsz|MQ z*TO3AR*xe#2x`Xj72_x)V05bI{QCyRdw8$_NCDC5 zw9Op&-vmJt5Xatz5by&p!aN*0>s2%424SBe8S(RAl{txI_it5%1P+PFX}kzsIq(^h zd4R_ZRt_JA;KIEY6tWsHBTV{0uOlL3TJVSecBtOLDgL*6jQ^$-XZ=xmYyS_Scw^`a z-GR`D^}A@`cXYP`lCat9wFH8f@+WSAhCSi#|o*cz5F_di#bPzRngN@fZ3u!KUx z!o%%Y{4j20m^jK#!j^$spj|9w@i}}p>rWr31JuD50{$TbAW%yf3Wfw94vuy(1f2e- ze;Ai7`8y%P&H+rYoXVH5q%l$8(mMcrKpenr7#duG21odxONArc8r(sJhl|)$HiN(i zPsbu)PIfRyaCnBZ1S9vwc&J1|Cy|2+iW8BAF`hnu79eLwM)9SRKiwcOJ7@JO z)PrTpaQ2_OT&a{R0?z~-zyMzUWg6(h|H~#JH=IE8lLdIv9h4}7feDT5(bF< z&2C@7DO<>&Nt`GU2GfxQ#rnb_5}D8visoUkco^DAK=<~BdWFMe-ZD8I8SY6_5WwE; zkyH@p7%w(asUpf8R7!@*DJGB$=OVml9%7|`n8?A0i(~KstFc^YWDGmPSw;16@DO>6 zX;QjEf(i6wN!+nW&@77)1z-h!bRyRa#t1{fo#+t?NB00Smjoj~-Kl655*GngF#;qJ zP%2FY28c*B27}?CjB<~X%Y;~#CmtfiIeK^pAtF4OIA3=dpF;CeQY0{jF9nKYD&bCq z@Bo!OJldB5*bx;*W_p3|aEY&n0tcpZLMY`J5t zJm^Vbig9Ef6ST3sVWdihHzawd;MKgmWDv2*Y zQUsB!qI|(49gwsr3i$Tq@?ywzIOyUR$dQUDjv{c05&A@cps5RAo2JQWa#GfoA? zFd2Rle`lG87!x2AMG-I@w0BU9lQWd&Am{rM2`GU(mEwbC!Ua-q51h;)ND1a*C z;KIotLLvEz9Ni<7JT45uC3qt#B2`cj-zh500nYLviJ@$~FU*gnpent@?oNzAF`X(D zupt7PP!8cb(g_fEf`h_CM&odJD4_(%7#73Fy3>>@L6{Rs;^)hRE9LIsxG4kZbfzOg z>BD7XVNn8@nzV4GCzM1{A7-fxA3`S21nBg%y? z(|x@}9QDc+ba!Y30u?4uvArV{D89P@;YYwB1D(-9?tTI)&q)*^jR6CNeo8;4Jd!G* z@S^$7G(Uj|0u__OAqoXWEe&FKz=Y^Xk}nG)Bs&GLJRQ(9x_^Mg--9iL3If8#;a&u& zFPZAi=SK?UWT2?Afq1sJC)FWL#D^kPBEA^!$3ZA*C5MLEtK>7>@Qy)RTk|D&3Wl zUQ~Z~A=aOb_Ga+dGN6dD!Z0418Q{Z=4`a=54%7>3SKOP!jLene+yFLxYOM3xBw8_-NN(t)8QDPnwL=y0$N zVO&N8UWVrR3DqJQz!M>3qNsu362?JdRlWoojD!mhkZ@_}C<(+}B?yQ6dr>37Njx;wU#^x8 z90v`@sHBoW4-y}XCZM8uPDmmzOc2F)#EAt|0vy4H3OUaFhzKb}%AzWLF*F&46zPMG zmPM0bQ9@`GS}m9ofdE6J%RLmrC=V9N$vXf%$C2XiKvH>1oV;N?xd;J?68oYU-c&rW z+i0ejGTZ?ZLlUu^#bSvkl&-{ac{mziJ(?crr}9C%N2%}>lAo9=_m{dyF_aNdI1K9V zFBYTyaWH~28c!uroO}W9K*vbXVSI@f7lxuc`O*}D?mRIP7U`(;VzV$psedFC<>f1i zRQb6>q|Qh`j0)$3CkmlZiX)HigK@$;5jh-bpqIqQ3yY!$#E{TTG6v#^AS&3B0GgAx zqqBra@C%Q0VEZE342S~}C15*22{HUAAp%8KFUkW!IgJzH^?qV(kiH-E;MmqD5 zVa^l>oYFJe(UUAeQLzMyitPiFpd$%BOg=Xf4d)A)0&hBnPl=}C5gr^KS_r2j$#5P6 z7DWz_1tL8HA<`&Mf8Q_<4+j`nCJR_NG{;jK!C`R2J&+PF3ReO)5KWB<0-p#3Ie-!) z_NOqz2y&LvlcEyfd?@U2oG^y1^l%dLWc~q>Dm*gE$sY>LGKEN0K%5m(F+_|=fsN$j z{P96yVbNFz8buU9_7W1DkX&ID)Pdv^i1e0VWFA5x-6xDn!o#DYg5XdQUJCS-z?m;o zIHLoh3JN<~6^J1RMF?SBzLO6o(h-5AtJp*sC6b}?6mp%2Q2~4of(LM)T8}w66VYr> zCva@Q4~ZL`+@jgM)NQBHMFbK)<52JJC7=aHNj`D*kf+S+8yB`h( z6b=?c5P12aNsd854lxltnp#-pQW_m0lF@iPG$BG99_}896FRD(5(Sb?2ypbK{}vWP z6d&R4>%j;hp;ZwKm2ITg znh*u`i1vq&334@*!I4xrl0ORtLlD`~Sel1tq!8&#BQV0F#SnZDP&a6{QpkckLX;>J z3xnA`0 zSO@elLy2TKIrHQceuNiaCFP>S*qmsrKZOQ`#!%I!&4VvNIjX-=3KdKgBtl`8j-(ir zkF!kfE%t$+qZCZ0#EXPfiG3CB4oD1&9wP;g0yYxKlY)n05fZGo3K`=_p?kC3@k$Iw z1%WcjEWQ9r2x5}`A)X2%HNZjWjSTY#y}3SERS?(9$rH;{vZEt-Fb9}tSa<+bDUKvL zddQ-j!&M#}C#Nt+M0AXorj`?LB1p(pmne`A7BZ%Um zIeOp}G6j)=_rUovfUkhYu^ef`v}4qUXlK+FqTy0 z>4OMYz*q#jQbDA9NutSYHjAZ_IdH<&c#SS_riClvVwg6!|Dn&T>48 zBEzu}9HuM+Oe*0~;p$VZ*53i(P-49#7zB~-E(H2mfMB7BA`B)-4pU%6@+d4mM&TR5 zbq;dGL+NVE=LHukm=rY>Agcvg3RVec1$lUdsevj^<>f?kr_u$;@JLTufFH>j?!xaL!bAYqj8H1^b zobcj)yL909Uk@3EsgNvrr=el0f%iZKC_>(6&uR#~l{tQDmw$k-UO`F#{OgqRce}#c zAL^LE&-n(6&CiMSPVo6??GudRz;(ZLQJqT)gFI}m)>Cv$%vP4SpS^shORFI8r4jS0 z|AMpFLdgayiXAxovlltA?#-HyRUfmXnvNi0Z(=3rgzt^HZ@#UDeaZe9$9WxlqM)FF z@cHb*&3j{CSsWU&mhZ?A6yx;2n`vn3x@l+Y|`>BG&oTh@@wc|mS(-n>1l^Wyog zr33251PyIdjm;ml_2F|D8QA3Am}c`?cje-sNq>eWxJB!l^3EF8OL8tG%v^clrbVG* z!wfLucXPX0Lf#o~8w0rJo!KbE@NkD26Z4&(YRWq{GgSDJ=C)&Q&I;)6+WPg~ zngf=lv3Od0EEBDsJ=$Y+!ifup6Jt666^!JJlT|i(wkYKa z?CRB<^B4SH9H3u-(?F3Q>?{303B0PjuH{l#JA3bi7n>1(R;;NTutOs;-=)~2S$iQt zn^b%48hm2DV^#@yJ6&SWrEoPDQ8w(v1%0kHnP@xf4xW`Abl~Vz=QQ1{ge_b66Z3hH zG*E`oU+*^GoV`|?WV8Re_rw^61(?s4kv3YAP_Es3X5Qyd+F6pnEYv@}NK>1HaerE; zHCDTMl3?_Gr{I1TV$EsdVMo%rpknmMyGKn~9gW$m+OKcZYd;%U&<47ld)JrfAOGU! zPQjf$i|T^&XDGWHMa0Hw**7h?>0n_K483RyHi(xoWS56=Xvjhk&aJ!RKVyMo!zxQ# zj-+aYf)KQwJ~4hP*|^}z)tF`1`%k8a+_OxJU3JiDarMAS*NFv~>gxd_ZT8>eanp3l zbhjOK-*Fb7YK2hot$5|qp7Yqfi=WsAn~(1=Y`nYQqP@SpAXRj4Y~)>Pc?)e0?B%gi z+luPOX?+zf=^YotZfwWOaouIS2j&+yT+_P9t~WwR9$!Aukh5l^N$0|!Ijn6b7FmyX z35(A7#E-S^oYz&UEX`W2jC^q?$-tuRcFF?72jwvzpWc-4sqZ(wOmUk1V5uui?9_c} z1|dz+QI1Fcqgq4rr216rD2C?<#KQJIu9f3@O57L4mX_|Z5-an#I4#=$lB+j0j# zX2Q6R+KEPfgTKzNzuH!*9GZ=acoO~Sj3ps$sh>f_=l+5sN9`T+SCDP`O33*{e1Asf zkyE*w==U=q#~)zn%keZNe*AR}W~ps(xy>0TUUS}w_0|@h=B07nwhHA-zXxHvf+voO zo2e7vr(|oGuRz%wKFvX3$@p+z>(!}t22^^&$?mtWet17s zY(?I?Fzv4dY3d&I0Vj9U^l8PWAGKU;d93F((eEB^&wG$O)?1&xED=>=@tS7bd7U#Y zYs!+?3&C-%{4=iczka+rC+;psbm6x^N>}D585Fa2rIpQtYzrz)p2Z?`vD4Q-9BA;Z zm{Ha4-OZ8&mQLO9RM9bvn*VPTd~sU3S-Y@nK5A98PERqKexSIxt~ui?$>4Jv*~iiq z+BA~knx5NNNW3~d#hTZ0y}{9)S^l7IU)_Se-eV_bPMl=@)05P4a{LHj*vRyh4Q-e9 zB38Lu9J^78Amvi`tH#h;L(@qWl?M$!n_WkTYHi4AGI-wFKb^D^H8k2SU6zQ45@?Oh z8S;)0T(;BVxr_2I>-<%58rqRS@4Uj!<4mF%HQPy$sd`#1-M3q~q^u_g@-f>U+gRC0 z)zik1@Ye&3F)Y+prn=hOFbDpc#A$ijn;v?8vEtcgkKLK&k7cc-{+-Kmc&d8Z!vPM1 znFhAt*#B(7RyVtA$%nS;$bvRoE)Kgj zNjNd`^i06eXvWUG|4Wn67c~8!T63wpVYpiFPnps>F<(-aMxs^!r~OBFTE^;T1(|Ql zo>rg-W-GUUbcsqiNgw#Rps`h09Z@_!Q8dEd~eIZOxea_+3c&3{!} zo(nKo?K{=>BgmYmHFIV@>aQ)+M}TFuJr{~s>%G08MOb}(*OZ67?4< zdVe8t%isA-1)$~h4cvCCv`=O{#?Co%^u&A%zs&v{|4$?|!NaC$7vHm67yolaa4k_M zP;SsO!AD@wB7uc`m4FNUH$rW0^VWe;k>6TZ{Syhb>E5>maDB?^vqnA%w%l8={3-v& z=)(Zv4G#)753HN!yT$aS`M+^@Q5vY!Ns9xMmnGy`=Rnp>ut#Ha1~A)eR;E3N6g#-sOvi7*(vvx-$Wi?Z!Ci4$o zfB-qWxv(|*SzM}Xy-d{Oww4k3M7c_MqD`%(e00I2M^ z(a!!~-#_|{J^xQ10CIZ(LDf4qzAsviDvkLVa#1xRKyVuuwikuES~A|eO7&^9&B{6& zR-buC)1CSso6vxM-7OqpB)!>_!XAG606&6BHbRuxCL7yRhTb&!JYC`>S!eD$dFH|l zR@jLjYLm9jIOO!$myfw^c)g6W+Tx2%`3uvvI(&~!|Hp*W_JI4_n9^xks4bJv&`LRH z4y~k~HFMv-H2CK2-Sdy%-n*p8W8aZYV}18*Tw}k6Bls;RJZg6@L_)1y6`!6hU0Dh& zEh4%<03qtQur;TRQ1fQm%Ea4q@m&-0q@mTm6hH;ex&>(W+@t%QfIT`zDGYkhVa3VW z2`Pnlmx~Gg^&4G+k2f_FbJwn4AM+$yP zXMjE;G$3tO4Z8^|QBj@j^fNmRmz^yrs-~}3^_@&1Xrm3_M@w$m{X4T7n;pR6xt`>1 zM(GeCQ-kjr*{wTGIY&PUU{Pw);b3W1;I@+9LVXALw14No)OS8$`n|0srz{-PwcbL7 z4-5TT^GW1Mlc#&yY3>_>Rjr?9T7{pl9C&<%d~W?!O5Lc#m63+tWLvHszs2Z3CNBm| z9%0Zg@=P=~J% zAV+ok$<;^p)nAXf43xFDneAA3?0nTIJ-R)RN}IZ%{D^Ya+(rK#{?lO1$EHy$Z|}-O zzT6FKJ1ng}vuE|7XY{9M*NE4xLYj&f{q-5h<8jhF!N07`g)9xHy0$#T}Zw~7if&-oVH zQkPUH{(F4CdXAosjU$g=r@?}cGJ+cmw#X*`&z?;K%(m`$*U7*7rnzI<-0sMc6T2V% zV|QK%5WkUKG0jiA)NQC$$r1nBG_Elu zX-+yFRH-O-c~@9knf2pc=s5jJ#GOU`uH!?lRigxMufc`;l^tm-n+#Rk|0zrTHouG zIAHOEt$bIQrg{VHN;L!i)5Q8o+rjC`@@>E4t8P5M_SL63{}$V}7kEaSAhVt_e-Bjb zfaw2gbIW6DEz--%UKMk8o1QUnM<{22rj?7_uI@VD)GX?$UZ1jf4LxOnlef6z0&2~d z$5D0TBSN4)fT!WNrs05|!SW*$aJgR$sw&@>}yQU)F@yY@(Fkt89+SzvKeNzG=$MEkiPH>Rya^ zi3Q5k;Uwl8Ffgj!p~Vq^xXkzaM_WVnJ(tv{+f!Rl`A}n?Do<6sJ(hf+S~-CWeB-nl zwNn~nb)iw$Se$vUxT@zTjhBM$Jzvp(wxGf`f%qQ7;?ZpzhZ7^7Rw|zug}lBV{&Q@k z?pR4?4dW7v%tBQHV|0;uXXeTJQ^p$x$AM0@V#Dp%hn7GFTcUe=bhC0&A5gvyJErug z-r0@}*4r0wbK@vK2h(ealELrqYJRLO{&=7L64sua*ulEG%0o(- z2=*iTF9t(Ol@?4&h$`eRH?i><&-K2tMmh8vi{(E!hN)YXeJ!?$Fuijgp%!s~BmeB2pfeq!V@ zAs)HU2+ona_umU@e}QUD-PzH6ozQi#VMl{hoc;l~SNu&`dM=9}f5N`A-)f!g8*l|3 zIwP&FM*xdj*L2Z!@CqdM>!-jCXg1cHWRqbFO-OpkAAZ zN`1{9<>t6MG+|76Kc<=VkxHf()%;Q&C>D-*?d=|ZcwHt(>6zG0YdE*#ehI9iN0xSb z4m{GRq2ViHRVYL9%}b9<&d3NQzKx8O6P~6kZAMSk$avACHnzO7Cacm@IjR)~@RF*J zhkJf-oEiqdnW0a0_F8aqp}A!atuu5deM4gw-xF@6oUYs(_D>m`&eB|#cpI}lzg=E* z32V~%Jiq1owKB7%s8+#;{7XkJ8p0#f@Z4R*u*AH&Ap@WFf6kBF$W&(o zxU#W%UEE0f&V9>YPEXnT=<(Us;LD{)jy^~Z8WL@;JY~#z-DwiH9sA{6(e~HVN!0Gn zH!u7XJ&Z)Mu`n$p|qwjoZ7#wfasPOl%n3*p(8pY33h+2ZFyW5gV#3 z%zbm9H?8#e-nA~sdD(047JfF)JPMiReE9i?fobaw2RCLd+VnxZ^1y4$;2jM@WoP8W z?@NcxcwHk$VX=1>MiEQqIbGV`x8=)V&O%oDw%Dh00| zbgc{~d=2-0^5m@b-8ShnJg-KUhNclTv!3Xlesg}^3UkqYJvgha&H6ZPZ)l)m>K_Vu zq&y}n)%fhd7OQl-^=CH$6J2m;N&ISQI{v54qbHn!3wPf|yeo4PE;E;{6V^bDg!tZF%DBpI>^YJCn{s0&|9 zR?IxhTwl0+?YU`~<|7fe=huY|6>SEJnbY?dgg+?JNfAL(7gRR7ytA=vO8s9)NZ)Sr2JIOPtH-Dp-6c?+`-VQN zk5>O0DJme?UGeyN!}Z4&>7%|`|Dgj@i_NC${>-)&A(b{Li&;qr7nCerIg}!eJ^tcg z#D6^lwz%~rVsAFwG7c^LQ1vB*ONCJ_;3Ff~FXeq3y;PIE`km+bv7g^-#y3Xavp&^k zyf){blezh>?!gs2ec1jKBcIn5bKp^L8UqIdzJWmLmkXPoR7CfW|Ew85wSD^hW9KUe zy+*Dy#WkkxkWB=%0ls>+E8${ZUr$Yq%Sao!9dc*k%M%|j^=t~R8oal%e~Rl@&CL1B zJPKNqR-!B(*%BUNW_}z05K|*$g?y;~{=wt!!ibv&{a1T_o*(=1#x-=2LZS5!bP2Gv z!123=Tdcfkos%BAiAKs<-N`=;H*(c9PJF#()>>cp9Ww*fe!+oJfPqd_k6tXYL}PE3 z>1Iwfw7NM(?XhZ2P`e_p&}blH6JIv%ALf1tuhJY}jvEw(J1? z!iLRRQ1-4_PH!juw+Xc%RF*R3u55pbTL>!ZO?J##wae)ARB=4`PUPGnpG||QqT9YE z{|zwZ0iPo82HEH3pl(*r_^&VhMZfxs+OB@A?w<5?KW_1vUq5@s*JlGXGoqdRKPWvB z!0EZu1@G+;hVa3hfp`1dXZr0}BoB&|V}IGkzv}r|^(E)G0|aYY&Fr4j`)_d?+FBs? zFm<(CG`#3gUNQ29WpwYe8eJ2llSTZg@$mU>i*R$-PHebuAfWCn){#*&IL&0ib3@2t z;(rlteYL|lZ{{@vw`OhQ+0zsM!RKqU!|iz0gNKSvFUwJwD|tto($_U@1d-IUutw(_ z+)KlO8k^M!R+eU2kJ0qcHJ$+N5r+G4wx1FcW@x@i%#R=cCHVZ}R)1k>V@Y2REi-g{ z?2+KsuDSg{&*zsq@=q@Wv_)QSUHNCU=^U;554DbVY+v-;06c!rn$e)>rZrzq7c=ju zMn)gtmIOWujjvL@+K;OQu>Zr<3%w0%$n>p$h`#AjE9YW~Yr}*QfUmcTPxj6P9*K)K z4)NC@V8BvW%=Yw=nDW%=kBwToCL1XS|BepW4?z1aKikG-+N1~(|B5>xZ00q;zuvg7 z0ry{T3tf5y9t=ywMQ1|Y`&==|CCrdbP}^Egd8=N=Z)j>mq_ zqBh?Z$9$|AuO550Wmd&c{+FlKao^h#G$*zB;TE0Tv+9F$bpM%CXKTJ4uJOzL`JUSz z`l~mT9-((~-|o)3)MZ~BxLsxZsy&ADsp^nPf66=vTKxF3pE`4KCRp`;&l1;=`)Xhq z`?hQ^WwihED)zmDi-!U_L{BOZL$UbyH2nV$0(Tj`VZFgb9q#k}6McJdTu(R4=mKfK zDHR?1H=40?d1`JQ+RF%w*;V%R_GW9|u7&n3P3q`IU}f)Ic+FUQQQOfSi_gwPzS<{= z&#GF+Zup`GKo{f3H;vp|S#)}QtZ3Ye@v}Ae7yNTPK<|QAclTpn$e+rkdK*h&>m>ja z@5~)+Irj8qUi;78^I=v7FO?xsN082VqHo3c2=2@_aAe)x=dsVp5S~4nnezoY?z8sW zE0*Z}ldIHoAyxGInXo&Z>C>{i@N3kkB2b;+LC^X5?b-U~jGoiyLu;ywPeWi@FRDX4 z`lOiN;4cN|E6(;_x~=vp*lSpy&66RtuP004W8C0!ksmcQ?&1OIPqrTd{{v=a5EnJrIu(sEoS1NR!b)*8`%nyrbLBg&`@=vd+$Lt%!w-1}K4m)ddUIOltW?v+|3?vY{cuFRvImC7il zUFK(pH`$f;w0Q%^f5p>lGqg?}*F;FvU$mApKPu;;6tJuT>BSEN<&hT%&O?>q0h+cFZ3q_x!@3ltflIGp49@Fm`-fRT6Z zqzrfW{BrF4kUnDh8SDz}0BYaoJj~}$&u3n+ zp=r7;qhXMf7VxEL;6OQRWqyOslj_)+b!jkzBy->1H-jzn7wz1!Cx!KD_`7P;JKNLH z#WF|2CabtpJ@qcw<+Fa9x_I-1ys)J#vu6NZI%TOgGwptjTsouLm~_Rq_kC&8hfz|Y z&5x{st6wa6s%~g%z7g5pd(2{5<@u#oDA8 z^Vx=V7h=c1_cTG94wR_;ij1%IiMMdluq9JpYtg0A2cy=VD>3adg%MJX;O9j9D$c1V zT~pqYh>gv3i547K^T1x5o3y8_>U9QOCxsIBdT?Mdl;&b0- z6kVxp?M61(u2Z2b5^t|tchH)bl`UTJ05VYv0CRYGu-rB|55MHu!({*Lx&vbDYf2d> z5o>QJcFw<4dD6I5wQ^Bn{&(V!`_fIv?W%_TEt4M=7Eu`J+m~5pmK&|aPW8GOG~Fr$ z;r0!6f+@{zeb->ij9`>Sx6%Emuo?isQqQfUzc25Ke0ccn!&u@*QrJOUvuC#>faz1S z0PwgHoQCNVNAI7SX!S1X)M{XzHaDt`372{&3+%)Zo$&of`4^uQyq%uXSnX+arakPn z&HSw4wZAw$drnO`amDn*Qg`OG8x*JGCo%IA^WWUL9=2mq{?m;gs~U2RXS-I#dBtC~ zPpoZtni&i^x!W4r5R^e%UAOOTMCQ{2{Hwi0>A9A4EuH~`v$0{|pep&a(ejF%D{s@k zowq;eDb+DN8g{j}khUEwy(WyYPH=cHuFpJD53@IDmY=+Ir0#qE+tlD$osntEX+T-) zCnSKBP6}ehG?U;tt}X4amtGvGbs6nowu9)>@!NYA9oBHH8EA;wj?Mk4c9On^El&C% zes!Wrt1fLp=h~&olsJy3{o)Zu{c3lnU0X{}^_w;BtzOL;+(pjrt-qqK$?f2VCnBpp z3X7`J7QTP9qxn8z{?d2mR9t=eIoZRTmEqS%PHJ>fVB}?^b?-i0{pfAB+#xy-ed zfi6!(T%D75sH$a0S!S=lhJhsrcg7hcDEBASdBEnT%~~_;dwo^?NsZSSJr~%Dp@7^s zsf8uVhs0!`9w)8xCFc&RLvs4dHhafEy4`0>d1Ltu;cn5*ajEJh_B0-pHt*9(IWj4A z$YT8Sl5sy9ZTeqS*p>m1(Cup!Ht~tlt1eftA3jTRE$aO8a3bom*cF69{v)c51I==aFWW8-a zKnejM+DIPM$NslQb#{LB%M~N~hw@Mj0sOZYM=iBcL%>>k*wRWo7R5Y{5d8Y_t^aXU z)43_Jm488>Hb_1iy6Kxk%}h`hjMp!c?I~ZLZY(M-$h6o+K1Uoe<9V+c35fpIn_loS z_RXp%9lwBe4p4gns)37-+TOU1fAeVjGy$4xL7FKg^l9-IqiukOn`;|NIz!9y_S>?? ze>9C3f)rIz2na>oybPj=jt0=dA4h@2P)LUzZ4W;;FIsJjT<{XAI3SYqi1xQxpz(Z;)Kt$|L(do*!5?c(;6z#+9WEKxi~i<513;cTzvX%KhlPo^k^UwPggjkT zseGX8l~#h9v1gQO_s#^$@(gJ`^T%8Q4K@j2^(p$oHtocG?6p0&0)Z;;6@~6ttU5jR z7Uz1Fm7GcQDcLz?=0eXB_+a7uf5+l)(FUUg>@&Gczz`atn59*IUElA-|G*(YZqK9b z?vhSH{&?J7vmHx~wf7x8Q>Sr*^qXP2IUvOURbPi~nrL-8e8X=2<>=-P-6d}){3`v) zfD7{?l5R~?*Y=#VC03PQ(GLg zN&CXiT=D}6uRBXV{vD}na@);F>*Uld+>$tWa&}|=o<*x3Di6cof|SGU894gioa0T9 zL^2etM^j%uxmk01HGH-6os=r+HQHSqx8wSzR_*;mq#=d(SRytp(Md4Ki2$f~Hz z9v7x-=`TN^VZ37wKE2#*Up83ds#2FnAcnGVi6+z=w)eLiij0sP|hjUC<=yz6^rJw)XRw1b=j zZI68=>u5F9ukd(~J4@FjzOb+E09eB8Ik$i#yA1R|Uh}lj5BEw?_RZn;E^u!SSbOs` zGAVDTJtt^7$faKh--T3lgam>q&SJ~w)c~h1{AByzR5!>i-6bY$BXd{*32x7|Gt#$N zoDZ0S(#@JQW#;M5Qf`4YIUnS$v2&+&^q$n%_~pZI$4d>`flv01^IcsL_BVvyej)5e zR4ob7} z`{D`Pxxgh7jP$qTtAOvgtTT1EK6*QrOCs(!8{IWy@KoS-tK=o=Au9fh9*_}gQ|HHl z?mMd1#8_;>T>CyIsDYcBc=bcY$}q&K6 z6$x`j!9cj$BkAra?Au1*#|uD;qt56wnBUsK<4l~Cx%>KfO^T}JOGJ%{TYCk2V1AP3q1fW$2Y7BM>wM_^kNLO5771%?p7LMw%!9S zw8@)QOY2P&apj(MJ_2G@;z%{d>%uqBcBN+@HMm+j2HEuEYkp$> zBKu+-_wuWcAfIriEDv(WFHnahjlx)=daC2v@2nk#L=V<2TlV7P0fL=h?)S%U77~ja z4?C3dI4k=K*%dovRg_Mz(wr-C&^1jZstug!C(rAC2N?~^`(<7EXPS=VuN1y{+Y+^Y ztY-Yz_jZi&`h!1gL*-vpbwMxY8f`v*{(Sl5;&4H7l9v7_Z*cAxDccrJUdG#+e?`~H z*v)6n$ic3PXrX)aThZOY-uhIR*C(~ux+XNwwLd=HsC#kl5<$}=h&6KjP+ngORTXwt zC#Bp+`VMBVdHQT#F|AFPP&fHrT6M7Gilsq3JKMr5{%n~^)BT$bz%e!n*1PE2Jim#O zOF3^>>`=PboH(q6)}6R_S!l^~`8lV3;GI3})%c*&^w|1p{rwPob3}n>f7{|snlWDI zGgRfDFW6FdA1VXJ8E#Qq$y&!U(?62OPmj1zCpuw_wAyD5gO|KL;u^on>DTKkbAL|i zo}SW&J2l@VHQky=v}i@2`jDe_O_xZl!V|^Mf`zYkifkp@Z_%IDxjH!N=0V*bsFEaRCG7^xRYj{5Lym#!d znfEuHBfXD&KC{Iy!-CH%lKTLA1A?f81T)RVFjm^5xU|Z> zwPCM!Q#0HUUa|pkX{7zz^!qD|DvyQ4e#S(DdIH4tWwGjvxVi>zaTH!}>d?9ajWh2y z$*gK0Kjr33h21)Cgqz4kS=`7ls$^`n<~0v^w^_0I$d97Y2>Y2lQhX58No~M zH{`HZmAT=ipWA50*%57$sl&FQ(0znOe~<#-P8^9FNtXV>jH33K6Wr!?-U z>+t?^=2C3GvuBTz+lkmx+aeb!a#im^@&TQ)$68+w6~$uW z-mL2Ji~o9KN!#oDhYvR%FYEB+R<&drc8;-jO^*^e)i=KNZl#%!o6Abfo={h!j^9eO zKBz9>yq#%p%WFXs^o|S9U$MHvZkiK$|K_$2HJN!2GUru^1E81#R}Oq(1JvJYO*1K8 z6=&Dj;8iD1xPOyCf5rNi&_GWMt)=ap8~oI9ae42qi)jymp-t5oI`DblHaGo5tK@6< z?{Sn4Z@8}CJ6YeGW&s*2pBTv(*WQ_g4Mv7ug26#dHp4~nDbM9alEuN@GwM2i02nB` zvgXX8jOOn0tp%*982vuId0A{y*{A)JewEB18GSl{5FWx@Fo1V$mu+8K)myk6WwGh- z{6%YSw*)t~X!-o`*304;tKh3}Tl4CELMVNcMaCZGy(?zuy)o6F2Q0z{&8d%%(5ISI z6@^HP?=4s`^mxm!@-;q(Xz)lmKQmi<`( zqb$zIL6G#UeOwy{c{Xb4-16&_L^F(}IeumtWaw651+c%vwCK#clYb9k5lpjHq`a$_)&>0{X^?tj1 z`H_o<*N=={Q6H0aRd1i$f|9n{N}Kd}Q56+{CASz`j%e%zk*h7bl{~OxeL*B3jd@_M zQVkEcFOD02pvL2YYQ*RQ6x>GVJe?a8i7QF>$gtzuPCKja8rB1G&J2k0*T@U&L+tEz zns4V9ksOP}MhiYx4tbA&N@vUTNpJOZ0Ph!E6WQzVtaz`URap<;${)UXUtLGG0yvN@ zX-Zmx(%{;Yn4at-dIts~$MR9uA6LEPt+HBmcz)YGuUhrtC>ixp0?Qr+5JzKYdojmW zor^htbb!$OW1#2PIo12(JE~d(v!Riq`1L>EMwfd`*^kO7hO|vH6~69TLutb-K1cS1+%Ff2&SB5?X7v`}9*+ zLKe;Q@%3E`9=f^dI@r&jLemYP15c@B`nK?UWBPF5bzW9iX)H*5{bQ(!N?jivIJnqe zSLT%vTAO`fWqyu$wWxkB)AAfh&BZ>bop+azR{}^&jo}@ny6(-}Ur}yfSG!Kxd#DaM z?@D#1vG(BX4Pi&p^SZ~>rr^y(7dilfDzzzyWtsWnL0+v6s(pRsVQRB1I{IStu37iW zla@DYYTgc<(mbt@v0zqrq)wJsD*!&bfasa+-{#hB^Tc}}BNYKa6u<;USC z=8kKB)p?(LC0VN285|UG!$enC^R?wmQ@zbC+NAMcKT}r*HGw)Ho6%9a92C&?Uw*mA zy}{Xn?(P0Nks#cp^+T(%shO?!o6Hu+F5sQ1mH{%i0y4Amkk7Xo9$a1jGK0CNjv*~# z`?&Nijs8AxX_avA_Iu!UjK0Pvv7@^-Ns?E?OE0Cbj>qH_mx4h52nfWV1(3nA>1N+6 zOYxKV@t^8f4c6p9V4(Q^m7caz_mo=%`!S@}c*5&hT)Q}m%0CqLzBW28m`E!GhGKnQUcDsF~ zrSDBe(wf1R7kA5~-v)c1Y>vf5+s@}<>T=CZr{ z%ywpEgN)XJ9XD>Y~kO#n9LZ`A(TwKwl`{o$uJfY-mY@kYl>IrsfR^!a^x z#-n2lP?u7Nj{1u))o(@!)OAN+KRw4|nZQ7M8C?L_O3d;ehK0W3x?DB?4VbePFLtWy zKJGPWWzL^%;MCFssxwq9;)%y^9~?Kl8vko3w*dIKXRd9TQUDTS!RKhD*e9_=_wl#i zo;j7{AACtdDzWPVYNtYMz4B6H)#uv_@Ja(QXZu~o*Msz>CqirQ-;~l#FC`vYRzMMG z_-A+DzEQr;vpP&q`z%-#ZAAC#$Sl;$v}NazAeR5l@Fs<3q>NXmG5rUV<33 zcjL*rhehf_q0dqf9?~<*XKl}UcyuKrg5PBeDTxZ1_rkIkQlY*LGVD+;4T2C#@ zoCg~+8&9)ooJ(D|KWSE{|B0sSNg5!li87aGiKVUFjl+)lWqA*-Tif!Mx?5cD9k|rv z{r<}9Ea3s2sM5ifBAe?QOONM;b@-JY{h{S}i$vGXf4Q`?q^x!!oaf6d%m{9jjW*4x zQ4vn)3hG+$X}-ypwt`iOeR&7e>I3Pp(+aq91g!?}KXJ?KImH&ibMEY2(i6~})coMH(NWeOKeERcIex2; zNx7bRcjQ_z$hNm-YYdfqurNJ5uA3#QTt2W_Bk{HST~LmiSA%@ilXy6|%>@KG8=LQr z-v>dvA1S}&A$nP$MEUHyqM8t3#Y(1`42fn0H$Em_ut~hV`hAagb5gX+(6VEe*>evL zY*j5_6a;^Ktl&M`^&94_FFFWx#X10VD)NGI9YF!*&S-d!Ij>@em(ljY+8|}-l+h7o z639TVK}yZ-J3m---yTNp07;D?P$A3ZW=%CQz^l_)FDa$N=V*Px!?(QStP=)6Y5-0@ z0^*#eV)wg~kOxC+U(@CfaY{H`p6o~iVTsHAW>X$|adyY#&6jnz4k}HIFOJcZ^Ug@$ zZy8yLVj5>Xl`JY19*sK#%-MkOmHqze>6?XzS24Rjq`~-s;mo@HN z^7?EjZEBqd;%5#kNr zetvg4M|o}kjMLqq+Bh?1v1xt2cSa!pNkG(Jmn<*j?Z5-f?qS?{a&2+43!| z*LmHFj(uC~mpUcTjK&UaZ(%@P#-}>ER7K9qS8iE19j2in=|Yd)lcd zmb^&$YJdN;Yg^WAB@tgvLk&IGO|q8I?%4L4>8}J>sc`?wI}&XY@^RlqV=d*)l4y&SO zqh3z8oN>kc8KL=dNxJ-nse}A|(8$~4d&?0IZI)@Vfrpsl68C*HP>nnGI*twZ9dAUw zSvb$VQ>{It=fuXTT(*muyJ6^Zu^Q{Wut>P2 zpOmgK1by0ZC=8jHKfQmrbET&Cj7dv9wEAH1*A!UXyZJQch|PYzdKo4S1}}&jXoEfWkFAt|9nWO-pQzk8GKzy?Gi4&QP2$>s;QRXRWb< z^cuWIS9fP`*DV9xZ%FtpEP&}SA;w#SsFYu4#z(;fQN0q zV*)DNYu}uil!Opyp~%NK+0Ms>iN(9FwHKiu?v~I*{@)<|%-$iacvkA!YNHTJ9Ixe9}w9$_ma`5eZtr3e2-#Y_bp^C@5HRhY# z#)N}T*S2YISwZ|eXTZdqcbgq1mjK1Uvc!J74wyI%N1US1)4#C3p*tkM1pDYLgCz6_h{F%@W)({&?Md!&Tnzt(89v=yY18 zbuiIQ0eU{awUm_%UbMxX$}czL2}~4^?Y1Qh9J^M&&f5Fc`?7o0y&mq-{||d_9!_Q7 zwhg1Dmf50Y$UHTeEmH~0ER+&u%FI%xgeWp(%uHs<+@NHhMW)EK5M?ei(O{^^@E)hD z>$$J*zOVcKzU_IxKi+M7pMScpwifF=f8%lN$G-0e`o1b`SLV&5r&I~bOyyTuA~K%1 zdwmlUASn;qKjLEUX=|$;?_I*JaP0qz2eqb10S^6Mg!M%CkvpI$_nuL((s)fANw-Hj~kL7-T*tZTTLVn!YlkH(Wt|WfN zzh`nrE&UG6B%9FNK!s$OAM3uT7fvW`FVXzkmY1Xv3}TvzLV5@We+z2;d(@P4@9zdE z?HM%|>S1Kvx2VIUwJ_4y2O;ZHK_Axqv*x3w(!{3zHgK3~sJ0#y8Bg#s{mg* z>(D_usm~|=bjgU1_F#~L0(>bkDL08OEf#}%;>fp2hlOM*{T3i}0}xN%=J-5P@uGTb zrDNdUp%bwWO%OHM$Hu_+`k60KwD>A_802CgXx9NPnGU}6P1Ka@I9A)K^-I)8~wNGNnWBNcFKopDKpMJ zluOGrzo?jD132!0z=ui}Qn-l@nv=JxqqIdb8)&r~Dl&SvT{@U7X-U?38XBLZUw{3n zkW56lDe@eCkQ1*MhW?JNyDb;hW*1aiL31Wusfpv+DPoXmd80naquwCmGWq?Y2B3XD zW++i45d{!DQK{f1`sqqCKS$J}r2OKna1$$uCJX}me;yE5RYCM7K_UHFkwXFIhUhL`p#~z#*1gnE zi*<{Ty`z+I1VHXLAJ4vkD<45jAZ`2VKMO>xuF0s?V$0W&ZsUAZ-_OEjfrhe#7oFM1 z={QMmTtg($YF{LM?v65t$3GP(EWgjDIz0vAj9&Xh?H0Yde2grNfK6TLYYGzDkh=<- zt3SsVx&Gt=G?Wbpq#4uao<>hY4%gXJcvcW4{9nAVqZ7$=?Ue0uD?k{`IXlIPHeC%l zJVK)YiWj0+XtW0(ZQs^c^ROs6+2H8U9JHrlg4Q_K7U4uAbwowHyZ-*UI7-`dX#sW! zM^0b>jgi;dt2T(8iZNzaY^L;n^r4wi+Riti&SI=C^4JEYSUuDEI;&NUU4liilEQBk z2DJ(^_!I`*pRbZQDuYaj2d>>d^v}z0f6ixPeO)R2)M3K8sf;yjxbd`DUaGpmF)qA6 z1=)UF29`vQK|*fxC=~~*62}EtXX^Vd#SS6gsG$Vv{UaWf{tXX-;TE0=)YbcN_vpH# zCKv0={cR8+ex8tdwJ%3Qn|pBSf-exe9s}1cfUNS| zo8kPU5xQ23UkLX|j5=@Pf;%MH=#*-o%@00>AiiX<$BR&slp!V!+K(SdGuHv}ehJD- zJd=tH+mNlFWq5CR1a$cFaft%0Bi53`fY!O4*^CdY3pr}A1_#9HqU`w7kSfmev32f- z(LzBc!LZ6D7b$KQOI$<9Y<1P%8x{ABDxJ-_&gj3mGUoazZ72bK=n0}NcQjT$7;!|V zxHsy(+>P1J90wCM4@7Qx6)7a$RaGe!xLl~mu9t zSFG@9ouAhCt5Jt*mWa+Xr}+&pDJmDFg)Z1;oIkes#TIQK@ak=&6!Md7g*43?lpa8to9 z{s?@s+E7;ASv`ij@5WgRYBWAYT&`aEZm!{6(MEbmbkoijaYrh2K|dkiW1-#bx&x03IC z_=6AMDR}jQnv;24XM8*FgYDjtADx0uC$m?Y>CZi0?U6Sf1C~wu_u^E?Y7M0HABq>P zsL=4abs{x{wL~5jQL-^oo~b`|@e)?tPBPKBbh!2XAgvl{-;{~%88^QE^HNnQF~U?r z0I?`fca#(K4@XTe=6rZ#FLQ!Xqzh`l4iGmDb7lGBIBtQsM>S_aU$86hF=a$mp%WiI z#pGo4_&99#K8hjNpuG4D(GkhO$hW&dREkUc5!2ZTBw$3F*fzae+$FFaHgvY+VbM%y z&zz1Eu(`jxy)#Kn6O9u{wHIGn=AFW|Ms$1R_2?d2j!8d&)VD%V$-7(}&B0&1zuayg zsuDA8962azI9h6Hl-Jd@N&R~-2QXMJ{Uy7~I*gUH#jmY52=xGC?8dE{B!SP?*WZJ- z-^riP`*X|IcVp__4$X&|y|xaL4#RKP;9a6m1JoURLu>`mYRGG=augnR#RO)`v2#y| zggF2|x%+!tMMdmPZ!-7L{&(TQSGLZ452B3NZa!yf!7G2{8p7OI=cl?dDkzm*bRi4!3=L$ARD2IDkuWT2=gG31?@F+@;Nt zZ#K3eDS`p(U3O^ZUv>qreHo4xt0!LWNfzffVEjZGc)#EFsiDc4%)sS8oe>;+&h-u5 z1>rJpGV{>Mqn2HxgSjJzit<~|m)I-a@+zhKX%Xd#3y}HVxtz>(rBhSDYHPm4YS?E% zH{c~2jXAP8NnYozOL29>phTERYogQ{Gs}f)F|E_P5D;A`CES5`Ck_es>E9n(+3jyv z{yjTmG#1wSAFA{-oOni30G1UAr7o2f4mx!>vHBT_j$Bf02EzU2vk*NzS5q!oO6d;I z>4{Dvxm--UnQ(g5&_QOz%0^;M(Wumb~a;@;x za0^$>oU^rceG8mH`iV}h#QWMKEprO)e_W<*pJgOCbe!Naz4cl?{|7qdV3EFs>b->} zmCX$igUokTwaGGlM#TNHDc&J7o-dfbM9Uv_Ky`s_%di8>N2p8Hn6NmKGh?Wr=utv( zbgf*VtK-O*=Z?eurp!4dj1b!zR;urI3Du}mr083y&pIPzs>`>8H1pH~I(>G3_~iF^ z&5EBXclkU~FON}Q5v#DcD%X|X9*}W;cVX7DU~|6dG?QU~LK#E_`K+ez#`O#dR)GVl zN$tZ7GpG2Y)oS10AsSBjG#b`@%?5*wtl?_iek7=n*%h!;X z)>GEa*CZ~bx^?O@_+=QHErgMFhV2hXDmMWq62P28x!K$K3&>+;GoCCZ_gjQ;Kwqj{ z#Um(VLtL*}3)7TeB8kDW%RN*#ohR6LBzKFo4T=n1USz>83WN1Q8IAgZ(vP&z>lcCdVqW1k1!UuH3{%R4v)4Qw{ z?a7jHEJO>(ZPebJUh1^D_3nAacnVr(l?21o($(FPOro`j9l0`S&thm>(&+R&nt@Kv z{#$SG1iFs}H3gtAg8Mvq*ttW&e7o$h+W)%jJnuF-1CPD1`ZNz zQorZ;k}?L+0Ewtc`15sEn(29=_NuzWc8{JYQOhWs++HpNNov6x9(%>F@Au+H&cf#X z=w_faFzJ@QsVFP=S4|)58yIMjELnMNMngf1CEiaOm&L>3KN~LIt>g4^Bk$x&8#j{c zWYbITg^M9BMCMr386K#zVeSN&91zA^r3M@!oCald+Q<0dQH1Cg!epyFCJAefn4q|%y-fa>q*pi40gw^WpW&G-h4n_KXm?1u zYoEpIjt&31c9 z^cn?E{_?LG%kxv&G!vuqG$cg;;Iy*g>c7JSGZO9`P)65n&|$3wx)nc!QLS^D#bq*y zm?;!*myhK?>#<CRezXiS3b~*U?$xX z`p6G7NgN)&t1y76ikhPjg}Q%1vLbB=NlL5sf5|pw_pY2(yiNP~ zB%}lb+)INH7Z|0N&iVoxL#&+Q3xRhjfS?HWkaq2>+~#_3@HL^*1Ab2t9O`tV<2K+> zGaA>Z;c<>A3GJOo%_$+xGs?NHidY6`wP+;|d7az4F;J?JCtn$Caw>$Qd~ zopA~XDu3Wlea}-7;*pkG2bp(|z1BWu)4Vgr(~#)F5I?&WFt!Ou9jurm02xdBs?*aJ z^6bGhwnNX|ME3@G*qj`Sg;sdReaR35iE(Eu_QLS0(C2xhz0@1rMV(+OjQ-!JLf{Wj z%)tGcNhdN0h3-kPsrC>88^}UC+aBxumfo|&mvxE)S6)?tLlzG8uNHL0D(IBxY+cXD9tPjys+5jG=m;dPLNea?(TH6wA1bMMwtqq6&?6X|ax;eJT4$tf7!5CN<_7R}IDB0g%vVr2Fi6 zy7g)B%X|&t+~zZbp8{1;6QRZ~ zf@^>ZK{|wAJ3xC68}BZw_zwriPdY5<`ZUGF@}hfZx$#F(v3yw^dxzrOu-$(+=)A~M zR=ZD~JH0U-w^y}#_WuQ^)EWYIpg_xm`|CxIA*P{c#FF?iLpCya^gXpPJTx51j%4se zR`}7@h{2~y3aDC!W$W8}muytAOrJc;0@xVgf)+EwVSBDpQk-ya&pV}dbr3nN z)q0sMpfq|95xXk?n25+P9EP6BZ=hD%KW}y)hw=|^3g#|fqi)3`RPQhD_xl}QsWDy8 zIfri6f~e)j+SW*9#VTTY0Gd=E8 z9Sm3r#fW@bbh>YpN<@^L|A7cUT68#|MTNd7M{0k*uS5gAvM6oV?8qKk{Mm-RD5?1{ zaC-sePmZ`Wrpb+8lp`ToW5>~(>4-ehM?A6eou`0r#{&XbF@aaiff;0y*mVg?#4l&c zlM$t8sQ$CCMUCBDnc)NnEe%}ovPI;t`i`O^?qryw8wxW$Na((-?b})jNwZ}D)Iu#(x%n?uRBl!rE z8gw`=T2PS?aO6SCa8Sk*yARh{NO&=3A1~5*R0k>uBflw104`Sp{P{ufj*K|m3AlX1 z9ssG9bXj^MLyP_257A zGJ9?XDaZiw9pCie3MYXDq3CcUCYKC`_tzn;oFWx}0P;#7zJ|uoOd`Lp@D)vA8f^>! zdq21J}ufg05wKb?@SFvdXVwpy`` z&OiYs4q@+KF!4h;-8h9Qn?lqdZ~Tf{mh!GIRCC*%|55Bfn-GpjJ1cahpGK%Bd>=&} zN2L)fGeo+3WkWp~;Q`CsnB`f2q?Med8o@jhcNkR6GZSR?3WZ zGJYA~f>I*w$pQrS3_q2Vl9-qTUHBc zJ2%Pz+Eoow9eyisREj^(@j{t8*tn?-5fZ6R?>UZ6|p?CI+2W~FWEwf z$C4m}y1Sq1!f$@iMa0dfJS$Y>Bphi2h|E@$$2v#bE=urfa-+&eYJjPqDLG#RMpzoq zKctlm!h&eAW#}8mXJ;|kE?I}caqk~vi6M0DX$Yfik!9j%&>sDMA|{}`+qDWDS~;h0qs1TE$zPlSR!A6 zp&Ser52n0EH9VHw1_?GV+!IOES?!b@MdIpL?PdCH-P#BqOzy50v}PSlO~Cp+nhHgP zC3N$Eygy%o$3Ww7F)E@VepM963MGqBl-lf#y7M-+A|zsCb&g+N>V?C2%}pmRt4NvI zr0K1&mj@NfABI-Oh@UD?B!Pu5I(l7<2nsDEXc9gJ4j_oNNB`sLj_MNd2OfG%lDUES zo^N-%{oI`_x!sK(BL~fX|Db(aSAxhNC^V1(U;eB}9~zYgIs3^LgN;^Ngp%P!y?GG( z>&KUK1v&`vS6AoD%U=a4BIf?Lw!Xa{05(v;%ddgLYvc!U^b;OUlj(50wmycl>J3=< z9y>*HeLX58^u(32!olDS4Cjr0ZK)?LPPON~0lHrVlb}oBp>RR-WvZ0Z**D%B9i{~; zl+MNDzo%%OZOnt60?r?S81kmGh*GA3{H{U_2mz9FH4~pI(VV_mw?1gJ_&7WALXX@p z`xpK}M7WHzzkk||x#K6ZF#L3F(TOG(ls41bg_27o5c~uGf|rR&w++vI5`%T&PO)+; zmP?8wC~@p3v6l(sJo6q6Yyr^E{go|nkQ3j1>Wl0;*bY9udw}M9;TME>2^9Tb_0!vk zr5+-O*Z^%q%>cjLH?sBQ9xuN3$t^(puDv~tC?$Cljk7)j({OaB4^hAi!C=pd)~>D2zbm{Yzs zMyU|P(lQ{zHK5RMk&-)H$JxK23e#}(imV?O@ciXIfj{MKZ5mp1@b9&p78Arvi`RzL zGXIa&0`8ky=KUi#@U_xf{BYC${%qmLAQ@UbC~evs{_@#l@F`_}+7RTZ=b~VoRm}M9 zNZ}{Mi6;-x?0*2e*|jyo5HJs0IPBe!{{`{TYO#9tz%>?}Ze5b<7mPpOCha5Lh1FLdn_3=MMl05{z7@Vr|w(6bTpQ zTYEi0^CM)%Xe>(NW~BbMYvLZ&rO_uxVe(b>8ATiAlBf84Wet(j5_%$f3*O&LvnkLt z*;9Dk;*Q?w^aBe*m=TnA)t2R_IxLQ!<>=D7T7y17Y43*;R_8cR<2dX|+(uj&+_8n! zNGbNq=Uc6Hx-T%;2eH{#%;E6@Gjq*jTK_W_JiD+n%X?KE~ z;5V-LM;RL`*C7i;Bz1IfD(nMo*FT>MhA3^p#_%{|dNWSUp1ZdMXTzM1Hpz0EHY$QU z8aovUcmu1Zp}zvCq10U!BTjn=IA(s&ZwV4 z06ZdQ|8wOy43@X?(WhDXYdGca$FGBXbdh!U**G`8m@eDvBl2?GdHa64f>^FlVgHMl`{CEi%k9clN8vHgH;tQ-KhqxND_@0>|Hs$B7uQ6WJi!8W3 z0gErW&*CghT^i97YCm#}*?D?>5yX`Iaj`^r*>SaZbxvsJA6j;z{C+3VDTtRha%ShK zhBIbLI*vXLqGB05QT129K1fJ(paiGcl`17H?yz8V#b)f!8tZS(nS{d)s5Fjk9=!b- zWI#FTwXQ61?0jw$Vo@_58hr@G-{aFblS>_G=l5{__lpt(ckazB30qDZ;x-CXb3=-oyMsCWo&qU6*0oyv|FKnu- z10X1SgP3DDWXeMMs60!Rq4mP00F`tVTk-Q|;*y=Wx)>U`&{p5%%^HZ->%MpkCq_J9 zx^8|uzr1DVw@s>KfZ|Dg$+SLe3tFtj4Z{rg$!i$5%Wn_j%2p*q)#jESCr1!j3L>>% zRl-|u6l&flo>aR;r6fQ>`0ZS0a-5Z{YUGh8P}_W9MN#fBk{3k7UVvEll-mzwF$fyw zfSuuRTSA-E>Za{fD_ELF)lM62flbnR@Bx2jR4x{7{U;ZI;ju|V(~{o<2-#Ko`O03|^_Qs)K-P?@4n$+qd|!3jg#EAhunt~gh$AT4_?mAE*s z*7U&f8Y|11WWT*P00Bg;1BmxrTWzS$A-3V0;&JbU$}Q@Xt3*GYk#8)1aFl@sp=Xy5DL!Opfr@9J zV{zHm8Z?+yt@Y~( z;)1>qA;t+@R=J2cvlx6m2UO)DMZPboTzL;NFqv5uCCNji7$!q4brz7i;Vf^bBp1a5 z)}s$qZC<*3UZX12-k19T$rVQ_%q;4STJIk@vUieakkNY;oR^+T$YMII@HFZ zfAk*zx^iKNcB4tT7ovYG(mNL>hwyoBhjI|bgVLiCfmesvSp}}XiB$Np^S9fM z7}Yh}YLKwTWg5mJh@bAfTXlJ0h_Zds806;d{+AeD8Yue-n^Fjgb7zeVWZ{ajo3b(Qo&PkRPd+Y~4pn)Ukurk1@UR1E1X>$& z(`EnD3USGls`rlRbzlKMzX`OKM5}A1j0bzUg~j_VY(BZ#cO`{sbCn|1Q0eU4N0x@Q zcyoS>Hd+3hK&x)MrDrF@m~D?fz$(ikHmVdP;Sv<;2krKZQ2e=dtZ|m$;K1H3tVF

Jg|Mn|p#+hRxd*Qc7E2yqSLxF})!YPPXS;L0 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 DOj3Lv literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 07d44e0470..55e949908f 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -54,7 +54,7 @@ public ArrayList load() throws IOException, ParseException { return topicsAsObjects; } - private static Topic parseToTopicObject(JSONObject topic) { + private Topic parseToTopicObject(JSONObject topic) { String topicTitle = (String) topic.get("topic"); JSONArray questionsAsJsonArray = (JSONArray) topic.get("questions"); @@ -69,7 +69,7 @@ private static Topic parseToTopicObject(JSONObject topic) { return new Topic(topicTitle, questionList); } - private static Question parseToQuestionObject(JSONObject question) { + private Question parseToQuestionObject(JSONObject question) { String questionDescription = (String) question.get("description"); JSONArray optionsAsJsonArray = (JSONArray) question.get("options"); ArrayList optionsAsObjects = (ArrayList) optionsAsJsonArray.stream() @@ -87,7 +87,7 @@ private static Question parseToQuestionObject(JSONObject question) { return new Question(questionDescription, optionList, hint); } - private static Option parseToOptionObject(JSONObject option) { + private Option parseToOptionObject(JSONObject option) { String optionDescription = (String) option.get("description"); boolean isCorrectAnswer = (boolean) option.get("correct"); From f60db45285558c8a135f0c149ea2e9d15a3ded1e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 20 Oct 2020 16:29:21 +0800 Subject: [PATCH 133/447] Slap for QuizQuestionsManager class --- .../eduke8/question/QuizQuestionsManager.java | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index 2a569ceb5c..b876ff8825 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -26,7 +26,7 @@ public QuizQuestionsManager(int numberOfQuestionsForQuiz, setQuizQuestions(numberOfQuestionsForQuiz, questionsInTopic); } - public void setQuizQuestions(int numberOfQuestionsForQuiz, + private void setQuizQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) throws Eduke8Exception { if (numberOfQuestionsForQuiz <= 0) { @@ -37,25 +37,10 @@ public void setQuizQuestions(int numberOfQuestionsForQuiz, throw new Eduke8Exception(ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS); } - // Stores the questions' indexes selected from the topic question list - ArrayList integersChosen = new ArrayList<>(); - - while (quizQuestions.size() < numberOfQuestionsForQuiz) { - // Gets a random question that is within the bounds of the size of the available question list - int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size()); - - // To ensure we do not pick the same question again - if (integersChosen.contains(randomQuestionIndex)) { - LOGGER.log(Level.INFO, "Chosen a repeated question"); - continue; - } - - // choose a random question from the question list and add it to the questionsInTopic for quiz - quizQuestions.add((Question) questionsInTopic.get(randomQuestionIndex)); - integersChosen.add(randomQuestionIndex); - } + setRandomQuestions(numberOfQuestionsForQuiz, questionsInTopic); } + public Question getNextQuestion() { // Automatically increases question count when a question is shown to the user return quizQuestions.get(currentQuestionNumber++); @@ -72,4 +57,24 @@ public boolean areAllQuestionsAnswered() { public int getQuizQuestionsCount() { return quizQuestions.size(); } + + private void setRandomQuestions(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) { + // Stores the questions' indexes selected from the topic question list + ArrayList integersChosen = new ArrayList<>(); + + while (quizQuestions.size() < numberOfQuestionsForQuiz) { + // Gets a random question that is within the bounds of the size of the available question list + int randomQuestionIndex = RANDOM.nextInt(questionsInTopic.size()); + + // To ensure we do not pick the same question again + if (integersChosen.contains(randomQuestionIndex)) { + LOGGER.log(Level.INFO, "Chosen a repeated question"); + continue; + } + + // choose a random question from the question list and add it to the questionsInTopic for quiz + quizQuestions.add((Question) questionsInTopic.get(randomQuestionIndex)); + integersChosen.add(randomQuestionIndex); + } + } } From d7f13cd8d3d880b76d4d10c41b60a9bf289813ef Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Tue, 20 Oct 2020 17:25:26 +0800 Subject: [PATCH 134/447] Reorder code to make it clearer --- src/main/java/seedu/eduke8/question/QuizQuestionsManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index b876ff8825..af6ac3229f 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -13,11 +13,11 @@ public class QuizQuestionsManager { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private static final Random RANDOM = new Random(); private ArrayList quizQuestions; private int currentQuestionNumber; - private static final Random RANDOM = new Random(); public QuizQuestionsManager(int numberOfQuestionsForQuiz, ArrayList questionsInTopic) throws Eduke8Exception { From 6fb3824162c518f5ab2ebf6432b28fffa07b174c Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 21 Oct 2020 01:36:29 +0800 Subject: [PATCH 135/447] Add an Explanation Class --- data/main/topics.json | 33 ++++++++++++++++--- data/test/example.json | 4 +++ .../seedu/eduke8/command/AnswerCommand.java | 4 +-- .../seedu/eduke8/explanation/Explanation.java | 24 ++++++++++++++ .../java/seedu/eduke8/question/Question.java | 16 +++++++-- .../seedu/eduke8/storage/TopicsStorage.java | 7 +++- src/main/java/seedu/eduke8/ui/Ui.java | 9 ++--- .../eduke8/command/AnswerCommandTest.java | 4 ++- .../eduke8/explanation/ExplanationTest.java | 16 +++++++++ .../seedu/eduke8/parser/MenuParserTest.java | 4 ++- .../seedu/eduke8/parser/QuizParserTest.java | 4 ++- .../eduke8/question/QuestionListTest.java | 9 +++-- .../seedu/eduke8/question/QuestionTest.java | 28 +++++++++++----- .../question/QuizQuestionsManagerTest.java | 9 +++-- .../seedu/eduke8/topic/TopicListTest.java | 5 ++- .../java/seedu/eduke8/topic/TopicTest.java | 5 ++- text-ui-test/data/main/topics.json | 1 + 17 files changed, 152 insertions(+), 30 deletions(-) create mode 100644 src/main/java/seedu/eduke8/explanation/Explanation.java create mode 100644 src/test/java/seedu/eduke8/explanation/ExplanationTest.java diff --git a/data/main/topics.json b/data/main/topics.json index c32d5d659b..c2c0c71875 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -5,6 +5,7 @@ { "description": "A software project may come in the form of:", "hint": "Recall the types of software projects that exist.", + "explanation": "", "options": [ { "description": "A brown-field project and a green-field project.", @@ -27,6 +28,7 @@ { "description": "Which of the following is a characteristic of a well-defined requirement?", "hint": "Try to remember about what purpose requirements serve to pick out the correct answer.", + "explanation": "", "options": [ { "description": "Qualitative", @@ -49,6 +51,7 @@ { "description": "Requirements come from stakeholders.", "hint": "Think about what you have done when writing OOP code and what OOP is useful for", + "explanation": "", "options": [ { "description": "True", @@ -71,6 +74,7 @@ { "description": "Requirements should be prioritised based on:", "hint": "Think about how a stakeholder would rank a list of requirements in order.", + "explanation": "", "options": [ { "description": "Order of creation and amount of work needed to be done to complete the requirement.", @@ -93,6 +97,7 @@ { "description": "True or False: I can omit the benefit specified in a User Story if it is obvious.", "hint": "If something is obvious, such that everyone knows what it does, is there a need to state it?", + "explanation": "", "options": [ { "description": "True", @@ -120,6 +125,7 @@ { "description": "Choose the correct statements?", "hint": "Recall the differences between the two core OOP concepts: abstraction and encapsulation.", + "explanation": "", "options": [ { "description": "An object is an encapsulation because it packages data and behavior into one bundle.", @@ -142,6 +148,7 @@ { "description": "OO is a higher level mechanism than the procedural paradigm.", "hint": "OOP four core concepts are: Encapsulation, Abstraction, Inheritance and Polymorphism.", + "explanation": "", "options": [ { "description": "True", @@ -164,6 +171,7 @@ { "description": "Which of the following is NOT a core concept of OOP?", "hint": "Think about what you have done when writing OOP code and what OOP is useful for", + "explanation": "", "options": [ { "description": "Inheritance", @@ -186,6 +194,7 @@ { "description": "Choose the WRONG statement", "hint": "We are using OOP to help model solutions like how objects in real world work, in Java", + "explanation": "", "options": [ { "description": "OO is a programming paradigm", @@ -208,6 +217,7 @@ { "description": "Choose the WRONG statement", "hint": "C language is not an OO language. Java code is able to be written like C code.", + "explanation": "", "options": [ { "description": "Java and C++ are OO languages", @@ -235,6 +245,7 @@ { "description": "What does SLAP stand for?", "hint": "SLAP is used to avoid varying the level of abstraction within a code fragment.", + "explanation": "This is as per the textbook.", "options": [ { "description": "Single Level of Abstraction Per method", @@ -255,19 +266,20 @@ ] }, { - "description": "Which of the following options is NOT a drawback of optimizing code prematurely?", + "description": "Which of the following options is false about premature optimizations?", "hint": "We have to avoid premature optimizations.", + "explanation": "Sometimes, optimization takes priority. Eg: writing code for resource-constrained environment.", "options": [ { "description": "You may not know which parts are the real performance bottlenecks.", "correct": false }, { - "description": "Optimizing code prematurely allows users to view shorter code.", + "description": "Optimizing code is always the last step, it should never be the priority.", "correct": true }, { - "description": "Optimizing can complicate the code.", + "description": "Optimizing code prematurely can complicate the code.", "correct": false }, { @@ -278,7 +290,8 @@ }, { "description": "Which of the following option should we strive to have in our code?", - "hint": "Coders would prefer to have a simple solution in favor of a complicated one.", + "hint": "Understanding of the code is very important.", + "explanation": "Coders would prefer to have a simple solution instead of a complicated one.", "options": [ { "description": "Arrowhead style code", @@ -301,6 +314,7 @@ { "description": "Which of the following option is true?", "hint": "We should always aim to have excellent documentation value.", + "explanation": "This makes the class easier to comprehend and maintain.", "options": [ { "description": "Imported classes should always be listed explicitly.", @@ -323,6 +337,7 @@ { "description": "Which of the following standards is FALSE? ", "hint": "Following coding standards makes it easier for everyone to understand the code.", + "explanation": "This is the naming convention for boolean variables used by Java code packages.", "options": [ { "description": "Line length should be no longer than 120 characters.", @@ -350,6 +365,7 @@ { "description": "Which of these is not considered a benefit of a typical RCS?", "hint": "Typical RCS may not use any graphics", + "explanation": "", "options": [ { "description": "Help a single user manage revisions of a single file", @@ -372,6 +388,7 @@ { "description": "Merge conflicts can occur when:", "hint": "Conflicts can normally occur when different developer change the same line of code", + "explanation": "", "options": [ { "description": "team members don't like each other", @@ -394,6 +411,7 @@ { "description": "Git:", "hint": "Git can be quite flexible in its use", + "explanation": "", "options": [ { "description": "supports distributed revision control", @@ -416,6 +434,7 @@ { "description": "Your local repository can communicate with ___ remote repositories:", "hint": "Recall adding remote repositories through git", + "explanation": "", "options": [ { "description": "zero", @@ -438,6 +457,7 @@ { "description": "What is branching?", "hint": "Think about the use of branching for your team project", + "explanation": "", "options": [ { "description": "Restoring the state of the working directory at a point in the past", @@ -465,6 +485,7 @@ { "description": "What is the value of the following expression? \n 4 * 5 - 1", "hint": "* has higher precedence than -", + "explanation": "", "options": [ { "description": "19", @@ -487,6 +508,7 @@ { "description": "What is the value of the following expression? \n 4 * (5 - 1)", "hint": "Parentheses ( ) have higher precedence than *", + "explanation": "", "options": [ { "description": "19", @@ -509,6 +531,7 @@ { "description": "What is the value of the following expression? \n 4 * (5 - 1)", "hint": "Parentheses ( ) have higher precedence than *", + "explanation": "", "options": [ { "description": "19", @@ -531,6 +554,7 @@ { "description": "Which of the following expressions gives a boolean value of false?", "hint": "What are the precedences of parentheses and conditional operators?", + "explanation": "", "options": [ { "description": "true && true", @@ -553,6 +577,7 @@ { "description": "Consider\nint[] scores = new int[4]\nscores[5] = 0\nWhat is the error here?", "hint": "The int array in the question has the size of 4", + "explanation": "", "options": [ { "description": "There is no error here", diff --git a/data/test/example.json b/data/test/example.json index 8d1f182bb4..37d5b33a8a 100644 --- a/data/test/example.json +++ b/data/test/example.json @@ -5,6 +5,7 @@ { "description": "What is encapsulation?", "hint": "check the textbook", + "explanation": "because option A is the best answer", "options": [ { "description": "A", @@ -27,6 +28,7 @@ { "description": "What is abstraction?", "hint": "check the textbook", + "explanation": "because option B is the best answer", "options": [ { "description": "A", @@ -54,6 +56,7 @@ { "description": "How do you name classes?", "hint": "check the textbook", + "explanation": "because option A is the best answer", "options": [ { "description": "A", @@ -76,6 +79,7 @@ { "description": "What is the appropriate indentation?", "hint": "check the textbook", + "explanation": "because option B is the best answer", "options": [ { "description": "A", diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index cc1e19d6c4..c38cc3b226 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -20,7 +20,6 @@ public AnswerCommand(Option option, Question question) { @Override public void execute(DisplayableList optionList, Ui ui) { - int correctOption; if (option.isCorrectAnswer()) { ui.printAnswerIsCorrect(); @@ -29,7 +28,8 @@ public void execute(DisplayableList optionList, Ui ui) { } else { try { int correctOptionNumber = ((OptionList) optionList).findCorrectOptionIndex() + 1; - ui.printAnswerIsWrong(correctOptionNumber); + String explanation = question.getExplanation().getDescription(); + ui.printAnswerIsWrong(correctOptionNumber, explanation); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); } diff --git a/src/main/java/seedu/eduke8/explanation/Explanation.java b/src/main/java/seedu/eduke8/explanation/Explanation.java new file mode 100644 index 0000000000..cac1e2e160 --- /dev/null +++ b/src/main/java/seedu/eduke8/explanation/Explanation.java @@ -0,0 +1,24 @@ +package seedu.eduke8.explanation; + +import seedu.eduke8.common.Displayable; + +public class Explanation implements Displayable { + private String description; + private boolean wasShown; + + public Explanation(String description) { + this.description = description; + wasShown = false; + } + + @Override + public String getDescription() { + wasShown = true; + return description; + } + + @Override + public boolean wasShown() { + return this.wasShown; + } +} diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index d4bf446b6d..498283c6d4 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -1,27 +1,30 @@ package seedu.eduke8.question; import seedu.eduke8.common.Displayable; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.OptionList; /** * Represents a question of a certain topic. A Question object is represented by - * its description, options and hint. + * its description, options, hint and explanation. */ public class Question implements Displayable { private String description; private OptionList optionList; private Hint hint; + private Explanation explanation; private boolean wasAnsweredCorrectly; private boolean wasShown; - public Question(String description, OptionList optionList, Hint hint) { + public Question(String description, OptionList optionList, Hint hint, Explanation explanation) { assert description != null; // A question must have its description this.description = description; assert optionList != null; // A question must have some options this.optionList = optionList; + this.explanation = explanation; this.hint = hint; wasAnsweredCorrectly = false; wasShown = false; @@ -67,6 +70,15 @@ public Hint getHint() { return hint; } + /** + * Returns the explanation tied to the question. + * + * @return Details of the explanation. + */ + public Explanation getExplanation() { + return explanation; + } + /** * Returns a boolean variable indicating if the user had requested for a hint for this question. * diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 07d44e0470..9e2b4e256a 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -5,6 +5,7 @@ import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -84,7 +85,11 @@ private static Question parseToQuestionObject(JSONObject question) { Hint hint = new Hint(hintDescription); - return new Question(questionDescription, optionList, hint); + String explanationDescription = (String) question.get("explanation"); + + Explanation explanation = new Explanation(explanationDescription); + + return new Question(questionDescription, optionList, hint, explanation); } private static Option parseToOptionObject(JSONObject option) { diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 75ab7d8c24..b9192b9b9d 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -23,7 +23,8 @@ public class Ui { + "|_____||____/|_____|"; private static final Scanner SCANNER = new Scanner(System.in); - private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------"; + private static final String HORIZONTAL_LINE = "-------------------------------------------------------------------" + + "-----------------------------------------------------"; private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and" + System.lineSeparator() + "understand software engineering and OOP principles through a" + System.lineSeparator() + "gamified platform and enhance their " + "learning experience. It also" @@ -48,8 +49,7 @@ public class Ui { public String getInputFromUser() { return SCANNER.nextLine(); } - - + private static void printMessage(String message) { System.out.println(HORIZONTAL_LINE); System.out.println(message); @@ -101,9 +101,10 @@ public void printEndQuizPage() { System.out.println(HORIZONTAL_LINE); } - public void printAnswerIsWrong(int correctAnswer) { + public void printAnswerIsWrong(int correctAnswer, String explanation) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_ANSWER_WRONG + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); + System.out.println("Explanation:" + System.lineSeparator() + explanation); System.out.println(HORIZONTAL_LINE); } diff --git a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java index b712d0c2ab..c6f15a5c5b 100644 --- a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java +++ b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java @@ -1,6 +1,7 @@ package seedu.eduke8.command; import org.junit.jupiter.api.Test; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -18,8 +19,9 @@ public void execute_correctAnswer_markAnsweredCorrectly() { optionList.add(option); Hint hint = new Hint("test"); + Explanation explanation = new Explanation("test"); - Question question = new Question("test", optionList, hint); + Question question = new Question("test", optionList, hint, explanation); Command answerCommand = new AnswerCommand(option, question); answerCommand.execute(optionList, new Ui()); diff --git a/src/test/java/seedu/eduke8/explanation/ExplanationTest.java b/src/test/java/seedu/eduke8/explanation/ExplanationTest.java new file mode 100644 index 0000000000..b2e9fb73e1 --- /dev/null +++ b/src/test/java/seedu/eduke8/explanation/ExplanationTest.java @@ -0,0 +1,16 @@ +package seedu.eduke8.explanation; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ExplanationTest { + + @Test + void getExplanationDescription_explanationDescription_returnsExplanationDescription() { + String inputExplanationDescription = "Option A gives the best explanation out of all."; + Explanation explanation = new Explanation(inputExplanationDescription); + + assertEquals(inputExplanationDescription, explanation.getDescription()); + } +} diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index c9950e72b1..ee0addc8fb 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -4,6 +4,7 @@ import seedu.eduke8.command.Command; import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.common.Displayable; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; @@ -22,9 +23,10 @@ public class MenuParserTest { public void menuParser_wrongStringInput_expectIncorrectCommand() { Ui ui = new Ui(); Hint hint = new Hint("description"); + Explanation explanation = new Explanation("explanation"); OptionList optionList = new OptionList(); ArrayList questions = new ArrayList<>(); - Question question = new Question("description", optionList, hint); + Question question = new Question("description", optionList, hint, explanation); questions.add(question); QuestionList questionList = new QuestionList(questions); Topic topic = new Topic("description", questionList); diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java index 07b75c1cff..34ed2409d4 100644 --- a/src/test/java/seedu/eduke8/parser/QuizParserTest.java +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -5,6 +5,7 @@ import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -30,9 +31,10 @@ public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @Test public void quizParser_correctStringInput_success() { Hint hint = new Hint("description"); + Explanation explanation = new Explanation("explanation"); OptionList optionList = new OptionList(); QuizParser quizParser = new QuizParser(); - Question question = new Question("description", optionList, hint); + Question question = new Question("description", optionList, hint, explanation); quizParser.setQuestion(question); Command resultCommand = quizParser.parseCommand(optionList, "hint"); diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java index 00c7cab000..7d968c2715 100644 --- a/src/test/java/seedu/eduke8/question/QuestionListTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -16,6 +17,7 @@ class QuestionListTest { private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = "Option A gives the best explanation out of all."; private static final int DEFAULT_QUESTION_COUNT = 2; @@ -69,7 +71,7 @@ private QuestionList createQuestionListWithTwoUniqueQuestions() { return questionList; } - // Creates a question with a specific description, 2 standard options and a standard hint + // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint private Question createTestQuestionWithCustomDescription(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); @@ -80,7 +82,10 @@ private Question createTestQuestionWithCustomDescription(String description) { String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); - Question question = new Question(description, optionList, hint); + String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; + Explanation explanation = new Explanation(inputExplanationDescription); + + Question question = new Question(description, optionList, hint, explanation); return question; } diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index 1c43aefafb..284aa1f1c6 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -1,6 +1,7 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -12,12 +13,13 @@ class QuestionTest { private static final String PLACEHOLDER_QUESTION_DESCRIPTION = "This is a question description."; private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = "Option A gives the best explanation out of all."; private static final int OPTIONLIST_OPTIONS_COUNT = 2; @Test void getDescription_placeholderQuestionDescription_returnsQuestionDescription() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); assertEquals(PLACEHOLDER_QUESTION_DESCRIPTION, question.getDescription()); @@ -25,7 +27,7 @@ void getDescription_placeholderQuestionDescription_returnsQuestionDescription() @Test void wasShown_questionThatWasShownToUser_expectsTrue() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); // When question is being shown to user, it is marked as shown automatically. @@ -35,7 +37,7 @@ void wasShown_questionThatWasShownToUser_expectsTrue() { @Test void getOptionList_optionListWithTwoOptions_returnsCountOfTwoOptions() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); assertEquals(OPTIONLIST_OPTIONS_COUNT, question.getOptionList().getCount()); @@ -43,7 +45,7 @@ void getOptionList_optionListWithTwoOptions_returnsCountOfTwoOptions() { @Test void getHint_hintObject_returnsHintDescription() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); assertEquals(PLACEHOLDER_HINT_DESCRIPTION, question.getHint().getDescription()); @@ -52,7 +54,7 @@ void getHint_hintObject_returnsHintDescription() { @Test void wasHintShown_questionWithHintShown_expectsTrue() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); Hint hintThatWasShownToUser = question.getHint(); @@ -63,10 +65,17 @@ void wasHintShown_questionWithHintShown_expectsTrue() { assertTrue(question.wasHintShown()); } + @Test + void getExplanation_explanationObject_returnsExplanationDescription() { + //Creates a question object with description, 2 options, explanation and a hint + Question question = createTestQuestion(); + + assertEquals(PLACEHOLDER_EXPLANATION_DESCRIPTION, question.getExplanation().getDescription()); + } @Test void wasAnsweredCorrectly_questionMarkedAsAnsweredCorrectly_expectsTrue() { - // Creates a question object with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint Question question = createTestQuestion(); question.markAsAnsweredCorrectly(); @@ -74,7 +83,7 @@ void wasAnsweredCorrectly_questionMarkedAsAnsweredCorrectly_expectsTrue() { } - // Creates a standard question for the tests with description, 2 options and a hint + //Creates a question object with description, 2 options, explanation and a hint private Question createTestQuestion() { String inputQuestionDescription = PLACEHOLDER_QUESTION_DESCRIPTION; @@ -87,7 +96,10 @@ private Question createTestQuestion() { String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); - Question question = new Question(inputQuestionDescription, optionList, hint); + String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; + Explanation explanation = new Explanation(inputExplanationDescription); + + Question question = new Question(inputQuestionDescription, optionList, hint, explanation); return question; } diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index 53650fde65..3ac505fe69 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -20,6 +21,7 @@ class QuizQuestionsManagerTest { private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + private static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = "Option A gives the best explanation out of all."; private static final int TOPIC_QUESTIONS_COUNT = 3; private static final int QUIZ_QUESTIONS_COUNT = 2; private static final int QUIZ_QUESTIONS_COUNT_MAX = 3; @@ -119,7 +121,7 @@ private QuestionList createQuestionListWithThreeUniqueQuestions() { return questionList; } - // Creates a question with a specific description, 2 standard options and a standard hint + // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint private Question createTestQuestionWithCustomDescription(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); @@ -130,7 +132,10 @@ private Question createTestQuestionWithCustomDescription(String description) { String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); - Question question = new Question(description, optionList, hint); + String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; + Explanation explanation = new Explanation(inputExplanationDescription); + + Question question = new Question(description, optionList, hint, explanation); return question; } diff --git a/src/test/java/seedu/eduke8/topic/TopicListTest.java b/src/test/java/seedu/eduke8/topic/TopicListTest.java index 74484beb95..210321bea2 100644 --- a/src/test/java/seedu/eduke8/topic/TopicListTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicListTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.TestTemplate; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -22,6 +23,7 @@ class TopicListTest { private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; private static final String HINT = "Hint"; + private static final String EXPLANATION = "Explanation"; private static final int DEFAULT_TOPIC_COUNT = 2; @Test @@ -98,8 +100,9 @@ private Question createTestQuestion(String description) { optionList.add(option2); Hint hint = new Hint(HINT); + Explanation explanation = new Explanation(EXPLANATION); - Question question = new Question(description, optionList, hint); + Question question = new Question(description, optionList, hint, explanation); return question; } diff --git a/src/test/java/seedu/eduke8/topic/TopicTest.java b/src/test/java/seedu/eduke8/topic/TopicTest.java index 50b57b39a7..fbd11e4f5b 100644 --- a/src/test/java/seedu/eduke8/topic/TopicTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; @@ -18,6 +19,7 @@ class TopicTest { private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; private static final String HINT = "Hint"; + private static final String EXPLANATION = "Explanation"; private static final String INPUT = "JUnit: Basic"; @Test @@ -59,8 +61,9 @@ private Question createTestQuestion(String description) { optionList.add(option2); Hint hint = new Hint(HINT); + Explanation explanation = new Explanation(EXPLANATION); - Question question = new Question(description, optionList, hint); + Question question = new Question(description, optionList, hint, explanation); return question; } diff --git a/text-ui-test/data/main/topics.json b/text-ui-test/data/main/topics.json index b2259b1a66..5701954c86 100644 --- a/text-ui-test/data/main/topics.json +++ b/text-ui-test/data/main/topics.json @@ -5,6 +5,7 @@ { "description": "What is encapsulation?", "hint": "check the textbook", + "explanation": "because option A is the best answer", "options": [ { "description": "A", From 6c02268c781170c32791d9f9f2f7526fcdc7d489 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 21 Oct 2020 01:55:05 +0800 Subject: [PATCH 136/447] Update IO testing --- src/main/java/seedu/eduke8/ui/Ui.java | 2 +- text-ui-test/EXPECTED.TXT | 122 +++++++++++++------------- 2 files changed, 63 insertions(+), 61 deletions(-) diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index b9192b9b9d..1dbdc50d80 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -49,7 +49,7 @@ public class Ui { public String getInputFromUser() { return SCANNER.nextLine(); } - + private static void printMessage(String message) { System.out.println(HORIZONTAL_LINE); System.out.println(message); diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 1e084a0dad..f434a81336 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -4,17 +4,17 @@ | ___|| | | | _ | | |___ | |_| | |_| | |_____||____/|_____| -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ Hello! I'm E-Duke-8 What can I do for you? -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ E-Duke-8 is a desktop app that helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. It also consolidates key concepts for easy revision. -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ These are the commands that you can used: 1) about 2) help @@ -22,129 +22,131 @@ These are the commands that you can used: 4) textbook 5) quiz t/ n/ 6) exit -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ These are the available topics and the number of available questions in each: OOP [1] -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? 1) A 2) B 3) C 4) D -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Hint: check the textbook -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? 1) A 2) B 3) C 4) D -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Oops! The correct answer is 1! Do visit the textbook to read up more. -------------------------------------------------------------------- +Explanation: +because option A is the best answer +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ The number of quiz questions must be more than 1! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ There is not enough questions in the topic for the quiz! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? 1) A 2) B 3) C 4) D -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Please choose the answer using its index (1,2,3 or 4)! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Please choose only options 1, 2, 3 or 4 -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? 1) A 2) B 3) C 4) D -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! -------------------------------------------------------------------- -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ Bye bye. Hope you had a fruitful revision and see you soon! -------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------------------ From 3e0ee1bd97877b87ec9c37608f2cb96ac0d878c9 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 21 Oct 2020 13:51:17 +0800 Subject: [PATCH 137/447] Update diagrams --- docs/diagrams/TopicsStorage.drawio | 2 +- docs/diagrams/TopicsStorage_load.drawio | 2 +- docs/images/TopicsStorage.png | Bin 33640 -> 32435 bytes docs/images/TopicsStorage_load.png | Bin 57759 -> 58286 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/diagrams/TopicsStorage.drawio b/docs/diagrams/TopicsStorage.drawio index dba55b639f..8292f0a971 100644 --- a/docs/diagrams/TopicsStorage.drawio +++ b/docs/diagrams/TopicsStorage.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/diagrams/TopicsStorage_load.drawio b/docs/diagrams/TopicsStorage_load.drawio index 95ffde22c7..c63444fc19 100644 --- a/docs/diagrams/TopicsStorage_load.drawio +++ b/docs/diagrams/TopicsStorage_load.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/TopicsStorage.png b/docs/images/TopicsStorage.png index fa80c4d09f4f640982970f484c446fe8f0883bd4..f3d703a6986c2ae3b0e3921140ea3b9163a5540a 100644 GIT binary patch literal 32435 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

Ojk87Gw@%n(Gpn{$ZZZY&mF}QZtTM``og>9ihOm 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 literal 57759 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

Jg|Mn|p#+hRxd*Qc7E2yqSLxF})!YPPXS;L0 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 DOj3Lv From 8696f6052c03abd88e6d2a2c7763c17c66a9b6c6 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 21 Oct 2020 13:56:54 +0800 Subject: [PATCH 138/447] remove labls from dependency --- docs/images/TopicsStorage.png | Bin 32435 -> 31596 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/TopicsStorage.png b/docs/images/TopicsStorage.png index f3d703a6986c2ae3b0e3921140ea3b9163a5540a..fe2c198bbbc3303a151db59ba6ef9c988c335308 100644 GIT binary patch delta 27813 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 z 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 Gcm4}Efv?H{ From f4261bf367684e8b8644ae1eae5b2fcd00d9483b Mon Sep 17 00:00:00 2001 From: joelngyx Date: Wed, 21 Oct 2020 14:24:29 +0800 Subject: [PATCH 139/447] Removed add and delete methods to all classes that implement the DisplayableList interface --- .../java/seedu/eduke8/common/DisplayableList.java | 4 ---- src/main/java/seedu/eduke8/option/OptionList.java | 10 ---------- .../java/seedu/eduke8/question/QuestionList.java | 12 ------------ src/main/java/seedu/eduke8/topic/TopicList.java | 14 -------------- 4 files changed, 40 deletions(-) diff --git a/src/main/java/seedu/eduke8/common/DisplayableList.java b/src/main/java/seedu/eduke8/common/DisplayableList.java index 84ec5aedbb..94645351f9 100644 --- a/src/main/java/seedu/eduke8/common/DisplayableList.java +++ b/src/main/java/seedu/eduke8/common/DisplayableList.java @@ -5,10 +5,6 @@ public interface DisplayableList { ArrayList getInnerList(); - void add(Displayable displayable); - - void delete(int index); - Displayable find(String description); int getCount(); diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index 66261fc244..7f40325ca2 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -26,16 +26,6 @@ public ArrayList getInnerList() { return this.options; } - @Override - public void add(Displayable option) { - options.add(option); - } - - @Override - public void delete(int index) { - options.remove(index); - } - @Override public Displayable find(String description) { for (Displayable option : options) { diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index 6a02d74de2..d0704b0793 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -26,18 +26,6 @@ public ArrayList getInnerList() { return questions; } - @Override - public void add(Displayable question) { - assert question != null; // Exception in future if user can add question - questions.add(question); - } - - @Override - public void delete(int index) { - assert (index > 0 && index < questions.size()); // Exception in future if user can delete question - questions.remove(index); - } - @Override public Displayable find(String description) { for (Displayable question : questions) { diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index f17b78cde4..72736fa6d5 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -26,20 +26,6 @@ public ArrayList getInnerList() { return topics; } - @Override - public void add(Displayable topic) { - String message = "Topic " + topic.getDescription() + " added"; - topics.add(topic); - LOGGER.log(Level.INFO, message); - } - - @Override - public void delete(int index) { - String message = "Topic " + topics.get(index).getDescription() + " deleted"; - topics.remove(index); - LOGGER.log(Level.INFO, message); - } - @Override public Displayable find(String topicName) { for (Displayable topic : topics) { From 07f3070e46765bcbb4f4297a6601223ccb042823 Mon Sep 17 00:00:00 2001 From: Joseph Date: Wed, 21 Oct 2020 14:25:50 +0800 Subject: [PATCH 140/447] Add diagram images and content for the developer guide. --- docs/DeveloperGuide.md | 44 +++++++++++++++++++++++++++ docs/images/ParserDiagram.png | Bin 0 -> 122363 bytes docs/images/ParserSampleSequence.png | Bin 0 -> 32775 bytes 3 files changed, 44 insertions(+) create mode 100644 docs/images/ParserDiagram.png create mode 100644 docs/images/ParserSampleSequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 28ad7e350f..73de0c99ef 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -3,7 +3,51 @@ ## Design & implementation {Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +### Logic Component +##### Design + +![Parser Diagram](./images/ParserDiagram.png) + +1. After constructing a new MenuParser() in the Eduke8.java class, the parseCommand() method is used to parse the + user command. +2. This results in a Command object, which is executed by Command class itself, using the execute() method. +3. The Ui in the Command object is used to display the requested information, or to display the required task to be + completed as per the user input. + +Below is the sequence diagram for how the Parser component of Eduke8 works with commands to show output to the user. + +![Parser Sample Sequence](./images/ParserSampleSequence.png) + +#### Command parsing feature + +##### Implementation + +The command parsing feature is our program’s way of reading the user’s input into the command line. It makes use of a +single method parseCommand that identifies what command the user is calling for and then calls the command. There are +two parsers in our program that implements a single Parser interface. One parser is for choosing menu options and is +named MenuParser. The other parser is used during quizzes, in order to answer questions or request for hints, and is +called QuizParser. Given below is an example usage scenario of how the command parsing feature works at each step, when +the user types in input to get help in order to see what commands are available to the user. + +Step 1. The user launches the program for the first time. The parser will be initialised and awaiting the user’s input + to proceed. + +Step 2. The user types in help into the command line interface and presses enter. This user input “help” is stored as + a string and is put into the parseCommand() method as a parameter, together with the topic list. This topic + list is not relevant to the help command for now. + +Step 3. The user input string is subjected to the trim() and split() functions of a string in the Java libraries in + order to remove redundant spaces around the input, and to discern the number of words in the input. The split() + function uses a blank space string, “ “, as the delimiter to split the string into its individual components. + +Step 4. Each subsequent string separated by a space is stored in a string array named commandArr. The 0th index of the + commandArr array is the first word, the 1st index is the second word, and so on. In this case there is only one + word stored in the array, at the 0th index, which is “help”. + +Step 5. The string at the 0th index is then used in a switch statement, where each case represents the different menu + options available. As such, the contents of the case with reference “help” is run, which is a return statement + containing a new HelpCommand(). This leads to the execution of the help command. ## Product scope ### Target user profile diff --git a/docs/images/ParserDiagram.png b/docs/images/ParserDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d094e871571ce71f37bbf7bf38d34f42ccdddc45 GIT binary patch literal 122363 zcmeFYc{tSj|38dW;#4ZMm-a;%GsDbOmKn1%i!o*xl^C;`&Fn^mmQ&GQ4yBM5mC{a< zs1t3Zv`CVULMlpRDa-wO=bV%8bzi^F{kyOGkKgzHUBBx($C>krzElY<30H?2oFq!{a~FgY$_WD= zd5hIbIrtF~4Nl;MbU`DWT;ML?i(ixx!6{sv5a5}As4!G58MYflv_Kmw`kNV4ShxYJ zMo_~7sZkUxi$xSh4-u*ts5KJ6rJp?eXK!e+))*-mdKxa!OZea*@C670;B~kpRHP1- zgP%zLW~a9+3#UOMl=x6bpYUj&fUeaUhu*FT1r+>zH4|{u5u6@+35w$q7VfG;lJqc_ zK#4v&$Q$iP2WO`RF&4ma3Ymf&Dp!QD*%)<{n2VJ0415t0L65*-0{GrMioZ09E+z&M zz)v|cB$hzaMTEh%7`mT`uGVQ);4xe2>w=DO2{n*J*a#X29z=)Huy{N<0@4Pelt&E@ z5Ku#v-eRObjY<@7h#Wpn2-b;7TyX%8r!$B+w9u$s+M-sZ4>S5;1b44-SS`8zaF!STuu76}rfP_7J(gav2Bf zYeWgDL>LJu0Fg}~66HYYbfFZgABW|p*AfY#QZyWrp^z*`f#XE^U<3#jI2aN9Pk03Q z6M;Z7nF@U*kR5nNB(Xy2dbV0F)5FwMJf6XpBY~a~b>ZMoASx7vazR7CQVWIp2qaj} z6iX0H@B}T8>)A4)h|P-B8Kcm0cr;mn@Wzo45}ZGqPQudFXtf`WhL9lex=<-bB*)_- z`C5$&mkVxHis(|i%>pbVT4YEibkpY)MA}mxEi7N^~S*!I)$rL>lRHW zaxplAD}t;v1iB#oaA>+zG{#UQnh}8H`h+W`(7_}88F;1-I0=plk^m=#6^cEQ|P<^ zvJs1Ch$;Tj#2{KYUn>a;jHE#_(BK2*WUa^;q0s5TR{B7sk}UD|Rv}RM2z0oC8lSETw?Q z$NKTnK*w-=qtF!-fHN`}a+;raxI#o$hKr)GE^rDqltIPeIY?3vC0ZEaLguJZxg%DyDSR60fs3l8f2$n=8B+$eCFo9~KN(B!K7l_@|61tMDhI7NP42h5u zN`_H13;|6HH*jfT0=|C`$%vQ9y=h@lMpvSgDP#IbqLfrwXrv2+26yvCsl!DAK3+}( zr-Z?xP%;@A9Z1x>F@yBjaJViiN)C&}DA`&KoUO$RRU{f!PK?6o0(s#=99GKk1XH>1?YB>)w!gNLd$f!s(k*GDghg}KmNi8u-nF-b;ODg9Ockb#Bj+_YRh z1LLcV!b=poXcAMS!-R^%Swy)UjaCF`l}30}w4a&_eyf%6$!csMHUhyUu?4Pv&~j{m z4nzQ=h6D?W6w9Sd6-kB>MQDX#DltXK!~ z1{?~9^8rDCOJjvI)I1fN>SxsGnEqhXaJE8=)^Lbe103bUp#%N%7bL9*2Ow9w66=2;71{&Rnl-|v{EC8U@LGsNfdY^7O9Lt>sfR? zh7ztc;;|?^6%k2hMh1CHQA7~`BZxAki^7}AqjSK9B90P+@IjOGflM-0Lf4AOQlyd- z!4w#nECh)M=NWXquu!tEfr#(}wn;=|WNs2yu#HY7Rx^=|XjeFyua`smrDZA*SQ_NA z$kB4C$Tg4|r3j)2D1d5&N$@TTd?bY_(E0n(m1+%_DvSstGTDA^MvNxH1>vI(Wr`3u zUxqYDMGh^RC& zr4i960l`g9W1*OeAe1kM2B}*R28P1XkW8*G4?z&1U8PZc1wxKSNC{LW3d=`gbP9?l zTul`km^fD;0~{4b3X(w4%O!%S!JxGU5*;Wn4iXPp?&s<)6p77!3X#F5a^Mt?uJH(v%r1Q-B7#WBcigP(*BV?_HX5L5G4OSxd3Ba-BY$MX>O$suA-z)KKnxB*%%0@=2scZ#<9-uP%1gWF^4J@&* zj7#wo5(qGuL4`8V@vbO5!H2`8cn7#eifBR~R}df>*lXe2)IkWsBtCfe3eu{WdMp0A=HbsQIOanim_;3IPmk3sEI^c z7$$nuGFvESa}8vb+7C}gN_Yl;l>zHVXShOcPDLhh z*f;}=?HZ&PV?@YsoLUw{B?TI#JXa+hug2qacmmL4zJDZ>8mRJiMThwXsEEE;yj&y; zlCwBKHZnyR)=f(DVL+%#sT2@>B8A|DL=u0WXV|yS~LSgRv8Fxum}i(gem+aNI`&#;Q|f` zOgP$Gij~l!{NzD_Dil79p_WQm0A&UkV3aTkh36ZDM@5jRBmx3Q!Fl`oQ+%m#8D8TL z!|4nNyjY+nY2ik?N)<>Bj}}TWt|~?tfh}1!W zLL$yhgY;tt1c9g^5p!gLSfZ4yn67~=u|I=^ z4+T#nFj%Ra6|JN&B5`PMu`Aj)(naGhh{o&r^dNo|R>R{FvFN~-ph`kLo zl`l{fq9~lq)+yu)Hd7x4*M$eNAQV9s!AM3l2n1lMI2?pDVwf>WT=kN}7z>J1ut z5M8PWRpK#RDS@cOVYMu(Na{nDGGWndp`PmhGo)~6K`@w)7$(Be31I}dpC2}iE;F)7 zFmJ7Qpa|NWhK+`yi3Tk!3=e0qMS@VGKTSblN4d%&e!KoRmt}1H6L~6GR#$MitKIu%#Mh5H(aI zQvFOBWPvVJHyuL45HfwdNxUG2pNlV*pwLr|2DmSYh*E@Oj0#ME+JF$@LjBnRK{%vF zjb1To7=cUI8Z&F_Cz^fvuMc#0EbDDq0g7;7wzY)fyTT zq_j96ni04^q#;@)jMPif5+aGM!NR0+zL@JTA%#a$cvxzfLCc2;17t1%{yJ;~LC*&3 z{M-a$y;!T{g(Be+Uxp&whoPa9>1LK7uG&rT&AECudqO?NbS%`2N z5~K!L1YAz{Apu*0`$~jdidIhc=Rx@{8;(~pF+mbUAR6OBB5{2+kZTk$)G%*Fpwt(m z2;xRUieLyMMl%F{dbpoUs1$)=2H{0`w3x35IF) z{X~%)Qz6ocg=`d^#S&u3A~z`Vf?tUQ5={W~bEJ=ur#I-~0CW)fy09>mF+d9kZUaFD zZk}i`()0vXB$9^q*JC1uZb}}K%OPP&aDq4@5+F<>0RzVdg}Ly+ZxP`%8ONxgBjpjU zTF6lk{Sz6^)2VzhoG3h2fhPF4Nu*qVRiH2&3zz%p_gVNrpD3vsfuS4r$ z2(3aZ72@I19F?3v1@48&cSG=GbRLeO<^}>JPxRK4BB@$`1lv_6r@Fd{0@Y|O&~_Y< z2Qfk>WE%op$tWs2iiF5&*m;hK5IwSu!eKj6?^ZnOYKEiv+++t~anyL3D%K zmjRL`nJX8s5=z-RI9IAeQsp3bB)Z^v@JK(3M1aSL*^x>y#z&0j%HRYoJv!P5=i`}N zJ=&WBBa)PQbRdor>POY+RT^WU5>56K!hG>Eq0}v$NJXNBXl;;?j-u)0D7pM6ofw+l zNJR+oQb^Kzh=Xjd3oo2w@TMw^(P4TTj?I#QG8C5N!x0CNSz47|NQV3n+~A^Nk`y{X z7Y-v(%7auWCK)NEu)Mii6$VE|%OySrl}c-*1Fx<}xY3AIq7Y3sK$RTmAK>_i|5Sl~ zmW06n|6PGY5C*T@cQP@tH=*FM?5H)L>c&5{4Jhbok3Gw_IBr(4;KRtLR?i$0uL~27 zU!Lf5F4-o~t1)Blp3W@hC{r`6&HR(`d;FHHT`LJ%y?NR3O)TfEsKPN^Z#>1j=TvHH z|J(fZqBhO*^;-^fmmkmwAHGJ^U$V1`sVq+y#ie7WcN<@<8<5oBi2d=Kv$?gGiRnLo zGEEZVzGufReY13x*}o6L*D;eaZT<=-Zp|(?8^pJtD{ncjw6KpiF&p~Rv%tR8b7BAb z#!cd3FS{EYZ}fV7>+&uyl4)Yxs|mvv*fUd2_6^)RSz!J58=!Z+wt$WQve4F?H39tG zmV&Iq|2kL6Xw!xL9^na7hP{6=2fY8n>s4c+w~zQgZ~rC6|7XrHCz)lZN1qNV)XOJ1 zMlJPZU+qI9meNJ8v06V?LnU#-FdmX2kFQ1UvbEh@oA8|v%+B^o<;=KK! zmFt|6*q7$BvggKowV7@AE10AKYI7GGf5Bli`yf8PVRrZMRTe$=CCBQwEVK4@H*I?o zjk~_f#H`h3?e>Ulk7}Yx!WpyetAiTR;}c|NXZjvAl?4qK>TYa2C2kawzGPMWkIRv2 zr>!PtV=Z7r*Z9&S7WQv;nDA3jr|fqpS}^-^$XP85hbfka1+1lej@4}@1FTH9{yZ<< zYsJVZM_-<*yfVSdKF5U5pt6XWAAn2) zibuSUdu(Pim}u7=Jxr$TKp@i1`(`t%3m7A)oJB{d7v$gt!tb3eKWuAWbstMj$?K^m zAAwCfXfv6#W18Uk*7d)$P zrLPf{ZJ#Rq@bpyE1}i66{rBhj5vx<&7@qx|u;m%#lKil8lsYSnQywO~C zq`$V%pgili<7`Or`mR+=1|-`bcYl32vbA|$$&}<>4rhTy-2g=Ney>_?<_EdBNyAC_ z$AJPvew9sobETb~zj$G&_%VIpRn5A#2oJ{r$py!2Rh9jpb5|F>G&_7f+^RBIQBYcb zcty3{NJHyOLDE(gVTGeLH8}Q1S1U76TVH#DzeR3%Tec(5(a2cyy?LPjN3BL+d&F++ z(S9v=s=jN@^e1J<5y0jIUT)bvwL30;q8t&n&3-f-Nqcs$7N+xn1M;0*t^o?=g4zwgudfp*aP6@bi zsA``1Y5S5F0h^aSA!V2^9_ZaaHVpeKHfFv9ulGrRvsb(8$K@H@_RG;JPOBqMFftUc z99@nZ+SYY6RUlX~`<`j89dxF(J69kE_a??E5|p<#jhV?Yy-&S)td&q_yIC=ve`lxb zzC{eTOTvna4kmReHiLU#JCIJ~R9lsu{Lpx4);xec%5vf1dptJH_iA@OCY#_e%*`fP z!CJd4CJ;Pd**&KyqH>6+lOlMzja*UYoN22}0+)cFIC0QsB$aA_d? zBHw;3FlN(5=Ws_f8Jxv6TH6E@;M~o8r_GrcA0PUuVWC%MATXcOXpQSI{aoq@^s}mE z{E3cN**A|RdQCWa4EXg0Pw3ebEY<)$>anRxC;^*|`~!At_-5f?vpJ%3%P)Y<7FBoJ zBv^yZaOKlnfU@x?gJ4$*~OQk*o6V+iCzo9qNNA)%XfHv z0VaMkd-pi=g@B>wH%)LF#?UzsLow@~Z9Dwq^74Wc*%q4?mrSt@d%kt5sri(`tD~(! zoNoyEiGcp4EP)CZozs5b*s`))0y}lz^^s$6Uh0H-#8g_Eo9^nvYr2o+nb?i$BDWp$ z9vv{@+jNgMgWmfBdM_p%Flvry*NX|iu!My#@X>3>Q!(me z#+KtL1eJ*t-hvpQMI1`@Tj@)MCywv zM-x>|OTkHaKyjZ(S4}hf288--QbX+UlZX!h@9>9T6>}$WrkI9NPqjr28CpTjML`}j zKlX<{_{DTLS?U3}Akpz9#gAzfb1j1TaL?Q3iZoHuMpkF-b))8N=8NLExWfBP%NSLw z`EAlk42Xb@TYa7YWR(WEpty|O?sdkb)Kl@>@SPV!+zoxY>f{)JhZcUJY9n6CJ?oyu z0UJ1J+j{xxqS}oS?F^3THHROYe7M~$oUE_)EA*dUoFm_LJG$Un!NE_Kd^W^k6EpdQ zwVxuaR!ly79-tA+MH#un+#mBYATX=6V2vHvW?4kz3Q|&Bnw$KzPEitXDtvZ2-~M{k8nf9hY<_#D;R+ZfK=BnKD%B9Eh zmECQ1!TCMe&26uXYG)M!CvhpJSA9wM@%e4D5N*I($%U3cZ=g?ORVtX7MbzAq7mbv; z7DwSgotEy4SPnqgKf8GS7@69c?>QRJ3;`(bhM(=u_h)(*^&6}-Ioxx(XU(39z7;qO zUVf8Z`SnRa{8wKuBNXvHX2aSJ#67m%6mUL!*I_FdQMCmC->twX=LmPCdfR38OjdVo zo%t&j0!|^dbMznQ6MugY%X@sAbZzyyo@RyB(%OU@1K-Y}V!wA%VmKk%>3*>unX5SY z*2$iQmFD4%v%A9%LB=-n|BbP&tRvc6o0gsQnn*|mDhxn%(sZ+gu#t-gY(G{!8;{aqCsLcI+7@v=WMcn26H?`?Mkg4nmi_Mb3qSN6o zTaacqtzi0*8Mx&j+LjiVOe9|YM>t^lre(m|-+c;Lq;Grj;oZUXxz<_0;cg9@Cp5QS z`>A2p|Np&o5hKGxSeqw*)&g@Um?UJHM|Zc$XRZ5mAv0`YATauPqsf1}_%N4gzH~{+ zlz@AepGeF%OkVrR(qpsM9tOfd!h-FQ!^1!ju;9BjIrLBJjITHlePiri4uIkO6&6NkeCYnNBXPV+r&VUs`wo-qL4s-2ebX5^H@ z4U9Q6L5yh#SvzLls$s4XXScR$wz})|q!rx~otnm&0N|a=QULD|W)?8LYP>xYc+=vr zqJnAvx&Scx1Qvy~bdG*vYo zeG%Bt?n~UmFA5kr`=rr{kO%OCJir7mV07zD{*Tf9Zv~BFwsyCC|Ms!s&CQL{vIi;7 zsClHFzm>fjt1V5mZE7q0?Dh|kC^UR_`x_9$K^Sp6O5E|`(K#1>+0&hM7X?WL4T%or zw>DeR0PvaCHduZDK?60lU`5JP#mlIp3twJ9HfLkXRV7|ppZkW<&yZk1I zO2Gj1y}b31;IIrh z{%Xu)T#C)Z-+!ALX0<{^fEnZN?3{VUY%M~ynbYU z_XOtEcW>mLU)4c-W;DRR#~G?6%L6}q=(t%eAK;GX4@EU>YXYRYju`dZN!z#PrK^u0 z`#e)q?xHWP)Kt2Qb|okKe66yL@!m4-tS#!Y*ZJ^!6W49eRa2MFz*~8=-S=8uv7q(t zx6$Kfi0z!$$hhn7CEh$6oPY3?fA+MZ_0_qn{bx4Yg+4zM#D9Cph5x(bUGYkgcyUPoQX&NTdtU0Ik&6t3z*X&)j(we zoUyImae%<}Pb>)BR`dSx(G@m#Uo{-dC2BsKO7esA6~tBVxK9b(rDcs2&aLA?y_2i! zpD;Y@>`LDqZ0on_#wJUB4)K`#`16&MLt-xMFuc4hxuOr>oc?Ow*S(cVecc;IT761< zP?3hJt#7=dZoEG(V`R67NAn@gCl`>9U;3l1nHuMmgFc?wdSkC;>_P5om!+|fr?_^j zGW?h5?_W?ERi2fqI|bdjWhXOe+ZNr!?tIqs^sjP6rEfqFy8|Tn$zj)zgZcq;W~_v~Gj6NAy={^_VcxYYU+y7EO!Qf( zPLZCIb8~OvTHfUqe{Gr+QR-PUmu-0cU;ucj)|?)z6A@Z|{Ga8@y7Z zSr~Vtw<%4&hike28nwca)AsU8&L2LGzkMv)bD}5ZX@~?>!8yreulwGTy}~B9?gzPc zk6T^92E~P-*t#&uD$maKn*5Jiu5saxNh-qq_ZNVMp*Zb3UvD`$x%-lhp?KlU6m7=U zevPMLxySqagdGge>5{TL(R}tnH}oigsTT9%FXR9V(lffEuEL|dC?3G0ItHfEdsx-|KWEEfLkO|IoEVk>JHuwRG*9xI=dI zWT~gYin99nqTt96U5D0nx1E*Oz3-Zz`+iFG6Y)*oBs42T+%jDC9ExuZf_Ig+MZ{(-S@03^Uq(e&F5>Ac2L0UYsuT{ z>zo4eN>&c`byUz$b!-PZF<w%lS#>gVH9?L3TmDCWz z=Oam=5}j)HZD4R|`I-r?W&@yf(1AkXhokKlkZzJS?>GY-E~t03piTAVVmjN#*m_{H7^@7JVNM+tH1w-GAsySwV$g= zj-yoeX}Gv+rGZOU6#(@pIqonBP-;=V%i|5tA0A%O8gUgARHr)5FBp04A!ne#;qlW2 zlE(CRh>E-nO8*YKi+epTt8&`1a!_?3O^rFRWPp%V7nB6OcHflF-rcMhdTwNyF+Zzk zvcb6}b}ze+-x#uF@MWeyNP}^iuLnbpi#K?K@~kN^lCf)5i-*~W1#%J40F38DC!+m> z*wYSOodv5Oi*8H&$lP{{Y8mghZMl!A(M=gYe)E*vi5-D3^-=>TpioG?}zM~FfmS5 zc}v@2U+vRTUMyb4y8UEB=Bo!6&8}P$4HOU_2!R#=(Z^N=wL4$Ss)`*KdeG15!Ib0^ zt9L>LyRSBDKi&6F$(!&Z1aw9WAQ}7>C2bZ0>R}O1Pd9n}@q=w;fP&SpUwH*;fqVr+;`#lM_clVFQ*z+Dz`EzIif0GyGP8_-Y&dcT|MB_Rv>k-? zl7Xy|At*+h`~IiOf|RE61N^tt59i7jd=Al6xDxZQ$!4jbytyl}u=Pye$~KQbGLr6q za2GL4!Wp>N|6Z|U>E^HQ>$;w{dFFdLRFiqFr`w6Ntc)>+6%Xfs7AD2D{c+>*kNMXc zo)`VmiG4eX->d8SYm1@B*Wk8EF!kucDHAca!261~ff|d?6p4AlQxMiz{wn+7yhSUL|p+Wln<{{HDfYY{9wwnPp+8R5J?;mP{5%{nJ&Osb{JL2|3cCnK+>3%bVpxM?Eq@C$;51``IMvZ zOqC_*G_3|pTbJ0!CxZ4;PT;MU;Z;S@Z>y@O$L1d9#Q#8^wYdY8ZotZyM;^KY7aau3 z1;UY-*$HK!PUhNF`goX%+CSO^@}z}d&{trfj5O4}4Yyvq{eFDe5>TJegQa=d@g_?_ zDf3*|nC!w~OF{3861U=8fu09eUS`eM0{VVnWyF@{)p(NxA;<#{+P;f1p9YE))v1$# zUmR9&m;@5Yw34?^Z-Gvl)zKy#a3xrf3XYhT4M1@%So$*E%|E!x8j30hd7S`{ZxpLmNP;4J67D>ntrY!+^3a{Uh>P(yyhUwFv4^{u$D2+czFG zhf)>b%s8-8e^NvH9}3lJ&#jt&W&!?|GV*_|fD`-~?$6GwF3dasQ8foBdFF%!e>$f0 zm9BdAjzhOD0MP>0r;fhtKGK{C>8Gs^x^7sVJo7LRTJ6sUYY8b~%k1?ppiZIh;pNX_ z-p!lc?t%}4Y6#%964NGA+N3Jb%LS?`-I}yEdI0ysovyu~+X4B<(xl00`8U3uJy81&KV;-F zlh)391I<8u0$bcq5B(05_#YLICjolhsiThAGg%41wWfWJ{k*P;Kl?}O0XO-idyYg`FAHTp6 zVAM{~PgYC-RdatYPXA2ZQ@^IN=}P46!Ja!iY@Wx2^mlhYVWj03waS}LWv8Ehyz)!Q zh&+?1SE@S)2uXIv`YkIp)Y_k?ZM0rHi@9@URZ=9_X7fIWxx>T;s)Y;tp>~A*n=A2W zzVF*m59BTK=x<@v;xa$y4C+DO@b#D9QK_PIqtLVVfm305U(X%SypbhO=qoCu>oyD( zelih28n0&mr}Ck8R>G>0+Gq9d-LLpblJTB>=P@nE_FV^b^mSCGy)IgpCd!C)d)_?S zvnK&GoX@Nt^M2hNM78-7G{keSM_@Ez1AX?*(V*DuTyksz{9j3!m>mINd%UaW_Kx^L zv$oToJKQ!si*vrwlZ9#6I&Zs;^S(8pfPQ{tNlM82nq0G$T`&0k42uavZsQFYL3yM9 zPo>E04vTjStyh1`o@^QVEyJesn&Gozps(4p`r847XlL)&lw#Q*%Ywp)J7)xSM~xe5 zqm)br?6?uW0eyNd@Qh0joXGe`ZGZwrK@$-h=UbbZEwI@g5O;BTTUvcz)B2*0*l+dq zg98T5Bkbq{#r>_y!@{QO;(;r@FRO0|-4w6H$BLWN*D1yzC@DYnM_91pnx zp-5N6?O}5aUSohyN`alyj!AH{nt%5Dlk>R1enW}r=obwceY0ZSfvyPKUKI%IuIZXO zG6t_tMJZOLl@_cVV(Jbn*m&`)?Fefz5jaXj^r2zi4zgR|D1X|m{bnyw&OoQOo;x@* z>PzO9yH}$K1WvV8U>c@HX_Dj(qPV|l zja|oHA14?0=*}0P(Z=;_@)dPmKYH8h3M&G*s|6qtTzO6#*O6AAT3ytpgStO!N(rzb zwY*FPb5%L>C8HCxz|mDr$C z-6BECbTSKg*QLV49{K)&bpVOD4I|2S5-1!09AJ1k|9n`fB|`n~uG?z&j0dl^PiRff zalJ`XT_e~YlQRQ`4x_eNJ8SnmC)zygd0y?iYX8fmoF(+GDXx=opzyujHJR>t_~-s# znDNDF?!K0Dl6heNQ%`)F|5b8x>n}d>l;V(H`)TIDiUa+hmskCq%1dC5>?y=NEuUaG z35dp3%uo%(Mb?=Bi<#^r-nB4aY#+>b3c0be; zS+WmrO%wo+AF%M5*5;RqC3Jy)u`+JlR=}iNc0Hxe>qDIi-c9VNtsijvwA0!h;*!^K z^VHGorFGipBS55|H9x_6*x64ef^(b>Ke!&utE8JXA2y^LTcsgVs2kR7ocfYD6y^oM zU-O6*Z;N99IHx3T+c@kEUYWKacm^LKPX}>amjIH1R1k?TfB3Bvg27()_P~3ZE=Xef z%mLohMsjTU9Ly$wl03JsoUp)bj#YUYs&eJ`_eYzi*Y^hx&-O?k zF@!6`TYwq>C|0r53Ls;3SIdfFYA_P8!gjOcTb6)ORDK=g@xQz~779ghx%mz+rrG3G zkqN!e^KaO)%PY)RfWCG|g>wB9yOovbx7&pW8~*Nnr~$~>J>7BaJZsQ;+ckZ}FG-o2 z|57cMSur?QIUux*`mLt*6J!0?NgYk7;+jri;TK0~XF$tJlz?&To435bzX&ic26LSB z>tGg9ASJ4=eQG_$?B*C*-L+=`D9nU9>rM9-WgvlBUj=hmK9T)mUCH>BU*c=dhi>fc z%=WDNa6&Tv=aCZ10om{;s<~zdfKmy<-p(H~jUl<-oeRX0G_BeG(e-$nJBsV=#12r5 zOfAqfzZ{h>s|kDP-o5H)U>oes7<5@-XuIs0!XM|^7x|<4&v7ftb21*}{ox5vht&RJ zsVKuEw*0Em^ZT9>)F0r%M&C)vNqBta&^V+CJeCfTWw!u?^#C zz{tc?=dBrbC^M*`6#3P{Jum?jx6@2Vj7o*#$WJT@us}iU129wI3;blc>F62OvU-b^ zL2JR}%ug3x^f~sN`}>#DbFR?1S2q@T>Y%B2D>nXwo+p7y;R*_-nEl=`8)Z67`WFA> z^z2a68q1EnS_NYAny4eaDRI3imOhVkT(7(l{k@fOih=Ld#RoTz_js`?y5)FRD`>SJ zNK@XZu`_2ZZ&s_r)HgSbypr_>jHpN}r>%Uu9Z?>-Wu`D`gVOjQxO@wU4|BcW@qY3x9hyC!KVg&K zRN&!~DXuezf#S@5D3{3?F?VrF3Gl1Xq)Rz~#oXWn0lBlP(jJXm-}@j0%%{xme@~K| zGS@6hkIFLkHm1n^zFd6ZgxENGe4b}L=oaUHP6V&0})c z6ukt6jQW8XXtD!zrSo7ffWf?K$O`>wB{9IAzk5r~v6v5XuD7rM0b4)6y9Gk&WH3Ux zbnbakCK%guciyhlS?jP^aVkoDySf0t`U|0hw!oGmlITr<#||{Py!M@F&I!1DvG{wG;b0{=VcNOdS%8y*yXAb)RLrxo5qf&8oCGYCJ+$1 zlDq-+I_hYDFND4?@$ZZSJ*hkU$8VekO?3TF>4^pR&Gn9lmr9dn4}973mwv}|Yvq5GAFaW=5$1Go5E#bb>Th{Apq@ZNtl z?Y#RZz>|}OueVP7>34^muRXx?qYt=k=)%9bIeIoy8T&EVecSIa>%|!*8H0VIjvw`d zudlbzlot>G_;xN%4i)8+Hjkbia~^W!{k_V#AHf|PXZK}tY-X&CitL5Gp8%xuC=BfA zIO;gY`~#5LTf1Q+h9(LB=*3U}uAbP_zAH}FRy?>q*e0gwfT;Y#vz*rC=eet;cFO|S zX1FePu<-0IsI18-?)&02+ZgmUP8KGC3>@{i++?*?{O z#F$_jJ^xF7aeqb3myNTLq}j2Td&^Ka{_+do1b(YB8}Ht^+tK3w2W)Tb<19kg`Ok5K zKbjyrgItuOr4xwR1FQ0F-21-#X$tK~bq2t(bIFN~=|I^#md)Ap(`gUY2D}bHc@d_t z^K7yilp#9y-Rs)OU9AgnNIT&OiZvTcfZ{|{PP_hQgO$v@dd<4C&+!DjPdyCGH5ZScl+9V1 zGrBQlR*2j^8ldGPz-w77@V^~o2fUWx-u(VyrfhElQhC$)+pKGse%a#LcXNjE-5&Xl zgd{K&>1hUZ(Gv=DYe(#DjXQ3?xR?$Fn$TP3KRTRaTYQ=xlV+c_9jOx>@hq~R2$Zp8 z3drY2{>Oa&#?JVdBhJCG_m^fM9->D;0Mw@^l;LWq z)1^3C-WcrvjDp&s{kX`d>`VczX#w`!mpA&)G9CZ1&;8*5$#V44pUW_}gQp{YVp zg*3$!T{eU229ABPO^A$BXPcJDMJ-dzENtd}Nh$6-&av5Vy9tyjP88*?42i5b=$hAK zXiVlF+!gzY-_=~--)4~JjNY~U!%1A&ySY$j6m0qIo~!#e@A!s{*+zRy$Q}M|a!a9F z+(gNVeN)Zz0D5V=`gR;b@#^YtA`K|E+CRD)FGKW!{4*6w>AKzlFt+bX*by7EdJs%& zGD6h%7Jwjh;m$1S>z*={+j^IW0IA#u@$+P#qlwo|U&;u-1H9n@P;EE}ReQRcKN~C8MG&yP9fg1><~7nGaH3Iw7`a#T z-efSq#%<|*0y&g_h)D#wXb70m=?Gri`tphp7*P{&7dPq?Ce8%JSkJTPr`n8cOj#Mi z%(rw0q(YEL7W(Bu$bedYJo8NCAITff0j+HZbz4i2kDgpx)uIjtx%-vm44_>9YC6*q z=-;#Zs3Mx(?q>Nt#DL=JU!xE)J&`9NpjKr8_1FMgriu=Qj`QeQTbmCd?t#8k{!W+f z*Xzz^sa?kPtg0U|Ebg4o=0>!WQi$Na0;(ss$7yo(R093WSOC7Zavcn*AI;PP^ zQ@z^IST(b(d{v+XaVgD^Z8-GrFeqj-M;%)ycOSfwee%X{?~2SZvX1w`tHwjG1jzRsN~^!r_=hEYd2Mz$7FQ= zn3aLrHs2ZwqxO|5$I85orVE)MPvpeA+&}kp_xR$kSY+d5Alrc%PrQf8_WFb`u~nbf z#k`)s*9+L+l!TRcuB@ybH!9U@f>%i}n3FGNd3*HTAN_bgXh4PZYJA5JCz?1!v~eHV z3~Q3G_HUx6tTh8fDcr&%jgxIC#Rl7EBQ3dp2+Onq_9(DK+LD-ZD~tV)7#wzsgiFcmg5@ z_4KHBufV$LQ@)G{QBpe4^BCiVJ)U$^80)^z6h ze0eR$;dP7Ws>nOJqtfa=M>-DB4xt|pyxns3quaW%4@r=Qt&5N8NgkiIq!{#6zBZ@M z8rD;Jvjdpf`uevW3-_3g&MNf`QhhyGef{U%A6fm4x?Hc8`r_gmXdv3U+0OFL_Nn|` z$tgCLjXHoN4}$#fAT-N;V}8mrCxDA{&o15X_HIfL4Zu^zj|KTZMn-p9MRp%-TZ)%+ zE&sTP^IJdLBPMD~GNLVUs{5LT?MapLMXeF(@lV#YJnDcXNJm9z4Hr;QL4U5e2AHUYVP2GxCZU1;yCo-B8tg z*S?e=BlTcXU=kgDbCs&pR`}Pg&3UT}PQ)y649Qi#y85_m((1E|@7((VvbP-hr9~IO zmHCWV{TAnzqpgwL{UJl1;X%e!&vmJnr`7atv3#sLeyJft@#9qUY}M@v`WgB=OX|8_ z%=9FX$^_lB#lKB=E6+XnJS)?#NBeB;tEk0;ncjog-&g!`=gM0VaqH=+piL$0AHUEYV>&3o9F2eSYlM_S8NpYUvAMYxMYNOB%ojgTd1Q<;Z4R?J2 zZcWMkKA%WaeE3qnwD)4r&I3c!7keK&wqGV^=k!i<94L)_JS(3{NYX!cE)+aV%BAj4 zUiMYZoqqq4Rbz3ZkG8k2f9@e$rv*12AI@#Wq)T%X9norPzEuX0h10Cd;2QNC{CbLS#~ZKiDO zhZ|ZeKLcT2Y4ODR_w?$Y@uYBCP5Zf&Z=etUp^%sqx13WDYyi{#`7JhM3^{y5a@UIs z{7Lz?&$3p(iaI$MI8U)GrK@rFy1T}&qQtm?x}>vPx4N9RO*|{z7;_nF7m-0V(s{?k zJHxP2yqC}4g!$}cwi7$81WT?`9xI=o^yA-^LwfX0E z1eW*QFpd{b9$uTY-%TH~ zmgD|SCm))>YRFhW;T5>^7ksy{@sHr;XHt{ab){c+U*8wCZrfGxrNpsTaoB(`=e#E@{X&T?)joe*z zqE<;brB+W3Wh8FCcDly#)xGBjAIrB2&P)Sdv~~6p5VF+84-4O>?c4$`DqMJ*E0fP~ ze5rGrRkow?>vlG0pjTJfIAJWGJ?nH$?fls_t>{S!%K%{)PpZZZ7ftxYA((OC5oV03 z`BKN-%~$^r)h5#qW*<(Odr)?CNzM-A9P14x{QV(8b7!w_+$g^93{s&!%!w_-1ROPQ zNWj-A^AiAEgAGN`nZLmj=Ele81B+dM{P+KvIAjj;!kZRDe1MghLl<*_=k86O_Vq8W z$JP^lP^Ou|j|TUJ|JghqWp;z{J$6@R8h)aMnT7ehAp&liOacQ*pfWn8ksEP$3n<7R z{0j09hq#?BbN*cmUHk3vXz6zMP)?-S1Hio9EB!4mT|Rn*Zzi~hd=?`5)SUkhM5lMy z-27)2;J+~gK0nFcRg))AL#=`MZ-I1p1XQ~ND%8~ae(K$Rpx}HJVCH4AeP#PO!W_=& zsrAjK$<$GY&u#*sf_m%#eK@Gt@;9iMmxKqm%;$_55+=FqHW23epTeB{-&U9*4R4`V z>wel=P!%rF-s^U8PoX~nw3~yAyp7z`|H~BVzp?WC->gSu3R?d8pznO>=S;oJof&)x z*FvxY-1pvpyx>~%nULbwzs*{CRsRZHHZR}5#Q#HjN@F~@-S}d?EiNe!LJ2 z2!cXj&_QzSL#WvMsz6f#?t5=v_3?Phnv11GW5v)-_XWCO$vACNoK0WVR@HB2Wj$`h z0QW`jj(#wh^gBaszQ+x#hPov~RXaxGAub zRdM~_nm~Kv?AgA34K;tK7UhqQc<)$6N)%5_xjpAxvIF;}=1S(G>h~a2gWH?oqhpuA z?^n(z8Ul{|=tvkbS|4bf;^@1ubW&@_*Tx4GE!i20bI`5b=|4JKo>YL5J=v?5qgN-O zh2^OSkKY~yvn#1kNj9&(ZQWGmBD%Nz;sj#Z$;{<;;`8t3Jp%CaJaD`lXfqRr6$Px* zhYa1y`7Itaa9iy_YV1?1zZ|%buw=>DVFXWy-x<4zEL>EV%>~m^udvW1UyL-?;M1I@;TUmCW06uuu(slUo*;`Li zuS_{ryYpJ9=e8$~v#zzjQa^CK(vW=!Vf-470F9h+!LirCv}4BclLg|(S^W)$!*y@J zz8rO>u6ubk$$sf>{dQdL6w|MM+Ywx>7f97r&cDzJ2w0*27k6(Rl;zsKjVgj7sDy+_ zH%N(+(g;#2iqa{lND9&|B3%L!A|<7CcS<+X4bt7+-+Aj=@A94be($^Yo;|bY+cVE! zYt3Rk_j6y@8OM1X$NAUs$rM8vQVhOG9vI9|Frjy4P&b+-Xa~wL2&$JKQFP&(%H0nN zEdd2U@K%cuWB&Z+#`A;-wbKc2HZDa?hdh?#qO2k&tRUleubhS_w~pGpoH`7O$&mI1 z|8&?g2$-zfW;&{+)>%eX>f)bfZ)3}Be)&S3fFsFwFF3I}%IdwnbreMvQzV4e&V-Lw z{?H!(%=jy`a_1nt;&SB7(dLnk1eyT?P3mRgi+B1wMP`?FNUJHCmoeKHrYPkJLNdVo zXE%0k7id!#XK0_7d2(c6IUTL`q+q_gT)cp|hvk7qN>}_uG#=(^`Qgf-LiCEM+)sXeXpue-{AKj&?r;5Z4f- zqcIxtO@%*o`^EGa4E>h8${ddmXqyVfSq4U*wDZn{>FBo)rxa|k&3|%{BJ?%ZxpB%e z!Xt*!|>mz%1lI5S4mADDB3G z?upd;{b(a-sPhMV!{m+(c0M`zf`U0TThs)|G&@A^ad#Cf4&)EVK+HRr*_tRQbknx< zutms5R{O))NRKV}0Fc*KSUPMJremS#)iaQ5r-@#gio;M&^cO_1YDVIkKhSaEMl=A1 zbUkG&J_rI+N`EL_>beDI6VgdmkgOO^ONZnxhR#EOwdFm_Y{X^fr-Y2J)g1SyU$#Z? z&H$_GwN1rm-+)b=Z{flrrYvcXsf`wuiuAhZZktYsA+)qGS4_g|Hs_;_uik;F3w6Z_ z416sZVpx>3Yuw_8>=yRIx6FvFG7x^oa$etchq_2RhaxvYr$=5NfIaUi z;cE?bE#L8>*5S@_z80fH`9>2{tHbVyqH5z@-K6n85$TY{knC|$4ZFjEd5+ficj3{* z^?;P(fnw*CZFhdI0$*);H5`ODpJISDvj@z+S{FUzyo3In zsIT*0c;0eb)Thv$L4=Qr-hH*<&b=Ok(A}JiAN&y`7-0nf_YgmtKj1mk>jZE@G}#2L zFu9b|sMwBi58^5ena zzDTQ4J;lYstV=|<;_upD9^;6BUg^QbZsNXhJ${2BywmWVRYj0Mr=S10sBXVrn2H+s~53q8IHLP3d5zWVsb4ht9!1%PahKYFcZka)~LWK74}hRnaj5J2znzW{nCw(C7i zCyf~82nQZiaPFmb{n0+P955jrEF+C`|4h9k!kSS78|q7 zX4^PZ6w(G)iQaXH$z;iTJE@mg=GES@nZJF0WUZ7^{KcHwX3<+Ut&+n?MG=;8EI1p*ucF+G8cw2eG%-c!jd6#x%iPu9f-8ZRt z7r2cEpPM(!f@q{kXrQx8V77@VgJXBZDthEz?r4*cdSn5jTV%1J8*d6`@->vb&cY=f zA-C5xdto6z`pslvJKskZp@cI@$52PU8Ah%+%}a+`eAKccqKl}`Uccg0=hT4Z;5D8r za4TRGTqjUDM)YjTlc5>lo(%q?c>2HFT8LrRY`;^gJveN&hZv)e}fM z6d}z5#CwChFEuUDKlM$7yD%37xq)FG%s+$Nt=}zf`K2k>s93ZL81WB-xV1jQ>16+& z0vG7Nop=7~(GF`0fqVN=964q81OE>hOa$fIASIF@=F(6>`|R2ceAOr?a(RrvHmd*m z9v_lvZW6@+%?Q%xuZCZdMRp4Ul?q$swI189mnt;mznJR2fEXAcY}r5HMT)rJMObq~ zn;wiBpZ&(<(@mP@?jS8PND{<9u;{zl=b{I`#Fj*OWVCqhe-v?Vg*X4IHTN(5KtVx& z`rtSAn-W5Q0A$=WLcr3>^lq~R`v2nm)IqJvXR@c1_t_2T&~Fe<-g{`Cwz zFOW_|g$AC1s)2y>uAmC4)NS;5pd5tadR71V3^6u;A>H=pU!6URnoRc_Gm&q;dJJX< zyq`EOn)4Gh1}=B;cq(Cj}|`uz+{5x0uLy@Ul9o&o2% zcQ_?E%e#0YR5^fXWiHk}`|}xqO!jN`U?6xd7ha$I)!&1)KLT(M%R|o=Z~fp;AkujW zg%N(ng!dCS|AY=}8Qxws9WRT{TZqWDIK57{i$k3y)& z>sopKjT&_e<98G2vlIdKI6l$=!Eg}cs}K0K2z!GNM+J2t_GN>FH-+AL=a29+%88o7 zRQsRKgX6C&9^QV21tM3^?=fA8zD;ZeOnz+v!|(mf)kU@c>Yl$D&MP&@OOr1n{>{6O z2+2!up6^*cybD8I%-?8>>yvwZ@C@Sc3@q;qAK#ve6aT>BA}kF*BjXpIKUvwR;e@|` zMpGiC3db@cppY!5{biBH6`jhJi*RVoAP9cm-<QWQV`N@4mfVeEN2 z2purJZ~`O8WL&fh2EA@^(LjBeA1Zj=yc{_AfcSN{7+=WD5l4ODvhQDJb0-XGM$~;C zGF}lC=JRs5p^W^z$-%~My6OtPF`qyxxQQ{z1p7E}Q2jw{N>My%(MhHAxmLtR zPoGVhz0hJ&0r7N->suYnGf18srfLc2G%$=P#*mnt2eQ5Aj)-5^Ud>Ey*TdU(J4;!b zqcYza52g!CZaiwUz!U;*a4P;c4&$<@bhnQNQsZ+!?qcP+p6eSx)cHR>{_m^vjfE!N zt`+6iB%yKg-rKNTuO%F^2CzZFKtf@zQGkkVzqG-LO)0Z7y>PhHCg)gPgGn)cX-(N= zb<(Vjx1J1GAUp>1j_F&o*fD1EfW|3&eH$o8U#p5V9f$Sm9SNFl&79i@ZzAyS(>!G4Zz3E)W|&4yqQ_=~ zljet_EF@Bf8@SP)SLp}Y*5a6&%xgc@eeElT0m)KPF|CFi&ix8(q5p>#08L!)Y#;o~ z0bne5=&F9eIN(|vp;^^u*i$KB270x&( zKfh;EI;rWMA&ZM)G_}=j3i$WxaYw@YSx&ZB$11896#LTTk2~1q-q1&9&GAs!+}|WJ zp3#_8L(N9-CXUO_ZR8z5Yml(yYZIgJh77~3AMppL?FWV4G+9kx9jxg|~!Md!cu_N9TlR>bD>^{SocR!%}{h_eHM4 zj4I+4@ec=YbS?XT^SAa+Jqrl>9!Y(+~5$P zDp@>~KX0l3%do&|c9hLjyuR>|QRQYATTwzLohCtvYMq6`QHoUr-mO?Pxse08i8n(l zshJ6@tx*C)_rp1ostG=uf;qwB6RYWHyt@_#;zi{pq;ZGh4sy`4Dz;e_$n?ldbB~xm zN#h|J376j_QCyO`aWWtBC0t^}>k)<>OcAAyjdJ&9NADVoQ0etNG4Bb)d!eSeya?lE zzSR3oDm>o+Pcvp3=6UVOm-LOWOp}l4gm#3!Bi2%`Lo;2zcOrUJMrz2h*!88As>aBH zQoBE~L^$+Qv-Ii`UL&SD61iv6byT)CKXKIE^Y)jTe6&UWCSG};UcqKp;>6MH)LE>z z-30%%!dRl#l8 z|Kp2EQ0@&{+pC4*S9f{kS4CXm1c^uMQEt%t^`(W z@rQ6MDNcUi!&F=6#Ln=&glzS zEviBgWX}h9pyN>Ggl~|1B#e(_=CML{_97X^M6_@7CN@CkRx~hEBCxY0d<7z+5VX*AVJhhs3 z|Jy(zRjGrmbDP&-J8EAs<6CIn9{qYdxWftxJ=6d^k24_lS%~flt-#e5^)I+AZcP|O z>KCsSB-gQ=SOB+P@br;JF=tZv!fmo`nbksmiRhqd0+zt2{jW^^2ni(P)61du_>)A3 znP}B(0gDFF!@6Cy_=273Fs~;_{CuHEV{q2BsC_GF(EvwmknBMDL!{!7ruP*l0> zq;N=BLg=o|ZapdWi&RfP7hgxWu2D@Aci|iqW#B4hH10Q|Ou3Yt```PsAz_4hopVzy zPkQVU?ox z#rc~H@MyJCzor!?%2AE~Ur`hOPnszIzsAS-|M^3kV_Sob?|ledcaD}$4p+JRG@Z(b z1nmovw%&ag83KJW9x49fAx!xfjEH`P5a_{jfcWeOYy1~{URGfHX^!Qx%Ii{ephAPE z$l3nV6Q2VfAuyU{@13jS>d zX-zhWIHz?$H`>T@Wms=?-OmbfNd825*Db8Cd?#9?C z1o+$65a0pVD*23#?YB?V#;D1Z2i@%O=$c-A@+R6UA!)3gsrhrBUD#|P_t1*XyeZ;N-esi)Cv~Lk?Xks=jD!C0X z{xtb1j3~t{c}_tFojD8;BhOfQDKJ72T2!s%qzDZd`ko#s1);5$preqF%6K=~m^ z*hA+4DDKNbxIg+37Dz(?wHaSrW3hqyJ@2Y#~JS~abEEU{u_>VSP z3lywdAUN)yooh@M*q4(n=MQF!owl*gHkuVWS;snLE(bcy_5F7m`HLTCr=jZ}Bd8YK z`;NsmB0Es^1j7MtL4?gL-IsPc{HD8fA4lG=?@oD;C5;Ru1}XE;)uN*SE4LUwr4~_JY!Er*mMTh7jKhhsyo6 zMj@5Cz^Z`{ly?oE(Wj%+tu}|H)K^1HZ$1O|?ZtXTo{1>Nu=O4SvL%QC| zh_+5(F+|mvJv(n2Ib6Rq$muVG*v4MCHtF~ayu8A{8vEpXB zRarBlCcCUww0U>>AX|J+SvT?p)=>?;;4{Uo#sz%kR&Kz>4$TH`Z7t=r8{6hZ8gkz_ zez18^c|lOCd^2)242(>+v)oVN`laGiCMYqWi7VqUSe9bH3KcG6A5r&AOli)od^6!m z9}WtK?n~Eh#whp%ITogT+$z)YP8~fL!oda8bAOf@sqc;II0TB|0VlN4@&wq@rissSbEup62WF(i7N*by17y4a~(y2|VQ(pc^2XJTK&Mv| zcM5m2j$H6;8pmKSuep%ofmve$UhasZ+!xu+WO1!|@49bA{)Z9LSx@|Yo4pThK$2T# z#d+`8P?}%r%A3@>uU9s9EyAn5hBu!Et!>3e_isv%{PVur>JiJl?`rOKL#qUb#Dn~0K5*};GbAHy7C zmcUmMBlzknrGW+u+tWOZVUiJY)*nSZeTa)~ADu?*@Qjo{!j!=MTw0@x>?NthQGcAs z)W#uL7IH+5X`}a;CJ8-JoKIOGt@c0Kk{YW;<&FH(@!KQ_C#7@`YbT_(^cv_tQ(E=q zsI7=UkuK587ww51M66=Jm@JP<4Ep8Hr{kJ?w=OIa$V?u5+5KFi{+&I{2$|4&T7W?6KtBpXGn=ewNlxugppU4idmA>Gt zLgd+s7aMMGJ)drbvWT<9;;Z53fv>XUn~B_IN%^h`srLeUu8F5U3Yy(K2K93GkabgN zNO7PrhW&<*Aft3sXque)hrZDAEm~C`gW4Q_4f}QR&0l2;efU7slZa`|Htvf3R*TmJ zjjo3+Uu7K@o>+4J1XbYUU9~HSGl-OqtvPL&hK$z>IrBH(XF5cqh(qz{;;rLrxmiMJ zBd@B@$ESRapIasH4~#M;RL4oEy{i0}zLuasX_mk<7kh>PCE*pmx_nr!eBu!Ke8u8q z9gR*Vo~U_k$l++I&8EJpqckx%Sf)GWT2JjrCpPU8uN--?|r%P$nOF3@sFR)F3(I2kWw#Bx~l#g@SSVZ$#VQ=M~uwEkdM zK0Hk*Zr5yBSI|~ge_gFKuJ%sBhm_jgx#NYI?3{MXt#Usz6Ymz4Ze#P3f!NcEC#Pqf z1u<{wuLu%n~aydV~3-Acl#GQ&1=4yrJ@0J<8$nmSEj8KFdhkYRI zgZ@A5$9e65lF(1<%Fj4AznKxgMm_XnK0jhZO~9tHNl=-T4oH;^^qK_Cgh3nAar{`T zP~jD%987H^a(F>^S#Nv9LyXsctgY1{~83$;+a3nv?K&gF9<+&2 zJd7C)i+T!ZC|;4OhH-!9m%HP1dbCeD2nt?J7++W*3kCWr_q}}ytd3v{Il~{pPTO9# zdZ0wK=Vi2Tr+r86^?*j{PIJqR=G8=eWwJWLcl7MW<`oHy; zWtwafDqGze@RC3LoB;Vuelw;5eToGr6tABR{&HUWE95zc!!x#90lSx*t!J^sqG+;Awt#Xk2)pj$_@ctlN_>YLu_uCLxTP?K5AjEgLa`J1kDgp*^m=YH zqq(*3Y)fi|+5U?C>B(cybX4=`uiuz5hbIuTv}GawfKcNH$%zL(5;pCvMW1z9b|j-t zgzQ$&8i@zwIrTBzh(Sd|bC96j3nU4|#6Mf>p`}3bBS1^x-C4AA*M!AI&f=h=ic8&C z)2=~1-}3DFWh!kI2Cq|*Sd{aRo|bPf?OV!rMLn7|j}|12QdvyLbVy-3O1{(c#P0QO z*o1X{nA0^0s|v$m$Cry4MlC`GT4}^ArCFQ9?5D$%dOG`|j0A~xB$YqtW}>ru!)&nE zpJLajxuNN&hdHfS9_As)@Tg6o%+aRG)8a|&!C_bLB8h>IpIQ8es0K*maQ1@*O7SXV zmDPue{SAsV7KJU?y(i0Tw{Ic!-1D9{w~ACO`^Jqk`cS%<#AZ^Ov7$5Ut7TPfSTE8z z!yt{uhw4xmh31bBJ7uN+$>|lmiT0$hS-+0+-q;q+7n`|#=X>KMuyCd`C6E1`j;fb{ z1O4zBfCU68rC@~7%wDtbH~@>4Ka0nk0|f8&fmouNuvwt_mRaTx*IL0sEb(`$kCj%F zXvv3bo|)d%e3w8qY@582}gGA^8IIcuZinaL`y$EoD$pI;Fe@g80gH&LIu*V1Na%+j+R$LAN)mk@9DY^X$X zMV-RxbY!_4H&)@%M6?&{prc8p0Q(ces{5wsJx#>3AfjjiR;d`5%r{QLDB=}s^E>&* z4~=m!oUBS@EJ}{M`;%_#wwVvx#M-}(xSNZXF4I9UC0~&KDYZA-_crQXrP%SP_jbIF z=0~OPGVCIT%@|ZG)+4UL&ZL~PR8O4p)PJ&DE-85$VV=E@Cb-Kv;kz87M@B7V?L#Io zIQ|SG_$>ST4M1ObH``f$EFANz@~vC3U0vlICveGL-+_OxeqcN6**DRvPB@scd`{zogcNspv$(d$+delsFq&KiX!?`i8BHn5Du0Va|P?gTABz!EAt&20>V&6A_ zWXF1sNG3`KMT!EV!^OA;!4GFH{__#Oj~+iB=L7`Jm(3w8ey_M+wp^2Fsn(u=4K9>% zVD-n60~ypij2obaec$)i;tL^NENkCi(4z{FxR|(`gTA>5Uc5_58yGn$`RR&7B&CC@}^A6pTHYwCE4R<@bnUu^n_Wz_ysK#4gnvp%lha)TdN5(8K-QbbZaE~t`k z|M_SOQ(PoJ&dmOC%`P)mj_?x*R4keIv4yaVIRdbUq-#rGwuXNKf%{8RMy1N6TCz61 zu0-D{0U+>S(talLqgu2Dpb3h4@KIFfo$>2?+NQS#4iI+~o@c&tCYDu-tMnzW5sU|u zo_-F!&iI&@=_+~B+Iu2m?|Y~_p}*UxuppPTG|~R zy!B!z`^fe1&$;%|U!v$Vim@&>nrk2b^r_NXvCvjmVrH9bFy8Qss_Rc!)~b_Hc| zps&&>kku41r5B2(u704X(eo)Iwd|*y{U&_oNdVSFWSynUq2$r!dJ4nsrGY0+`!Hy# zmA>h9(RBM~`V}EqS;9ej$Na;~ho5eV4_nXR@);eN4H*@9rf}u0xddw#;i^@B$H)Md z@fWVMrdX$YlUSPoD1OWx%_u*Ret%C1Ra8uPNsJD+L7bv#*W8Z;`PT0p{F~@cY-)?t z(s|fzHP+jSF|loK^~~e1yeT5=QI0h-t3Rr)a2eJj*s)&2pm5Fwzvj>#qRNw?f4fQ^ zs7?DFSk1inn_8~tWd!1>{dlUFRdOZObgR&)hNY-P<{qF2sMSV!UkRM8`#P^V!kZ6S^wss6yg@KAw!#zo zX;5@MW2r0nGKF&`XfrTL7%^$i;!^zaX}Cu*Cmsg3;LbY@2qFoCumxk#Gm9Ir#Cq`= zy|0lkvHh_`$<(d`+^oFe1bES#7FokmSfz2T@SN+93yP6oR1*17;CTafj`7GH`V)<> z40@ocpRfJQ#pm>oTBurpExc6I?;_I%6sIRQgqOGr8Qz;*===oBOFbi(%gp0R{BW#I{5!0F07;h z8LBU+`(#hLp^XCC&xYyZIBSvRg0Y*g&uP~o zPUx9n2;+_Wt{C`UEP=DNVGuvJu33dXpg)W2LFAmd`ncB1Nq_r7>5b0uv3=&#VU$?D zkeH#?uYIxY%eWj*>=;jK4FhwEXg;`rA;Lqfe|zl|&OgxSs4k_BpNyRzI#De|!de?S zp&ELD-h$VfF5;JHj_hFbk6+9M?jT8#y6@Fs2_t~dN%tW9`I?JP=Cz1B7RlY7O0Ogr z(#;A+EHQo6vGG|nN|jOR~V!M=8PZAoDXV4cC*|IkTD{^bHFDcjnX3A;O z>d9fVF}19{vJUwo_(Jz7<0TjzFIUJ6*P%`+Y;tNSyMw$cAqnn z=yxsK>Xdo8_VfEhQw}7L8Ss({qC@CaRlwqrf2XRTwCijJ2D;*gVuLVnNYW^?O-kNY zUjgIF+A2I&)(e-fPnDF$V4jg^8UI!ou#K^(b0PlPwXFt;jM7X(sN&wTP{Ap< zg`5IcFDI>8zrza!QApclooiAu*FxX$0(U372;HL3{h;U8qk48tb;ml;!mM>E{LhsH zI;vI?nvB4)^UwpDns>mKiXw4ma27|4hgCX6O0ptaRao!w?6<0?b*7twWjZII{PM_) z^0Mz!GxP0siR@BBbq;eU&--}@KIAQcbn5BD7$9)xz49DbxKXfjP;R6tWmVaO#h~0V zL_uAxb$2BP$BFBMJJXOaZ}Kf=x;(GgY~!mHeK5I)#xggUpY+2Xac1R(#^eE`S`@)x z$o>5hDm(0HH0AT!uO<$vuqGs^La3j-xoASkU8K_-6(Ed@zD9<<9_AK0kW=wMwotgU&$3jP~Y?U@G@1S><$hJ`N2C==dg?iB2z7|Y+{M$P+S?IF(1z(V#G z|A|<`p@-@^VWa6?6>b={-aI+L>zyxG|Hby~;*{|I665tX3x zC1J;kjZ(S&Jq`Q40LkKTQH~ANcJJ|qkL_W1kY9`y%xlo@W&ZGYRLUp=f~DV&T^Kb; zs%o{Kml4gIx~o=6L${?VE?5}d-EVCo<;mlKy}w4>>pgw{)hvL#%vDSidz4X{!?>w* zpE>ljp?b&voOsu|0&Z+8Q0H{O1TI>#fVlTNlr{w3!fF|CMeO2-n)z?451u(gaYjl^ z*oksBw0wtJ;E76CWpj?hUDw6CnZ)g~7_@8mdaovu}5O|U*? z*@wJ3v9{8a5=y;63g~~LbnuM;VsDD;sEU!-DhOCq!hnM!9RO#U<8Za2!owb>itqJ6 z5|1svf8(4f4yPYEGYg1r=Tk} zlV1z%4WzMI4?1J42(G#;$Nb=dNvkmi8c%(#EQ?0k&<0bb<7GI20orGqALXqP^IKndWrF4fkofnlh?DVfozy z5K2E+%r2gWRr7k4EEtJ}(M~4=S^e<#0`_44Iy*80MZiB~qniJdiD(dNiSr6N=dm z5`TS!lJxdsNI~J(Xh#)-ra0|wRc2qPQ9U^+9DfF0>%+YYm(CWwQeX`sFo7Wc8Dep4 z*2MTV42Gv)FPyQHM!87)A!POK`zz!n_;;Z((B^q%c!bhG!+w68mWAN+llBMVdEJw z4zhw^rDhI=5IvNOQ4d-&KjSsg{srSQ??o*oA>_T%d_Kd4 zQYn2BAM_BnZ`L|-;sX1-Pf!I+NKojFon0qBo6lnebwYws&4A_~Ws-9$>d&ZkNb+XP zJ9G~t7;Gp9zZ+4bvL01FpvRq%Zw1yNFBxZn@4nmh^}L@USA{b1-ch{k28?BM#A?j* zRZqOsRWm5$rkR=!R!xuR#&Y$7s5hRmd3SV_^nndidOZC;t+VllUa; z45<7?OfwRDBTVP+W*LFfE5lAxgd>7(XS%|Or82j_bFnG{d8H)6=vmLZeApye1@LGB9!aw}i2lv65 zcTp-!k+us-or*PpV$@tE4Zy1MOWbT18pGMN-C5GR0YSx15Sv|oitl7^@&SON39^U< zK%vF^26ytCj22$i5~s34$5ZGICVXyNa1z5$jt}`TeXu1bLrh4)`l5~>{;YQJ9w@q1 zRSoOXGW1@vF$cuqUFDcte~USRba!0z6rd!u(Z1Xd+YnI5%ZEx_=R z-DWhOGk@xn66|>p*#c8T#$ep^Eb9kKjC}nbFVl0>9Bziv#TRSF`6x!HYewmP0Ue9? zWjMV1PeNg&Tm#MUCsM27j-S-H7gq@6r(E!ZihIpfm%i6V7kk;kUnMPw@Lw`3HWMXI8|LlUq6w_A=#csg^N=GWzXqE5ZV`HFO^=oid9*_R@Ad z0^_4#6UR>d?Q1$?}S>EbBk12xwZm(!5yLqa}9o73aJ}SJ_KHP$jwa~R%Uld#BdrK{b zB83zL^VBUT|MWD%_b=K*Huej<;LU-*jJQ;0^{bXxrYSjo`_=)I{CaJylF~Rb-LwzS z_JKJi-px1l;qFv!0JTIow4WeS1&PQv;cbM*1FxNjiu{B$?`fOAqlXawji=Z&pr`)G zqiy2v;VN8sc?dehShtk9ol2?+K>fL4sU)X~nP+W#E?wbER~c0`@`G?-BxTor?^C9No`{0NCxyaDeTE&I)w#rCF{EG?@iwQ%pej!@ zMi+^AT8ddo%YmHpdGwE)d@<%_+Kn{W>Tr@{`M3;;{s~Ytft82{A}kba1$2|?*u~;{ z4Znp{e~idEUPs`@ghSop8N;nrd8R8>`8MwfJb!amd{J)o1b$5^K&sgFIV@OC}%be;e1-o;1V2a;S=rV zf^61Pz{B-HJZQ<=IbM$rlfaoVT@BCJp%$D(%v8bH+PL!?CI*2ic4cNJsV?TMHr-jZ z?Y1ZZRb~_%e|!`n%^LdfHjKJ+`f5k!JPaP^uS$N{hxt}OX8kV1>PjQ#sWb%^`!SZgusPF zVyXn}(IbmEfG;u7fu$HKHPqv8?H5G%;1&R5k%gQt@(f)&s1)`I%BZ#H-$5VnOWtOw zUy0Aa^@su>(^jAnk!Lr)Gd`8$qwQZu#eHkRJ<9H#x8`Pb2K}wE%)GkgfcPls+Lg1< zOf$-Mq$zkUJyENuA2qGMU9@w!$wwO{U^c+Eh3wnp5gwi~eQ$o^MI(?q=i zBCl=|hpmoILFP=VQL^{^N5rgr0fMJTX1pP8wF(85?oKJH50zMU0ICuzKX-+v5=UPl zRf#f$QBU%E9Q$R57v%reI=n?ak7s!}hj94_$6+q@%ulANBTj;keFxi$jb$R(jznnh=Q-1_U$w`;tY^C2L%bh$ z#o+8wY$Y+(eQS4S$X^9;k-$K3soXu`N+-g#a6H-9)#Y{slZv?hE#VIihq0PMy5!AEhT2_cSe-EU4OswIY67zX& zg#NHW3FREGGjt)JktL?3;C`*0Wd&To^SyDGiMe=8&pl)GxYi=+A%9u1ITN=Ai=X@E zU-3qm7jPvedWYTz|HN2Yx=j6^8#r5QNNFKy1p9u{sW;TY>n9QTRc}ZzsVh!TO3-aR z>fL$tB%!vJD*H^09t)#ODC``-+Pvz#=>h2YS3T^%M%n6nN^lI+>Wp6!9fJ;og_M-X zBnF*l;f>5lJl*FiCtG*dW^k^rLN?>Jp-`b7Tp_&^|K(787l)Nq=y>bNCvGXTbrp_} zr>8Z*5LKVS;$qfvxzOcw5tfAY@vP&LFJH%IoL#fci9~yd!=7d>`nLUs zWK0bzf?jrk4O$mC*WmVTjZGl_rw~HvV=0EmCk03@YEz<$)Ztt*Vo<_CLTx=LF}Vri6RFIo&0DMB|CZ*eim zhuqp^T6m_0{g^Rk@ac183AavGU$Q(C{doXaF1xa)ZbRC+fmtYNQvF^>4=+Mmfb!?9 zRj49^)mN}J#_TsAB;isq5tL_ksn_<(70@e{-0p$lT4-eTD3=eeubN_ybClOL6VU*$_EG2136{a`wxemLOEN+8wE zq6-0umW)IWLZkSrJ3rr^tC?mTmY{NG*GcWqV&Nbp_`y+rId#7~@HN<6y&Nty%{Fme z7rE4!OOJkkC@LYeH8hTqFGUncQ%FJ{^Q-JqQl%uL6qMk$ANWC z%8vDp9M^I+Igf0zX28GdXnzwakLMtRvC&s=fNUmBJMThY07A56`^f7}mkIV`5_2Wv zZp85vpx<`3#zum;SdBa1!@`N~2QMBQlo{t&y{_4Hv%;o1Qbqgz zEnh&Nd4LQ#qLP@9ne>SCc7pz{1t^%#7E+nl_uplvp()%eo(hzq*}3O_g%mM~o8ALL zQ46Gz2@iWIU?X`_h4k!gwlmZs79d^7>_q~RPT01X^%4h5$r5PyQ*U{6UDN>m!Xs;`u+qV zWy3}N47Dav;g&0HCRzRYvjx*yfit?;4vqCnlV8q1R=nO^=|*9AB^>;BVN1!0w$=kN zgIi(C!RRbOleKPj2{Bx01X{WSSxIKLFsJXY z-2CVk%3~F^_lqLTb>r297h^|Yq09}@F|f61fe1}gKc0`dzSDh2R%aEs)RKM)v~+5W zbys?|n_mBj5%GhGck}{E^LC%+>tw}@6%Tv0_`UXNWv}%H^YOdGCvXr*n}g3`@&70? zHetyH(D(VSHv>Ki&Fj3i>QyjMkx2R+U?d}W0=VH#IRCeSPY&ZDO~?HN5w-Yohr{si zE*HG9ztvlulX%Xjn&>vIbAO$!(AfsT0|Z>a?d!fW?#1^~XLe=O>S6CZdd^_wLX{mU z*G*Bpnt~s|g(2M?=;v_JrTgpYH;|`4xt8Pp*VAL)aK1@M_&8K$X`GwDJ%E5!jbVL^ zfnM6mw<2RsQB7Euj`;BJ21s zEl4&EmfKH0ZV^3(T?SgoPm`#Q-?`EfxFW5+sj?m9eSl!{lJiuQ&%Rf)5gc`GIla!Q z|9<#jPchVAXk`*C{G0W+zoNc64s~Fi(rMu(Te1)v{l4*Bj|Q9WY~iju(+^~Zs&%&! zNV@nhx1D=kA872+i5>ucbXhHzdgdmVL{+UIE*Dd!_9w{ONIq7EuuN;fKS2CfNyxzG zEXQm)UQMi^(_iG(uiT&Il?!bb0$D)S3ub(5^%ciEs-Ap_D;UjJXz4CDa9g@6jgr7E zrP}C$_JFR;U*q9uYATn%TD|ymhK)qp-LA{_qa--p}&; zwNHE+5z9dc+RIAJmBm<9oXpoVi?pEZ8;X2l-8#?fV#Yt5MYn2Vlf#9}faZ*7B$l8Q zngJe~Dx(*h>Zi39=hndfRQLBz)n$UH-(e1q2s=Ke8Ks8(encK9Io|0s2L7w$U{=E? z$a(8Gk_79Byr?(6+xjqCqwEvh(6hP9zo|w$L+me_POElX>4zTV{=!I)$42|sW+$PR zH*s`vSp_H~s@~XvO*gVX=FM0=d!a0{ENA-l4U7q%30X@hS4=M)z`jmHdV-Mrp7k4% z@Br&ne?0)_S$lu2xN+#or)qkbEFzzU_&*5gXK*7|5}-l=X55OW;@`nF!fk-2_cx;Z zGYIhA=rcBV{_fW*ozTA>w!-jn#>cc8ZEK@F>~{;cwhDl}WZWy8Cns5^1#dCy$NetM zIu(}Q?r~$E8_Y{l21~&sqFx6$K@$|(1z2uD*9?K{-vjXtD&3OB*+zB*N{NKQ=T=$mSXod4Non6E($W$=MC zQDx1}{nwX`_p1a*bfU2R2y*FjN(I+)K$-Z~DYcZhfEF&VmfK;W%8}Rz*caXU5Vjqb z5TGHs9G5T`O+qmWBK8n}&?z34*RkxzgBYwN?tEksr{fzhjmEG3B*6;hwQ+C$oEIRh zgu3?dvIujV>6zo~cbLZbXgGJV#~dZWU&IpiI|P!$G`HE`GwVG7THEP`qaOa1#7yZk zp>C3BL2}*zRA31*7f8)Nz&z8N*u&v^$>kN}pKg~$H6d4>PVKmPtB<#%*NDBJ^QuKx z+Him&WheSlLv4MbmpyQfR7UGMHt5)517E(qiJ3x2qai~pzKmD?s)MQvBq{qsvrarM z$};=tCVuYCf()ZVM{6$5J&V9{w(`_#5rf8v6a`ARc%`#su!E>W@98I%PM9i6;E}+N zg72pRqjswTIA}~yzdcF}$x`{1ujnCP&68N|g#SL~Xs8Mq8b+4GrV#EfoJ3cVv9Fhxe|fQLT{P@MT5aa-qY}BPJjWm zLgU3Mq=m(;aUThy*zzc{{Oj+X3tT}$ae5p2l4Ki5$FYM?^Sx2!B($KU-yrLN3U+Ffux4KmcKJk1KgV=YH8NBBs~026L140VaEpr{B{8#RdWg#h(lrm$X88oOhwapYb|sW*qrDvQ!q%JlKoiC(`et z^}pDA&!DKbu3H$|MjDZfppvr^MFd2U92G=GrBy(Jh)9zp=L`)=d1eaR^5NM?w_~n{5bZh)9v1Ct-0nLW6Uu>FeTXKABvgxJw!b? zxA*X9nv)Qe_!h{_7YmJZb%w2w_}*7~1EqM!n7Ek<8qpA1=*u%T)76hdt5m#ID157t z>kyd(%tcCE9H~zNPg>R2*KlMMs(2#A;)lpICS(AfWjl1&P)Th&&UA?@f4r}!$(e%Y zBzeTDSVNwT%{9HCbbo3Eka)p)A~0$hOLI=JyBdPk$_|;C9r`FBW4<4&u}B~r`~Les zfec2?qOXTIv3q}DxlnZZ*KrU0YhS~+nzKD$q&;Q};xX<>k-L-|NM_C2V;*nlSr8;Z zewiefq1|*I$VMi6CJN;lVB5s}`;kFys{=khGP|HT_>pTWEEZrbb6F@B8HrS*tYY>G z0!2eEkqz*A21;|NkHkJd92biw88)gep}8di#EaA(%*CY?_Ur!2y?{(qhPL7`HHK76 zWFKr$43^V&_zK<1rVW2hDO$w2r_~5Zz}3en7~UWSMTJDXk-O#h=`aVfuAeXG8(`j9 z1rWR?j^y@eF3ewD7$7&?t5cYQ?1CT2SlaHN`KJ53!0$7?E3oFQ;-4Um90xz@V~lno z|KPR@w+l(>Em@ZVB^n*RO;W&HLM@&oTNHp;u+vOV`AGP-4RQ&!pI>tZ;l9ukAQ)$e zVqf~1Xe~Lo!e0}*%hU`=r<9PIrY&?7U z{KtZYhDZu(=LgY?H^}$S zI9GFOm@`-`x%56ZT`Y$A*uVQA*9>Jjj(3G5iJ^+ba%XcTSbT0+f`?W@TTTASER4b9 zj|jQRQOBHv=9(N1Ieh}n+4jDa`&c~Z!mZ4!Rk!iJlt%CV(H=iz?2BEWgAb= zq}tQEDp)HeG-Rpj%xPqFLiZjNnFUEw>V2kA#CQTOSc77-zYhS3)k916S#h)JrE=meug`rA4RPydc)%8eIHA(NTqYZ zX)kh;*fNxy9s^aHBtV#{SoEzN0~vNUVJ&WzfRMxiN5I?BSL`)@Yd zIQK*DF_VkI$GvEGVb+V`QVF3Ju?@g_ zTtnMM)fPyD!U~Xux9L9ywT9@4<#hAPVEZdN@+&x8KKc(Kl&ZtGixBM61tzHHqaWYK zP(=H(`9Y84<$fXi*{m7By}8kx$ zp?Zy95mc$jyrI!`=ze1pk}ud4(nz{(aUP9Wq-_j_d?Ob!#Gc?X8Dg-P;#yW(HVqJCM*4@_wiO+B8U`a+b64`u{A?b%dIVU`ej1dqe zTrf&NEu3Vo$4(Nzo=IRg3zH@->fZs1j<-Wx?<{7pyZf`H9+DAV4xv?{?1ZtpPS1WR zt@@*XXmh5mheU)C@Cs0|styJOc>?jrhprl|3K(O#9mQinsz*RWHTiHMV9Qu^F=~WS z*dlJ?=$awME13H?4N=ublBJ zuR@*9xr znX%mF$NQgu=hwnO5t_2e;0M%%nra1TMug0L{~WE_n00I$wX^4hRcW8|x)T@H~;x%?Ml%`sBz^m-?>FWHg92 z_6HSTzeG!lz4^6PYIt%E?s1C0CrXF;Ny2fsMn!*FW!JIE-)|`gzMt38e5r`C8whRs zgwc96P)?f&1eNH(H$lSJ5}L&++QOG0Iyju;);Gb370GAT^c}gudFBBkK|BXJdkj0f zR3wtjq$`oko$F)r`1^o?yXl$+n>i@|#lW?NZ3*PRmjiNHSm%0fjOt0J{+gt^OD9Dt zd_;a{xi#`(C<2OA2Qh+Kkk&akVdqM=^%0Ab+q2ynH`17ews>pHoTD%z6 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Μ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 m`Bo|L{=b0pF;2dt*@ul#`CT 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 literal 0 HcmV?d00001 From 369304a2728ee546886ac4fcdb6603d38f500018 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 21 Oct 2020 14:26:21 +0800 Subject: [PATCH 141/447] Fix protected method --- docs/diagrams/TopicsStorage.drawio | 2 +- docs/images/TopicsStorage.png | Bin 31596 -> 34229 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/diagrams/TopicsStorage.drawio b/docs/diagrams/TopicsStorage.drawio index 8292f0a971..f526226a2f 100644 --- a/docs/diagrams/TopicsStorage.drawio +++ b/docs/diagrams/TopicsStorage.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/TopicsStorage.png b/docs/images/TopicsStorage.png index fe2c198bbbc3303a151db59ba6ef9c988c335308..f5a44bb08f4a3d32d3feaf489ad9a5d2df2ae4ee 100644 GIT binary patch literal 34229 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�CMm%~Ji>r2t?iMoGfPx|%o&GcvNFJ2k`rwk# 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 @sS*%|D<{<+l98h8ertB1<|HpB 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 literal 31596 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 From 137843be5dc2520b3c763e24dabacd68087cb47f Mon Sep 17 00:00:00 2001 From: anqi20 Date: Wed, 21 Oct 2020 14:26:26 +0800 Subject: [PATCH 142/447] Update such that even when the user answers correctly, they will still see the explanation. --- src/main/java/seedu/eduke8/command/AnswerCommand.java | 4 ++-- src/main/java/seedu/eduke8/ui/Ui.java | 7 +++++-- text-ui-test/EXPECTED.TXT | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index c38cc3b226..9bd0dd055d 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -20,15 +20,15 @@ public AnswerCommand(Option option, Question question) { @Override public void execute(DisplayableList optionList, Ui ui) { + String explanation = question.getExplanation().getDescription(); if (option.isCorrectAnswer()) { - ui.printAnswerIsCorrect(); + ui.printAnswerIsCorrect(explanation); question.markAsAnsweredCorrectly(); assert question.wasAnsweredCorrectly(); } else { try { int correctOptionNumber = ((OptionList) optionList).findCorrectOptionIndex() + 1; - String explanation = question.getExplanation().getDescription(); ui.printAnswerIsWrong(correctOptionNumber, explanation); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 1dbdc50d80..d58a48fc44 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -108,8 +108,11 @@ public void printAnswerIsWrong(int correctAnswer, String explanation) { System.out.println(HORIZONTAL_LINE); } - public void printAnswerIsCorrect() { - printMessage(MESSAGE_ANSWER_CORRECT); + public void printAnswerIsCorrect(String explanation) { + System.out.println(HORIZONTAL_LINE); + System.out.println(MESSAGE_ANSWER_CORRECT); + System.out.println("Explanation:" + System.lineSeparator() + explanation); + System.out.println(HORIZONTAL_LINE); } public void printHelp() { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index f434a81336..633930c828 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -48,6 +48,8 @@ Hint: check the textbook ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! +Explanation: +because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! @@ -98,6 +100,8 @@ Please choose only options 1, 2, 3 or 4 ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! +Explanation: +because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! @@ -143,6 +147,8 @@ The topic chosen is: OOP ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! +Explanation: +because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! From 72b8129872ae9e7e9a8d95169cd5d22fa51ae51b Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 21 Oct 2020 16:14:26 +0800 Subject: [PATCH 143/447] Tweak user guide --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 85b150c389..08bf27ca5e 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -31,7 +31,7 @@ platform and enhances their learning experience. It also consolidates key concep ### Loading data -Data is loaded from the .json files in the data folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. Upon successful startup this screen should shown: +Data is loaded from the .json files in the data folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. Upon successful startup this screen should be shown: ![welcome](./images/welcome.png) From 1b5b6cb55fae040282f5b12c614ef945e286f427 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 21 Oct 2020 18:11:41 +0800 Subject: [PATCH 144/447] Add QuizQuestionsManager class diagram and sequence diagram --- docs/DeveloperGuide.md | 27 ++++++++++++++++++ docs/diagrams/QuizQuestionsManager.drawio | 1 + ...izQuestionsManager_setQuizQuestions.drawio | 1 + docs/images/QuizQuestionsManager.png | Bin 0 -> 89871 bytes .../QuizQuestionsManager_setQuizQuestions.png | Bin 0 -> 31661 bytes 5 files changed, 29 insertions(+) create mode 100644 docs/diagrams/QuizQuestionsManager.drawio create mode 100644 docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio create mode 100644 docs/images/QuizQuestionsManager.png create mode 100644 docs/images/QuizQuestionsManager_setQuizQuestions.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index fcfa4e0b58..a294be2a7e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -16,6 +16,33 @@ When the user launches the app, the main program will initialize a `TopicsStorag ![TopicsStorage load](./images/TopicsStorage_load.png) +### Design of the Quiz system + +![QuizQuestionsManager_Class_Diagram](./images/QuizQuestionsManager.png) + +The Class Diagram given above explains the high-level design of the Quiz system in E-Duke-8. Given below is a quick overview of each component. + +An object of `SingleTopicQuiz` class represents an instance of the quiz in E-Duke-8. + +To start a quiz in E-Duke-8, a user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. These correspond to the `numberOfQuestions` attribute, and the ‘Topic’ object in `SingleTopicQuiz ` respectively. +The `startQuiz(ui)` method call initializes an object of `QuizQuestionsManager` by passing into it `numberOfQuestions`, as well as an ArrayList of questions from the `Topic` object. The `QuizQuestionsManager` object will then randomly select `numberOfQuestions` questions from the topic the user has chosen. Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered` method calls, the `goThroughQuizQuestions` will loop through the questions until the user answers all of them on the command line interface. + +### Implementation of QuizQuestionsManager + +As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. + +The *Sequence Diagram* below shows how `QuizQuestionsManager` achieves this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: + + +![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) + +Note: The questionsInTopic corresponds to the OOP `Topic` object, and therefore the questions passed into the method call are that of the OOP topic. + +`nextInt(5)` is a static method call to an object of the `Random` class. It returns a random integer between 0 (inclusive) and the number passed in as argument, 5 in this scenario, exclusive. +To determine if randomQuestionIndex is not selected before, an integer ArrayList is initialized to record all the selected integers. By checking against this collection of integers, it can be determined if the current integer is repeated or not, and if it is, no question will be added for that iteration of the loop. +An ArrayList of `Question` objects is used to store all of the selected questions meant for the quiz. + + ## Product scope ### Target user profile diff --git a/docs/diagrams/QuizQuestionsManager.drawio b/docs/diagrams/QuizQuestionsManager.drawio new file mode 100644 index 0000000000..96a2d84d8e --- /dev/null +++ b/docs/diagrams/QuizQuestionsManager.drawio @@ -0,0 +1 @@ +7V1rc6M4Fv01rurZqrgQ4vkxTno6s5t+ZJOZnv1IbGKzwcgB0k76148ACdADjG2E0ynSVZ0ggzC6576OrsQEXqxfPsXeZvUZLfxwomuLlwm8nOi662r4/6zhtWgwoV40LONgUTSBquE2+OkXjfSs52DhJ8x5KUJhGmzYxjmKIn+eMm1eHKMte9oDCtmbbrylLzTczr1QbP0eLNIVabVMo/rgyg+WK3prYLnFJ2uPnk1GIFl5C7StNcGPE3gRI5QWf61fLvwwGzs6Lt//eP0eXj9an/59kzx5f87+c/flr7Ois9/3uaR8htiP0oO7Xl3EX7dPT0EE/3789Nf86sq93JwB8rA/vPCZjBh52PSVDqEfLc4zSeCj+xDNHydwtvCSlZ/1C/AB/vz3AN8KXmrFEQEBwCM0W6XrkJ73EqR/Z2dNTXL0P3oN/vvypX7wWvaWxq/kIs2iDdl1YKrZNm2oLs6PmKu/+XGw9lM/Jo3F8/kLATc7Rpecl6DneO63DSmFuRcv/bTlRGiUIMLK5yP8JeNXfOG2jlOCvdgPvTT4wX5lj+jGsry27O4bCvDD6BrR4jOruILoMKBKTXsoHopcVMcQ1w9wXbYjk+uoeGihI/xH7RGrphyie8BVN3bDNfaT4Kd3nx9m8vbCYBnhv0P/AUtj9sOP0wDbh3PSfI/SFK3xB6F374czb/64jNFztLhAIcogE6EI9zR7QFFaxzVjtcjdKlOR3cR/OQBfIhpoL4bjMENvuEYzCphx33eQoSUMcoo2wXyiW2E2gvcx/muZloMgNxVo40d3qyASDETdImAlvCVXozhdoSWKvPBj1bpLePh7Ha/ROxXVgK2i0abQNntRU53KlMgYggP11NC4jmA3PcXC815rp22yE5J9vrDOwa/okbuado8eHhJfiaEwbAHD1H7X0IoRc51pPYtKirk5Rk/mNQTUrYPFIkcnb2rIcOHOzdnEvCyhKTEHTZajDtoW7WwBowE01kjrvWATQKbTMx6a6mRpmnvFKDXDUzc1bFiSYAVI6RWLwFujaEEuyj+i5xq0gRiwXqxW6XL+/7zekDuVoUwtQqKhThXYNIU5dfuapDF6LINdLvByjVrohUMow2kPv/DB0PGT4XQ0y1a7x6Q3pKapFy0wHM7gWYdaaNdk3XnHSGpfC21yxoB+4abvteN81qL3peGWqOFPz36SBii6DpL0fRjuwoy1GG7TBuzYn/VjuaE+ddn43xnKdNvv1g3vlKZlCh6zF2meATYPsKauPZQ4nf3YAjYFqLtfhj+oybzNd+kHsQaWy7AGGh4t9xDWgPWxqn2go3f1gQ0cQglDYEGDgyGxBQpoBtNk72XxTq27d2Q7Mm3rSO8o3kq9urjObnVJ48CLlrkZ266C1L/deDkytrG3YXVjGXuLAMOLEhMTHWr5T8ZOYGjW2y+zf5llRKmXeVHcfObKg8MasWG3Wcoj+QsTsi7IpBRUHYakaVXnYzkE9cZyAFsmnYLhoL+DzPM8ZAIpCY/y9yTPzuHsMkg2ofeaexBeuMk2WIdexR+RT+qsVKN3K6iN+SoIF9feK3rOxgNnIvNHejRboTj4ibv1KutZZS6Gxpxxm11Jbp27S/8blSfgmj57L8yJ116SkoY5CkNvkwSFt8wuXGM9DKIZSWhqtlEBggzW8dkSAFlSBKmDUAd/GAa5/CWKV9NZQjLuyBvLgCfBRiKIlncZRC7PQNVynV94CauW/5KBgNQa1OKknPH8hpKAmIi4OFcSP21wnnuBIvwQXpCL0Meg2PpJ2lXebSooSpzmRB0l7KiSr6MJ8sVe59JP5nGwyQbtw28TeI5PuMVmPFqKxt1/SUvZ84Ty3uIvLAIraUOUdNaE8LUPYR6ErTBo/EgifVbKM/yoFxnvgOWtX+BjUB2fEgJONwjoljIM6AIGtl5yu0LbUvr3CIW+F43i7138tnFq8WtiBotNAA4ptafn4Gf+qyAqsqaHGHtB3fLWmaSi+6SanBBRIWQ93QGyOyOWhZL5rFaedGmyyFCV2zYsncsJJPkHzRsYmSpz20A065kwb6gkP3uRt8QDvCO1FbLC/me2quwXGJBhboG2P3NbpsVn2lTTuLzY1sEhefFEcSZMs9WdmbCza17EMlhC+Ixg7th5EVufarUfjnW2Ndmn++bD0AFTCNzyh42EHQNObccqb6KzN+mJSQYQ8HflVPFEc30AiC76JCyjvEagT9aRmK4WlDulfe2XdoRg6vB8JpjyUFMoZEsUMmO0d1nrgWoRKovt1KfacosLj7TYOmex4Zusf+rMXQJjF5gNk3LbZR1DL2B2OB2xXA7HneuhAK2GpLSWwVXlNBhfkdbXWe1yh1MsKFrP6fRfpzCgCgxmYTaGL5cwzCmw3CaPbU1NzRU/HcJXCsK+DTL++S6r8LrJU5q3Q2Lq1nsjMQFXmFUiuZ4NuTIWk59K6S8dEh3rGT6Mntf3fvz1oXKwOddB7djIc+zFczSggqJAkhLLQKCO5hB9gCDlkcg+VLym3k28ynhsWdU0flyNM/0fcBPW8rui2PeiOMLD9Nuo8X1Dwupo9tVpvKyocpZLGfvfGhr+DEbx9y5+5+QGX6zxz5z+Et2tYvS8XN3UU+sSCcQoVJPfuPVGwpyOiOkdMSXJtQsyUJUXgWLqcEi9xFvLMd5foQTgyki7FkrYhirkjNHlMZYBtluGU1dJQDG6HGOIIeR+6tIIQ5xGJalDFR+8IUP//sgkyFXJSi29K5lad5RBQuSSRkvfXeObJkTaaCKZeFVJV+bHs5wxV3ti62kpHKEPbmrreEYn0DskoKRASgYJdU5AVkWdYWLpp3XZ01q5m7Z1XSMcjoSDlFYaEg6WmCSyEh9Dg5OEBoZkuYUOZVmCMmSMocExit+02Lk5NJCLV5V0m0IDxgcUIUFeJkasQU4bMUtoCsJoDBV6h4gkVJBCRJ1vaJqGwqHCH1Hkx/U4oQtIRoz0jRFJ/DAsRoDTgSt8GxuSTZhivHLDjoZSvOIhFO6aQaS0u+rOaQghVawH1tiyp3Im/Nj1wIB3ZD3VOJdhEr0PHGD3C+DIDKNyzAPH7Y76ttpU8LY0AUDzDaoCANy+DZBf0t695pTCowQpp1U9KYNjnkQZxAVXbcrwK+/21HXXJteo+6e8FBwcrq7aFLp2XWWzMn5nh9KepJKckgkdFFmXK7LKraBMx5rq0KyKeFlXB+DUdZ1q5Y95mLZbgP3u5bYFA+24CRyR4HtqXnPxS9aIFyanpUZc1c5MeR14/YfbqsUwpi6HG4Wl4ZLdfd7RQoCdQla2YZOuy6v96W2gM6Wp8QBbOIk0nKyCayRqByJqDZvVeRuK0/pQl6TggE729p6DS1LwrDZw/hxnT0qR8iVfH1BbFKDlp9LNVkZWRg6RFqXch9yVQkIZK9MlQR25+0PFK1keIBWvKu7eaSoFlzkGwuHnGk+m+Ec+/ySwkXC1A1sFeQ154qey6vERMSdHjGTVwcCIkXE7ZAboC5YuxQxfLDJCoW8oyJYTyLGgzOs0FQ7hJzsPw9J8nEfJ1o/9xbjZlmpISArJpZDg3yXR3+SfK3oUQc597y9c0aKOW+4MTGhRCx5Ci3JTMSWNazk6R+OC/XcEmSjmXLvv3rGDcx1462HLZMkbm18H1ZlwNa2pZrsNtK5pG9lGLvynv9S2xEC62vuonW+l1Zzjoq4eeSLAbaMHXZEn0ulC70FWdQHpsvKRFei+4LPhtVLN67qkAla2a4BkifhYqTXgeuAd8Oio/+pKtVxxvqgtWjuubKX2aqR8mr4eph22DxoNzPL5dLsWmWlTXaOlMW8nMKNTRLsDM9DwahIFUZdus17JNA+MunSb3ZHN4OvQ+3phnfCFLU4RVNS0QNGSVtTGONE2SADlaCzCylciMrWuumhAIVRnQcUIKmNQ0aZcL5N72K+bccXU4X4UNpjDtpUTEhgo9KOidchQsMoHIZP/1bjpmgrJS+bdBpa85E27meQX1QsmxtdLKIWALQmih4UA3ZScg8DWK4nvCxTH/jwNXzn+m9RbPHhhIr55aITGsdAod+o8ITb0Jmzkrx8Z8TAoHrrGiwrdRYfS+JFwO1zCkjeTSCWsjHGDTXOi5cT4RLbHRj0/IE1X47adajBindwrQBntRoooWl5N1kwzjKg4GhXS3RWGjRXEzbgKVDS+rGwEhDpA6JKZbjm5pKyWonGzJmwmKodBUTFSTCrRYJweDS17L2SxAsXBSDWpQYB9egQ0VXmvvfjxXGQbPozhY/84gJo6HODDGKG0PnUVe5vVZ7TIVup9/Ac= \ No newline at end of file diff --git a/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio new file mode 100644 index 0000000000..4532fa0c5a --- /dev/null +++ b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/images/QuizQuestionsManager.png b/docs/images/QuizQuestionsManager.png new file mode 100644 index 0000000000000000000000000000000000000000..195146f91981c5588a7bc85a220810138dd6ab79 GIT binary patch literal 89871 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

K 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 literal 0 HcmV?d00001 diff --git a/docs/images/QuizQuestionsManager_setQuizQuestions.png b/docs/images/QuizQuestionsManager_setQuizQuestions.png new file mode 100644 index 0000000000000000000000000000000000000000..4c20f0fe1b4be4277a0024bd443224f2a9dfb755 GIT binary patch literal 31661 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 Date: Wed, 21 Oct 2020 18:58:34 +0800 Subject: [PATCH 145/447] Update Developer Guide and add user stories of V1.0 and V2.0 --- docs/DeveloperGuide.md | 49 ++++++++++++++++++++++++----- docs/images/Option.png | Bin 0 -> 295990 bytes docs/images/PrintQuizStartPage.png | Bin 0 -> 75575 bytes 3 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 docs/images/Option.png create mode 100644 docs/images/PrintQuizStartPage.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 20082fb7e9..4cdf59d3c8 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -12,10 +12,10 @@ 1. After constructing a new MenuParser() in the `Eduke8` class, the parseCommand() method is used to parse the user command. 2. This results in a `Command` object, which is executed by `Command` class itself, using the execute() method. -3. The `Ui` object in the `Command` object is used to display the requested information, or to display the required task to be - completed as per the user input. +3. The `Ui` object in the `Command` object is used to display the requested information, or to display the required task +to be completed as per the user input. -Below is the sequence diagram for how the Parser component of `Eduke8 works with commands to show output to the user. +Below is the sequence diagram for how the Parser component of `Eduke8` works with commands to show output to the user. ![Parser Sample Sequence](./images/ParserSampleSequence.png) @@ -27,8 +27,8 @@ The command parsing feature is our program’s way of reading the user’s input single method parseCommand that identifies what command the user is calling for and then calls the command. There are two parsers in our program that implements a single Parser interface. One parser is for choosing menu options and is named `MenuParser`. The other parser is used during quizzes, in order to answer questions or request for hints, and is -called `QuizParser`. Given below is an example usage scenario of how the command parsing feature works at each step, when -the user types in input to get help in order to see what commands are available to the user. +called `QuizParser`. Given below is an example usage scenario of how the command parsing feature works at each step, +when the user types in input to get help in order to see what commands are available to the user. Step 1. The user launches the program for the first time. The parser will be initialised and awaiting the user’s input to proceed. @@ -51,16 +51,38 @@ Step 5. The string at the 0th index is then used in a switch statement, where ea ### Loading Data -Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. +Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` +class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. ![TopicsStorage Class Diagram](./images/TopicsStorage.png) Given below is an example usage scenario of loading in two topics with two questions each. -When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method which will return a `TopicList` object. The following sequence diagram shows how the load operation works: +When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method +which will return a `TopicList` object. The following sequence diagram shows how the load operation works: ![TopicsStorage load](./images/TopicsStorage_load.png) +### Class Component + +#### Option and OptionList Class + +The `Option` and `OptionList` classes implements the `Displayable` and `DisplayableList` interfaces respectively. +The `Option` object stores one option of a question while the `OptionList` object stores all 4 options of the same +question. The class diagram below illustrates the structure of both classes. + +![Option_and_OptionList_Class](./images/Option.png) + +### User Interface + +#### Implementation + +The `Ui` class handles all the interactions with the users. It reads the input from the users and prints out replies to +the users. An example is provided below to illustrate how the `Ui` class prints out the starting page of the quiz for +the user to comprehend. + +![Ui_Printing_Start_Quiz_Page](./images/PrintQuizStartPage.png) + ## Product scope ### Target user profile @@ -68,13 +90,24 @@ CS2113/T Students ### Value proposition -Help CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. Consolidate key concepts for easy revision. +Help CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and +enhance their learning experience. Consolidate key concepts for easy revision. ## User Stories |Version| As a ... | I want to ... | So that I can ...| |--------|----------|---------------|------------------| |v1.0|new user|answer given questions|start testing myself immediately| +|v1.0|new user|quickly see what the software has to offer|understand how to use the app| +|v1.0|new user|answer given questions|start testing myself immediately| +|v1.0|long-time user|get different questions each time|repeatedly test my understanding for the particular topic| +|v1.0|busy user|test myself on concepts using short, targeted quizzes|confirm my understanding of concepts| +|v1.0|user|get a hint for the question in the quiz|I can think about the question from a different angle| +|v1.0|user|see what the available topics are|navigate around the app effectively| +|v1.0|user|select the number of questions to do in the quiz|manage the workload and time spent on the quiz| +|v2.0|slow but hardworking user|see the explanations provided in the quiz|learn from my mistakes and revise| +|v2.0|busy, lazy user|take note of key concepts|refer to it easily at a later time| +|v2.0|frequent disorganized user|view the percentage of error in each topic|tell how well I understand the content| ## Non-Functional Requirements diff --git a/docs/images/Option.png b/docs/images/Option.png new file mode 100644 index 0000000000000000000000000000000000000000..040ac6af2f85cb9818c8441c29b6a810a1e9ebac GIT binary patch literal 295990 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�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 Q+>Ir6ZWJ_Z~-9s?3b>#7dp?dkuVi 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�YR8jt57hE_-c5Hb>S7t+%nb-%zx#~n( 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

R)R9B(x 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

jBROVWlFS)6~Nej!9Gp2N1vg7a)jKT zzx6?VVOP^3>=ql4kOlzt0<2fP;BPj6wz4hv4?VY@3x7NDEWH2>`uMZ0Ch4w0+DGl9 z=X`CvBG~v6PY@0Ep{Mc4uBbd@lk#Ju_4+Jxe(UwE|C*L08qYpTj*xv`7W71a+SnSU z!O%W;&cwy7F8_@1@(GY0^a)q~Y#^fb)qztptvUA~(VsS!{OEHa>y@xe$F@fHr_Jkd zYUZnV84&U3#&Tehsa?3i2 Date: Thu, 22 Oct 2020 00:04:45 +0800 Subject: [PATCH 146/447] Set theme jekyll-theme-cayman --- docs/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_config.yml b/docs/_config.yml index 2f7efbeab5..c4192631f2 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1 +1 @@ -theme: jekyll-theme-minimal \ No newline at end of file +theme: jekyll-theme-cayman \ No newline at end of file From ea588633e4d56c58ba873c2cc9786e828cb3e820 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 22 Oct 2020 00:07:42 +0800 Subject: [PATCH 147/447] Tweak DeveloperGuide and QuizQuestionsManager class and sequence diagram --- docs/DeveloperGuide.md | 23 +++++++++++------- ...izQuestionsManager_setQuizQuestions.drawio | 2 +- .../QuizQuestionsManager_setQuizQuestions.png | Bin 31661 -> 31456 bytes 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a294be2a7e..93e2637c2e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -18,29 +18,34 @@ When the user launches the app, the main program will initialize a `TopicsStorag ### Design of the Quiz system +To start a quiz in E-Duke-8, a user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. + +The Class Diagram given below explains the high-level design of the Quiz system in E-Duke-8. Given below it is a quick overview of each component. + ![QuizQuestionsManager_Class_Diagram](./images/QuizQuestionsManager.png) -The Class Diagram given above explains the high-level design of the Quiz system in E-Duke-8. Given below is a quick overview of each component. -An object of `SingleTopicQuiz` class represents an instance of the quiz in E-Duke-8. -To start a quiz in E-Duke-8, a user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. These correspond to the `numberOfQuestions` attribute, and the ‘Topic’ object in `SingleTopicQuiz ` respectively. -The `startQuiz(ui)` method call initializes an object of `QuizQuestionsManager` by passing into it `numberOfQuestions`, as well as an ArrayList of questions from the `Topic` object. The `QuizQuestionsManager` object will then randomly select `numberOfQuestions` questions from the topic the user has chosen. Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered` method calls, the `goThroughQuizQuestions` will loop through the questions until the user answers all of them on the command line interface. +An object of `SingleTopicQuiz` class represents an instance of the quiz in E-Duke-8. Its `numberOfQuestions` attribute and `Topic` object correspond to the user's specified number of questions and topic for the quiz respectively. + +The `startQuiz(:Ui)` method call from the `SingleTopicQuiz` object initializes an object of `QuizQuestionsManager` by passing into it `numberOfQuestions`, as well as an ArrayList of questions from the `Topic` object. The `QuizQuestionsManager` object will then randomly select `numberOfQuestions` questions from the topic the user has chosen, using its `setQuizQuestions(:int, :ArrayList)` method. + +Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered()` method calls, the `goThroughQuizQuestions(:Ui, :QuizQuestionsManager)` will loop through the questions until the user answers all of them on the command line interface. ### Implementation of QuizQuestionsManager -As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. +As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. The *Sequence Diagram* below shows how `QuizQuestionsManager` achieves this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: ![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) -Note: The questionsInTopic corresponds to the OOP `Topic` object, and therefore the questions passed into the method call are that of the OOP topic. +`nextInt(5)` is a method call to an object of the `Random` class. It returns a random integer between 0 (inclusive) and the number passed in as argument, 5 in this scenario, exclusive. + +To determine if randomQuestionIndex is not selected before, an integer ArrayList is initialized to record all the selected integers. By checking against this collection of integers, it can be determined if a currently selected integer is repeated or not, and if it is, no question will be added for that iteration of the loop. -`nextInt(5)` is a static method call to an object of the `Random` class. It returns a random integer between 0 (inclusive) and the number passed in as argument, 5 in this scenario, exclusive. -To determine if randomQuestionIndex is not selected before, an integer ArrayList is initialized to record all the selected integers. By checking against this collection of integers, it can be determined if the current integer is repeated or not, and if it is, no question will be added for that iteration of the loop. -An ArrayList of `Question` objects is used to store all of the selected questions meant for the quiz. +An ArrayList of `Question` objects stores all the selected questions meant for the quiz. ## Product scope diff --git a/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio index 4532fa0c5a..9b7ce059b9 100644 --- a/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio +++ b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/QuizQuestionsManager_setQuizQuestions.png b/docs/images/QuizQuestionsManager_setQuizQuestions.png index 4c20f0fe1b4be4277a0024bd443224f2a9dfb755..8ff61a130e54c18bb1de93a773be12732a750f59 100644 GIT binary patch literal 31456 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%0DMOU7=e#vaW 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 literal 31661 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 Date: Thu, 22 Oct 2020 00:18:08 +0800 Subject: [PATCH 148/447] Fix small documentation issues in Developer Guide --- docs/DeveloperGuide.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 125b5cba09..88a9cc6b56 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -63,14 +63,12 @@ When the user launches the app, the main program will initialize a `TopicsStorag ### Design of the Quiz system -To start a quiz in E-Duke-8, a user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. +To start a quiz in E-Duke-8, the user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. The Class Diagram given below explains the high-level design of the Quiz system in E-Duke-8. Given below it is a quick overview of each component. ![QuizQuestionsManager_Class_Diagram](./images/QuizQuestionsManager.png) - - An object of `SingleTopicQuiz` class represents an instance of the quiz in E-Duke-8. Its `numberOfQuestions` attribute and `Topic` object correspond to the user's specified number of questions and topic for the quiz respectively. The `startQuiz(:Ui)` method call from the `SingleTopicQuiz` object initializes an object of `QuizQuestionsManager` by passing into it `numberOfQuestions`, as well as an ArrayList of questions from the `Topic` object. The `QuizQuestionsManager` object will then randomly select `numberOfQuestions` questions from the topic the user has chosen, using its `setQuizQuestions(:int, :ArrayList)` method. @@ -81,7 +79,7 @@ Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `a As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. -The *Sequence Diagram* below shows how `QuizQuestionsManager` achieves this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: +The Sequence Diagram below shows how `QuizQuestionsManager` achieves this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: ![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) From bc6bdfede6186cde2b103ce54330363877d4014b Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 22 Oct 2020 00:31:52 +0800 Subject: [PATCH 149/447] Edited JUnits Tests to make it compatible with the code after removing add and delete methods in classes that implement the DisplayableList interface --- .../java/seedu/eduke8/option/OptionList.java | 4 --- .../eduke8/command/AnswerCommandTest.java | 10 ++++-- .../seedu/eduke8/command/HintCommandTest.java | 12 ++++++- .../seedu/eduke8/option/OptionListTest.java | 36 ++++++++++--------- .../seedu/eduke8/parser/MenuParserTest.java | 3 +- .../seedu/eduke8/parser/QuizParserTest.java | 13 +++++-- .../eduke8/question/QuestionListTest.java | 27 +++----------- .../seedu/eduke8/question/QuestionTest.java | 10 ++++-- .../question/QuizQuestionsManagerTest.java | 7 ++-- .../seedu/eduke8/topic/TopicListTest.java | 23 +++--------- .../java/seedu/eduke8/topic/TopicTest.java | 8 +++-- 11 files changed, 75 insertions(+), 78 deletions(-) diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index 7f40325ca2..adaed3974a 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -13,10 +13,6 @@ public class OptionList implements DisplayableList { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private static final String NO_RIGHT_ANSWER_ERROR = "Error with question: No right answer specified"; - public OptionList() { - options = new ArrayList<>(); - } - public OptionList(ArrayList options) { this.options = options; } diff --git a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java index b712d0c2ab..fe628734e4 100644 --- a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java +++ b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java @@ -1,12 +1,15 @@ package seedu.eduke8.command; import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; import seedu.eduke8.ui.Ui; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.assertTrue; public class AnswerCommandTest { @@ -14,8 +17,11 @@ public class AnswerCommandTest { public void execute_correctAnswer_markAnsweredCorrectly() { Option option = new Option("test"); option.markAsCorrectAnswer(); - OptionList optionList = new OptionList(); - optionList.add(option); + // OptionList optionList = new OptionList(); + // optionList.add(option); + ArrayList optionsArrayList = new ArrayList<>(); + optionsArrayList.add(option); + OptionList optionList = new OptionList(optionsArrayList); Hint hint = new Hint("test"); diff --git a/src/test/java/seedu/eduke8/command/HintCommandTest.java b/src/test/java/seedu/eduke8/command/HintCommandTest.java index 898aa07e81..ff04fabe49 100644 --- a/src/test/java/seedu/eduke8/command/HintCommandTest.java +++ b/src/test/java/seedu/eduke8/command/HintCommandTest.java @@ -1,9 +1,12 @@ package seedu.eduke8.command; import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.ui.Ui; +import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -12,7 +15,14 @@ public class HintCommandTest { public void execute_normal_hintWasShown() { Hint hint = new Hint("test"); Command hintCommand = new HintCommand(hint); - hintCommand.execute(new OptionList(), new Ui()); + + Option option1 = new Option("test1"); + ArrayList optionsArrayList = new ArrayList(); + optionsArrayList.add(option1); + + OptionList options = new OptionList(optionsArrayList); + + hintCommand.execute(options, new Ui()); assertTrue(hint.wasShown()); } diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java index aedd4c3116..79f404eae1 100644 --- a/src/test/java/seedu/eduke8/option/OptionListTest.java +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -34,22 +34,26 @@ void getInnerList_oneOption_expectsTrue() { assertEquals(optionListDescription, optionListTestDescription); } - @Test - void add_oneOption_returnsCountOfTwo() { - OptionList optionList = createOptionList(); - Option optionThree = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); - - optionList.add(optionThree); - assertEquals(DEFAULT_OPTION_COUNT + 1, optionList.getCount()); - } - - @Test - void delete_oneOption_returnsCountOfZero() { - OptionList optionList = createOptionList(); - - optionList.delete(0); - assertEquals(DEFAULT_OPTION_COUNT - 1, optionList.getCount()); - } +// @Test +// void add_oneOption_returnsCountOfTwo() { +// OptionList optionList = createOptionList(); +// Option optionThree = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); +// +// // optionList.add(optionThree); +// +// ArrayList optionsArrayList = new ArrayList(); +// optionsArrayList.add(optionThree); +// +// assertEquals(DEFAULT_OPTION_COUNT + 1, optionList.getCount()); +// } + +// @Test +// void delete_oneOption_returnsCountOfZero() { +// OptionList optionList = createOptionList(); +// +// optionList.delete(0); +// assertEquals(DEFAULT_OPTION_COUNT - 1, optionList.getCount()); +// } @Test void find_twoOptions_returnOptionOne() { diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index c9950e72b1..15ab1fa166 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -22,7 +22,8 @@ public class MenuParserTest { public void menuParser_wrongStringInput_expectIncorrectCommand() { Ui ui = new Ui(); Hint hint = new Hint("description"); - OptionList optionList = new OptionList(); + ArrayList optionsArrayList = new ArrayList<>(); + OptionList optionList = new OptionList(optionsArrayList); ArrayList questions = new ArrayList<>(); Question question = new Question("description", optionList, hint); questions.add(question); diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java index 07b75c1cff..fc38c0b7e2 100644 --- a/src/test/java/seedu/eduke8/parser/QuizParserTest.java +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -5,11 +5,14 @@ import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.assertTrue; @@ -17,7 +20,8 @@ public class QuizParserTest { @Test public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { - OptionList optionList = new OptionList(); + ArrayList optionsArrayList = new ArrayList<>(); + OptionList optionList = new OptionList(optionsArrayList); QuizParser quizParser = new QuizParser(); Command badCommand = quizParser.parseCommand(optionList, "one"); @@ -30,7 +34,8 @@ public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @Test public void quizParser_correctStringInput_success() { Hint hint = new Hint("description"); - OptionList optionList = new OptionList(); + ArrayList optionsArrayList = new ArrayList<>(); + OptionList optionList = new OptionList(optionsArrayList); QuizParser quizParser = new QuizParser(); Question question = new Question("description", optionList, hint); @@ -38,7 +43,9 @@ public void quizParser_correctStringInput_success() { Command resultCommand = quizParser.parseCommand(optionList, "hint"); assertTrue(resultCommand instanceof HintCommand); - optionList.add(new Option("1")); + optionsArrayList.add(new Option("1")); + // optionList.add(new Option("1")); + optionList = new OptionList(optionsArrayList); quizParser.setQuestion(question); resultCommand = quizParser.parseCommand(optionList, "1"); assertTrue(resultCommand instanceof AnswerCommand); diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java index 00c7cab000..0f21e40462 100644 --- a/src/test/java/seedu/eduke8/question/QuestionListTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -26,26 +26,6 @@ void getCount_twoQuestions_returnsCountOfTwo() { assertEquals(DEFAULT_QUESTION_COUNT, questionList.getCount()); } - - @Test - void add_thirdQuestionToQuestionList_returnsCountOfThree() { - QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); - - Question thirdQuestion = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); - questionList.add(thirdQuestion); - - assertEquals(DEFAULT_QUESTION_COUNT + 1, questionList.getCount()); - } - - @Test - void delete_questionListWithTwoQuestions_returnsCountOfOne() { - QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); - - questionList.delete(1); - - assertEquals(DEFAULT_QUESTION_COUNT - 1, questionList.getCount()); - } - @Test void find_questionListWithTwoQuestions_returnsFirstQuestion() { QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); @@ -73,9 +53,10 @@ private QuestionList createQuestionListWithTwoUniqueQuestions() { private Question createTestQuestionWithCustomDescription(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); - OptionList optionList = new OptionList(); - optionList.add(option1); - optionList.add(option2); + ArrayList optionsArrayList = new ArrayList<>(); + optionsArrayList.add(option1); + optionsArrayList.add(option2); + OptionList optionList = new OptionList(optionsArrayList); String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index 1c43aefafb..230a1ab799 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -1,10 +1,13 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -80,9 +83,10 @@ private Question createTestQuestion() { Option option1 = new Option("test1"); Option option2 = new Option("test2"); - OptionList optionList = new OptionList(); - optionList.add(option1); - optionList.add(option2); + ArrayList optionsArrayList = new ArrayList<>(); + optionsArrayList.add(option1); + optionsArrayList.add(option2); + OptionList optionList = new OptionList(optionsArrayList); String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index 53650fde65..aaf80ff517 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -123,9 +123,10 @@ private QuestionList createQuestionListWithThreeUniqueQuestions() { private Question createTestQuestionWithCustomDescription(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); - OptionList optionList = new OptionList(); - optionList.add(option1); - optionList.add(option2); + ArrayList optionsArrayList = new ArrayList<>(); + optionsArrayList.add(option1); + optionsArrayList.add(option2); + OptionList optionList = new OptionList(optionsArrayList); String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; Hint hint = new Hint(inputHintDescription); diff --git a/src/test/java/seedu/eduke8/topic/TopicListTest.java b/src/test/java/seedu/eduke8/topic/TopicListTest.java index 74484beb95..3d8dcaeb24 100644 --- a/src/test/java/seedu/eduke8/topic/TopicListTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicListTest.java @@ -31,22 +31,6 @@ void getCount_TwoTopics_returnsCountOfTwo() { assertEquals(DEFAULT_TOPIC_COUNT, topicList.getCount()); } - @Test - void add_thirdTopicToTopicList_returnsCountOfThree() throws Eduke8Exception { - TopicList topicList = createTestTopicList(); - Topic thirdTopic = createTestTopic(TOPIC_THREE_DESCRIPTION); - topicList.add(thirdTopic); - - assertEquals(DEFAULT_TOPIC_COUNT + 1, topicList.getCount()); - } - - @Test - void delete_thirdTopicToTopicList_returnsCountOfOne() throws Eduke8Exception { - TopicList topicList = createTestTopicList(); - topicList.delete(1); - - assertEquals(DEFAULT_TOPIC_COUNT - 1, topicList.getCount()); - } @Test void find_topicListWithTwoTopics_returnsFirstTopic() throws Eduke8Exception { @@ -93,9 +77,10 @@ private QuestionList createQuestionList() { private Question createTestQuestion(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); - OptionList optionList = new OptionList(); - optionList.add(option1); - optionList.add(option2); + ArrayList optionsArrayList = new ArrayList(); + optionsArrayList.add(option1); + optionsArrayList.add(option2); + OptionList optionList = new OptionList(optionsArrayList); Hint hint = new Hint(HINT); diff --git a/src/test/java/seedu/eduke8/topic/TopicTest.java b/src/test/java/seedu/eduke8/topic/TopicTest.java index 50b57b39a7..b5636b7c29 100644 --- a/src/test/java/seedu/eduke8/topic/TopicTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicTest.java @@ -54,9 +54,11 @@ private QuestionList createQuestionList() { private Question createTestQuestion(String description) { Option option1 = new Option("test1"); Option option2 = new Option("test2"); - OptionList optionList = new OptionList(); - optionList.add(option1); - optionList.add(option2); + ArrayList optionsArrayList = new ArrayList(); + optionsArrayList.add(option1); + optionsArrayList.add(option2); + + OptionList optionList = new OptionList(optionsArrayList); Hint hint = new Hint(HINT); From bcdfda428acd68e493ce9e8b09f4a125fdd7f9e1 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 22 Oct 2020 05:06:13 +0800 Subject: [PATCH 150/447] Add feature that allows for the number of questions and topic name in any order to be parsed. Javadocs added for QuizParser and MenuParser. --- .../java/seedu/eduke8/parser/MenuParser.java | 20 ++++++++++++++++--- .../java/seedu/eduke8/parser/QuizParser.java | 10 ++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index a16a4a3b31..79501912cf 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -20,13 +20,22 @@ import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_WRONG_FORMAT; import static seedu.eduke8.exception.ExceptionMessages.ERROR_UNRECOGNIZED_COMMAND; - +/** + * Parses user input from the main menu, in order to execute the correct option. + */ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); public MenuParser() { } + /** + * Parses the user input. + * + * @param topicList the topic list that contains the list of topics available in storage + * @param userInput the string input typed by the user + * @return a Command object which when executed will carry out the appropriate action + */ @Override public Command parseCommand(DisplayableList topicList, String userInput) { assert topicList != null; @@ -52,8 +61,13 @@ public Command parseCommand(DisplayableList topicList, String userInput) { int numOfQuestions = 0; String topicName = ""; try { - numOfQuestions = Integer.parseInt(commandArr[2].substring(2)); - topicName = commandArr[1].substring(2); + if(commandArr[2].contains("n/")) { + numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf("n/")+2)); + topicName = commandArr[1].substring(commandArr[1].indexOf("t/")+2); + } else if(commandArr[2].contains("t/")) { + numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf("n/")+2)); + topicName = commandArr[2].substring(commandArr[2].indexOf("t/")+2); + } } catch (NumberFormatException | IndexOutOfBoundsException e) { return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 96eaeaf8d1..caad4f450a 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -19,6 +19,9 @@ import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; +/** + * Parses user input during a quiz activity. + */ public class QuizParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); @@ -30,6 +33,13 @@ public void setQuestion(Question question) { this.question = question; } + /** + * Parses the user input. + * + * @param optionList the option list that contains the list of options available for the current question + * @param userInput the string input typed by the user + * @return a Command object which when executed will carry out the appropriate action + */ @Override public Command parseCommand(DisplayableList optionList, String userInput) { if ("hint".equals(userInput)) { From c0fb53a68a4fc80d14e23e6e10f3db580f79a98c Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 22 Oct 2020 08:04:17 +0800 Subject: [PATCH 151/447] Added the classes Note and NoteList, as well as their JUnit tests. Updated the Developer Guide --- docs/DeveloperGuide.md | 76 ++++++++++++++++++ docs/diagrams/TopicListAndNotes.drawio | 1 + docs/diagrams/TopicListSampleSequence.drawio | 1 + docs/images/TopicListAndNotes.png | Bin 0 -> 31107 bytes docs/images/TopicListSampleSequence.png | Bin 0 -> 14811 bytes src/main/java/seedu/eduke8/note/Note.java | 23 ++++++ src/main/java/seedu/eduke8/note/NoteList.java | 28 +++++++ src/main/java/seedu/eduke8/topic/Topic.java | 19 +++++ src/main/java/seedu/eduke8/ui/Ui.java | 18 +++++ .../java/seedu/eduke8/note/NoteListTest.java | 56 +++++++++++++ src/test/java/seedu/eduke8/note/NoteTest.java | 20 +++++ 11 files changed, 242 insertions(+) create mode 100644 docs/diagrams/TopicListAndNotes.drawio create mode 100644 docs/diagrams/TopicListSampleSequence.drawio create mode 100644 docs/images/TopicListAndNotes.png create mode 100644 docs/images/TopicListSampleSequence.png create mode 100644 src/main/java/seedu/eduke8/note/Note.java create mode 100644 src/main/java/seedu/eduke8/note/NoteList.java create mode 100644 src/test/java/seedu/eduke8/note/NoteListTest.java create mode 100644 src/test/java/seedu/eduke8/note/NoteTest.java diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 20082fb7e9..3784cdfa33 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -61,6 +61,81 @@ When the user launches the app, the main program will initialize a `TopicsStorag ![TopicsStorage load](./images/TopicsStorage_load.png) +###Implementation of commands relating to TopicList, namely: + +1. Listing topics in TopicList +2. Finding a topic in TopicList +3. Adding a new note +4. Deleting an existing note +5. Listing out all notes in a topic + +![TopicList_Class_Diagram](./images/TopicListAndNotes.png) + +TopicList is an ArrayList of type Displayable, which is one of two interfaces implemented +in the code for EDuke8. As such, many of the commands that manipulate the TopicList make +use of the package java.util.ArrayList. The TopicList is used to store Topics. + +####1) Listing topics in TopicList: + +![TopicListSampleSequence](./images/TopicListSampleSequence.png) + +This task is performed by the TopicList.showTopics() method. + +Step 1: The parseCommand() method instantiates a TopicsCommand object which then calls the + TopicList.showTopics() method. +Step 2: The TopicList.showTopics() method then calls the method Ui.printTopicList(). The + current TopicList is passed into the called method. +Step 3: The Ui.printTopicList() method then prints out the description of each topic in the + TopicList. + +####2) Finding a topic in TopicList + +This task is performed by the TopicList.find() method. + +Step 1: The parseCommand() method instantiates a TopicsCommand object which then calls the TopicList.find() method. + A String object derived from the user's input is passed into this method. + +Step 2: The TopicList.find() method checks if any Topic object in the TopicList has a description that contains the + String object passed into the method. Such Topic objects are stored in a new TopicList + +Step 3: The TopicList.find() method then calls the TopicList.showTopics() method, passing in the new TopicList. The + Ui.printTopicList() method is called within the TopicList.showTopics() method, printing out topic descriptions + containing the user's input. + +NoteList is also an ArrayList of type Displayable, which is one of two interfaces implemented in the code for EDuke8. +As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The NoteList +stores Note objects. Each topic has 1 NoteList. + +####1) Adding a new note: + +This task is performed by the NoteList.add() method. + +Step 1: The parseCommand() method instantiates a NoteCommand object which then calls the NoteList.add() method. A new + Note object is passed into its parameter. + +Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.add() method, to add the Note + object into NoteList. + +####2) Deleting a note: + +This task is performed by the NoteList.add() method. + +Step 1: The parseCommand() method instantiates a NoteCommand object which then calls the NoteList.delete() method. + An integer that represents the index of the Note object to be deleted within the NoteList is passed into this + method. + +Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.remove() method, to delete the + Note object in NoteList. + +####3) Listing out all notes in a topic + +This task is performed by the Topic.showNotes() method. + +Step 1: The parseCommand() method instantiates a TopicCommand object which then calls the Topic.showNotes() method. + +Step 2: The Topic.showNotes() methd calls the Ui.printNoteList() method. The topic's NoteList into this method. + Ui.printNoteList() prints out all the descriptions of the Note objects in the NoteList. + ## Product scope ### Target user profile @@ -76,6 +151,7 @@ Help CS2113/T students learn and understand software engineering and OOP princip |--------|----------|---------------|------------------| |v1.0|new user|answer given questions|start testing myself immediately| + ## Non-Functional Requirements {Give non-functional requirements} diff --git a/docs/diagrams/TopicListAndNotes.drawio b/docs/diagrams/TopicListAndNotes.drawio new file mode 100644 index 0000000000..c2ee0156c4 --- /dev/null +++ b/docs/diagrams/TopicListAndNotes.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/diagrams/TopicListSampleSequence.drawio b/docs/diagrams/TopicListSampleSequence.drawio new file mode 100644 index 0000000000..5b25ea70de --- /dev/null +++ b/docs/diagrams/TopicListSampleSequence.drawio @@ -0,0 +1 @@ +7Vpdc6IwFP01zuw+1BEQhcdqP/ahnXZ2u9vuYypRMgXChFBlf/0GSIAAAla66rY+dMghXuCcm3PJrQNt7m6uCfDtW2xBZ6COrM1Auxio6tRQ2d8YiFJgrHFgRZCVQkoO/EB/IAdHHA2RBQNpIsXYociXwQX2PLigEgYIwWt52hI78lV9sIIV4McCOFX0EVnUTlFDH+X4N4hWtriyMuJnXCAmcyCwgYXXBUi7HGhzgjFNj9zNHDoxd4KX9HtXW85mN0agR7t8QfPC2dWGmIvoZuR7d48PKrg+41FegRPyBx5o5w/YR4s5dl3gWfzeaSQIYY/hx4eh69ygJXSQx0YzHxLkQgoJO+Nw+D7HZkweChgWn1eSseMAP0DPSdgRQwhchCRAr/A7DNIsSFAceha0+CijMBlQgl8yUeKgVUbE40FC4aYAcYauIWY3SCI2RZwVavF0NfhwnWufKWwXdNcECHi+rbLQuSTsgKuyg0JqVaGyJD5GHk2uq88G+kVJDkyojVfYA05RkD2JbUymzmyPdYnsaR3ZVa4V87241tq5jh8OMXs4d9DKY9AzphS7CWuA0PPYcWLOWQiGQc8SyLODFy9iGrc5o2/mWewVbJrHnwdakult1UfEjcRQMVOAQAdQtlZlu62Rg4e+jzO0GLdeeBEhwCFZQP6loqWV45QS6MyU4+DlMoC0khbZg749U/StvnmDAvrBTDMzv6MxzcnpmKa+K9ulnK8lu8Y0Jz1w/XQZktC/8+bgYbaM8K8JuT2rMU2fMGqvYq6SFRF8+drdRmssk/FHoqeY5yF7dj7+nYw1bdouRDL/YsPPp6OoOCpInIC1JtlVyqpuwpzEq8We5qmbkv7KqBShq3kqxrgcaMiWaf5R5bhpcWmI+/6ua1RSbYk8q7f0knJrD+dMFWgvw63letKxXPecYepUtpiKd7SmWK+pUOs6tRuXn+j0Km/F+GtSanstGB+w8tbqcjzblRZit2dV18qbMdtWesuvt72RPa6QHaJhT9UX+5CdmlkgsBPe00pqFbYucINo5pvsOC3Jpt5VoMYC2+x0PRmdKa8eTS8J1VryRGKUA43NoVn4GEdnn9v3Lyfb99nLSBVFVnCsHtxJj2cP8xYn3fIufPjGT+3dTtu5Pkjjp9EimxZ28dVye3Z9Nn52zpTqFuS0Gz97uWa5gB6Ba5on7ZrGLq558M6PuFq59ZMth/+w8bOLbJ+Nn952+9VtZWDjdc/txTf1f9p3MXJDqOldr7Vqm/8k0dSJbDR62a2PYAOj1Pyv7iM2gLSjq8BKtStxSiU4TazT6QEp1a28aALtW4c/QgvIkNfPpLzF7NwCKgcyDtcCYsP8Z0Xp9Py3WdrlXw== \ No newline at end of file diff --git a/docs/images/TopicListAndNotes.png b/docs/images/TopicListAndNotes.png new file mode 100644 index 0000000000000000000000000000000000000000..098ed791abb9d41c00c1f13fd6cdd6abcc19b18b GIT binary patch literal 31107 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 literal 0 HcmV?d00001 diff --git a/docs/images/TopicListSampleSequence.png b/docs/images/TopicListSampleSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..93fcb58c1fda6934a0fdf02e43658215c67a528f GIT binary patch literal 14811 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 noteList; + private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + + public NoteList(ArrayList noteList) { + this.noteList = noteList; + } + + public void add(Displayable note) { + noteList.add(note); + } + + public void delete(int index) { + assert (index > 0 && index < noteList.size()); + noteList.remove(index); + } + + public int getCount() { + return noteList.size(); + } +} diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 7cb2f1b1fe..cb905cb243 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -1,11 +1,16 @@ package seedu.eduke8.topic; import seedu.eduke8.common.Displayable; +import seedu.eduke8.note.NoteList; import seedu.eduke8.question.QuestionList; +import seedu.eduke8.ui.Ui; + +import java.util.ArrayList; public class Topic implements Displayable { private String description; private QuestionList questionList; + private ArrayList noteList; private boolean wasShown; public Topic(String description, QuestionList questionList) { @@ -17,6 +22,16 @@ public Topic(String description, QuestionList questionList) { wasShown = false; } + public Topic(String description, QuestionList questionList, ArrayList noteList) { + assert description != null; + assert questionList != null; + + this.description = description; + this.questionList = questionList; + this.noteList = noteList; + wasShown = false; + } + @Override public String getDescription() { wasShown = true; @@ -31,4 +46,8 @@ public boolean wasShown() { public QuestionList getQuestionList() { return questionList; } + + public void showNotes(Ui ui) { + ui.printNoteList(noteList); + } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index d58a48fc44..fdcf75882d 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -2,6 +2,7 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; +import seedu.eduke8.note.Note; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; import seedu.eduke8.topic.Topic; @@ -143,6 +144,23 @@ public void printTopicList(ArrayList topics) { System.out.println(HORIZONTAL_LINE); } + public void printNoteList(ArrayList notes) { + + if(notes.size() == 0) { + System.out.println("There are no notes for this topic!"); + } + else { + System.out.println("These are the notes for this topic"); + for(int i = 0; i < notes.size(); i ++) { + System.out.println(HORIZONTAL_LINE); + Note note = (Note) notes.get(i); + System.out.println(i + ". " + note.getDescription()); + } + } + + System.out.println(HORIZONTAL_LINE); + } + private void printStartQuizTopics(String topicsChosen) { if (topicsChosen.contains(",")) { int indexOfSplit = topicsChosen.indexOf(","); diff --git a/src/test/java/seedu/eduke8/note/NoteListTest.java b/src/test/java/seedu/eduke8/note/NoteListTest.java new file mode 100644 index 0000000000..8f7ea798db --- /dev/null +++ b/src/test/java/seedu/eduke8/note/NoteListTest.java @@ -0,0 +1,56 @@ +package seedu.eduke8.note; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class NoteListTest { + + private static final String NOTE_ONE = "First Note"; + private static final String NOTE_TWO = "Second Note"; + private static final String NOTE_THREE = "Third Note"; + private static final int DEFAULT_NOTE_COUNT = 2; + + + @Test + void getCount_TwoNotes_returnsCountOfTwo() throws Eduke8Exception { + NoteList noteList = createTestNoteList(); + + assertEquals(DEFAULT_NOTE_COUNT, noteList.getCount()); + } + + @Test + void add_thirdNoteToNoteList_returnsCountOfThree() throws Eduke8Exception { + NoteList noteList = createTestNoteList(); + Note note3 = new Note(NOTE_THREE); + noteList.add(note3); + + assertEquals(DEFAULT_NOTE_COUNT + 1, noteList.getCount()); + } + + @Test + void delete_thirdNoteToNoteList_returnsCountOfOne() throws Eduke8Exception { + NoteList noteList = createTestNoteList(); + noteList.delete(1); + + assertEquals(DEFAULT_NOTE_COUNT - 1, noteList.getCount()); + } + + private NoteList createTestNoteList() throws Eduke8Exception { + ArrayList noteArrayList = new ArrayList<>(); + + Note note1 = new Note(NOTE_ONE); + Note note2 = new Note(NOTE_TWO); + + noteArrayList.add(note1); + noteArrayList.add(note2); + + NoteList noteList = new NoteList(noteArrayList); + + return noteList; + } +} diff --git a/src/test/java/seedu/eduke8/note/NoteTest.java b/src/test/java/seedu/eduke8/note/NoteTest.java new file mode 100644 index 0000000000..d347b988ce --- /dev/null +++ b/src/test/java/seedu/eduke8/note/NoteTest.java @@ -0,0 +1,20 @@ +package seedu.eduke8.note; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.topic.Topic; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class NoteTest { + + private static final String NOTE_TEST = "Test Note"; + + @Test + void getsTopicDescription_topicDescription_returnsTopicDescription() throws Eduke8Exception { + String input = NOTE_TEST; + Note note = new Note(input); + + assertEquals(input, note.getDescription()); + } +} From 0dec3f8632ae39666aa188bb815a65cada477602 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 22 Oct 2020 08:20:27 +0800 Subject: [PATCH 152/447] Fixed checkstyle errors --- src/main/java/seedu/eduke8/note/Note.java | 2 +- src/main/java/seedu/eduke8/ui/Ui.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/eduke8/note/Note.java b/src/main/java/seedu/eduke8/note/Note.java index 8362b51a1c..d7179da746 100644 --- a/src/main/java/seedu/eduke8/note/Note.java +++ b/src/main/java/seedu/eduke8/note/Note.java @@ -6,7 +6,7 @@ public class Note implements Displayable { private String description; private boolean wasShown; - public Note (String description) { + public Note(String description) { this.description = description; wasShown = false; } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index fdcf75882d..3194a20d0c 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -146,12 +146,11 @@ public void printTopicList(ArrayList topics) { public void printNoteList(ArrayList notes) { - if(notes.size() == 0) { + if (notes.size() == 0) { System.out.println("There are no notes for this topic!"); - } - else { + } else { System.out.println("These are the notes for this topic"); - for(int i = 0; i < notes.size(); i ++) { + for (int i = 0; i < notes.size(); i++) { System.out.println(HORIZONTAL_LINE); Note note = (Note) notes.get(i); System.out.println(i + ". " + note.getDescription()); From 790db00c8c66547198860b58de1e1729b72c4d9e Mon Sep 17 00:00:00 2001 From: joelngyx Date: Thu, 22 Oct 2020 08:35:07 +0800 Subject: [PATCH 153/447] Fixed checkstyle errors, resolved merge conflicts --- .../seedu/eduke8/option/OptionListTest.java | 21 ------------------- .../seedu/eduke8/parser/QuizParserTest.java | 2 +- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java index 79f404eae1..71eb6efa78 100644 --- a/src/test/java/seedu/eduke8/option/OptionListTest.java +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -34,27 +34,6 @@ void getInnerList_oneOption_expectsTrue() { assertEquals(optionListDescription, optionListTestDescription); } -// @Test -// void add_oneOption_returnsCountOfTwo() { -// OptionList optionList = createOptionList(); -// Option optionThree = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); -// -// // optionList.add(optionThree); -// -// ArrayList optionsArrayList = new ArrayList(); -// optionsArrayList.add(optionThree); -// -// assertEquals(DEFAULT_OPTION_COUNT + 1, optionList.getCount()); -// } - -// @Test -// void delete_oneOption_returnsCountOfZero() { -// OptionList optionList = createOptionList(); -// -// optionList.delete(0); -// assertEquals(DEFAULT_OPTION_COUNT - 1, optionList.getCount()); -// } - @Test void find_twoOptions_returnOptionOne() { OptionList optionList = createOptionList(); diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java index 416e05e606..b98befd86a 100644 --- a/src/test/java/seedu/eduke8/parser/QuizParserTest.java +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -34,7 +34,7 @@ public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @Test public void quizParser_correctStringInput_success() { - Hint hint = new Hint("description");s + Hint hint = new Hint("description"); ArrayList optionsArrayList = new ArrayList<>(); OptionList optionList = new OptionList(optionsArrayList); Explanation explanation = new Explanation("explanation"); From ef5340a7928e2fb72d16ce77040098a6827aecf6 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 22 Oct 2020 11:38:39 +0800 Subject: [PATCH 154/447] Update the images and more explanation is included --- docs/DeveloperGuide.md | 11 +++++++++-- docs/images/Option.png | Bin 295990 -> 233319 bytes docs/images/PrintQuizStartPage.png | Bin 75575 -> 13551 bytes 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4cdf59d3c8..932a88aad3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -78,11 +78,19 @@ question. The class diagram below illustrates the structure of both classes. #### Implementation The `Ui` class handles all the interactions with the users. It reads the input from the users and prints out replies to -the users. An example is provided below to illustrate how the `Ui` class prints out the starting page of the quiz for +the users. It is the point of communication between EDuke8 and the users. + +An example is provided below to illustrate how the `Ui` class prints out the starting page of the quiz for the user to comprehend. ![Ui_Printing_Start_Quiz_Page](./images/PrintQuizStartPage.png) +As the user starts the quiz, the `Ui` class will print out the quiz page to show that the quiz has started. +The user inputs the number of questions that he wants to answer and also the topics that he wants to be tested on. +The `Ui` will go through printStartQuizQuestions() to print out the number of questions that the user has chosen. +Afterwards, the `Ui` will go through printStartQuizTopics() to print out the topics that the user has chosen. +The `Ui` echos back both information to ensure that EDuke8 has received the correct information from the user. + ## Product scope ### Target user profile @@ -97,7 +105,6 @@ enhance their learning experience. Consolidate key concepts for easy revision. |Version| As a ... | I want to ... | So that I can ...| |--------|----------|---------------|------------------| -|v1.0|new user|answer given questions|start testing myself immediately| |v1.0|new user|quickly see what the software has to offer|understand how to use the app| |v1.0|new user|answer given questions|start testing myself immediately| |v1.0|long-time user|get different questions each time|repeatedly test my understanding for the particular topic| diff --git a/docs/images/Option.png b/docs/images/Option.png index 040ac6af2f85cb9818c8441c29b6a810a1e9ebac..46222e14e36a2dfd0ec12f11ed2f11ff4f678d9f 100644 GIT binary patch literal 233319 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Ð|Pv|rU%55Qia9U4b_4AOpP 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ʌW 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�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 Q+>Ir6ZWJ_Z~-9s?3b>#7dp?dkuVi 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�YR8jt57hE_-c5Hb>S7t+%nb-%zx#~n( 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

R)R9B(x zbFDA<)#S8TzDg7}cWbT7&e%)c(}G&N&>F3`v)@(o9>tt~W^D|=INIpDxq`3?cpL}u zc71*a9M3RW{e9dc?r_gjm`0^m^u^w|2oSQGVA=w$C)7Ty?VhV~%2LUZf61OA2(CTe zT$s-Suf=F&ihjfrnK2tk?18TJ=@vsilKVs>V)MUv)g@mpe7-O~3?l9~7X3qBIKOrP z>Noj9SybUK{K`453|KBZRF+S(@t!NBFqx-Pc$F7-&}00ePJI&Mb|HX7eR99Jf4}<^M+o3wr^=+cB9mf+IzIciIXXvMK!Hl1wL#3Df1(EV{Mr{ca5=&!tkgswyDl?F^E{Ae-zffHJ03hPGyAk9CneD>-+=u2(AnlkCg;V zc58Bm71K0Q;WTe;o>Ti~HU>+z@N?OC3e(=`2)QIKH&_2-Rk|HDLoI!s70gII3Y|+QZejufw1V6I>v+G$?TGN-* z7b(rk6eONq$gv!eT@56&LF|9vM{Sn@5U9_jNAaV^E5_d7>V2M^XU}umAO1|#q`e#0 zwpP2pInrqGYs6JY9lJuHal3NpJPx%%yRvW#);)WKb|>!#ENKX+)Di$U*SOwZ?i87} z2jLo-Y3RDdjOD4&R=*meiXGfqK~PN~g6uEqOEQI!vzqqB#sFOQ;QtflI}sU$kIIpa zE%Tg?TBz4yULegciQdYyw{0I0(>2cHuwq&pV_)v56RmY~^^lk53A@h$$V`Aj@b&8< z^D`j;AQck8`=U8AEX!`*A6}?i*V%twvyl=dSnF0bAo5kfsgh-3o=3_P;Mu6J@47aXEvNgOd(J*!4tzHMlD&RC(Q35?g0h{FOD&K{KN1 zKw^avhF2K*Z8V>q0{CikC2aMlC^qKEY^ab?-b24Ey10D3_YmC_^tc$zu6xEm=+1Du zeO4hukfsD|#~G<1hV5+YY^AQt__%FyX1|8M5A4Jd(r{*0XBLATA|Y@Z|FtM1ip>sC zDKRmCXqyQR?4ZJDw~8ASfBwUs!v1$&N;M)KnV%RMj%IJeb^J?Xlcg-g`JgOX=Qp$B zM7q&y9Wrq&1lnm=y1G9-uPXOg8ffwrOZ>|PN(vril11~nY@4|6HTxm10s1DcH-@nf zuuP@0Z7s#Vb*?TfU*iTIdDzy{^|8~HZSk2n)$)tXkW{FWL zr15Iqt><)acCBuFvB$3IW&Vm2O^x^>SGy_ty7y&LFD*Tl_%jM5gXVwOaQd$KhblGPA^i!ezc?7EG z#`myuyu)r%m0FCV0&s!|HI3j`$F|4Qhl#moLObd{OPG(o`TewC=AG_3))hm>rF#sV z4Z#=28p3*EI%YYl^pu;_oK}K*E}DDd6y5+Z!7ljKXW?G-Y8T7LClRHvq+U#nK#pQ+ zq*&#eFpEEoD!hzKQLO5A`6-byya>UT;Vag;!I)%YX{6Ruq&Z?4VthFT^LFK@)$|Cz z(S`G~2DrhruT2_BSp#t8@@A{@7TEUZRUw8mAAj?VV*H&ylf95$h`O5LD@TjI<(%#e z*aJzm(oY}noF`-lNT+BL+dby()&q!rD)?2L!W8)qXx$_zrqiA8l;tHfD*T5Wtyf)H!zKktpA?(+wkRAH=D;Mh<1g zYP6DmhAD9|od0Ddnw)?Vy`0kZ0DIA=;B7@@$7dqRk>bB>3)&sTaL%8^eoMgb&`23rcAK1u0`Arm#FyP2o)Z#=klXnDVwVxtp-3tYLgoChQ4-KsCV~kY0qSLIm=YTF{Xr9`n-s-YEQ?{b^QqJVB`t0g%D5 z_oGS1>{6}9-;_g24q~P!q4(+g?_(y608zBb#4Gav1vHvu1Mi43*?L1|6NSc8Q6$mzAW`DUEKN;xi;1x?O~C;qrl_Cv^?S z$E^$a+kfdO)W4ZkYBZ;H`e;ehm>vT9n^^)-7Ke=}F}J>HC}o z=cfvIe$l-RGP8f({>MD{ApmTo>RW9R@*9!gC}oxc$E~`rJ3~lQY%|L>U2GVjnx{;& z{fZS`!k{aZ6bi&IGUMOXFtXts|2P!?C_$-e;a;TJM%bx#p5izE-8x7kvVSf33RL2v z@`;F5kK$rOGMn%fy;iA-w+Rgiw{0}wi>YmoJ z&(WKIb@(urt0dYPLPE>hbY1%J@e5%>CQXWuDE=2zZ-rXDsZZqz-Ic!q}2M%yg&Y#hMs#ClWwi*DG-2d0lRWoPbo@-K22D2 z@f=wM$pt^6nQQoJn(hAT9B|P3@^Vrb0GB-q*h=&A48r=EkU4Tv&vW1j|IPUdoBfh- z0ucAhM19Pc{!5YoHqb;mMs)hNc-)q6u5fBQQ*O~%Nh2UIPr_*#?K)+6Qg77p$=$-@ z86=1*^dQ9x+T+D+ZpWrwyQxfL~ zyy=v}(%pds_O4OiDA#6q6t@YGkLO_rQ3IZW^^S#bkNebxVcQ4yBrY3hR5fJ2HhGH- zfy-%K7LpMrI06fw+|12LA2B)mRki4SbUJG%RAe(-$uiAcHTSDmyWY)V%#^kMz~6Po zBF7zt)H$57$m3*NuMV`=&=W-~p7q(w&_?KLx2)j-CUNzZCStK(+4?|z-F|J~sFHYu zbaIQ*TRY59cbDTGz`s8U6{t*b-E*0AZ@PxcsJ>+{16kVlklFz;&yOR3pLXk5lE@j z>os_|>(+rzPU-a*X3bO4l`LFLK2MgK_T?I1oTPihF7=Mq2g>?w`=?&AEPZQJ&`E1S zz#_yirig#Q)et4m+cR75?i4$@?yM;J&5if6?aoXDX~3%u~RfS#`fYG5T}x?0p^039B=^xxQF1PxW4p zq0?%OdE!35)DjQ?y@eFt9?1)>I1`E2l89cY!o1i*6sOUA4sBob zRuo$R-=&a3KRzZT?XZejyV7mm)7kap-DF|1&#PyP*gUH^MepCjfHa=SMb(_gj~}xE z*n*n~_Jr0Y6!AhMJHWmNEI??VYtT!@`>5alRhCT5sk29BpG;0&jj`*3drsXcD(Mpw ztO!%&K(mq~0F0Ul0mAc=0c`&eQa&yz0nbxw4GHmr)R3Q_=a_KRvz?!~7Bxb98C&Qv z9AoIUJLhM)*cctlluWo7dS)EkFu9R(8qa@WxaI?~WXsFC4Q4n~3sw@2ZqmuTNZa=@ zA^xS_AQ8>ITYwR{ss}+5f{#vXH&Q&)Lvt=M%1T+e?pq&WigDyejh&J5q>-kOdaARB zub*V3(%^q#@r@huWEIy=HBydV*jSB@u5;cWwU5@a;`Ac-YU2;ky2x3yRp7DGf$7eSlE zvT6e|B^&%79+Kq;$iE(`aWWsKmvr2B-{|#8g@rw=*=87SmI_a8GM)tSW<~8*LA;@( z3PLp%-@I=w%!lE8%Pr>L4vx7vT+8J!)wp=&>s6YC+C;h7q^M5zO(hE^?phHgZe8oUK|u zkbJlK%5t-$HCr4nO0HIbN5;I)M#a<4T-J8FpVXZH`W%p1$u&%3SO086 zF!?(jz%lrwTLfPx^9%~V;8lP>6S6!E)lLWt^VX3F@sJ%H@y@ICammvwsNIY%qL5op z_PM!`bawvAXI)sy6%`8SXfvs#m9Da}+Rr}Zd{TKu!9DA`2;P_|Ej`I^yjUmUfz%&~ zA#y;0;cg%$wp03UY?JO{Gb1b`RD2x<@wwG5Y`XCnwg@+}t;BrFp*YJe!BSt`w0S%L zsDj1)MfI+VNXNClo}rmo=+!QjKKLZ&U7FhN21JhYq)MyItOhhaqXe3#3KOK%z$BxT zabBG9IcP!oEHCb|cUDvaG0XH*s#=fM)ljWel=89L!VZc{IXqHUC6?#A@A#x`qEYiY zf`A0wEG=sh`08}OE~L3+^3-&v^*kwr3~h^+Gl{s8QLej;^WAY7lAX?$l3n&nM2X)y9Q2UGuf95mWL7oN; za86c3+vL5qMQxMGZi)Gbc#L{NXKVREUQMv?H73MJ(2>{6dD>jByChHphaejkOFcuq z1vaK#oCY}{P7b+h7^pwB)@%oH`dExlz42O5k49I&_teHCso-|S4v$uFudr%ZG9qbS zMV*`^!Z?X#ZZAOzloWzrRy!q7?XsgDHwG;p7O9+;qDUHyos>gNZE+UCWO1)us;KgY zdBlYjG?|#H=P8eeVD&QC>Ast-?h66Z=g{Tu&I!sEk9Aem*#WMD#`4jb_2 zjtxU*V+vZ)x9egqHrc`dXHIs8V7VOeV~erwp;jlAug7goF^gF;M0O|J<0+vJ9Va!t zxdsX)28fm1XKSS^!>g0~Y)2zBSoD41ZJjEhF4UT1rl5u1Ff1k)*PF{#*0_loV?Xk% z5nQoaJp~u@Cr`?Y`JLO9RTsDf`a`vShqy4#b@HsRr!OTcwd^G%&#O7Y1TS;>%wWpj zUW*sKSz}0HhO;S3_1LD5lSo}6lvOJeA7i$|pqm+E+94524!uFk{*Fn?JC;?}@%;=` zCSJkZJ({P|)iA&?IXMfq-7DuzDV^=_8@Ur>CkasMEX)c_WHpLwzrQg=NLsZg!%e`l zT4CW-@40uIK?Se7z{@Zs6ukqfEUq8#!;W6NY<>Op=ZuxU_5E1KSNJ;y^>tJj2GbTw zarcSILs;$3hZ<}%-iEFdKOv(Y!mUbJH#5HxJ#Vo|Mx^z7@pXe%Y1-6XXowDXkAM>M zXU^FChZwczp-=`iVhol8UOZJ;YtXZzzpnq%0mW}|2;H* zB+q8rG;WQDXi3$_=U6*7Sa~;X-tP3uAM;Pb?au#k@ykSGGEMPcRlqHacvN{o6}u~K zo=}yKAftgfj4N}w%;NYaTGw1*uoSz8i=lgQo0KpGYqe?cdS2oM?5yebWP74u2Z181 zFZ$FOoK2CSU9XKOpTJF$XCgwPOVTSK-alhx!7TjC&f8#X#;WK9TO3@KCkK>kD#gDQ zU=o`2*_KI8YV&%EHQ1P07cs}<)R=M;43d|u=2XEcmHg_^@nt?j#XqXNW~MV)WQH>i zORL)Y6p=K(i11{>4CAugYIZQIX}7dbht2c5rURyg)|K^GtPR&mFQH}??chZcvK$kI z>6zGSTp`*TRJ+*TPsWleeOI(Gglu+nV8&8mt_)h(z_QagGg|LdJ4miXSd#`)pFH2= zVkc=Zy&)VslI%Bi2?4U7HX{|^<}7>|zE-f$#Vt24^$>@L)NhpaGETg#gPctWsW0?+ z%uR0%A^u6#-UX}S+X!g4t1AkDef$VwM28@9YtOU&z02lo{R@%z{mDjtG<>d?TjoeP z*R)oqSWH{#LoAEk%_D{?nz23MhbkIj(BIQ$m&WpV( zznWH6^XTplB~i^l688}4WKJgXM_5N4 z6_6i!t2S}kEj}KA;oLQ7s%K0Ot>1H<;EZIN&sECsR{=tH$2EQLi!~q~Q?_=F45==S zkg6=M8K2&MQj_5R_U%j7A8_g>wSF@!R#k$ytWf*H(*gNZwvFw%TDhI4eZ6Yg?y@F3 zidw$IbCihb5!2^jybJavl#TtLE`_Bt)`vDtL)U@bfHhL*2?_0GXwvK=w!GC!xg4w4 zlvdua7V=g4vTm-1eEQmeW}q5G;BA6iHfdlE$BnV5*IMH!$1 zI$Z6EI%)Ihj{K+H1+I;a zZO}trV$#B={jk<@oFPTPkLkw%w41(IwMhg~gB8Qze0JV-aj*AGlIfzQlD#f@3k*1q zwj~GoDX+{#@U1eCpRwCTh`ipxz_32|`_XS<+)&BSQhz|nOtq>-!RkcbUdsZlMsBc< zIP4cG>E@`JuBzzFFTf-oTeJyzne=NzqBzfI^{qN+uCQcSuc-0TQuSq}-q<%=OY?5e z^W~2LPB%eW*AJO4R0ye3FNyHG@0Y*%RnNh)7n#eVL3>gz7N`WLy?z^ixamsuT$O3cE+dZp4K(KiD6hM zs9M-Y;J?8yu9pog%QI5vCb=+CSS_u{u`Y8-ovE^e^cHibT04g!f7p#LSTQl3)mTT4 zg83%PZPhs*#4PxskUl<_d=Ojfip{#PhZ1`&o?^2-*6bJO5vS*o$2g>aJiTqQwuZ0i zI6A_S9CLdR^s!+9+&Vgz9|D}5zf^_QB>IfO29q5|_|%xRk4?^*OK)<)Gu3>}MAsH% zqUw%pzzy`~wkZJZ&8X8-$d(w@{_{K7}SEr zs}fAX=2UFocch3(PK>CWnbM3DP>!l9tX#@NyoCj`RA_G%59THGr+BoryB2pvD@l{M z?HYZ$!Bty&Tq9lC@PHZ9w|*NFvR(rHh)upf?eXUH*_?!S^^!kXRY$nOcm?SCP9>Z67Bm~qMVNnB~-bZoE3`A8Lr`g49_@-LT?UAdxphZXOHb`s+L%f*)ET@l z)Vpxmwr$gbO0s866=_?&e7Usc<;~03h2Tb5j<%iUu3o6j6A$#4~u${od*sQ52+tnMdoOyjfh;xD%n$TCQ zq`{>-;$IF5(-a~a-3lPgEZuUt;gG)N)eh@{R#-S+l*lFGV-2o#G6?ljVgHrCfb%;? zf1m#fMv+h~H^~qgj7R&4Wr6t;UdtIwI*dJ-4xc=~UGA_VF}$Ujo}pUGpMzoiIkew? z;~25xoxK!CJWh!?r_LmFO=o@BTU<%tkJ-n`NmW!$))O@%E>mvo+0> z32YvlCfI3`X5G$MUdGGs;X8Pkk<~jW534nSWG>opo=$p(m4E&&*)T3|dRP%r@(jV# zD$>5bnIaWTaUx__cZugeBlyxWeCk*+g(XrLeu7CcX-9Juh%hNWg|hWlmEPsQUy2?b zK`y?sxt^sHZ*lZkUybi0?_gl!uSc7PZn%^MFhir*15@Xuz3s0=+p?rC|!`KFS!oo|c z#1zivys7v^$h-bwgIVsJ&mzp-vKNE3p5iiEaCpm_&0-{zU$-tNSm^fJ$zrPb+vc&* zu#&ZBqTIKJL4PnW=LmAJhL!!ezuMo?2OL5kP541`WMK#u-gEizEScChfMHgaiJRDs z@D0f?Rgxx@EiKTwa4dCblSs~b9Qj->sk=20Lwr)ZS7m|gMUhCrgVOabPH5BOEs@iz zRtnp|v%~I)u;3$eJ&-{zhP z=@FS`Z@TQ!&J%c#}1Bn^_ntVdSJdEKid0|-RUT#Sm=8R zqx%v?7kyV_GObdwK*E_K@dNsDYg}rfD?P4S<82a5)19i-`OdHYl=T7D$fE{IpfMg% zm4NLlM9P*+dOoS^nmp$`D(AT1z9H?65)U*Gd?%6mtFf9M=&7bh=8bp`Ojyea{O!DT^UU9tl^^eW>jAl#gUwAQG+lhU{tpl-KM?#HJ`6#Z9H|=i&ed^J-h8BT# zwyc~`P3Uoz@E0oA;K{0AO7N#@ySr)C#TkEm+O}1)uZ5QeMK>!)x}c8VPmBW%0}bd*;%n^~0HM;tQQuDj9`8uuGYyyRu?Qe>s00+4 zAa5f!eX({p2qKe$E$>$t+wUrjha|r1REqe>lthq1mAcBg$A`|+eflUr3{HaB7H9wfNAJT&(JaNtwWK5u;_IZ0>qv2GpS>G zcZEI;9f!dF6anq^!DL2E60R@iYU#a{#rPd90QKm$5&i?s6wH2*XQLZ9W>cUTSqfyn zE+${zMjl-yvjWi!^L7=+-u+!{5$qaHV#{qu-@dJ~q_S(g_;3~0RMc?#o$2lI_pffh zf*pQHuKNR3a>8X!paa0d??1%Vb6+F4D-|B^Oe%DSk+T8?h-d;v^=_a{z+B<7?DSW* zJ}9gi2s>7xeJoDcKhX!biXVn#aDo=iEB`3A@KGn zhYcpzbz`vdv)(nO0{)?N)N{E^K&&tIr52cKxzU*KV=;&@TV)q_d)0IsrAQ|yc)2O+ zzF)JkIwHdoAxZ8j3sl(fH)h0$Bn{|i0yKb1WIJ*sOu<>0QAen z1{xH8bDUx{lHkQE-kD-DFhOq@a=MY~qi5~22tJd0h3J>{-W8qz(1RwAq{M`2f1F;O zoCD(~quFvmm5%TX4Akd-`PhuW3Ou}4IswN^cY|xIrl5s078I2|Ycy#$PnpE6C8< z^4wvg{Gn%SQcTBRN)dHc9jKw(W=R3vGUBhBu{Wvvg0fzCNLkze$hnRB(xAJ@EPkH9 zCvM9{$;E%buyYh)0Rv+&-4*YAdR*^oJ7EfKK;2D4?H|D-eM%HAMUFkqD-MgM*X>01 zWLi?mmer!yP;ZK3X3TmM6A9!Swk}3+H~OTs1k5e=Jhx;wu2=Sn1t2*E8bvAB(4!&f zN+PEtP@-M^K5K(N?$AX_J6mZpdc3?8qidxQ$+wjmwF>awc(c0O8^hp88k39CwUJwY zj8#|+W5D%*XNx~F^q>v9Z;r=_!`bZOy;GU{YGvano&rB^W)=G_nRl4=IGbI~8lkj| zOdlN;bsW%{9Lf)sx~pQexxZUb_pY*?&$L@?yeq{JSsc;wR04%`ph&(oWAORe2W=cj zr}2$`cj=i*8^+r!m=EEwQ<6KYexuGH-+S;%44R6v9Mk_pY;LeQ+zCHGo7Dh<_cTmKjOZ+ zn{ms<*w)lRXUi>CdMl8}ZKTSZ#(^H?$7Bt*^R+K>E88x?36(9-%iXe}^z{`WXxJ$f z#2{qqFaC*9e%%xGyswY7iAg~SR?f(c&lVm&2ULzr_lH~@hvv_!Ck4mGHT0P)EXN}m z3#%zNefo0FrW-15%zL%Wlh-sxW9&q$2bPgYCK^U(2n+YW-MZ%Xf8`lH2@9FSuzN>?s>i^tSU?$LD$Q;r5TB+IrZP9Z>WiTxkNbo{PyWb&_Q6V&0cq zv==~nFL~H(K&;BDs6oPVEccmcA@MKnK2jl#tDEvsc_(l0TkR)+?sQt45h!!okdK?V zT)Z6VwH+=EoWj#)avl8vv{lqq4HyF&uMiW&60I&9)H&MMN-Gx9MmoE^4MKZUKCW1hcc* zw1@UM&KDbwG{U5RZ8hv6OnZp5Q4!a6h$I1>2NFD&Fgt~mmk^-*rmJ3bqvuo^8+?`E zcC}a4v5)9UT{_D)V<>uhn*la>UU|`ECmBY@tPj4(;^#Lq5pz`7wcuXsi;LSCqpH^u z@^oAdB&zv{IyF?Wc&pwh&;tGbqc9SSl(%}t`I$x=r5ZpD6oAtgs1R@Ac@x+ zW|&kl(A%_EIXn06Ctzh?mh#O*=skP01sq040)t;~yC-V&Npeb++R&u#TGGr6<6(R~5WMO50eOq0CGeejA`gSkfS zS&03u_64B)q9QJj_%^cQI6i(sa31njn7-Cm6!7NvCC(Q>S9_p#n+eHN z&+mW(?HJr>cMh|wNuJ*8UjnyPJo5?^d{R;K<>%GdjKPCtr_)A<@c!YmVm#-8D50Bk zs!boy#TTPagFKRgH=7y4J-wBlLkk$YXI9n7r$w7XQpZ;x_;PQn&oE)SZj?dsP%9Cv1Gi=YrV*dQqnI{kuo3~XFLbsRf z1{F;tyA4I=LwZo41;Mh{{+4Jo6;FGz!`o-}%59a)v=^V-Wud|DJ;_F|o3M|{ zc5q|^&@oPLBMZsTqGA~)!ysbOQ@X-L2p{ipm{BXHANX=Q$ayZjou z*1L1nIlB+rkb&tMC!P3#r`x1#$D3#g8!q3TSKn9x!r5rpRMx6peH}qX9zpJX-U1su zxmqlIoZTd}w=sO#2E|OpLtEfJ2765^1aCrSPWQoWWZ0>N5Rx01#_fRzo9VXdS!0Pq zTj!Tj@zhf_X`dVx5F`UAu&Nzg(K4@q+q@MnvDFXzu$$~;qX0v1TK%ESQ?j!q)0DjQ>0d#%yLgFb|mtREc)Cw$k@tv9NXn(%?JVi=cr&BPhIR@6slX`&i?TO?L!}VMpK(05V^Up z;$9`!$xPgEm7j$Giik@m`O6g~9fLKR>(ceZ$wwPA6K%khvoCP-)^fd%@*LURlwfmc z6`TA}pj|aXPa!?_S1Zl8ZDTCFKz@6k{ItRI3=2W#TX}di zgVr0N@P<`EYwt`S9qp_BDFpUYlrXSCDeVx?*})>FkfPW8lr5bod+_KBi)P zmX)OdtXMQW+G?ThJ!}Kds4D0lqJPEm8_XN8%Y++;PoH(oY$j%%ltAwO1A)ObP42R<@Ceq`TZQd+XM}(b1;KZ5$&it(A76(r9@YpW zISuN#uD=96DvbwXdLV0?$2oawXJF;?Y!3%dagT=V3DrziQ+lJUnM7$7{B_(yQDQ!a>x9k{6dyj>uK#^#ZsZCKp)q3{x#b!w#1d_(IYVWC*;^` zkGDco|Bt<|{>p0W!j&!&6bWerq+U`4q){5_?w0QE5<$8{BqRi+ySq!eOH#T!?|MDo z`HtrsKK``vrJYp*@moX>ooXOj${^I135S8xyx9rTf$uX5b}gInR3(hNflPT&04~XyyswILkA7Bx8_3`$J0n`f}G=c{1EpJb=GW zxu8KV9e8$%+vYrUZ_7OW5aU>`7E_8j^gAEcY@`RT)>$=SOQSK9U%Mm#?BgK`uLh`I zlZ&;hF!j%~?7EVjKFq#%7+-1l!8_}L_mVHZ z!Z7Qy0w^-J>xk#ws=Yt%o08NPgzx^MPN2=(%u^^_=5;>ZU(|+^$ZK=Sl?U~bA&{-v z)_HnYrD`|b4_K!o8syJAVq6JN#JHWdRTQkfKUb^v3*lbnO;bI%w!9_X&93tO@%o(5 zWFfz%F8tPY#^yT0Zb=BYce>$+BMIgXKHYr|dAKbJ?CyCiLi?>5q}YJ34kt~m&e5X! z;jS{;huOi}`L_LrJb}cJyQ*!73b)A-1-fy6$#cJYNU;&0{Dicp=5C!wbqVPp&rCK* z8F+ssJEfrEpig)nT`!KLy4xb%VonYsJm1k`A)#CJ)yGjOZeFk4#qS@izK1+8CHV=l z);%w^hzpN3u_(syIBV&MQooFg=Mn1WJ(%@^FTS}wqHk`pT|;uU)Ei>p;xnH*Eq&>c zO{cAGN_>^2I=xSR{lJ7Ib6$5~mJRJ-+Rb~sXJn?qVoe>h_iAJ>>%c1l*+^0T-mm@T zAUCz1LrOha zknZow`14L1PNNs^-G6Z^5{MeVI6c|_sTi&(|7!V zGg#rBaVz2tqTqa~*{#m~@Xwc;1RY1EN4tH#jAwS&TW0vk>=_|PB7D3v4OTZG z-j8SO!8-lmWm1pu06MxQ*Y~T2_sm&J1qat3DbKe}@0mM1&!+~BYgISmW36B$-NH*2 z3%KZuV}?cI0`40R0TH&&J^#iQKgLBX^^uwMm#gJq#@6I-&!+e3u3a4WLCUc-vl?&3 z*LOyu@l7fT-!dts_=vvP$cOzpSubhLYE7GMg9W$0=@9Xjw4msgx0JW|x@UpiS8}k5 zlVSAw<673Y%7~H%E0wx|-u-(I)&xF@MUtKK6q5d`8%Q9x=B&=SKSD1EyY)M7n-G`^ zLK|~6_4f&I+ABzNwWYZ%o9rx-3D5#(-%qMs^0=MY-+!egte+caL))3YZYxD({M!pa z_?&qDRdLMYOod5Te3jDr`F#z|R(>=a7leHRIEE;zrpt*~-8FT-seKKwga1s_R=&18 z&z$#qdFs)&?^W07YkTH)jj~GxLj3K|mbWJ!8NPF%bXmGmr}?~arynzZJ|e+5J~_dm zTyGZN@N3ph+o0y|`r|#ry{Tk^a-yB@k4xepJYV3^(EGoA8MsPL`^3FO`DD-wCgki+F#Jd#5N-HeG$|J_+B zn;PH6dFm~_`FY2)>{K#!dlVEPKyUbbeT#M4_>~GgeB+1Tk}RW~z<1!zzbTgie|hhP zq;~N7D5d0v50Ky{rGE?xOz+R>GR!wsNDnMlRj}+fkgKxq>RY_}-IMmlI#^72a+}Az za9YfVhqLX4QkLesTlRa+KwT6=Ksf?{w8+PSPW)6j=JngU8M<2TOG4+`A#*V$ zD%dOkmP%kkff!gnO;Bc%F2E$KEFTsIpi5MejjlL6svgKP`Zo#3mK+?-E}jYW8qdiw z_r0YcQ_hoZIQ12$uZW$0!m#u4C^h_#ra})?0E*}u+22u88OdI+rL&H>sQxI( zerrsO(|&`ra`1l&cwuM(A0rAdEFt0F11df&>L`E;pVu3VPNbSL*6(Af3q1`xe)z$l>0Yt+JiNksK0 zYWTnhs-=#^-vN4yNZhGtZz+MawF+Wj3mFNx!(ssCG+ggbbSWGO=ewhZVkZg(YKoqK zx6G|Qi0~)aDZ>hd_69t&$B{`f-;x%=B;!r*oG#5x=wF}hvY1aXJv%%=7CRrw0@w-* z*a+EeY3jr?v$OjEmzfHby4Ko2a2RXxSy_#mg3ECSv*~8%=qKU7I%a=cV+3Lzz|p4s z5+V$}x3t_k1pG|#BCUq@2@zV^^bd1(=kvCwLtmNw-as|vP+h#QKiXP_P*E?5S0UE0 z&_9w;($b~>Z7r=d{M>qHMi!eNY^+I3MV^ zEPtY^;FkWuxeb99b)daDEUBwrX|C$55G7?(7Wod$m;I)>iriXIY^Ft>qX1JbXn0<# z8L|BNbor!H0ioT->1%pnp!tK>L$EKc$>f(ZR16>FyVr0%*&s`GKl&8Ips7aexk2_? zRs?^VQ;h9-k1$n%c9X!|99#0TQmFxo$wIvlrl=_(v1evwVT*e7{G*%%Sai@gAh<}M z-Y>_8f!9Mez#jS(S)3n+%O3N$qG-$G(&HO0l_Y3Z}(l*MQ)y2RtgCbL$_k{O(UnLvjn zlhMDQqXr<$`;QhWmny>ChZ40&sXsj5FCsVP$hJ7hhXJx{y0CTC=ED*W;~e{h%C z+;X1t^Vc6@*K-gWj0jQotfnZSrg& z9IY<-vRG9V@{DVO(sQ?BQp0+=;d~()aDF60@n2<$4DQ+PH|@vDWr^>m=#ss*1p&3M zVp59^iBLvkKLarId*4h5~>@T#o%!ECpV@addQs;_*=PhMwZ> z!f3bsI_bU9BD2Dp7mK}QU_$@X7V=34`)TgR$t!xH2R<6ePuH49!ic!ig-M@H(iPP| zPv%U14xXUc!<8-x(8XK@T$fltLJ^0?EIOt9h>3#P?n(>wEMNm7S7EBCT7N-LWO3X8 zWJhCJRqhN8Cvu5AZj})A%6E@=FLbzKtY*^${0urno-yo0tveQvEaqz~>Q5)skHDrR z?uUqeM87y^0K^oGs>M1!{mER)K$H=eBw-udc>_odd%lXEL#7M$En=Jk=B_U1N)&!CZ;VaTAXHf35dCH0j$@AZuxdqW?PdjPcwd*W-m_l-#2 zcl-Bu(v6pA1k*M8MvYP;eMOG@V!X+N9B+&mq#?`WYptxt) z$&B^}!1piQ-`w-;Rj?})CTV?a z>bM(Mx|7>a>-94MSPg~bC2Hdt{E7&73X|C^J`)Hy3=83k0h00>5P@M59AcSWL-#=_ zPu3kumoiNa72aBCsFQNa+h-_Q0rY@)5fTrDiTg4w%j!eKUwj*-0;TtN*G7rE;HE-= zswM)&WEtRXvn*_Ud$AH;YCQbB=6Vm%uYe|O`P-KY^JzJ-8RnCcNEn$B0uqpv6xS}R z)7;F-53c=gknk{qgNy19uLw$YmVAHWZ|iS+Nm!9bm|p{EqWxh3(VfSRl)=q0P{!4r z#(o5(8DDRlh%y#)K_$@GcphE)hm?`O5TrG0pMySth4&Qx24l4n)8RRL6Y*N#J~@cn zHa;k57cnIsnk3og(+8Zd_bP}6Pu7Yu^f%3!Ex5F6Lp&$V`eNyR6=H;KyQouK0Wwu& zh1rBSpjY{QQ)gOEvTC$}d58u(;Nem@#+9$d^s0Yi&E=;L(wte6TCB_GS%9Bq9WsYz z`00Ii1AEB)Saq3OGCkCn?wI^qN4(ZUlEITA1kYOg&F70nTJ#-3@t6czh8d0hdUMq_BiYg< zRcWXGxLOG|h7mSnV~ySB7HT@6Z(|6sd{>Sy3lniHUBItFDqj-kK&?@)hLx)_k**C^ z{qDV)!t^N|;=_oNXWL529+kE4QXuO_!4`{|!5 zxy>kMSE!rZ)%Kf}#45ni3oP(6Y@tS*8A#>R2FM&`0Fk50dS<=wA5HFa*sG;azxO)Q zxBOmiYJxON#D|3vHU+V$KCh^8rc6IFiQ!^*v-?GS zQ{mw1<_WK~pAbWjLtEjoJ#BK8ZX4n`fX4yH-q_aU73oTtsv3HFwLWlKI%MToR^@HF zzpFEHNd;YxLU&ER?uN7DuzbI!q6{|;-dgIa?2IyQkE5h>uuk1fOiWT3e(Y{y9dM(k z)o>Eq4+*3o>S&}Wf!PufsW}3f@OI(o&)CUw6M5yZnu}ePM)w-7Z!LK_`K-kTZ%4S% zAqZVvRTe5jmz$|wnkf=36nDqC-D`C zy;Uov!tE}#Y?dgoIJe< zbSXexq@vh+SRIJqSc!W8z-uaT{9k*xzV9pT^K=vjLmF<|%pNy7#kJ(;n`{*w+ z2Bfd|sD;D+4Vrh_?uSCw{f_ozmh4e9^aTl%G9pii7T2Av?r-zz$`j#09$|>3GSd7` z$|oz5T%^|Bp&>noa|%sUXD+$!@>`OhUF}_ja;ZTN^m{CAT9C2p(H*;>u}wd1>?eMgWWhGSUHEoY_#t}VYPkICvC6@A_YMIe>z~vvd1^jP70HlmbZ3V^2^zZ6-{LXoD zC5W!jI>S>q1n+U4cnxnMno`|Q5s=yVncd`CN4AitEB6S)Z_1C=cY8-m9+sY6j~=mE zE$nEK5Rn(JO8bxcclsTb&On)8h^}w6)||Q7lN?7MZuje^ISS!ZzB>UCPR(ZY%A9c_@IB+;_~H^u$+Z;zeamq|Re;m+pLK*O zS`HFS!Se@eptO}kY3EAA$~y#QHI%dJOIkH&E0IsT>*x-!2zrp?g**$I*>oumy>F)hDoNDMGCxp zWgRnr1~%C(y*U$09tt#MC{TE}wOh5{X!&&y>{}yzJL5k(6gXZMcXSrqtkr&uZh}%V zXFf)lrLI{eAtXSYv!ny`aDI2a zaB;XYeHPiMKkumh@ zQa}nte>KKFoU5PSLNM&``O6CMfLmLQmUdL#oDs4G$w6>oDg|e&=-IRp$umy-90kz4 zRBf{H)380Hv<2M4Achor&Qg&gT$kHZcERlEPrPfAy)g{*BCkwWe;5|d5;@J0;p0Wm zRBU&v8u=dsv0u_lD!ZanOFMGv^>g0_R5`Cphs8mD|9zIkc{593Zvv6)eprO0MjuzhTEIHgtH5J_XleB) zKKgPEEB+X2SjiuhDt-YpCOxrxmfv`tyN`4D)1$tD8=i&Jp$FmidvmH%Ji7`mn;r2i z%2ZvGY_vvzT_*=Rzr&kq%%eq`bxQVE34|aSY}sH!-{=Oj%!t1e3F2%`BnPlgurIm| zVI`&L2*SqFJnrTzpFK~tw~s`0Nk3Ykm+ge{uyZinTAnNXp_)||DHm5*9v0U-@C}A( zn8pmsE)n%d#m*c!v@keK3Z}Gek4g<6AHS*=4#nS#sF>_6VVij`tkfvwWmjZ(9Ijag zxK+6tHMW*f(SMo?xkG_X#t;MG3X=Q$H||&kVjPGRQ6R^c0K0%7?m!rT5q}A!NhYm~ z9}Pg@BwV^bX8y4OQ&fOxletGs3s^XZI8bm@=^88$Y2Hi0Fzzkt*XaUqB_5RxxW%Vm zA)@i)fmscM$x#2DzbjtRM_`la8O9g`)=W`?zd^u(A7(t}_!H0y4~Je|{Csa--;m(A zT2dCOiOE`rd1bi!xq^Ar=J`1+G-(F6wwE4~GP`MCGngFn=g(| zKv{}hjHfCUrm-6;__N_nhr3kUx4zowEx@yU(=hPo# z1(?Jf)Q&0ii3yZ1hrCLeCLcjvQxL#2u|Ujj70fo7D=z}25lVh${iIp}s8i>nR|sf0 z-8YxVYr9qPy_E&CbL71{&(-;7ah85qM(!je+Wlck1#l!_o}2Z2a*Y)a2EG)l+k&5} zj{9guL+Z3RQdn8b#y`Yui$?iNs0u!pW4;@{>iW^{Co@1gv-ipL560=O<+~fBigLMX ze`zC4W(EWf8yQC^_D8;f83@H0;vRNA=1&tvU41(A30K_l^a6

a@1v5hqA_quVSuSPoZKJ|OON#)zwwA`qO_{v#kNg{4!x7k*mDiz&fIE+jX7Ff(BItQ3 zF{lU%zc?s4UEW=fTi#{>=(-n3FZRCUjOaua#!&=J=21~?a*E-ImTp?C^~OpljML!$ zIq;we==~m>X2k|PTb#g$8>?Sxf685)s?^%&LajeaJ=8CHEbipQ4EthZIV-j|SgYIC z0zZm~o|=wl0ZW&?JmC4)(io})c1pPx#h5Su0$4?%22~^T(kmc`Df1>7I^2mgL7BU8 z-I=Qy4dqv>zmOD@9@L=X>(9g<*Yp@l3e)VJDyiKzOQM|wvjAWDA^p$Ok;a0ID9d(# z1P~^>p{EmzYmOS%PYP4|{MzoD`CPRufS~Z*Ev8F_DmS<3&$6!XUOQ<3u{n@B#6Shc z(>`ebkB5muUnjTw=cvq|OO)Ck%9PfOm(>NVQ7B-KkSnq9#}iH(VG0hAD-bckfJNSk z1#{W3yz+0ZwH`PiNF`uY0}T3aXSV+aAL!b74!)I;Db#9A2>SQPCIsNF{m(t};f6l( za5!RM4o{&I;7Kz2=Fc&9^MP?)8i`2(T_Y@XG-+5Su>S?k0J_mG2~IngLj!P5R6j7p z)**?p$NyXaggqf}K&n--CQ<}=H7tEV|KDrGrye>}!8j&hkZZrO zDp0uf05UMZ3+S&rqCFQONo=#{1*L{%dsZ{6jcnVE_Z245yH-(vlw$muzLadmRl@AD z+DwC3-JtAS#UzeG={B0)HAqmiK&JvgapS(-T9sCddq?!L>4HA1sU(SNM8|oaI2sp< z`@yviTRS%6+=F(O05+Uk;a+xG0_o>-F!FdnU!hLvc(1Ail3v55R)47d5fV&FGM7{D zGovqLuS~}xfa^sMG!u*hG+Yp|MH^gCeck&#Kp#jBAO=5GR)0vcFHj6}Uzfj2=9GK{ zEK6Pk1S%6)EdWUcMf}c`ep2t&_+lT3g~z*|L6B6Bzo#DWuwVp0Quft0lX zZT9%pKG;(BOS*`UA93w4N&D%gAi_6%L?>_syRAWETp4>JkYM;g9f*{>Kt@$0*AWCY zAZh@0lB?1^&-~|CR(tPW8AoPASkso~UAGHT5b5fJuxXt^3Ua?UO5!zRp0Ok%`(}UVzN;7`U11e^rH0Y77+ydlD3jjL}!0iRe zM9X;zp=kFLl`Al5aol{weZX%uRlLoEzK&>Oo^3W+=*qhaj_tb!aGK@}U^jA#+JWk` z<_MTOJtovg`g=`+B8EKfBpMsqV*H5)W%ib{hGK4Z^@8jPx-ZQsPnR0{c@P|8Ue<;* zGGvVE_rA|OEhgtUfW;L9z09%pmA^_E_F99)a4Y+U+p``P%4bU zlH!(yb|nG7x5qB!3PuaCUAfM&T@FEFK-cyWJ^JW6CVo_kXCQPz?P4o0-RC7ZNt0jZ z1RDWO1(4AGRPo$pH6G%JQtW}9#}7+Y05U5T)*p$pbFQWNJ&FRkSP!^3DS%Ku?aU=I zK>K0F#boQKV(jhtqPEi3ZKeR{y~11* zAo2-kLA7IdHH%dkbDj~ zLqCa#j>~B$#?W<81^!|g2DcBmq-yZ8ZEac)=!f1B&QS9a?2c7gX*-dG;xV^oT^{u@ zt{t>(_t9kAKS9^)Xt;g)--eklfm*w<-iTb9#R{5v zWREV`3(Azt3(Kf_m`!l=izEl0552`OY%FiqGGpp>0kNWYlwVFJOltV}N_%SY)T>~o zf}3DGCPy+myapI}*NZ7&m(ouPClc8o2x#>@q0D#)rBoYTH^X66%X&?mW78@j3ul?g z436qVSAmsH>P1lTo^J)L>Z5!N^U+Pq!du|zQbmxMB_LbWd3WvRb#o|UoxDppzhT_a z6y(N9!~pEp{*L0naF$7rrq7xH31nM2sL=K7Jdpuzn_h;H`O|)Y$dcIKg3NQ?_{&mT zKp#-_LOp$K$;|-?c|}<6f?UL0@RQVVB$k6g6g{muITP?=BRikJwjz=(51#{CU)z4> zu0W|8TbCwaYsBJp=k7Gu>%MgP%h1TR7Me&vbwV|)oNL_$bT3U$s4uq%n^pl&vHbEA z=+1J{|AH?NptfxVHHilioJBv^SUNd58wNV`r8d&B7Z{*wVO=Tp+YwMsbKD=z zu$$Ri5EB^2x^QjfWUNMq^F;!Wt~XcO&R@AKG76On)F_?i9pWp?6s&uoG;6-XOWBW$ zFE#S_?#{rTQzxsku9T-_VWE#?GFjN*HRHkF1p?qqD1X_R)AqzbXjG}gC!7r)W{VkC zll+ftw!JepfSp|(sfb^1bL$S8U&3of8Lm6TrIFm6x9_0*;LZ6ur?H%Gz|TsBXTf9Ce?&5k%3PQ1TXtQ#(NCUD*H~bSO*fQsW0UBc}fOr7*9cPET=@L$oM(x znYf?_Eo}~UWplJ1mzBr%56&+DRcDHS{nGCJ`t1Gv+LyY)!X}Ts`kldw2^{NIwKQ$% zE@HR*Myko)kY~zh`8_k`7UW44ru0CG?~hAkqY0euI*8q%E7JBD5g1usD2unnEp{_t|5V|>NyNN7i($)F1Bp#PNj@zfBKa00!&Xg z$@zZR=gVd~JP zJfBP3Wdp#o8N}O<1QWru34BM7cj|m<=X0>-ywjGanAoir=Gdl8zv?AusI(@ySuM`O zV{psog*>p-ojTb5q)H|iD8kzm%uq`$lb7*8ppopIF@*a1QB?-8|3bi5@9IsbcV|MR zsMtWp#3Zn28%Ou4&+v(meY8dw13+SFPp3WQ-e`?h`c}fW$R< zA=m=Ca!+#{LdFGVF^Nx}GHoL*4&$`r1Y+TD(|)n4Od@l8SmLs|sdt7~-wdy(#maN& zEUpq1^b8p}%%!gQ!)3E3DoMV-+6??@>;ULin@dWja8J)PUTr-a{x-VT0(+ZBshAK> zx|qNYtup2UoqQ1^?P>itMj^Wq0_BSMhd^JDDq4xzg z5~M@XkNtpLXZC1JoB@&@Cpy6gYfqj_sb$^wMZNWxsn0iuBiKM=Y{@;|Y^wgXxfr#T zXI}M4@BVuSDI(xu$D7>5VG+W7ptmsyMF%cO+9CTpp@?Z41SVf8y@x(-Z0*Ho3#GT1 zICHMZdWiXqprviuDqPM4d1)P_q@Z$iH<#YoXU1=4CZbuzO~)-u-yb;F{27TkfeGgX z!)Ft8#=~Ne-`z~t%V(F@k2IQp^L+?W=dPK8-^LDnoY)_f2`tkRA;!M72IMu=r_#PI@vgmuGJble*?fei7Gx{mcHodRb*r^=u-? zDKhs}9EmMj=(OWV$m*gnM>a41TK0d5&^PwU=*gUIpKD2H-|`l7oD|2>2jj|lBUFjH z{gS!?6o>T9M5C0F5{tz;r-bzr?}Z6#g})HUtbO_N>l2`l!Cyb5DDdCC&ST(F3E`lj@F`Y~xIi{! zL-F+^WN!Q)FNU1iOx}KW-VmG>tuu_``#_1&8KA!vIj3h*jrumR=L01@m+5Nv!LS%r zvN^#;0E?hc8-@s`33DDPV|^&9$f<%g4SfsCCh-13uaxV15eO?J6bj4ZPX}4ZvB}79 zsngYj*G28B+6MLsxGJPAtv%6b5@0{8HOkUl>P0ZiG4>tDT*t)DNgupjfW+BraeO51 z(Oi1*?u*XiElJ4Z<6e9JwjLq}XqJz|m&yEy6^KT5=jAM10&%q&~KP+>a zuCQ0;IN8UMz`yR<+MCLjX404^Aj4cPTZ>ayy8}wk0?D!mqp#bxjEa`r5Y9K}bmv!l z3ci&h?041*(#JIu?F)VT8Q|dW_DqmZ8eDC{BxO+mu1I8(!1wVwLh#FKOH&Ah(Nr0C z17LI|hUzb0`QlQkK2432)M+arV=US`l5g({DU#e$^=(Pfy1#0^QYk|ARDw$AsD zPB_wP@Z76yonDVGBEcbMeu&7ygpV)pmtV3*ooviFf7OCm;-Yi;RiMugRAk>!&>7NV zar(a5M0e6cV!5#&!D6pRK1=FG!tlw^ymp*u3V!>wI7YW5Q{YEML4DeXj;Kl!p2rw_ z)(viXl#%OZ5f1ykg_w>J`#A4SFoK($L$Y${h&7gE7)P;xK;l>zHOCPj;_2Y9!XZ6E z)%k<~gE+~o--)Pyimxf%t~&ByZGr**Wp%1c$k)@>5i!b-#yAqmRmjI^sAv!+`Gm(c z!~81(0s^`T@}G<0zoPC6V|5lE|F|`GPq+q_G;f@GKsh|k{dmP#|H%SZHGcYh$#p3D zJg1$-Hi#=_Y%D?p8ne1CPe@_@^Ai}%f4ZNt{267I4E)Lm4_Rk4;CH}43VSW$pjS!?)Pj^T^ zclAxOxWVAr8Dgpv6-o&+O?)C*{G`?W)SfFCD7kCxr&%P8ry@F@*ePQ_J&B>qfaBgKzphnlA0>=5nNnGp&S z<==yxT{}H7Jp@kzw6Nz5`{Y^*8(M)tTKCdjcFa^(Q$!a;n;apWOVPm zZdORzOhLh$8}!Hp=iwZ^Gv;iLvQ;2QI*!CX(gDk zf!Q+&4fo$C7Y+%;DRcWWhDg?pB`6aplb!7N*=QQuEGR)s76?RmJXy%KAE6TIxs{KzeIZYLh`eL#V$~9npg&9DbT#UPI22SskHt~j`erW z`T&K(2fDN)0X_!dW^ zZYRnX+mB!#5cZ9z#&yFmnSL%KlpwTrV4|a<3n01dy$HC=C^XLrXr9J{^L_7kx=zGi zwcjlfTym16J$uv8h!iVKY8NPYk=6td3E}}YUpyFG=5nyry)Y)-0%>!AFV@jx4(=;0 zQatvfB?jb{_ds_q9x5{J*Ay%hNHF$IlECdF3sm%J*vbys`3s?fYUPvU1mp6Ss})2*oqB(H>3-mgkO4uLN))je}g$=*Ujag z`Rn8Ua)$gX(x8@Jv`IJ&jv>L3qe_3<(O9Aj>10=Ue7;5g-1=}=Iag{nQ$Bz##a;|mml5fPvtYuKy7R*yz)N6o z_q{jq#VS5{nB*m$or^|v#NtOv;{QtA~SRCj#(ow*W+F zYn(qd2OO9Vj1 zs>511k=$i)d0wNG3Ug4${zyCovs9rGxNdUDs-H z<`7%T+jq9QDEYOf-e<<2`Mf-JEG^Y=K>oc8@JdRJbJuMY8_awb|ExmID%8)cnk1_P zgv_4xRK`WgsPWcVr|>Z7Z*&33DFKgu&N5vHeFIa)uifykdQQ{(I9Ua@w1i4JE(8;Gj=zTG;RfyT)WpBI;YURDeW_{Oc)w25eZ) zc;dj~;$t3^fe8{q7OdX9YMQOR?0tu}{w`nUCCwf}#&v%uy3hM&{+@@0Ty|FWI|(H$ z=XW(M=LqYOGddrm>28?uu-fj)MP`fRACH#yw|pmVo{ymU3fN zyppB!D+5pIu@qO2_Dp%U-4_~f_N#$UEH3&pfO;(GUfo>c;eL52GE z`h3s<719I)i_$=!rK_8L<|3K{o9%7O?K{dJg4O@vWh1I#r_#L^Mlx|P% zfm%FDb8D{1`QFhbZr@rTV za9|Iq6(zM4Fw%e4$rA=_=(^1-gf|P5^w1~h@#{pP?>Df^hT4|Q+3h!!X4KXRjRJ(X zXwP;q(cwd#p-}2^3jEe{7@p8UPd?X*Oca8*X0PgsuS9N35pPyy8TmCRLfyA_aJ9LH>rA1{-F(36xFp z>_PQSUu)Dq-~TsC@C=?BV)$T589E1&qznSt=}%Yix&WMNlwCs)EKW{D?S{#h=(Xfz z$wRYGskakpk@RoU!&}>g`V7(UkHJS|A;LLHebNc{ccQ8mwI{(Z5XiCLD_3ZCRYzhnJ=9O+NhcLLAwB(opcvvC?Ht#rS zRs!`I%>Dj(=AfS=O#~yPwA19E1qYix|NCIR|9|lRpN;>^+F0x=alf<$wLoaTR)bpO z{hgaC5LsUkop&Gq8qQlZqAz=2k+0hDB44@5(_{L5l7#_yfs8E>j`d=XX7`Q1eBTWa zA@a-1OPhC8acoz6)fx8lrgSwcVO)A9MVtiC)m3skYJkO4Lr!ETlT_TH6 zip%;ls2;`u)G7s;TDDeapnq5{E_P+{i#NE`>;@2JppAxZrK@vTuf?bc;1Nv2HM3Y; zc(g$t-rI3?eGf>jwCwZtSoeq&x;}qZa5-(z$9}2f*BE&0#h+L+zd-hl!str`56#-n z_c6Vxr-qhSN9FdWN-j~^P68?G8{CoMUgGa+s^1)D32G-^UZUf7BawJgPu-ksj*2|u zIgzOWWhv18FdX#_^7S>{-C9lC_R){dT%Hzr(ce$pfETW)15c@#GsqsJ$|&G_i=7km ztnS|5Q0=Yf)i(fZK$#!B*XBOW_8>)s?vuqwC=UtP-mUXoX1bT!=h_1T&Jh#|S#UAqcsSd5J}k*Mb-xOYA?8tXmZ$MCxFLt!^cc8JrkZb2}N$gLHDYU<2OI&h#K zMBrUPpKe3_b3P0LHQaYg(w)D+VQ+XA0L}D1Xf1-q)g*qxbQwa6_7YS)r1sPaiy2Yy zBE%he6%{-!K$U|C2??FG*v*j-_K_B)rIE%eD^Q0LysE6#LQ;uXi@h8(-F7J*~L2?DT^gv|I)s~I#JMK=x2H0q4?fb zH&-Nl?XL@9?;?{dc zvQk$ekkjd};Xp{)Z3arGzLUc0Wz^T3tI?T4$2g_>i$s!B7e8+?Dt7tzYOfily_#9>D3tA^4SJMwDc{(L5x^XZ27~7$Lc`;9+!nlsK~2l> z4o)|>Q4Qj-y`Z_^S+|ZRK@*&1XPR6Lk5&ovQVkz4RTKAxsOrW?3>; z>tJ?y8Lz#%UDOz4=nCkosm*em;A-rTuZ$|*K;4_xJO>uHm7Ah~pAto!=l9x3z(F4U zkOc%d3cxp4dwl-a*do~J`Wr4RusgMt1x(rlJytq?igt0BBsVJ@(1NCEVQ$dtjVImoj098n?TUV4jgKyMo(yX=#mOve}84BAM zFgYHi2V@pZbRmEXvIxoW9F}C#BZ10+VB;|YWdXJrumgl?x?F+h@aK%}cATJR(suLP zwGHUg#P=5(BpgswtxCq)1dBir`EEE)$M(K@*8(^i=(od3+T*%oF0&?Gzg{jmr_Ac5VlAF);T#6qUbNMTSx%SF9lM&v`4xAP8@ znx>NHDg4eYoDZL|P(XY*41Rt(KL(PZ5+}X>1m+iUu3w?jT=2@DCs>LHd%#+7;0O?Q zRd)#51%0s>0mGW+e9o=Pe1x^)Jyh|e9B)|rC|=t!5&EW(ImN>|enM9350v8BQpv5Q zZv)U3l{r)(S!faoT^gDhRj~-YZt_V6>eOR0NKVcGrF zWYem&*VXSgl6|57u({y|Yjf4RtfB|l?$T3(fZAYAobd9F&6{j}7}WB`4>c}^_JPZh zk!3A4oEgVzo9~nD&?fdSNnR;7lgdv8D^n%E0cv2xWneuSdp{Lc1L7Rk?SD3#kanrVBVd=MEQ zrRq!FUY(a+vRVy4e;`p_qnfAWgNms8I;pI(=(#sf*XPR%_Z!`%?$FL@)V}Mh4B`n~ zF`+MM#iEmMX6Y2z@LvM!anLXFQTr;SM(Yw>^U8Rrxi{PS+l011Bi&6Ch%i1u@MrZ} zx2^)RxJHD+M65%dLP_ET30Y)uDnbB6Ha6kEEF6eAuU7uKxft2eo-6?xP-c6f-T2^<&ngIAgm%R$9z_e5YXi5HO+Yic^o~ywN%venpTO;&jcF(-G&P`m=e}tK-vk zZ+U??`Y3q;D&3jp3PM)JuO{{i^M}WZ7Y`LEN{{GIofH*r2s-v(^~%tbTQm$c1&u3d z6%>L^bdhiUCy7I78Shxs$Pp`t<5YHSAA)A(j^6J0g*~eR9%CG$8O$drI3$G?0KPkkDsGL^mCu~Z@dG8zYtIaP~R36$|3bM?VaZv29O1coX<$ zR_Q_-E$L?6c-C`?@-xY=X9K`97v|x)|KF8ZX;f7A0<6GXlXoWO&oB zPjV`J#(^4@Mt8iAp$>9!oO(}~Gaj_|RlCBt)Yi1XfZ*-oSl+3G%D(KZjCfj{P+WE# zx{`<=6OySS_6-QsE%dc89eBl&Czk=}PZx8{bklJ7JH-l!V9ohUB0uV6QVFQigq9fW zrqLhxZ5;dlKv^b&$HgT-v2S|Nigr}2s)UA;RE0=cd1ZQQ=!=K%Ukp2p;6Ww;Z@+}F zD9yP^k!J@u&(GkHeN6@4yU3matIe`{#7kh(!D%Xn4W$mnO^PEh1%0K_-& z>QT2KUa}|O*J4m?5D@%*)X-IVu;T39@yI7s3p8Po9{~xt2)BD*Dw~B`n!t{v%$wKs zTq$GYgT16)Ckex6jef@qZsANVZ|D!}jlIti*M^Xue1J!0x!A47gt|i_;tx$vDAPxT zpj~|ooPN{6H@C8)*U5jon^(}oG!-9Uj^hLoNjkgOhNQ6404;bCM z7SU4qK2!i3jaj>TZA>p2MD7-p?J&?FEHqM3kqc&|bGzCEdn0m_QH3kZnNFyK;E@xa z@00aH9OcT7uFgK=%D6goNRKuMVDs-^j0LgCHs&sL=0LfH)d@Sigb8Cw~P9Wss(c>1ZcFcZB z%^wi6^LeCMCtR5NxwF~(@Y7rdNq{aZDl@u;p?jI2v_83-^zJngdh{VDLy64t(}xlr z&+D)S_5#Aj>Iy8j6H(x1!!N+y7dKYX*B+EZia3m{CjzI*hpZ#Y0GS8&`6dG=3Ut&V z2ysSPln$Y#EF#~Vu_S+nTz)rGW}OwJtLOW<2P>oobG!T;W?|gC$6pMYjRE5PT3voE zw@@W+t#t$_na!Uk$0u<-HY<9*m}ul0r#YLWh?yVt1sz^K1bd(91Bx^zwXC-02{+x- zIE}Gd{%8F8&F<+S;g+ssV{AAXVN#!O@dZt(kBc^N5^qjmwwsM@CCF4{W7%6=A8wbp zWDiJ2&=e52tJlj*vYVLdg~a<|qPAeI96GeQA+sg6M%9X_X?GDvm#X+aK>3!luQAN9 zK&N6Wuqxo|9C&t+QYUJT@%;XwEHi}_q>c#xEEkL z09~5Z!X49pczrEiy2^H|)o5`XdstARZV}U24lk{A9(#xC0!ye-VqL%ByONsVZy028p21VLKq?(ULQ`diO=kLUG0Gv9o_zrPvAag^tN_PzJoYp=c5wXW;r zQ>KP%$PYAhjQ3wBUEJr#1=yEujAJh>I*Ko2vz!M;_ZXdUG z7Qx+`!0xIt(|CxV*%Bc+UoTx0fJ@iTQ)X5c{VwaAP^D5vH^EY|)(17fks!l7%Ql0K zc-!3d&JcE_{=xd-Z5?SvWuGj6zFsjSyq@}cUMbv2@{b(4f@*T8QYK&NBQ;1~^_cGU zIQK54)YISWu{P8V^qsD)iD~dbufM5!TcrO3DGlA~Hot-@Gdq8$a{z^Ef$oh~ndm$D zRzLd(d9k~JV8?7)H^g^)D`5p&$K&m3$zTWCb+5|@2JGv^J}E7RCDYMS%MpL4)XdPl z{WlZLI_Nl`AudH!lt`z+p6)cEb0(<|&R$IB;I%4wNi;k3>eNm-W)Bavu*pou-9rCH zr&ikL>#ONBO7VRUpXX~vcVfgtx~k^(*YuI#*4F(@e8%tkzRxOjfK=m0kt_GC#`9yV zzL5~!=n(NEsQA^uK@5CUFPwE|=dzOuzwEZWC&V|wSZOoPt6Dd(viqEnuy1hisb-6- zo5t2rrE+XM8d8nmY>faM?{Nm zq*@tpm0NVn9s-4}-Ih=Ib7K4QDx~u3AJ@P(|l*_d* zfJ~)tWEK8g)V%$0qJu5`M^~fdb$gN8%$pP?f_+D1LvluT!^JGR63Z{zNay?gp<+q> z?IDvhzt=@deF53PVwdK$4wGY03mx+9_xEi>Ce|?G1@@bd;rEOdGmaSOX1P1!qjf`G zv(@JD+Xtk>`2@AM%pK6&wU_O@bLCN!!z)^fp{oqBxB27jBKDYT5#ULL&*($AknsIc zTX%$0`9Owb!Smx!4`Ori@|S&~)f9X97D&R(uYazEyB);5zoD~ve0^ih(ITHw=o?5l_8v`YWQMGbRl}D@6N-+?3^WTaQ=`jqgamp+ zDvTO{2bt2vp&en^GgJoaB7 zVBx)CC0)8roBREWv*7n`O|n_M*BnY1?^3SY7Rh!2HtF(%8_2p*>`(T6b4h&OR9Mzb zF@MW1iz}*#x)ZP~sN0_Zd1fg(`Wfc|R%~j*5944WPjYNZI)DgH&$;QgkNaGD?Tos& zouS9}J4_uQN5&rK9ZZY1%R{W5>@DPx+8Koq$hc##POmEua!kly!=b>J)M7Ime8t7# zdSgD&>LVt%;k{?geSt$a*(WgAKqM=~pAQ9ztxA041F4OJq$`0dSg6cGq zDi^=Ns#a_7gUfVek6N+{uSii_C}OUsN4Fe35wNNV7f|22vxHO;vfTda;P~gt;QWo* zeFj|e9|T*@7|S1cT0(1zo@bngnHKq~O5I~e<`I)Q^FfjK^b{%yfBD02=gTC0%*-bg zBO;zjnZe!d-s0Y)v}b;_)O6{3z2Wq94e>YUJKtZvvQEG7)$OL$n*?CUEqk|}v6Gyl z|6{pQuTvIxF1beM0kH*%0qOa(M~WCmm%3Z~QS)1=YG0iP zp{A-2?Q=z6-xIQ_SrZI9uM5pbu~2{xTvVwat7+1Bylk}-;IKJ?hx*F5nfQuA+)|Wj z@~h=&OOo!p_Zl>@2{H|AukG1ItNb|Z$4C{Nrwgq28<8^Uex;@V^w+H@9&O6^qcUFh zy4UA@SDrH#BwVfbq%QepL!`4c@fl;zq#?9t*-TldgSr}rYMpZGY_WhESH9`3kVa;U zn;wPd&jg#1OA{kAd}|B|*$T6g)s2Wu2OB@G>+I`*dxi;*GBV6C-wL7gG;pEg`2FH; z{e9JzpnygO1$pCUTSV3Ei|Cy%8CMhi(>TVm#4ofea$0sK?9t!fpHO29pU|ULQ1#(J zM!FoUrJ6%xrQj7%AL_5WfP8!Gq7#XunZEnkqgUVVov(X(+P+V;z@g-OXfaj@9goJn zSZZ{er3xQ!<`Ssh61XRLX{X`U)#r&iT+5N1x||am<>Lae{0R-|6fyF1(w-kO@lBc* z8jP@UgfUdvu)158ZaB8qbl|eLZT##*7oZ@%N?P0pe@L+X1QZMJ5 zL+^Jib8!?4eFSHA6nTgP=hJ+y_EAdl7X?1f`>NyWJ@OQ|64)>s=_R+mv|EiC%gLo) zvU2dM*|Mgw(KPwwQ}}5|F$UqBY1LH)wJ}_NcpKttY>+$pBp(C(f$mW>ljgFQiL|8>bL)>57liO5A~ zEu0DKDM~fNeVwsG+u)7IaUyow{G)8m-? zX=sYXgA((VdCPnAJifdzt-+552{Utkp0*G0mgZ9|X?mPH1Tpkq>%4Kks{C@RW6@H$ zKouRoVz)Kh{Fmi>eCH&s)=}OoANuY*lM|YBa_b}YDL6Ut-XZ0u@oYf5?uvoIWQF=< zs34M8S>MOC(bU2PH^wZE;&kiL?bAttOLqL&w+w$I%yTxGRx+mKXPLOpNl>a0od+ew zT@W$TNA@skZ1fldz3*ik9-#M7ER?<;-1|{y-7h`Nz0yg#sxiNU$aiKU!xDeq>uVtU zNadbG0!9(!v(G9yn+SrO5K!bY!SJ0)}Uf-LvOSeOi z#iETLHl2CnV;mPAI-Ga1nc@gvrZ*mHaDGeu!o1M@{peE80p{BgnUAl`ah4J}iLP8~ zSsJE~?ZKh5Cb4+Z_T_Quwe_4VihIK7s@5)ERF|)gkc-{T^KvfG&;6Vw@XGm~WeOi3Q31L==SA(_s{skOY-5*O z4cJBRC8a$35-Z;1{tW)fZ`K|)diD4UV;;p+J#ra`?+d*QT7tC(y&GOqwZy2>)VOuE zEK<~`38XJG=HzE9B96Z>-$oh^L9~a(MpgLHe*Ajec2`eymPMHHv8&zM0_WXNrKgb7 zUKi=~N1MBw=PygNcWvI(O;CS89@8q#CBfBa7Rnsvd;HdGu0s#=_R1N`hxX5Z_PXd6 z_U-!CtEg&MeB5)_`Wu2nB5`H+(Y-T%qrZXUk^<~6Taq7m;mwoQ?&tTD`x-`^u&9kKB)TZw@J;lggTCT)x@aih(L@&?)VgxM=i4Ovu+2Nh_e9}#OPwiP-HPWsbn zHzW1VRO{Zam$Q|WWiQe63Zh-}g!&arZ&fONX> z7hbzoHdHbte0S&R?<_F+jxRS%E+=)%AVS>ix&EHAoXCJ$%7Crs-T`~{RH8aJ6|OW* z-&?eZ6g_Pg^$)?09W9UYlRO&;epqGO$m%heyZ}Cn6lLucWC^1|=6ZcknuqVu%+rUI zc3Q@MICfiLOem$5u>Leow{2BznDkOvL!*3kZJR-ih*Lsw19RVR89F!)Ga7Tzm|HOG zqrUq(?P#q~oAk*|XIg9%jWug1eJm{dZgIK$%Vh#q7l)gUZcJe@Xu|>Pl}v z_2yaA$cNLPe$K3W75>JEs$D++RI0`GZN`?^Bj;PSy+$n4!=&Tf*Ns$Lzfa4T^F{w| z^%xX+*(mQAVq6cQ%RBNJd{hepHn!&8mX<@pe3b-Sov-OnDi*Ud6Nfq#c%y;rw0L{P zBem1ubL&I3`Lnip86MJL-s7w+?AO;Hk8B_?ui?)w)nhy6hm$>&zEf67{aJ_51zC6X z$PeAH89*i&k!xS}IYs_10A;Zv>Zmd43&P;9=163Tn2dzZntEGaA5(Sj-3%1cj6>9c zQ><`}u#;?qgoD``%S=_3vvS|_oR8@5HigN=puEI=T^3Y*`nEbR+>~iy(UroxT2erh z%y32kJ2HqvgXNyHX0y(oa+GpOs3I;Onv~uVrcN?Xo{Fq)S5Du^4!hqA6`~zm}CVXMk>w<7_~$K7!9 z*$?OTKjQd}z0PVt%)?Ccd=HFlj#4(}UYL}OZE1*=Prl82-BY_^+DpwiCdj!MysGY+-!6F6LWC}ADA^Q3V%+@jVWdKvzs$!+pxKo((lt*h&MT^`d zMKut2~@VXQY>0&l@ z=(!j9_X1FcCkJxWJxG(!*rp2M~P91-( z{$I~QB=W$-MBa3RZ(1V&SK(;Y&Z+ya$wWhJDkPUYNqGGe#Or&QcijKilR#S#O)8=l zD#C#15dY9YyZ>uMdfY(p^bfXnv3G|4GM|X09 zZ~mVJ5rTQlNk(tgg>O^5bqFTo%7mQ-}}}f%Zb|Gzv=*4kEA}GYZ*p-}G9Z5Rx7*a*QIW9gj6B z>b%cS7mC=@F0OrLuH|%>FfXo@ek%)mBc!AD@4)o;>}Ta8=6xt)u@;`p<}VP}*e7~3 z=?)F6<(MKGI(j;Y)Afm?BnqC*jAhyCQ`1p>ND&QGLZxA0LiOo6whJt^@Q$>^;`?gP zc(*)z6UT%bh?>HHR_YtD=RE`}zg*wwLWzH^P#VGnO0j2M;45eet))PwV`8K3@sEBJ>eLld6<~=d0=}u?(_OA^# z@DyQHOVzdmU<(n#B-B37j{_%MBjGtxYcFD^HXEH?2h99*+k%J!V#XP z+J=A)Jk27;-^(ZH3dYh048W_SC7Ck`zX4ExziQIqU2p~`!yg~R3ESrV_rzRt_=`Un zI7<*r#Kk~v|9>6mVsb4oMkC0E5xw=y9>>`7s;VRqK2ysmMIt)1{`kq7MJ&n>l!YIN z2!i5o%MoQqMRo;Q)%L*^M+8nI=*uxCqw$nnU*@2inn+5lJ|x@45pxElpXKA?rL&FwKeBbZ|RCkWeg3`WSN?S6mUjVes;j?g$~i6P{+Vi0<>Wh&SQ_`P(X zR50y6^844YtPswYeJHvF5y4P;ui-eje_SNIM)w9m0<9X1(-tAw}*)A&AqItGn zdIw%Bg4GzowyEL1(+ngX^=%;KY0wqN38}ObX7014SZjkRg*|y?iM6Tng;a`WLHV4q zA$802A@Q#UzkbXX0|S6~iBV^VMeuE~jsLzQ;_r=jrvEacw-{7XJ@2q`_s9EMiX2wu zk2V22Z;zg!u%32ocYd_|4G4BZ2IW_Q^FTJL90fUmyh*|hzys26iyLx-)xSxrcgU8B z`+W3G8dtX{5=rk4ApEx(Fd)oe*v*a&%mABQHYQ1-!N~qof+Yb0VFXPB8o;ZIzgp=k z2GFW;1K6FWmi0isy)<dNPz$5d{T4|w(lg#jGz<-iGkxm`U(evgay$r3ocRV;hjJ{PDvi9FiiLTrz%JGAVE{$;#@|#3Fs&Go>TFY-l|L;5|4I#{BJu>_* z!dy_jvyv1-oM_aBTX&{vw%d{BZ+#fnexZq%)7%Se3Te=hnEYbgYwBD^EsnhDxzAf) z4he7#5im3r2dX@o|2@zJkkjwL!)fsNV83StT+!%}@Nbrf7Ms7sR#!7(C4pEO<&zai z#p$n14V6mVymHYz#*&F?T9WNx_IS;@g=7^Ud4kf%NB-b1JfaxebD~k#%SU$*- z+8s7D0=A}RLD8hLHeFxOB4?YOl=OwK&`j_D@GOL-f&d53GHmdJ=imdL+DSNHoF7o46A7whcY}o zXpa9+%p^MsZc~X(w;U#2HWhWiK{s2pVM*uT&*bsGxOVB%#f3nXq||Svo{ht5HDtKao%6}DM{Zx{LfNBdjGU88p|ORWAp z8n(Dua@}ckbaE zfAqu=#9kziXuWTEr$67Z0Wk?lX%c#*_|k#Yf#bx(Ka`4J3QU6P%V1}~0D^HI+4TBK zS~`)))FjL8-^@%1anjH9u<>u+K#1j(9-4UnhZeD)LxektzC-@l|VEjQeU0jxu>5iICzfd6}b z%1hl6DHF}yj3|-<_Q#otEtu_Zksbj|gpNo`R~k^F$$ELaBzI`eu36u={{xH&es z1d4J#IJOfzt)tiVpOuOcMeBglfDywsSujr@2nkyQOen=;x1EyB{g(~?W25&7@Mjgv zk<3z>4Au%XGD>^0*`J<*=dI8W<{j$d*?T%}mYctUK%oM8dl!P$`9tQK2OP7b5H%SA zIZWcb9mhY^a4)d3&lV@kjOW_u+u!9e}GDmAej7Gzi`1#aiPq=}D@N zV;e6e8j;{pjrb1m`gaMf(Bwxf!$TEE;5@O@Fm(CZyV?uT=4vKy2ePJ!IFG~8b~t-N zUAepQ`@R{@2eLooxfda&a?}p!-!Kc%d2eq-XCxRK03tYqvT1uD`;;oD>2A|q8FCo8 zYL^>y>c}WY!NOMvdN=|MkpOd-`)t2I48+2Cc|hvcgP|KCgXqjt5k~pjGu^Ww4#|}4?H(bkD%G09SER^(qNYRkXgM6Lw*Vxy7P)Y!piX zeD`ae?$_5!*I5*!WE@Wr*4vcn-N}6KPIt|mKW(V@<*UAKw|=iFC$wZqp-^tuZZy-3RmkE&q{fWL0MgR@3 zVnHZe6%VPI`<>CNm5YP^cw!zv%HIWF+4YES601?d59e7)dez8zKic(!IMPFuAgrc7 zS9rGiryIO~sRetYBwxKv6!(iNEzR#5uaYs!N303|alm87sauKMy~*S%unA6kZcW*Av(h_{iAwYT>R)$#bYV!&)!spX+#| z+(DsXamy%TM{!$Fj_rLGs97-f>IMqWd8|fqzo(Qz8D;r)*;NKRm0}S;}>5qHk zC%{OhG}8SKl{<+v_`SXX`~eiCD=``ZxL(JmYtr7=0*%_veytZWZZi$B^3ZJ31vT5V zc072Y<^DY(vzIlZ0!Gh!w9J1IeG0p|9n$n+78RT2?F=;=cYN57$QYqVJ$$866Zcmz z$hD-PpCZUj5Y%gTQC>Ja?RT5YK;L=gk(fa}3CXy2Xn7;r{k)cws~0MaJD(~R{0!DH zLC0o4D>bZ_581HM_qy)D8_{zUv^Y^m#fnuy_kk5T(m-SZE|sItE4ce(iUk*^%lye2 zfr6v3uLP%#T&V?E>=xPRs_P$V1?@r(q!Z*y6F5f&o%m4We0#~dP>KWn7rV z-A9eNFYE8vug^n7ycg^@BZtaj_)3ga+C|edA>l;kA+AA3-6sO!5vVbLMcFRY75b_l z*OFe0W#B&!8y6?Y+)On$GXJzHYW;}z(jIU+zNxmV>=k8lMP*rq;NJYrp5UaA2OZ~r zkB|@-3XNXu?s!(xt8znkUJ62$AIWx~9Z$m*WZH+w)LhRcz3K`$7XsKQ)hNX_w^yD} z29k8Rsrq5c0Dqbahw-Rk)b-#ZKFS0Ky|QyPZi#VZbh>-H3OYH}(nz7O1dqZmKtKL9 zIYfC5ZI6R=-Yrv`q#bToOncg@6gNkz`+5}A?}(0M&S>YUA2O|b!I8S$^-gBM+RS_r zQwrLOlu^T1Po3(zWLQ)ZJ>gQZvtMWw-j}zyj~Qy- zCv3&qqz;1BCvY#5<00+Aeag>1JPJoGQZp}hHv#U=GLy9E{b_o9gS=*+2?sSdhaReY zj&wcGxb&f;07Dh6zk#_Of6<$wo>og$T|Cuy02gAe+iZB=imtgI`*a2=GyZ)oT&8$xEtgeeEtnq{mO{<;4GUg2`Qt(LbyCxK zN=va9JtD46tMAt+r3w2_1Y&*oi$|y!#qZzxzT|~>JGpHQT08#plk&9Crw()WP{OlLxA*7l^bC3L)*{)&6;Mfa|$>Crg&&G=G_L1xp*3`d4b z70o#6uQ6GQrkFf#;5G9p=|~*35f`PI2BL{KlRV{N=Oenm6&fiKbkNH?Xc<$T^|RIU zq_Z@OL37dL8i9>KRzSw&U@0|8X2_Gtnr`Ay@X_?Mae-_JoPD3F?O%Y@M&GK(C;F?A zSm6pD*mV7R)5WqMXs(Lpe#@=)K-+ECu2=tm+Y17?FX7nCXId`;U;E}usA$51bqreO zs-CTZJP%IBTUQdj7up44>I6k;-0@0NER$kSa!=(R!t@UrbWE2Hg^tA&6ZDA(7n|X1 z2Q9A(YCZ|tXnUC0vWQMof7bO~B=*2He4zuU>m*<7O;7_A_q^MzWw={;p+3^2kZu{&st%+5R{}hVwnTRx74d#J3?eNweUg zq&}R>QfNu0=nPibBu3J)$cA`D88f}0F>-H+tuHIR62Tpq{2rK{nl#JY6q6(!@p+Fw z;`PHLK$BiWoQybn#aUlj-Ki}8p?h14 zraoo}lt6@U{c|G>B=6Z*kqI1-^+zZ^n2{x+%bu|u41GKp0VKCjEG;8JJYkU{Yhl`f zxnjKw?a?E>cE&~!zBauQ%-~N8Y9=cmI=m_9lk(m7E^DCCDLJcDcATX;Mk;H$8uHic zk%%{>bU6F!5Dh}UEy6#QEFJ>;fXg!*3gDpm9ikBES<-%Lj655w59n+G@vp0;}(Jj?o zF^DJSY2~RS(SWrXu+F=fNQO^%GV|(oqgDPkRtH1kYutXbj+jI9UTaIVt<^G|*;@tQ z#2$f21y${*RWCFv%Z2`j^DJU0SmX9mG(BS^c z!u>P&Adsw^CRqGi_l&tVmWE{hhV`fe1}_!kjTkc zjLtCUCY@iljc0=vXJOjmAeO2dq{r=>{V=8K&Sfkax=Iw%>3YR;D@|!8e9)B$l+w6+ zv)uzld(|Xt*C%T#f>q6MwIABjXlOj*aZWmYw9AL2QC#dMJ~rREGwyk;jv2 zjJMGUcFc zPULUyiM{>~frJk>jY9uQsjAbBk5n8bh#RqfhxOZQx-4_z-W7+NV{guKKm)Eq|I0Il z<6C&HAFd_g9F|6ZsM~!@QO18YlEveh!Zu4akk3=)6S2Bw?81&T_1Bz0#F`l4^6FT^ zeOY8E*y^Pw_eE(JgH`+ICM7d>%cu?@cTaFEx@dlu#!*a%t2*Yeq&bUqW1vdyr=;V+ zi2&KhF=rFvoRq^{V#pD1Ecje#%pk?53!Yd*%ELwjiD%Nb0MG?RYh|8__)FKFZA#LN zyA#^k#x24&*z_t4veRpC6x4{8BdFT3A)uDY$SJ`gn$~%BFzGm5i0TXhe&cz^x^;85 zjUO6abFU-!Mxl^j_0B(%BI03x`5uW^)v#CE(N`YG|Ht<*)c$C+K_VV*eP=nW$bljd z#I;6Mude*_L&o>*o{TTRbL@c^MqyjpiAV*E<0iU;>uGrWNi+2^sVL&xsP9TXD~?!eY-?N;`%E49!-~k1T3=&877_9V+K4nvP0al^G%N?j7yz zDFJkMhTi%w(hA_>Y#rKhe;*{}gzLS1s=*XA2d8b{@!<71?k6N z+YlMChi4`Ueb+t+?B2^X0kz}Rzz%jV1+Cmq)n=&V+3v1prHYGwadO>D>P3Q+@kg4J3}mOvjWzx150@(?zP^Ux&#T6!+wnnVtdSz`*CX z6Z?$RtxE!3d%o=RSn=Vtx%+`Er`wkHe4f*q9_-@=WW4FBK!2b@v0cXO_EqJ+-IXLF3*Gbmm!z3B$P~FPdKQ zkj7u5`7TzoaO)_XYOhzh{6`~tY!EfS_LUkzK0YN{0&}QrZq=SrvM$Caif*cK(u}{- znEepk!Bj65EuC=s=181)?~>Y9_=xiDB|ne)v-8+8^YJb{Ld6W3sK<%^5!{*OG6SO8 zSE^g=9lvj1GA8<-%N7_+Qlf5M(>e9ym;nlgOXj40r9^Z&@_rp>M0Z!5zrEr~=7;w9 zh?Dq!+pINYqIRmu(cgxhbGkLB=` zd3b~RX~xYsDO9>ix7cfqTIfhcR~bG@9-@&m6t|@erM5OMITz*H)qZsPmBqYA9kGNy z9V_#WHY1}K=kH886*G)LWGI;h)DhMwWzpb1)vtKZb~Zri8eKiT+r5y|iCwP>6)jJS zYb*U3-!q*tRXg7OF!+}5-qc555hF8R0$lRd5&}+RwqiAh)#jVcxZ2E#3?t-@Chr9y zjb**(n7#3iGNEu#Sv{Z0Kkdfv482Ye)B-v&@hKs4DMG_~0cV1_JALw_F`-nF(;yYy zruP{?_t!?h@trTsYYeYd7C0N!ag;ZkKCgPkLoMMADYWLxT#O$X_Y-1=hDR`BXgFp= zuCqDhCySib?bpmiGm=;#F6;Vt6^MQpDr70)T^;8hFo6nUjX=>gAm-hXn?r3CA~xx9o|YP!(yGH_;VJrSWUR78^@QO zz1Fz@;z#ne&h6KRo|KH^;5IfPM81iB%e=^}o=kObTU_n0BFXPR0v|w$L+&H>70BWR z2o%93MnKK#XmR6YyRHHP@)5{5m_tIN)N{3NOF|)zjNr!&v zi7p;qYauhx=K3e2T>^St0~Xc({vgVtkBX(QBN1So2sCJ(0f$7o9kHUcnr^Gj=E>GlU9Mx(_bTm3tKy73cyp$R6jhmq| zASx6LJ91Kxm-IOM!h!$$QjB<%q#6j;NI3Hcf}B$aax<3dF$CNee%Q*W&TiZ;3*t4i zE%=)VJ_oJOZlh3NNl=%OI6(-5oB%BwktnMY+bpPD{&Nq3vP~FB(!>~yfCvu-wJe=? zdUl;tABZY%K)SIE!6|wOS_LD(cw-sJI#dWX-|tfp0zI-@tujsoM%oLy{R6NMFfKzXQOx{u9fhUDVD4#>h5LcO4`qoV^&i|zjZ)Y*0r;!Nj!8Gi8k*WigX!aCV} zt^>&(tPcY%M=eS^Ez%>D(G=!c=s!U^n>FFMn}y+u zh0H~NKqai+cKOfW?t^k2b^MuNK78!m6*SEE)WSr5CZ15Vdt3g8z&99LngXmW*NLAR z?D)Iau^!x0c*}#*;){C?IKj!X$2D{I= zUX~WBjSsv9ujr$Nh>^x5M!I38&@X^8+<%9+5(6$e=9)H1j~7ZY*!-kt2LtujY5tLwevD+e}&5r~g1AP-S~28E3xpciaa13mTi zr8v9Yb|>gZ83T8-c0@0?zSkG`12$qANI|Lr+7>S_W-S=9fTQOKHWRpr59utjh_n#9 z|L}HP1wl9GEserC5De1wIy+E_pNge%2kG{q4Cz>(0ik-zib{-_5O}mw2jr2L_(fnK;$80wa0)3#|W@B?x@U~4!t7fkfR(2 zo<{5FVrHrHnAzYWBAV&FA5of1n|h43KYTVJpmqXosxf$5OWOQWdAd)de281(ke44e z@MYmvAi!x2V>|H35oqbre|7a%sd0iwc|(Wk#(Pj1dNvLxgJpi%P%#3=kn4i-1gJq> zVmWM6KJOf_6OqRl1^j$Iaa=Gm{fzSnOC9LAau*7^y%EGkCE&^@wY)Z2Pi9*a^TdMv zETau0%j8mn%AdTts>HDj^wZ@qtVyrV;(C0j#FjVXXbw1y*outg}5w7qZGGM*tHfIp30|=*GKD4Ht>;e`gK%PyYn5dkf}F7CQg6{1SSV5 zsN3r9sp74`hXSYy_o2Ku3Zm=!2x@X_lgF9kU|Pl?Ay~93SAUsyUz_xbmbTjtMeM?p zsxG3DTF}$AfJ3Scdk2`5U)ya1|JtKYdzk5+nSSKM-ERdWD%xJy$l0Kvnn4Ic*;V!k zrP&&Ys`H_at?N5h!Kd~^lTl&3Ere_nC{C|;LwepQfT29=YdEFd zV8XqVc2@}R9K<*OvjQymNEbqhf87_7G`{fHvJNC^5y28@VN>a-n<)eb#dBRPkz)MJ zf}kP46DX!;SvF|KQ>I<-NqPp4RHq1(N#E0tUVw68wq2eqH?XdT$ezRHRXvL?mM0Ox zL6j^FRR0#c)oDe@e4TW)j8LtOZxS0=%vtH@2m{e+4a{!1xkgI5yJ>8V01+?lQ(l`G zmk%sZZiTX2Y16B;cQOG|JdeV;%YX8{cw^`8t6((^Rh9T($NKNCx!r|G;tav>+y=qI zx%1qUj5Ol{EeXbp9UbK@o`io+fliT^m{Oe&uZW9)q!QB=G^R1c`InL(s1yu|ym8NX zmUf08)ItHrE9p>89S6C4B2f~h;ah>HF6*7_o94uwa;}rfn(j0cN{b4!d?0W6s3TJ( z0Ee_bzkDo5(y8Di{9%6U{-L_{s35P~NKD05r4y z{9*qsSrF>_#7Z-4G0PaA1Bh09j+#9^a$wN>}@hJEy zFaa7SwA_ds-P`hK_RhuY1vPw6qr-DEB+N?Hq+>gNl05tPU~Kc zCqS(7RZRn`XvX&lRW$jC#BV69Ry%K7K{1atbO86W+hHkV-D#geF%%zsF ze}=Yw`Sxq&cC~G>bbi=`o7xx0DjY;&bgR6{)b6%n<9B6vblImIQZ1{RBZr2EZ?D6G z9Rk2-93n)*j6gnM(qXe0DRe;#{>KyTVVW>tK3aPRTZ85GOE0%KAy*Elb1_^8GEZHs z^aq7fpD0E$3dgySQ1qJIyxrAgrs%pcY<-`YR8OLlERyaygwlcuMK|$K7N5kSxgI?j z)NK-f{`@&JSjuwWNwbHa!x5u9VXOrg{q}+@jrQOoU^s8J7rT}p^ioCsVyRF2E|yLe zFB%4*x|*sy#n*=?WBjvnWb%5Nz$;XuQ4K<&Q{UPY?=>t2WKcq+h`Ji#wa%7*=KAot zP6NsvZAC6;tMj{o20H@sS>^%7I9e5Kv+jdZQ1e)L5`%`56UOMSsjC<$y5TZI8CP)V z{4rOEO54;K)buop>Q-Jbd;Q!Zjb}_taOt59zkmRJsn11#VuwWS*UlGd@m%*HuH!5X zJnep}ji1fUcN0CMrRVD;D-5RV-Z8$7mr_4^C!>C2wH)NQCXzi4rzrP>uMLDEVp%bu zbUs?D@?DexndX%bZ-~s{zP;P_7bJ!B-B{Lf{?c|-44XFl_kP8VaS%*flURm4 z!*SIa9`<5G&&0{}<&W>KwVTnrKKp06)=<{ir^yaFQ+?o{0EOnjl%05N0j`U0vDF?w zmk5AH_LW}_F*%A>p7XV2+wkF~OIB+-kFx%vRZTV(MDtmBpxJPrmwYAm9e_kw4>gQj#qHRUlNlw69yWz)xir=Xxf(%% zuit`^?otpvHhM}mE!Im8P$@@_>0v|3YUg#L-5;!ejePaF+TzYYX8L*<%?-HLKDUFu z1g4g`n`*A|Uo3$S>r7sZER)%U`r)XxUFJ7@7yJPIL{CRTi&;^PxH;VSr}wb*W|k>5 zeea@Fel0EL^T4_NF`rPZzbD&o|Cf#>B34ftxw7VbplE?t3RwwBt>3|VkV&4~FUx+R zOLIWl^hv4g#PyLd8Lttmo&@gUk^05?nb3VcUWSdsY$ej$+B}^6&zZ->;;6Ro-N?2n zJZ&ZmHVaIDD(`BbpsLXN3K=>h?Mnln$-Qi`zDC?J+(u&gVmtqf{KMY2@u!wgQSl7# zXlHS5DC4uzQ1KU*j?4wP7E*_yw=5)T_uHdbv(V6Z@g|;@>NbTAdnBXa-e|~k`JSom zw_6q@J8?dAU@Z}SZ42vO`?TPr=DiWCnvInt;8tfWb%g-3fNcg;L04=v%*_|Aq1VG} zq+qYi@Um32Fj?fT80FFAkYLZ|ulb;E{?Cnj_f*Gp-w-x>LWGqa$}g*}0FCC^mhkxacl;c^UZltJR|Pd}eXwD)Ts7(Ri6wbOQ# zJCJYqPeQ|F2`)o1uGi#2Nt7z@_Z27KEYA%=VL6LDzJ0EoYj!fmMG8&q6xxYx!AhF7 zX_M$@IJ0Q4fEX2v1WqdJ-0xzE}tm6N>5ZPTy!FmpUy!RC*TJ ze^$y-Rc@ivp7T`KUm;76gfd7~4R}Dmy5hwzm}66*{~Gu_W`&kvQXSaQ26M5OJWyaq|>Xomz*BvavD z*!K#HwWoym7KKktzFJmvYRGb5R3?}=g?ei15khywdI7J1i!7UfD(7b{+DDmgbmb#@ zRbO9h#>b=KW~d$?b(8>5yq!8TE)-ukLhAe7-?!K#ak%PWONjMBzKiPpKND=4=VoHy z&yWT{d?)AU0SdD@=yZnLXvRugXt+N2v_x;vS(YCe&8B!HU6W@UH3$QKV78mVu@==5 z#qX{qgD7ke-gV`!xQPtp9d2xD-RUH4G3g@y8mmogQWHN5Doy{-51Q^uD*1X6Q1&QK>ihBXo^4*x~V$fLz) zj(w;Z99%RiJGGQ(eAMxxRfDB|tdSF|X<^UMBv@GGmJvWq*7#6^Vbx;c?Z8Su>QEvJ zuCJFB3P94dEOl2;jp!e#Up+`fDbn#uaDyWtL9YHdAmdREclE^G`Kmyr+xa1>#pUBp za|q?$n{-Enm4f$~3LQWU?lsRRI31oxDos8?iBvq-;NmkI z`?}2$Sev3mu}PVWPRf+Qoi>%XSK_WDG=vS`AF#XjdwMT`Zomf%E#8KL>e7u0RMMu zHENf8u$i7=>NC^?zV0(`BB=LJH>j+o^ZRhbsG2dQ#wzCgM-Ni4eErA6sTCUE;!QH; zRZFAW(N3QV#AKug621^cRX#hdPyD*$efgR)hi3n%gBA?s)!8vU;bAkESz1NpB;Mb=UtR2azJ5=&uUhCx-BOg!^oc_R<~AB-Cb8Ek z6Mt-8)iCYVGa7<@T(wJekcvz0jL0<4>1IKZ7d=`BwRliIq1+huS?wV6;sz+ZPcsjn zk}P^*EB&(&@Tm%nqY-trh((}N1ssJ)`FkExL~b=ETZ)Jb=#Er2lHCk>0OG9O+w zRCRv5^t9ebW0}1?fR}136G3OEl}(bPHRO|~nWC4z-yA|sqrFT3w>VwJP-I44x5GA+ z3_Trcev@SN&RlvLZSyCD0P<;n0OhO0#RA>%+(Q0dDw_Dz5Gk|Nu2tx&yyuaI$qq&O zMNBEC!f;~Y8t{;Ii@9fNWKv`~;a-V+9(L#!)}_6ovt5=5xFJxLS=l zjnF-Dmw!F4M38u+c%7jg5(Z)FCo9>R3209~PIicKH9HMHEKFm~S2VgoXX+3>q>KPt z;W0QLbZ%teXxTPnOGqU$XI7g@CL@0wKSt#~h(GMyHrE2_*Kb8;vvLK?ko1wQ!x2%j zQD`XIz|)O>Brl27bxL2yh)TDZ`-9-OVQV4`yZMt4VSt~g-k{@1YA)q+8tnmj=* zvlU7W-JM2Ww#1JIkNFG@qiM)w95isZawHi#;JGR7euF!J8sqDVLqlDZ-(LkuA%#@jMN+q+*B|{|Bk&<~jPK8P+ znIcn}%ap0iC4>x_hmd3*j`^6+vo5)F{Qkes|MR?hUOc@zxvpyuYp=c6+G~B+T3!bY zbUpGi##fZtEbCyMuWE^Zzx>+SP2ze|XlQql9zH|$)JUB@m*E)mfDL2$n>nj={kuXP zkY4GT-kZynP@X9oUDVRbu>3paZJNU1#2K5kvmKU2uUD@qxzxV{1#dD+|AG8ou$ai( zISP{%WS5ur8@Nsc8|Iuyv$qF4vSxcU;rtkVvInBVwx^;x5P;7@m0_h_WhuZ41qs=f z(cJAxr4gOs(;h7!yVoXdU2Ix}x|JP|H8UDSN}4g-89+qkKHkB!e61d&G6<&rW*~H2 zFmucRsja-BLto^6cBN)DfcuYzc5upf_NQ8OKm}q!txK|&a^nhEdfhR2uxC)C_8Wih zm}Vh4|F;L+B8H)S3u`no-xjX3-Y~(eEhR2plhtZmrstZ?u|-4P*pxfp5-ne?vuk!zYN_C# za}ItwHd|g$`#^k<>KeId$xhwiY|8+0)6c2{4_LxZ=X`{qra?!Kw{9P*t%~@i7ENaw z#4Ydru;fZiSd*yV$+Z9yFDxJ|CD*M*c`sMJ9KP9{si?UQQFz^gblzz@1=&mDaI4Fs zp5$Nduf6L`yC-!>GuA_9aYYFyS)}8xdByAfE&O@wz=9qVmWBxZnICs)Zie?1*gh)J z`}kl$)zXEatx{?AS1AZXlmZQ#MsU6*<)I3Vc!Em zjWR1efOeVeZYWPITFO6{J1H^NIhEt%!)gBU0sGV!+{1&U){vj#AB_@)m@1*aVJoN| zSWB=0YSnyJf%8}k3o~0f-kjT{BG~~3CNltl3YQENQnN~*waaUr{C;;$DNLXTkQSJZ zJZ!*a%a-@S7Md>_N6o;Ul$0^3oLp>ZE=okWcs}sUHTRNavy$xMqM)}jl4pB%DS*Wq z3C+9hY-W`z+{~9heBKrE7oI;V-_+HE!4(-jpGF1V9?NJq_T4b$LELGUaNG4J$f=B(Q)<)4j&W$)RE+(4rcPo2;{iwNu7Ofc3}T+2q^kZnD(??8t~1&&nIdO5nsCE&QT zfW@SLBsz)wIsN6vq`00U*P*H@`hRu!4M#*07mPTC(iP6ehh$GqXT)`-5Ei;{()PS2 zkNG<%Zp3Ab@ZE;{|5vg=hy>9caF}9W)s7kY_hO8UN{tHEFb8#<64uZk8P|-f>V#EC zN_>uWlZcWv2+v3)l_A*9t*1X4j4eSVtaZuSLXAx15OFh}C^Be=LCgu<9`Sr?PqFdq zYb#yAM1zj@D}wLRgCH=4X1Oq0ED_I;s-h?je-Cy{7%s_jkJcwJE)JGNu z=0aKy0^Yd$ZiI++xN@X~@G8{Ki2r=AC`#HoUpeZG_&DzS8z0`1)tPC{zv|-#d9Yk? zze#zP0iG&_t1<0672|*8Wit~~ZVx{YZYtq7l#{R31;3Qw&ZFzd3x@+^)~lb#XfKe z>ox{G03w}-7qW&=av>(KzjjhiP}PG1{bLv@jy~H9V;LDHx7_CTs+EP$W`|E%!e@Rb zU^*TRO^K?AJGg~^KO9h7OM<<{29G=J7#J?@z*f+5RFpz-jTh*d-&G6XdfiYW?-lvi z=U~7c)6ri{pdoypu9i^{b)KP@sSg+#qKRL6;}%^e}8 zC2xlRsGmUC^XbaTkTs0cGsnQ`#K$b3@5NK-IiHEISxlQLnnw2~&rKgYSr^4vzf`+Z zZK5lWzqe{9(Zng}vtUJyC-pml_Vx!jZW<-md5JbqLLsz&uu&q`oy#T#Q-zQby|oq7 z8BE}yZO%>guXp>We(hE6#QT-mri!7Z0Pt7jfaR(aZmak7%wxS6lZ0>j5|h^g=pU5O z6T=7ovfs#NPzV&8OuFH`GCyW!Q?wQWZW*S8p}#oijorKoEB&M-z~UGwMf15BT5P-o zy^cvEI9V(9Xx}rMZ_&;=bxPV)_3ZSA)WP}=Vvdek1b$(_ur{3s@$>+7jZ^|0uFS(| zC_Mij{1QlblS&t$cgJkGEdIT$A?p|O61upf3UH{lb}CgY9Qedsz{6ig!L~XQbZ|@y2ziEz>1F^olvEZQy$2Hm~+9 z_)weAuJ~PJ^F-~WjAM^^5#rM9NX-(|J7T{kzKyH5_SME4b1wZ(89uYBNmL{zfsxY@$I=em~*Z{wZz# zeN`dzmMD@?R-{Q+;cbnJ2(p%?4GqP8j?StjB?nGtdxu2Zf0gz> zS5g%0eLB12${@8rZ!VYSsTFWDbwI72ad2?vQubGN;bm5hLaM^pZ}C=FqdyLWQd#lj z-0sfLZ|eB#ctXybi^%EmNa95Th|jgnklz!_h$|CJ<1D1|{Zh~7;DQ}2>nc$7MqbKw zApK^U}ZV5hhBZ}Jg5AzC6{H-GCFHs#Gw>R-X812B2lU30pXeVuyGJI_yut+1w-ZNr!t@*xxeC9eTSF88W$`LNVR?MEo~J)E`;ZD!DmJWB z#BNv(@oU>dnkJEsK#)vZ%&LHhi^uk2wQxXRrTWGfBRG~t;vitc2-g>H-khW;jC~I_q$8Q|iFBkDlr4=t*>Oqj$TTSJ2Zy@$W ziswTrsu9Trq9OHxUhV`S0b8~8t#bspp4czasGf`lG~joNCh07I0`iI4?W_%Yc)jIjPf zSbDH#2q#n_H|#n1gN576MRlaysPGZYDeS}`RZ5ZxW3XSV__%=uBva%4!@Tr(nv^lr2reISbk;!UF`<;P=iG^o#L;6d9k%Qq+|LB z3Hxy6m#-_6`%V#-nk_V}tAEd!th;@iHbFz^9Dkod+%`SCK^GREQ8C;W7XK>67szV> z3W$_LWmJUcR&ZxeDTi; zvBckjO@S6t!ZQ%}45B?#I!Y_c5s?ln0RXfV!NaHEus)4o(FS|st+x#U34ilCz%B!a zV=J^3ZjZmRJ$b`Tc){--iDteldP88Owsh=7p(g0%2qCkM+mItIhc zZnfxZ0@{`l0Ts$py^tZ^j`RpH(0Ek26Hd>0;1W%n^JlgsGYGAH$kfkADr?Z8j257a zTQ(Q=5R+-!F@-XEoJT_3{82Sm73~pT3y9|TMH2QnfI#U2 zA!CCp!bjy;wxo12UB|Fd^mPKdJ8Z#vg6m^qqH$~knpmR!!&aPVs)TcVwpMtU(O z6|6+LHK61T=v=?Sot_;iML^Iqc!HHL&-=^eUkc9?bHwibAAa7aLKAi_=>m1$wUYAu-M8)hsHW9(I5L!gi3Fw=pYS zz2UF0a5OlQFaT!=Au7xMvC|ffCssfM`dklYcI3A7krlvcAeOr4&O%W0n|>Fmi$k35 zOZTMK`-YG^^s96s$Sd@ZMN=~?l0{%^dX2nr%k5s1oq%~hCo=|>oGqkz^(jGLgYCb2VC+kkswUwXTlNqY2ovVzyBv1A95w1%v*n-n}k#gw0G9940U&~Xf85B$mR%{@BCa>N2URMXsGSTa+)Qdw3SqN;fPJHNyo@ubwd8YHX)=OBV zT-)98JqK@hr1VvEYI=;drk-bVfY4@F5CLT#Yw7RaeH+RT$P=s+D`SD`7V!(w=p}%f z=SV>UDcH@SoEChS#lTbq6X_j?Yy=c5{e-;`CMeKy2ks8FFGt%UV#fqs=s^D1eC>?>HBWg4*Wk}l@%*LpR;^!sR(Xh9}92ByF}SF z%8S$uO>jGpH-St3^jz{X_&vb34+;QAXkJd~Z6$DfGZgSNMWTDt2*G_&bnoD32?C=* z8xztqD;OOhaz28k#rsiQIj8U!y|r2B-T83GI<6u1ffSUX>q*yZhg;&o<*NfJtl3Gc za2p%4qE`AkUs4Sqp@;{S_H71we6iBC?SP=Nf}9P(ksiwJ&E(}G7^ru8 zxsY+nJ2?R=HJuxK$$a+<9RlC+kr)l@!GOd4ZC?L@fQ5B{pB3)@orCCj?C{l zNX{&F$HcwP>-ZfNFzSLt?bdq%AN1nuS62@U4m!bYEf^BzbBXZ2$^)l~&+_>D8ooaJ)#wCf zBx^$7?N`-05!Hqs5RTBO$WJ|_6d}TUG7t8ajGK4L#PX`YCzpnO+fbjc$0=3o>9xfA zVJP$3u#x&iW?gl{1#lhbF-hpd7EMF<6Rs!8%!s0B4ws4+rk7AbG(8Wg4+OZ`{fQqVew+RyE zbu;_|-(xD39bH;*Nw*tfanu8;${5U9{Ew`@dpOwQ{#9jn-BltXA!VPW+Ir?Hgs4=N zG~q;Fa#VbJ{U*Pp$r*}hqOCSCMTcZhK?6zTkt=l@@d**w?(V=_|4jR(5$h+}gCd@+(yPF1tZ!Nuy)2?iT@i^)E`eQyU#;VG0TzJXU{(S7ynMVAj z^#q(B5|20MGs@VDfy{zR!#K<`-YJ**>ilT2Xi)T|+mRB{Tf?}2RMQHf$fbBeBVqCi zQ-adVSKRqv-|q7kS?+0AL0M?|cgEDe1>r1nwqjk!TiD&^I-p6ALDJ>Us5A}*-J*Ml zqs9kB%eYSD=zNvYc^M>iEFN4Yqe`F2?yo;v(gLZJ?%A^H;)i;cUdgcH2mGC*j?Xcjqg6McGC4&s*Lx0 zjQQ|+2qx1%VeacLX;kWY=lSU@>gDBn-2fJ;@h9ATG?)v7p9d+51=0Da23B%5IhLD{ zoW$WngZdJe9OlAUz^f@A3lZn`beRKlK0oJ0ud~iPwr?a0C#Bwlwy4SdgjOZIiG>7S z4ncfzT6dOM55s-XgcOVgFn9Q-1B>lY6i(09g*r2Kg5oxAjglv9R) zGh1ohZ_1AWuQ@!hn>-$p>CY^=NH(qS@u^T}u}o|MbCrtB@HQ1zo(t0<6amc9uBb;c1mWNU=w0_?OoP5J0}rW2X4Z9<_Hd;X=To#;S#x2&hFf(Ovoy3@a+fSl=a%Dp z)fM?n34lH?^D1S>@4=#|}*a@vhxPEoWHhnOLOX(l7cR z6jw<1JwkRspnD##k!jHzCXxCx!R+{ec#c z=^~i2ENVpX&z9DR5qv0@eDH5W(|b+H>KRJ^F@39Iu%7fru0s>&N+$9vVP@Xr`>#A7 zSDEs49edF`LyJYvYbpg9#f&aW_V6z^dms9yvqXj0Z7&f`qll*4^P#f1Rp!^Qt1M2d zNXFQ}1;^nOgQM=Y7gmfTL||@duJ%w!u3?sY7F%Sf>gVf67FW_&=bW40>ZCWQo=&Z9 zbByq~G%oTPlUQV5tU97Ivt#T#3rcN@2TvpGVVvGG(90CDg7?PchU!$)e`~{ygC>9@ z`RRDpbYWHwXQe-GRwBw0aM4F@?ZLB7hGNn8epCajIKt7n2jn4jfVR0#c&oCqVphMp zE`3PY(#|=v0~h_Im#G6dblK+^nR>G~Ed{=(DFO2=X{M-ez!9R9S7p84tpl9iJA0;~ z_vrEw$r=K7P@cxzyhdA;iKi9!$lojvy>u$l&X$6ML+ow-Tf+Rh25UWl6Jn!Z=hW2@ zdeoLbaEc|=TNKsb8fNuAU$uv4K9g$I)#Qzz==)yGiquKGZ2dfupD0RVKu@8=l*4~}IYJ#rwHBqMt#+we0$95tb*F=0k;$#p~pM)i^ZEaChV zy${;V!{$f7^H=_r^(L9YWPbjl-;LbZLdXG?c(T1B&F4TwGt{$LBrRoI`@d^FR-d=x z-9_?yR4lEU;@h0WJ4grMa_Pj4m{y%h{g@l7xbr_ZK_8QGZzRKyWDrRDZlf8v%Kqlf z+b~4L?1o7Qmu5h?se(pK=1vJ=PEiLbJF7uv$IkD$y|-8HL=1+HmU|H0iNO+W2$rMb z-Syzw`c1Y$DJPS*emFI(bMkBcHG?DSqFHpH3wPyt@OI$ zr1ak70&~CYb03d%>`gt*Oulu6hhJDXnB)@US%{tuJQ()EQ$;qWC5Ht`JBnlw6+sWH zNkTc(vFq^=Th@w%PCzAlVJWlic27&hG9sc72Rs!>mt=)Xj5Qin4*k&?--5QX**vSo|F?W`k8k#rkHQOMG<{#iPE z%HiLU+Ea-+$(6sWURXmKdWUKDgDXBCI|lX8Hy}{wajjte*_PH*^7}yJYCC__0+NX? zfNvpu=8;~(!h|*A&xGr}*0rA= zls!5@_9EoEZB+$&w<+2GjVy_tF~hf68`>o(&OZ4%m^932{~1^fsQ^MH{vgyXskYTtT4B@S1*`X+ZOL@ zKPFv59yqv{%E^ij2T0YG0G6(Y(O_2WcEL~T_qiEtUrjH>?#m%R1ML5r_7O=WWSX7H zpN%D?e%Cw&BV`58~+B;zQ zCpl&oV6Xr79OZ#B^FPDUAP;^f2rudYwlDkqLnBco2g)Kmj2>x9h)AeVUhk*Dyb6&_ z%Whhohb2WLS7WT@MX+@fI|44kR%eiMg3xDnJ~i=}Ce0(@u-C|m-cBlKIO{E0pe`zq z{`sa4obhp_G4ZkSUtRc&mtJ1qMs!`+Q4ETzjeB8BJ=*jkpHr*)8&!Z9&!1=mn|^oT zr3SC6INcx5e%OB5x@}hNMnphJxGO8dkPd7**mI7uZF4RKWq<*A-=teOpmMY}{k00o ze-C4NYPL zpHled?B0CRpxyS8BJ$Gvt|TFNDQNR0S@9SA#4pkN0GWOb%Uy$IAlsZB2Q7EUHpYDp zP6Vz-|M;um5;fag|9c5v;lEq#t%g9j6yg&tPQlryu!*S9Hb1e=sSwBj3-?}MwG0?Z zViP?v`m}wUqln@H4ExG`IatinO-edx5OoAyX2JRkaWne^iK;e96!e41b2l+C4Hb#V zlgGYa;EWvK9CLY3Z}#@w<)<2sV&fqraTD0j4vsa(E3R2qcEGeyY@2)~bVjCp+u19) zpTpcpo+KXJ+MO!m1N4&f%^KE_fe(G_h~_~=d)SG5N%=W9HLqpm#(cR9b1_t))pDGBVZ$5tti&$1>9?^vGUs3Cq&ywJ;7mSKF zTz^*`(J?S^$hjm%I7;V43FdimfG-EP7 zpY}bScO6KcR$uF!9P*G=V{xWoPSt0j9}=h%#>uq!%3gksdamOnf_>~1CF7kaSd*^j z$uTJCOSSHFY(iMcwyOWdRkFBhJ8#05Y{7^mGvWN8V6O!qA?HNz#PyP!mwH+-1|c0N z)g{W)cMX<=Lv(tIuWJv0fiS$fX5Ns)Dgk3Y%QJeIKQ3z^xJ^{Ysg}>wAboVzgwXb* zxSht?>vvS^4-7*MH?I7;y_Gb7Hh-M&<9?IehVZduyJD@GfKRU(>u2#)C77%Es|2$% znZ4Z0Ly6yK!>@BES|znj<71P@zN<~J84~dqEyrH0IAs1xs7$_-81>7F+kNhamp~P7 z-VbA>nuby}!W<1eyAV%NFndN&NL0+WY!7OYs3KCu(`5p}li_bCe!qCn7M2|?9P)ZE zMA1S%emLF|dtPtzOE)x=l2P)MU;2_0sv^Ba5Aoa@R|_RSPXS1bot?I|eC9x#kbZWY zfH@B_ThiyC&h1pZqCk=WFzF6JoiRC1!xwN-@w_BuL6#VPz?1(l1>+Oq1OFmFvQJ;@ zyukv01LX95(}<*4MM|^~D+&RFBjChtmN2)gcmuJh!H7tN-h`6oIVX_0}H2I-qbOP}iwE1iv5udD5 zbr=71K|JFB>W$xgVHDBorCnYja1l+mXPh;T*>M&LWgO(8UkgWP_M%**?Ksed^@<@o$05K8r2n=S(p zl}MDmG;TgFRX0h|I6&N*kQWG!1hqsZP%bR70t|I}myME>3SL$apO&5=Uw>I6LV_NF z9bnH@?IoVQIybm5bM$4);a>Z3Pez6My$SJAKjOLBBLYL`bR$C5EIOkvo37fe$zMc> zWS$@By>;&W{pAPEC*LjN+$Mzoa0>?`2$_pb!9v@Vp+C>eufsFHF=dObUjF@s`VJhx z6`mG%?BBm^4Hnf8QquCejl%Z3*+!dBF2U@-+p$xFikeMv^UO=N;1lwV>g=Q2l^>x; zK-1kf*foHrrZ9;3A1lNtXlx^*_gq_3wt@wu+jYj&^p^Cs$8?H*p2~E@<7tRPc0o|| zXL#)p*`Z9$r$q`8M7soJFErkgoPo%~Bt!vl`FWRX+v0M=3$-Z)Nw9N;$gxTliJzC2 zyQ`iau8qxaCPMea_hBaR>OG}OM2AMrlbU+yh;`HW3x}lOZ){gIwlQggrWk9+O+hyj zo4-NC8=E6047n)W!!>UI^PguVh>mrX@9KZqV&%y83v&(4CFZ`(wV~#KXC!y4031V1 z1f)$4q-sI=kAm#~!XoAp!bnum$D^}@hh1q9Q^rbUz7EV3i23Ddq_eOZ*M&cDyNI;f{I+Xc) z%rUD%J%8nKCo$;&vI!?-@3SL7G3=g=Rpsrf)$ilVKujcCWPE~Xt8@-r%8>affdN+a zVhF5}wTv2Zd<%t8A@G>DXu>X{FE`tW;XoGLG_R54zdY+h7QFB@`~O$~xKkrgIgWzh zOT?r8cfk=9ai1UOU-;-EVPW#9=#4{VSR=n>h z%5w(^=`IS|%bYQ~3WwjuQqcbW)1My`Wb}#?eiHzaH72Fgi~R6Ifzwy{_I2c&%{R68 ztMR0Ud~l|uHRq$H%S$R4e-b~~DniswOuDCWa(YQOCGBMnT0P#7(Q<_+@elhLAOGna zc@ry1Qr^hy!wRk5G5Gnxc*N-g!(?GR!{1&gXbSlV}t@ z`_y=f$_JHUTuwYOx-RH`{;eTW{D!9k)lEXXDE>K0tGA~8Vfj<{Z7-&y|Hu&!GZ}`- znO+W7k}IVQirfjeZ*6s8wTC05^;>r{QKK6Kz&62HnjRh?YUdA0-vLFh2|8-*|Ia5X zR2(5H`ytid2I04!W+ZqTTh#tgR{qZ?V!ScB63PHY`;Wd$!=Y>8d!oW5q|{``U#GF; zsV{gJ=!O$Fyavm+CU^$|D*`Fq4l3s8ak*LU>uLQ<%73{4$bJr$IY$~23QYC$Fs!Da zf`RPTR8YG~%GJH;Yk`r}NPF`>Uo2v%GvlES_AT3L;pmhzd^e<=dfBt|7ipUAwN=*A z#jQynfJNk`&%HuP`{5EQ)6OqTpJ*DxFpJS>?0%xw{_u7Jy&8}5;RxCPu@1{HrDe09 zyS6&`(;Su)Xr@sy*zi9dtOLE*4~vof=SmnUz_5cd#UV}R_HSZJfTJ+GRZyO&Gg#hV z+M`PGN9tLK-}%ZNqgx%3T17!Se1bMdSAyk9yb4Ks$QJ3bHM{5)L$7p!jMRc(Z%

jBROVWlFS)6~Nej!9Gp2N1vg7a)jKT zzx6?VVOP^3>=ql4kOlzt0<2fP;BPj6wz4hv4?VY@3x7NDEWH2>`uMZ0Ch4w0+DGl9 z=X`CvBG~v6PY@0Ep{Mc4uBbd@lk#Ju_4+Jxe(UwE|C*L08qYpTj*xv`7W71a+SnSU z!O%W;&cwy7F8_@1@(GY0^a)q~Y#^fb)qztptvUA~(VsS!{OEHa>y@xe$F@fHr_Jkd zYUZnV84&U3#&Tehsa?3i2 Date: Thu, 22 Oct 2020 12:02:42 +0800 Subject: [PATCH 155/447] Settled merge errors, made amendments for the diagrams --- docs/DeveloperGuide.md | 12 ++++++------ docs/images/TopicListAndNotes.png | Bin 31107 -> 31068 bytes docs/images/TopicListSampleSequence.png | Bin 14811 -> 15102 bytes 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 792d326832..a9b040a5c1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -63,7 +63,7 @@ which will return a `TopicList` object. The following sequence diagram shows how ![TopicsStorage load](./images/TopicsStorage_load.png) -###Implementation of commands relating to TopicList, namely: +### Implementation of commands relating to TopicList, namely: 1. Listing topics in TopicList 2. Finding a topic in TopicList @@ -77,7 +77,7 @@ TopicList is an ArrayList of type Displayable, which is one of two interfaces im in the code for EDuke8. As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The TopicList is used to store Topics. -####1) Listing topics in TopicList: +#### 1) Listing topics in TopicList: ![TopicListSampleSequence](./images/TopicListSampleSequence.png) @@ -90,7 +90,7 @@ Step 2: The TopicList.showTopics() method then calls the method Ui.printTopicLis Step 3: The Ui.printTopicList() method then prints out the description of each topic in the TopicList. -####2) Finding a topic in TopicList +#### 2) Finding a topic in TopicList This task is performed by the TopicList.find() method. @@ -108,7 +108,7 @@ NoteList is also an ArrayList of type Displayable, which is one of two interface As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The NoteList stores Note objects. Each topic has 1 NoteList. -####1) Adding a new note: +#### 1) Adding a new note: This task is performed by the NoteList.add() method. @@ -118,7 +118,7 @@ Step 1: The parseCommand() method instantiates a NoteCommand object which then c Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.add() method, to add the Note object into NoteList. -####2) Deleting a note: +#### 2) Deleting a note: This task is performed by the NoteList.add() method. @@ -129,7 +129,7 @@ Step 1: The parseCommand() method instantiates a NoteCommand object which then c Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.remove() method, to delete the Note object in NoteList. -####3) Listing out all notes in a topic +#### 3) Listing out all notes in a topic This task is performed by the Topic.showNotes() method. diff --git a/docs/images/TopicListAndNotes.png b/docs/images/TopicListAndNotes.png index 098ed791abb9d41c00c1f13fd6cdd6abcc19b18b..932064d07257a7c34fd963004ba3e16abe6aa6c0 100644 GIT binary patch literal 31068 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⪻=&5RiW``PBpY_uriVF<4I0_ zlxJKKHnq{b9($TrCFYi6IChcpV>apaAIXHb=t5<#x#O@*x&8Nd!!QDz>ShVEq+V6;LF9o9C zP?Zju%W7uuMLsCLT*~O!C>o#)`=zt04=oyyM|}$#d$1%GpE7Fic6`+RxT(ngO2<;= z_|k`^XBhpV^Vfu?Sm1WbZ+L=)QY5K#MBz2o{--IivOr@%d_nnwj*}iK8QgT|5`f%3 z+Hi$ckV{J~Zw3c-_I}tYvY6BN9HXA ze8i^OJi-~HQn3Nc`dkY0(a(8(Yp?-spEm4~wmzrG%7bna>+Y|(S%)sXIy;i9o6%&# zEZ#ybT-C!<)XO&o1~*)hmI(t%mvr$Ax`W-=PSaQdy0E{%CE}*ZK*F8*%c7tX39WUm z4|SQ9md?s{m4B3GD5q1{Z?MxxClYRrL{P;$e~8fYDh16lg3&Zx=SdIiEp#9Xs>J6m z0lNg6LmX-Q7X1RpY}(3{V|rA_LW$D>1-)nS6bv6LJP~e~@=oPMg2ET_fZ4qCvexmq z8tc#^Wd=eU`#~S%6{aZY-7Lv1h*MhAgBW777m1QwrPv;-k&YMf2(!=bsfhE|7|-n1 zb4v3Xh|0C9w>Fqyo^w^x(<7xo`=+gCUMs=kwVRu5ReI@;ut-cDnug6E|JvI+9k<^g zjX0@E8PYSM6!@@OaO#coipTz#kV|SEp~BO|_pncEpWHlsqi`E!w5f4@ocxu{|JH5N ze~w@OTZ{LfJ1Q2XkM73Vf*QX|g|e9Ivm4R}z@%y QK_ryM?^-7bs^+)<59B}EVUTf{W*81Fs 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 diff --git a/docs/images/TopicListSampleSequence.png b/docs/images/TopicListSampleSequence.png index 93fcb58c1fda6934a0fdf02e43658215c67a528f..b95ac3018f1fa2e5cf01f58de4570199605b95c0 100644 GIT binary patch literal 15102 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 Date: Thu, 22 Oct 2020 12:14:36 +0800 Subject: [PATCH 156/447] Add introduction to DG --- docs/DeveloperGuide.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a9b040a5c1..f0509dd950 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,5 +1,17 @@ # Developer Guide +## Introduction +### Software Overview: +Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Quiz component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. + +Purpose of the document: +E-duke-8 is an education companion, intended for students to enhance their learning experience. + +This guide will allow any interested contributors who wish to develop this learning companion further, to understand the inner workings of the program. This understanding will enable such contributors to add value to the current code, by improving its performance, level of interaction or capabilities. + +### Setting up: +Fork the repo, and clone the fork into your own PC. You are recommended to use IntelliJ to best edit the program. Do not forget to configure the JDK, and to import the project as a Gradle project, and lastly, remember to verify that the JUnit tests pass, to ensure the program is functional. + ## Design & implementation {Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} From 93f4f4c274fcc4780820cbb6a5a4fc47619e8d65 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 22 Oct 2020 13:26:07 +0800 Subject: [PATCH 157/447] Fix minor checkstyle errors. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 79501912cf..baf9b13748 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -61,12 +61,12 @@ public Command parseCommand(DisplayableList topicList, String userInput) { int numOfQuestions = 0; String topicName = ""; try { - if(commandArr[2].contains("n/")) { - numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf("n/")+2)); - topicName = commandArr[1].substring(commandArr[1].indexOf("t/")+2); - } else if(commandArr[2].contains("t/")) { - numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf("n/")+2)); - topicName = commandArr[2].substring(commandArr[2].indexOf("t/")+2); + if (commandArr[2].contains("n/")) { + numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf("n/") + 2)); + topicName = commandArr[1].substring(commandArr[1].indexOf("t/") + 2); + } else if (commandArr[2].contains("t/")) { + numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf("n/") + 2)); + topicName = commandArr[2].substring(commandArr[2].indexOf("t/") + 2); } } catch (NumberFormatException | IndexOutOfBoundsException e) { return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); From 8dfdf0fb562c1e0ecda8551bc6c90c728cc6b6b7 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 22 Oct 2020 14:52:51 +0800 Subject: [PATCH 158/447] Minor fix to the parser test. --- src/test/java/seedu/eduke8/parser/MenuParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index ee0addc8fb..773b6f92a3 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -36,7 +36,7 @@ public void menuParser_wrongStringInput_expectIncorrectCommand() { MenuParser menuParser = new MenuParser(); try { - Command badCommand = menuParser.parseCommand(topicList, "quiz /twrongtopic /nbadnnum"); + Command badCommand = menuParser.parseCommand(topicList, "quiz t/wrongtopic n/badnnum"); assertTrue(badCommand instanceof IncorrectCommand); } catch (Exception e) { e.printStackTrace(); From 6ea7a0ba7f6c82b77e3f78ca4077d53e39adc5e6 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 22 Oct 2020 15:33:03 +0800 Subject: [PATCH 159/447] Fix IO tests. --- text-ui-test/EXPECTED.TXT | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 633930c828..c849fbb2af 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -107,9 +107,7 @@ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -Invalid command! The command for quiz is as follows: -quiz t/ n/ -(Topics available can be found using the "topics" command) +There is not enough questions in the topic for the quiz! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: From 52511a6d0f03e94bca81047da740d877106d523d Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 22 Oct 2020 17:26:01 +0800 Subject: [PATCH 160/447] Touch up on User Guide --- docs/DeveloperGuide.md | 5 +- docs/README.md | 2 +- docs/UserGuide.md | 136 ++++++++++++++++++-------- src/main/java/seedu/eduke8/ui/Ui.java | 12 ++- 4 files changed, 105 insertions(+), 50 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f0509dd950..c14878ddfb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,6 +1,9 @@ -# Developer Guide +# Developer Guide for E-Duke-8 + +- Table of Contents {:toc} ## Introduction + ### Software Overview: Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Quiz component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. diff --git a/docs/README.md b/docs/README.md index 54f28d61b7..8003553099 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# Duke +# E-Duke-8 E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhance their learning experience. It also consolidates key concepts for easy revision. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 08bf27ca5e..ff99765c40 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,102 +1,152 @@ -# User Guide +# User Guide for E-Duke-8 + +- Table of Contents {:toc} ## Introduction -E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified -platform and enhances their learning experience. It also consolidates key concepts for easy revision. +E-Duke-8 helps CS2113/T students **learn and understand software engineering and OOP principles** through a gamified +platform and enhances their learning experience. + +It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the **Command Line Interface (CLI)**, to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. + +- Table of Contents {:toc} ## Quick Start 1. Ensure that you have Java 11 or above installed. -2. Download the latest version of `E-Duke-8` from [here](https://github.com/AY2021S1-CS2113T-F12-3/tp/releases). -3. Copy the files to the folder you want to use as the eduke8 folder for the application. -4. Run E-Duke-8. -5. Type a command in the terminal and press Enter to execute it. e.g. typing 'help' and pressing Enter will list all the commands that you can use in this application. Here is a list of commands you can try: - - about : Provides product information. - - topics : Lists the topics involved in CS2113T. - - textbook : Links to the CS2113T website. - - quiz : Starts a quiz. Eg. quiz t/OOP n/5 will start a quiz with five questions based on OOP concepts. - - hint : Shows a hint to the current question +2. Download the latest version of **E-Duke-8** from [here](https://github.com/AY2021S1-CS2113T-F12-3/tp/releases). +3. Copy the files to the folder you want to use for the application. +4. Double click on eduke8.jar to start up the program. If the program does not start up, continue to steps 5 and 6, otherwise skip to step 7. +5. If double clicking on the jar file does not work, open up the command prompt in the same folder used in step 3. +6. Enter the following command `java -jar eduke8.jar`. +7. Type a command in the terminal and press Enter to execute it. e.g. typing 'help' and pressing Enter will list all the commands that you can use in this application. Here is a list of commands you can try: + - about : Provides information about E-Duke-8. + - topics : Lists CS2113/T topics that E-Duke-8 knows. + - textbook : Provides you with a link to the CS2113/T website. + - quiz : Starts a quiz. Eg. `quiz t/OOP n/5` will start a quiz with five questions based on OOP concepts. + - hint : Shows a hint to the current question. - exit : Exits the app. -6. Refer to the Features below for details of each command. +8. Refer to the section on **Features** below for details of each command. ## Features ℹ️ Notes about the command format: -- Words in UPPER_CASE are the parameters to be supplied by the user. -- e.g. in add t/TOPIC, TOPIC is a parameter which can be used as quiz t/OOP. -- Items in square brackets are optional. -- e.g quiz t/TOPIC [t/TOPIC] can be used as quiz t/OOP t/Requirements or as quiz t/OOP. +- Words in UPPER_CASE are the parameters that you can specify for your usage. +- e.g. in `quiz t/TOPIC n/QUESTIONS`, 'TOPIC' is a parameter that allows you to choose the topic you want the quiz to be based on, and 'QUESTIONS' specifies the number of questions you want to have in your quiz. -### Loading data +### Welcome Page -Data is loaded from the .json files in the data folder for use in quizzes and notes. This is part of the setup and is to be done prior to the running of the app. Upon successful startup this screen should be shown: +Data is automatically loaded from the files in the **data** folder for use in quizzes and notes. + +To ensure that data could be loaded successfully, ensure that the data folder that comes along with the eduke8.jar file is placed in the same folder as eduke8.jar. This is part of the setup and is to be done prior to the running of the app. + +Upon successful startup, you should be greeted with a screen like this: ![welcome](./images/welcome.png) -### Viewing product Information : `about` +### Viewing E-Duke-8 information : `about` + +Shows a message explaining what E-Duke-8 is about and your benefits of using it. -Shows a message explaining the purpose of using E-Duke-8. +Example of usage: +``` +about +``` + +What you should see: ![about](./images/about.png) -Format: `about` -### Viewing help : `help` +### Viewing available commands : `help` + +Shows a list of commands that you can use. + +Example of usage: +``` +help +``` -Shows a list of commands that can be used. +What you should see: ![help](./images/help.png) -Format: `help` ### Listing all topics : `topics` -Shows the entire list of topics that are listed in the CS2113T Github.io website. +Shows the entire list of CS2113/T's topics that you can choose for your quiz to be based upon. + +You can see the number of questions available for each topic beside the topic itself. + +Example of usage: +``` +topics +``` + +What you should see: ![topics](./images/topics.png) -Format: `topics` ### Accessing the CS2113T textbook content: `textbook` -Redirects users to the github textbook website. +You can find a link to the module's textbook using this command. + +Example of usage: +``` +textbook +``` + +What you should see: ![textbook](./images/textbook.png) -Format: `textbook` ### Starting a quiz: `quiz` -Starts a quiz with a specified number of questions from up to two topics +Starts a quiz with the number of questions and topic as specified by you. -![quiz](./images/quiz.png) +Input format: `quiz t/TOPIC n/QUESTIONS` +- Each of the question in the quiz will be related to the topic you have chosen. + +Example of usage: +``` +quiz t/OOP n/5 +``` +- This will start a quiz that contains 5 questions from the topic on OOP. -Format: `quiz t/TOPIC n/QUESTIONS` -- The quiz will contain QUESTIONS number of questions -- TOPIC follows that of the topics shown when using the topics command -- Questions in the quiz will be related to the topics you chose +What you should see: + +![quiz](./images/quiz.png) -Examples: -- `quiz t/OOP n/5` will start a quiz that contains 5 questions from the topic on OOP. ### Showing a hint : `hint` -Shows a hint to the current question +Shows a hint to the current question. +- Do note that a maximum of one hint can be shown for each question -![hint](./images/hint.png) +Example of usage: +``` +hint +``` -Format: `hint` -- A maximum of one hint can be shown for each question +What you should see: + +![hint](./images/hint.png) ### Exiting the program : `exit` -Exits the program. +Exits E-Duke-8. +- You can only exit the application when you are not in a quiz. + +Example of usage: +``` +exit +``` ![exit](./images/exit.png) -Format: `exit` ## FAQ **Q**: How do I change the questions in the quizzes? diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 3194a20d0c..36f8ffae4b 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -28,12 +28,14 @@ public class Ui { + "-----------------------------------------------------"; private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and" + System.lineSeparator() + "understand software engineering and OOP principles through a" - + System.lineSeparator() + "gamified platform and enhance their " + "learning experience. It also" - + System.lineSeparator() + "consolidates key concepts for easy revision."; - private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8" + System.lineSeparator() - + "What can I do for you?"; + + System.lineSeparator() + "gamified platform and enhances their " + "learning experience." + + System.lineSeparator() + System.lineSeparator() + "You can attempt bite-sized quizzes based " + + "on your choice of topic " + System.lineSeparator() + + "and access key concepts for easy revision!"; + private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8!" + System.lineSeparator() + + "What would you like to learn today?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you had a fruitful revision and see you soon!"; - private static final String MESSAGE_HELP = "These are the commands that you can used:" + private static final String MESSAGE_HELP = "These are the commands that you can use:" + System.lineSeparator() + "1) about" + System.lineSeparator() + "2) help" + System.lineSeparator() + "3) topics" + System.lineSeparator() + "4) textbook" + System.lineSeparator() + "5) quiz t/ n/" + System.lineSeparator() + "6) exit"; From 114639f62efbc0aec7227b10a9e1a6a11271e48e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 22 Oct 2020 18:56:03 +0800 Subject: [PATCH 161/447] Enhance User Guide with new images and documentation. Edited Ui too to make it more user friendly. --- data/main/topics.json | 10 +-- docs/UserGuide.md | 36 ++++++--- docs/images/about.png | Bin 18596 -> 22339 bytes docs/images/exit.png | Bin 5822 -> 7314 bytes docs/images/help.png | Bin 16790 -> 15299 bytes docs/images/hint.png | Bin 7104 -> 30861 bytes docs/images/quiz.png | Bin 20428 -> 33793 bytes docs/images/quiz_correct.png | Bin 0 -> 29626 bytes docs/images/quiz_end.png | Bin 0 -> 7894 bytes docs/images/quiz_wrong.png | Bin 0 -> 42391 bytes docs/images/textbook.png | Bin 12181 -> 12520 bytes docs/images/topics.png | Bin 16640 -> 16890 bytes docs/images/welcome.png | Bin 8226 -> 9591 bytes .../seedu/eduke8/quiz/SingleTopicQuiz.java | 2 +- src/main/java/seedu/eduke8/ui/Ui.java | 14 +++- text-ui-test/EXPECTED.TXT | 70 ++++++++++-------- 16 files changed, 84 insertions(+), 48 deletions(-) create mode 100644 docs/images/quiz_correct.png create mode 100644 docs/images/quiz_end.png create mode 100644 docs/images/quiz_wrong.png diff --git a/data/main/topics.json b/data/main/topics.json index c2c0c71875..767f722924 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -125,7 +125,7 @@ { "description": "Choose the correct statements?", "hint": "Recall the differences between the two core OOP concepts: abstraction and encapsulation.", - "explanation": "", + "explanation": "The second statement should be: An object is an abstraction because it lets ...", "options": [ { "description": "An object is an encapsulation because it packages data and behavior into one bundle.", @@ -148,7 +148,7 @@ { "description": "OO is a higher level mechanism than the procedural paradigm.", "hint": "OOP four core concepts are: Encapsulation, Abstraction, Inheritance and Polymorphism.", - "explanation": "", + "explanation": "Procedural languages work at simple data structures (e.g., integers, arrays) and functions level.\nBecause an object is an abstraction over data+related functions, OO works at a higher level.", "options": [ { "description": "True", @@ -171,7 +171,7 @@ { "description": "Which of the following is NOT a core concept of OOP?", "hint": "Think about what you have done when writing OOP code and what OOP is useful for", - "explanation": "", + "explanation": "The 4 pillars of OOP are Encapsulation, Abstraction, Inheritance and Polymorphism", "options": [ { "description": "Inheritance", @@ -194,7 +194,7 @@ { "description": "Choose the WRONG statement", "hint": "We are using OOP to help model solutions like how objects in real world work, in Java", - "explanation": "", + "explanation": "While many languages support the OO paradigm, OO is not a language itself. \nAlso, we are using OOP to help model solutions like how objects in real world work.", "options": [ { "description": "OO is a programming paradigm", @@ -217,7 +217,7 @@ { "description": "Choose the WRONG statement", "hint": "C language is not an OO language. Java code is able to be written like C code.", - "explanation": "", + "explanation": "C follows the procedural paradigm.\nYes, we can write procedural code using OO languages e.g., AddressBook-level1.", "options": [ { "description": "Java and C++ are OO languages", diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ff99765c40..a4d7c084df 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -9,7 +9,6 @@ platform and enhances their learning experience. It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the **Command Line Interface (CLI)**, to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. -- Table of Contents {:toc} ## Quick Start @@ -107,8 +106,14 @@ What you should see: Starts a quiz with the number of questions and topic as specified by you. +Regardless of right or wrong answer, an explanation about the question will be displayed after you gave an answer. + +Note: +- Each of the questions in the quiz will be related to the topic you have chosen. +- The first question will be immediately displayed to you once the quiz starts. +- The quiz will only end when you have attempted all of the questions in the it. + Input format: `quiz t/TOPIC n/QUESTIONS` -- Each of the question in the quiz will be related to the topic you have chosen. Example of usage: ``` @@ -120,11 +125,24 @@ What you should see: ![quiz](./images/quiz.png) +From here on you can either: +1) Enter in your answer by typing '1', '2', '3' or '4' and pressing enter. +2) Request for a hint by typing 'hint' and pressing enter. Refer to the next section on **Hint** for more information. + +If you have entered the correct answer, this is what you will see: +![quiz](./images/quiz_correct.png) + +If you have entered the wrong answer, this is what you will see: +![quiz](./images/quiz_wrong.png) + +After attempting all of the questions, the quiz will automatically end: +![quiz](./images/quiz_end.png) +After the quiz ends, you will be prompted to enter in a new command. At this point, you can choose to start a new quiz again! ### Showing a hint : `hint` Shows a hint to the current question. -- Do note that a maximum of one hint can be shown for each question +- Do note that each question only contain exactly one hint. Example of usage: ``` @@ -156,11 +174,11 @@ exit | Action | Format, Examples | | ------ | ---------------- | -| About | `about` | -| Textbook | `textbook` | -| Quiz | `quiz t/TOPIC n/QUESTIONS`
e.g. `quiz t/OOP n/5` | -| Hint | `hint` | -| List Topics | `topics` | -| Help | `help` | +| Viewing E-Duke-8 information | `about` | +| Viewing available commands | `help` | +| Listing all topics | `topics` | +| Accessing the CS2113T textbook content | `textbook` | +| Starting a quiz | `quiz t/TOPIC n/QUESTIONS`
e.g. `quiz t/OOP n/5` | +| Showing a hint | 'hint; | | Exit | `exit` | diff --git a/docs/images/about.png b/docs/images/about.png index fa59befaca00182126974f5807d9e8b84caf8f4a..2857aefb1afb4dd7b5d83f5a562a5efe3798f656 100644 GIT binary patch literal 22339 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 diff --git a/docs/images/exit.png b/docs/images/exit.png index 85b3ab071ed9c36da61c8a949eacfb05e45b15e1..6ef75ed423bd1337ec0f3abe28bd5ec3c440bc31 100644 GIT binary patch literal 7314 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 z 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

!a0kK^ zYEwHJPV>-U#Qz7MphI3ZLDKGTqQ9?c@?1A1aw@8hu3mulc=1|2Mplb&;=N2&zGNBg zcYTi@fqT}BxZF~2qFCo#Cr1U5FYT%)bf8F|?57veeKWFHhPU&x*Z`uj^)ECNoE@NAxCx7-;8qYbTO-6VO5@UQ7AZ?@<7>Wewpf8TWf5PF>&D5p5E zb01RK$R=FPd~0uZ>FeJGVxR!P4)dh)=_iEMpwsCm%J!(!=`|v5&u-{y5@BJE`wNR!>Uhe76?C4BD7DMZz zi;@Z|ATalpu$YgpV%d0s6sN+Y##3Oo1=UsyWH+G;DwG2bjwA=d9%xZ&m`+mIbaZAm zGyd9MN?zTPrCE4)-6!gK8%sX2(P_+U8Dm68N?Yt1zl2BgVFG{eem)|msXc2TJEHY1 zRB?e$MTexst+ENu1$2$@iyHq%u3<{<1}=7^K)hOAoH4pMi}6!Pbf<=Z|J9cywS%rm ze7fz8hRJ~JOck~fy4&CcCkcaz=%h#umn~zL53hJS{y_qi_RpwHmCbkQlj;6$iTu3r zmD|@GYT2~*k@IXtvOMH7?lJF+#=252f$H4mxeR?-e=FowW?O5Hg7mYC9`F^}&wwb^ zvRT6`5nkT5Y0pV(JKc0i)dA0y+>Sj`+;q$RxHz{Q{FKzXJ17ay}A3G zZa+Wc`k~n9Ghj51FXZs1uvPadD@fU0N|dE^tObB*W;15hU(HW$Ll5vbrG%%J`*WEG zCu*T`G_&Pan*r2JK_V+NE)pJ0Fgohp3E`L$GJH{$c4d@};x6<81$1{cW9}|tr#W{I zpmuV$D5%~8c?YZczUA4p^|eePae^TLCyyiaa`NBUB^>Zw@EDK=qJ4q^?hU60?|(#W z?ge7bu^lU!F_?7*4izA@+W+s9G|$lgdRqF=^~Zlh{ol6@nVsnZ?M4x1{O76Ze}Ag_ e|D0l##?rU-`gyq{jCgK`qadRyUHSGy$o~QlBMn&q literal 16790 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 diff --git a/docs/images/hint.png b/docs/images/hint.png index 992a2f5ff8d835824573eb32c42e18e764b363d1..e801a1588a7b6a60da1d7f0993d5e6965ea327f1 100644 GIT binary patch literal 30861 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∓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 literal 7104 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 diff --git a/docs/images/quiz.png b/docs/images/quiz.png index f76a4412c7c845c35c076c78b781363210c54867..9a20086ef25fd09acd35dd6fd30a247548952e30 100644 GIT binary patch literal 33793 zcmdqIXH-*Pzb%ZtAo5pKq^lqZh)9tRQIsYSq=Pi+ASKd;0I?%dLhm6;?;ur52vVej zgidGz0YXV2l#q~w8}K>jyyqRy``$b5hx_4X3`RDv_gcTb>io?)SLidK8q<09^9&3O zOd9G>^cWaUIxsLCdvo?Q{V#Y|yKef|F)uweWrmVIPAvVGla7zHA2Bd|hcZ&EPtkur z_e$N=i-Fc{ea`^yCljpl&cZx%w{hm6mS=IE4_CE9DM|Rqm3gTvoqrd}8;!?X${dOxxHw#MQLNZm>WAwbqldu2(9}hpr!pU1zPXxddl)+d!wc=@q`&_* zVUeT1)Zu63LnPbL#hVA;{`0nK+RhA(y7et>C%sQ13b<)daxn4%^S+D{co)Fa-QP~w z`u_iYIpZLLJcY-&L1+|H?EO#0 z#SLjQ3E5HX>bb9ljQeN6SK5qn_-Y(Mo}L3cmTco)3)x1p39dqz#{0{fxdF0XsV#Sr z@ul65WmgqbCGYb%Ywi%-ZB=u7y5L&*w|n2!!1RMvr;dV}6?VBUwzWbU6@~&$nxMyykb27#AgVMF5w}?KJ{?icwa^N!<#*&C%z% z>+wQqBmJJ{);E3h(u7XUX%gyPxzJZna1h$ta|Gg_{_NRGNE-15B9F(7s!FQE=<1f zgk83|Ji*ceZc4HZnw-(7K{LHpV1XVDvkhSi`MN}Xh-~tMZ;QebYVSE=p?xSUF=qx` z>n_hF(7seZEv!0(S=ytlJ=F;rv?Govy>!@hVv9ziJ?dMI!rYU!@$0c8?92+v2DmJc zDQ3JNd-0fl#|FpM*v`Z(af!apK)F*dMX6V0FpEw)woTi&zrx#I$3x$$3;D_PWaf24 zFou9Khb=<;&OMNp@$th_DW0}m5)-<*AjPivOr_^~{f;?u&n5SY8fVhZK3u))sIl?ncyCS|krsg0@|tUuaZcKF>c#JozNB88`t(lzIlmdV8RS{WVAj-@ zZS?NWP#j0@W915mjZ4?H)p9)%h*W@{tn6e&W8ig2&3xoBact*;w*RQM;%~wXA-$fI z4IN>HxsMe69eNDBEs< z4rMW3Y`r^}MA^7N{gj$u{mKmgo_b1jZ>sXgs<)Bsr6nP}|48l?Ulf1%3jUR76mhxTx1;(MFN(-o(jgD)W$3n>G@ z2CiJ-dZZ6o2KF|42by)%dM^yqBH5Tw&jlT`XJq2Ta1~phd@H?6fmu{;$hL|rdsNNL z^&Ay!Td=koR;IKaA7}chHuI7485Uq?^+onCbrepyxqM%9|kM+;Sx=pXN% zAIDz3w@oV&w(J~yViWl?%tz*Km^}MJkg7t`@YAa)jRX904}=A<#7|e4@6AUfB>y8R zj#XJQ%&xXK;?Yf_c;q++eGZ%qmkWxU{`geQJp24rLHju!!=nj5TmMSVAuWkd!X~Y# zWoawkoTS?3q?P39djmG-DaU!uvr+(?n>vnt?V*+$=ys!TswDFsUSc_1XU8+=3(36( zam@+?%?0~hdd;z(xGzwVZ3Vq})Pl1D*BNQ`p=r)WALA~_4L3283{hiuaCc$;H7uU^ z3`tO3|La%NdEKCrS0ol-fPh_=?a^dt{2qZz^0>Dxd`g2!PS2vbjn*95$46{)iW;zp zdzZU^;l#|vNiz*Ki{Q+U9X#1Ex7`w*qX#Jt!1kWHxsE_g-bkEsfoR0wrinnZUJyo1 zeRAN2v;X-4dC$>7GevuQ(TznFNL#Y(t~X#ZhaN%39a5%PM0tLk-FvA$e6<(j7O_Sf z|MBlY@Bp@lvyAe_$F{r~=iSN~&;m*igl)AF+ODz5zA(<60TW&%0D5F&-@4oqJv{AI3Zr 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 literal 0 HcmV?d00001 diff --git a/docs/images/quiz_end.png b/docs/images/quiz_end.png new file mode 100644 index 0000000000000000000000000000000000000000..aeea6e0f723aea19ff405925f0684df1195fd249 GIT binary patch literal 7894 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%0A-Ays)IpiDtwYU!h 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 WKBPD(?ZbRai}PuZQ*|e<-2N9eNF*}= literal 0 HcmV?d00001 diff --git a/docs/images/quiz_wrong.png b/docs/images/quiz_wrong.png new file mode 100644 index 0000000000000000000000000000000000000000..6359608f8b9ca3c23d5c9d76651ca0e738fa53c1 GIT binary patch literal 42391 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 O(c03^;_*?>YySrP+hOSd literal 0 HcmV?d00001 diff --git a/docs/images/textbook.png b/docs/images/textbook.png index 3129be7271146b96c4695b4d81a128f1798f52c8..9259897163c31ffd948a9a8bd67cf2de1f4669ec 100644 GIT binary patch literal 12520 zcmcJ#2UJtv_uz~AMMYFp1f*jFq$<)&5K)Sh&=I7FAQ(VefDl@&2qGXIDT&n35$QE5 zLg<0er9=o22qlmZAP~YtzrX)`Yt6hjGjFXocdaD*CMWlvv+p_k?9bji%EVar%qhN8 zEG#T%^!4tUv9KHqVakywk2BvLu9CZ$A4kAux_4R1`vsPnC;zx<8ELVwRK~H>omiRY zY(9E6U=|kc>wjKH^v$kqu&~?=)4!)>5#+Eot!Yl~<~gx}FFR;CdK~`aF7D{D_SgB_ zQ@s8W+-o=dBi{3hi<3TJRgYcVGAU*~?XAVm9uOqR=%1ipW;^ngE$UXd=I#ElpHp8{ znkH67n=)RvwYA9}W!{#B<%J;)O_%*Evbda7{nKma!TY9P=&x|+cy`r^ztTsorPU*U zC6{ymS2O<&6zp(6*qyu2vCalt@2kI~EBIqO{L4Y$c(|G;O0X7pcGCOZT3y@rq|^S| ze|>GgwYCY@_%ac+|5vkd;_vy) zMhs?4eHBaXdPxHX9@OHQ&*H`EpF7m5Ntl~5G9=Av!V3W1)wsZBW=B5SFmHK_U?;tw<16Lfl82vm%uHGeowPv6*qr4SyYOyB#vXy@dHwoWR1L2;qugm{if-WF zh-S~Qq4^7ep#$07ebCg#F|kE4=2a&G{-ed>{qaXqh1L!EU1O;B^{=wI_@z+jA&ul->{n+nPV(}ZcFbvsD9mHis?M(vy z(Qp_yUNBGYId-VlPd+#Ny-Oj$))D}0xT@(j&^{ea<6(}}b5D2uiM51=7o3j=#e9;D z;e0Ku(nWd;8ZoX3I=+xN$m|j9?-h@`N<2Ikvy|)6u^6Jo-qM<9sX>?@6f`X68{E*8 z%^thc-tPGR>bzE*5(reH3CY(bFJqfq^S+Pu2u?dFK9h=j&YU^nFSFW|9rHFj%8Gup z28W^mq*2MO3$fcMCL+xVZko%23#MF12mkkeh1Ye7@{54S}Iu_k!ztw^1qAAoAKjYgqWk0?v^;iTd!XCbw zo14Y0({L(Wy>arGi|H>SaG1bU{4&HRC}=mIJ2lAN?E7se`>>hIjlNQ$BBala#i=(O z#m~jaEN`!UfK`}Ux;9rWJTY9G46#OU%m?coNXNV~;@pWL*{)?kjPZlVri}zZ)!4Q} z8J~1Nd1S|eMho^aK&ypPTt)J`! z{kp{iei#CI0^EdxQTk)uw)uyRS=%I{q>H) zXL90W=*ezXH|3KO@T`;?pT6~=byeI!q1;^tdv)QZQ5DrdhJ(tJ#`%g%MYHLq-Yz!t z`^OI?76b^M7QUm1A5AcoF&R>v9Tg6~#W}t8MwX+g2W396R@PV}j|(;I|Fd{@yJ`Uw zYJl4~rG>3M9a0rgqO*N3PCm2y9>?>VG=u!X+_)#ndxAUk*3>5UkncP-X|GB%-54^O zj5Ayyd4-}al^mV?oLY|$kq`P>_u0}OU_Q9gDNaf&`Bz7CG^-RXCFFQDb=%!FhW&Qk zXV1{Q6mnrT-E(7O?9=v_5C&IKrknm-d7NXizQ@2dOEHdnSxlX(?2s-{Hf>jTha?!u z9hs*_0B6Edq&R|`haQ1_-8pKBB)o@(C^J>kUgOvV5fGe3y+6lh>^+E`T|L29G+lgB`}tVLlU@ zYIWyU?H9bWlr^lNLcYQ2!@_oJYh4W*rMIkehMcLUE|sGQ!)?deM7Mqzdm)*Tz(D9m6zn(I8#_H?5UW2@Q!E1!W*X~nz(wNfLjC1KI^FYd zE6kxwBCm9_U|Aq`!o;s+UQppgnCLANqZ4kjb!S)a z{p}m*TgZ1I_$CKjzJCMgd4-pm6lk?8b*w0!@#-pPTaw#K5P0flHTK%RsU$~iPK8<_ zC+1qW_QMMpMKpLWl8_sJ1Riu;6BiJ+2?3JwuX-+$)-;glaa10mwJ$5vE_s`}zBPt! z7zEk&FK=3gCDq^DOtO?%@U|$Oc)GG%e4iFSj|=ZMs!T%0OK`;Q_R!{{P+nnQSsS9^k0W1%Yfdf@gH&O%vztgqI(^^77P*@em1`+;~Q#;zbNx;u`Ug_rKJJ# zT^CDGj@>COkBAGVSgW2TP5EAm6S7CVQ*oG1we)z7!A-2hRP#^1?5WDV&HGMoL9Bo* ztn)iaM+K*_n~!dMX*xCJ-i8G=e%zzXc^xz*T#$oT>^!%uEuNyN-cr-#M_}K6$=sjv zN$VdjJWe=sX__ot(`pISdgOPNMUc61cEZcrlw*)KUAH6dh7B}1Ivj!>*?|;{5$sw+{=NGV%R8k)=Vw2t|gA6aGe} z2~aiKh*(FKpQMzC0YW*qbjY6psY;E9jSHGY+LP0eGP8BO;NRZnm1SuJTpkTQTBUj4 z9iY(=k=%_*^r%dF(`Ek*+!;UExx0bNIE^!&Nml&bZ(ovv#Mor~T6?bo>ziUR6MakA zkK>kslU>YW?#;9r#Siz4fxcz^8cgFzQ>!0bj9@xGc|)W9@F}jA{n{wv*Gt{*zGp}n zh~ekd>`b|L24`pq*=E8FNaAb=ujC5Xa_-pYXm-5*e6(Akbe_>({|-XhPW@?i;xD(j z4uf^6J*m9J>kU7Uw~$-wI@0o-PrbxhSnk-a1%0i%0(=l?{K&5ycTbNX2n(-{?*$z1tXOtY>$Js zKHAJXeFo3Y53Cu`|D<+j$2>&YjSg&z6~`b;6vV9S=(;M7nFu5Ar}yVqAwEY~e($gi zPbBKxY1!hPB>IVsjjgK{tBHElba{G&$)igp+B8lgMtV#QDSC$I>Y0}DAt)AhpHTpuTo!0ISk8`C0cTJ z;5AMY{$V(h8niIlaDh{}0tlZSHNR9UiGPu|ROpqG+j-mS11 zL9=L~QLAr;@598PZLe5-({U#V@6wKaR;_})B6~-;y71?rBKK?MoS`!@v-YL4%?<9+ z<$a`&801tP^ZM*K;$fjs zmwf!SU42#?Wp!k@7iTX3niOle?EphfPuxlB&}p&CwI)6SU+esoFg=T$kS96j!U|6A1jSp~sUFcs0A;m+Vb>xNnmNuXBfyy6$BvS+zU>V|6?T?h{x#`qsLjB0b zPo${t>~AmQceZp*KHL}Rq0@T3Na!PrYx{2>+8@d)34A;HQxnuHY6v@2&EOcGv}d#2%YS zn#C$PZb|sxrpeX4xS7W}Q0%8p!+|0R|FV&U->XvfxXB|*k>x~%;_g%l1KSUi{)yip zXlWwN&*xhuuY6JZqd$-fkwxJ{6Y=Y(-R;hfe9~&^mNshrA>5>jdBDoBHeO(LJAS}i z%&0IVE*+)C8UwVW@z;hMdq9t|yucBJ8;(J3yM5bQbz>g9l}J7wlS=1lP(C;)3Fo70 z$-wd$?<%^^*gI_3(~^y`%1Z@HGQ{$&<|$uw$>k`*U!Y2VDslwdAh4B@gs2f*h$(!y zX1;SmoozB1HHb-7qM%ScV`Fc;WMm4llbBDJ2@|X&(%hWv8Yne{tVU6)f4mvRbk9aH z%hKM#*gy@YNeVkWCuj=q7;Z&idm_{bOwWRkhcTf4Gut9cnW62csi1&OfhVbySl_5y z8tikSUL;X{jicMsgbEf@szz<*jkLNP8^Mz`fJRHcwguR89BCwWK1Wm6RZldR%NpU`IqsOi)Ky=%I&& z5dkk6Ol2XEB2-ndU${}3AebXDsdg(b=JaI-<+V4zSTgFXNf(W_Bc0+br5In1+;cy2 z8R68LU}ZC~p!?zO%`ga~KyZ$t;d5}5rSo{rooJf(eLe&0*8odRMWA@9FFgw>YFcr( z&f9GmWW#>roHUQKJ8otlkZkiP(z)UD=F-b`0qxx%<2B!U3!R|ZhHp@I*JcqH(nTe2(BG@MJ* zMhd@Kt=%!l#n>E{MF=3d5$22A27txwQo}GVRp*!7HXDmwQtJK6lhl+4GY=PN1!8T) zG;uw3d{MTqk zY>zY_VNGWIW3B7L!C!mOvEXwoED4-z8X>UqX9E&LrO&0xO+j1F916`)U{|j%Pwf6l zx7ZUXdi!|zuE5nCv)g-j1!N&S?l5w$Xq!RXH@bZ|T`l^yp* z&ixj@*RZ@qdB1+zmUy7LEE96nPgr{ZB`k959Ix;xtR8qpBiFYb{0zUE#0fm}Uz(3dB2)l-*-co8$1r|z$R(8nm{EtfSs1Qr=T1)tBFxuQEV`hqB*tC-5_tR)Ch zZ%YEI2$!v0NBlxObsw36u)2KDc#nC-J31v}sk0-}zxN>TI_&M>r)BUvmpt;&%wgmX zNyUMe%?~6!w*VUGxmCm(U?DiWy2Oe@-B$vr{>alEEJOsf+sydKDfu6CtU4hYuyJYI zM_4xa?-5tI8l=Zs=cD(c2bB+lKMmkBA02_W+YQ_ASS9OeRDLSuW4bpU;F9d|)qCM_ zDX}+~<8@-`G4B-`72j10I@XA5Cg5?Qn?t5j3!uC?&?;~asySEky!=6cF6@qdbH@GF zLxtzps&=ydXlS&bJ8lM$NG&30y z^mAq`zuKXm1Kl{h`3f%U)OlA)-m3|IwArxUNk-|$_LsvcbZ_jzB=To~F~?$#aRo`3 z2sRieFWVLBlJ(2ph%ab5fl4awmC~4@haB~?FdxKZ#gMMtdt}py4Agnp04g{7%t3`= z{%|sGo#D(Qr=hjtW?z|F_YYn++CzWsPLGO4YjGTNr_Q)fT$R>YX_L2T!%Uu32IQN0 z>4Oo!aP`U;iv(t$6iK@T4;Sb42w2j(!=D6(*G?}C*JSSd-zm6Fz1RlT0<;$Up5l?G zJSy|s`;2|)H)S=##OUb&uk#wA+Pc7d4>Xm2lB*t#g_g zDB8X>O_x?DT~VEUMo7)Qm41pjq=%)n9w>GtW{Zzd?BIviQeC4q1FvfKGVmAw4&u4* z-$5*F-i5O`&_A%&GA-ciXKl*IPcr??u=pY1yDy8 zB5ZHNXn?=#^~I8GG04k>mdNTf8sJlcd@)0N**8%$zEoA6eT!2z%ZAPTRuBFUxFZn(xj-pazfVM_5E` zqWrf{|DiBn=YWvkkD{+i7!_9{eXr1LAzC%*SzxO!+C(ANpp6#=-PU4E+FhtDxf zP7jlr)Ly^zn5*q0*3z*(3neyY&*y_jS@sMON{!Y6+u`O-T^7`BtF~X5ZdM%9{0dW( zObh?heg+F+hFd=-{i7E0Rdv$cuYO0Y`<3wQ8-qBhYo`0FoA(oB`vL48F8bvgpx#?e zO{Sbwlymuof5adgPld+%-bx7#ex5l|#Cj=W8VqJXDf66a8A|ggZGD&*=kQua#%s9w zTdD}<TUzKkpZ5WZq^V?RAqdWs8RTue~R8gycRL>$FSv@hq%(k>=^1!IF|9qPXud2@Krb z?x$lzzYl|<*hL>IS|mvT#$agd4lD|{B?>8#@qDx3En3c+?==WE!HdZ!!HkkM{f)fURQQT)Tp{u z7NAzQZG#P4DRRB-l9_F}!+8frlHamMiin?9E1Ft_6+ZL^HK*?S^oQkX>SvIZ0Nz_R z;{(5y2=r_EYA69;P?(@$4Wm2A@UJa8zji171sur3j1 zu#@ji9WvemfdhLsk4hJwA8z8TP+goe*{8Jx9XuR)m@`I*Ib-I%Q0i>C?udvn!uI_; zGB*j+mur^3Lw13eI@A-shWW}n@NTTzN?kDwb`dvBbS=k>BqaO4dBy#^jh$qG;2HjX9>3pjcikEsf(b!>B9ht?qkA?ud{ ziOm`aU1DbQDSMs7(u!BnVz9D@ey$Ca2M#`(&rG8ZpJyU;{fT3|x2$ugnni#=4@fq< zTmMx2HS0MYj&O|NoKfz;H5XIU6XAE>Ei5^LUen32r=CspQxC33E}QBG zJoCHY_zAT_(J*85+=e1^V0=GT9mN25#b5zLoCV>==Fmx9#_TN?Y*E6AwvW`DZmm;eGse1<7F!Hp4l-#$#0NC$t!4VJ`wmYWQznQ9mm?`xibj8RVv;TgJ1l%&>UsieM6#m)Z)P3vR zvErt%Us)pt^02gY)LKE4#wFwOcf%D6pwaRH912!s1~TzBw(#5rErE5-WnN8trNSb% zwuX_!Sjp`5ZNjvh`-0nWdD`;7er6Spb{-;KgTIlCvY@|JQP@p;x_{oX=x`p^>`O>3 zuip`#$)MpL2aX_2S19%l>p_RfyW1#ZS%B$vdrhPUT;H)`C_Ky%fU4aOZpfYNVY1fZ zi5pa^LUu+pd+}DQlAnGu;S0K{i7sX?TyPx~sNZ;aA!(SCM*tNajY>*6r-P`1&~-_% z3G3T8M9*~cDM4S)yd9nvI(?zeD*4$|Ykm}OQ$+<&`jmYk=MC%Uw5f&Qya~?^P09-{ zt&KHH0CyC?)jY)RfEkHjx6C)sb0rvtrC2%5K}SL4c@7#jms~%1 zch$E6&;A34;`vT|dwK++^$acc3TL8;Y-m1+*lklX@IBzoql?)HGfttFg83S%AfdL{ z;Cn?)Vd=9)4tHb8{5`$?qDDIc3vnNC(vGrI4QYnEgxFzGwIwgv_fNf%>oI_ZvmUcR ziHMV4dAz`Y^K<=ce)Kz>=se$seWapn$~182Lg$~^qj|%oSaaw&mC|^vhkuU4*8qGF zMMgB^{54{jkwq1iGWQLWWiNy)dAH6k&3ph_-8f0g5p~%&)H50i%{%Bet%1jixytz$ zOs|-dbgg^8<3W~@!laeAV@u6kpfX%W4*h}Jr;{+D$1={DRJZh%#Lt^iPjFOldVY2@ z^q^q3ZATBhZ;qsknF=$GYxTUgI|jrmqilw3-GJOqOK0n3e~3_g=e-YHN0zvFGPbwL z_~-IVp0dF6!&7`UX>Bhzn_4>COv>D=ie_hLM#mkt6`E(%MXedaHJuTQAx5zk?)R=b z>peP`QLDt=;v-Z+Z&hK)UA6?IvP~Eln|7dEp99R&c9%8^?AKsDr<}BguHwJ)^Q&5; zVe^l9k~u_sEn?=Vd#V4)2$o4SN1rlj@KWbHx(%Qh=k; z(r669)S>^^^{_o7o}m4CRA*bSGaiy+5#DYO572)HTGGROTuB03BKSbyv-S$ad;N}# z$waALlWldP|3H~{R^SN1l*oC0KKOiuaj2BXf|IypHLJ%(+6ZO_thbonZD&s)S<#2% z2z+0ygpcdR8LJ0$!!9gH_ioz0vI7QScEp$2B+SCs^ngiZ&xLF%UI}QcJFpU;c%EOE zuYRqz@j*Rn>x{mkGRAuCy4#1{!yS;Ys3klgcFeHBH_m|6?Vn-EhH0%xAdgd1mBMXSr}WWq(MOe*9R7d!aun1eBG zoAJ(7Lf);^Ymn~Q8jte@U!S9&zIV#KMIQN?Be2%%keO@@{kFa7M_+d0I*iLvV_-j) z?;4(~>+n-j>>WPKkNEuIK&j~7)tVRY;=^ZP0hCt)s>_=zc3rG<7SwXr^4Yhz**9^> zT+w2M(QcH?4OzkR$LRtF9!D;5A) z6EVopf<3n_Eda;1rwXRNx1J)oPA)azJ2-HCx#$`^d{j~R>*Kg#qz0etV)-s_z>_a* zQ;pOz={sRUwE)xA1INZ4lDXyzHY)DpuBINIru`O$PFcKMfzzc@52Q(LmjG0g4V-n!s{K*DYp*lA( zcgZGMO=dE*-Tcyse6Yq>y}j!UtG#@HCo_F{opMBdYr6smFw9Y35vZ{KNEY6uk9Y!Y z{f8z@#4EliTSWxGB;8<)9bzQCdPu`T5eQPtD ziQmA3AED*_4)H4~+xb$(kNK-SBUdgxmyvIf zfa*qOjf}iM=dWbLm7dxqX#e2yWCDYk(K9`nO8KU(w@tMG>b-uV8s;b{i$3f>e|X{s zC?t|O4?Fcq%{`SgH)`HpzD?_?!7gbuvyPxVmO_os+ns-a^jPM|a5P3+OBZ9)_~==< z_V?B($NV47x@#ej%cnSjs*>jM1`BB(Ft<<8EWS;D!2PP`nYjAz4k9E(Z2jeH6qZ*> zBPN@n3f*4k_IoSBk`Q603kccw2D-t+(C0Fb%>n7y=|1~8rE7ELnCN`n|fwZp3a_B);aK1~^fm!Z`Tu2&UjOE&mZ9H^uF8%w{m0f3AP! zmcd-GOTH#L=9%PypHNY<;dOum-#*7AU^x2`ye4i;yH2CQC~Z5>Yp*Sn#mW_shPY3H8A>%bk3srLG332Hp=#Ex7G@q4HS0#a;|Kkv5$Spu`mXJh z;7QWlrGz6hNcOv2Uk96Lld81+w_8iH>qoOZ{hkaP2)}%nz3eIMMt|L*yKbRI^7CZ) zmL3nV664)lH9}cjB2idlbmKhGT#6_uzd`rp#qy?Q-1qm^`GcQLTXhb^cHSyms3SRs znMu&aic8V?^M&(4>e4*)&n1)Xf|xLpraNt-;%Y*C`3jgXhBbt)O3;sN0yy?hvu}$J zeF}b%Hh;^&S>NhCwal4j$0s{Ycx(P~&!)Y%^5mdRL+35Kn15z#i}w$$+Zs|^Wpxz2 zWcK=eN21+|yJ4MpF0G0Q?CX%6)8=FJXYJ* z*Tg$M3~0y-u}ep*W2Sr8W~Zm@sosQb{yA>MC05jfaL(y9=L>G3wS8^rQ`7b99kw}n zy7s;9h+)QJEIiS6ZBxfV`dhNiPso}+Z));Y$K{7cS5hEtMU{JUu=i?Q8J(Ob2<8^N zIZ{A@z^IED76Tr1ykk@r>7^%e_&M<(*Vl)>yp;2JA z;eyRb4YMi)FtcNI+`mFsC*<+|7Z~!(n3|?lX!Dx3VB>=BPLRFX0ASb%Hcl}h>u5lw z6^n4)L#zC{E(bcAuom!<`<_1qpF?4vX$Kb$Z#QV81Wv#w*}G0TXc`=w2~EEOsR0=}1NugWj)6+U z%H!-ls(z;Ze2TrTzP_wKW6f*-i%7YNE&+!PYt97W5f5mpV>M8|q8}6U<8M}0ci93o zu;+Fd)ON>k>@Z-MM+QK?<`8pwWc8=E|EJ|uHjsapG9!cC`JsIrf05jGYb&l_(N(I+ z)o>!nOSozrpR2E=QH=kXAQmh};J129waGF|E#)4m;QmjxxogSbMRpoiB;gjV_`F06 zHg1hQ`=1!(>Fk7G6FW{ZG-C}^)08j4y11Ld52@x6PO6~xMLQteX)4rTI7cg|*Dt75 zNw+`kUj};2mn-%OFPrv9J^575xTvT;8{eK_6>Ss*+pZMRY9vz5p-Z4)!)i0Tc!XlZ ztKphDclj78^-7O&7ZaxnU9I+(L!S%cnm0UziEKQ=AkJYx$W#=eKL>O7);Wam*hFH} z2SZeg-O(?qpT4bSUgS&h%?^YEIAB!zm3q!ULzeRZqS=;4F~zZxW`n_-m6rV} z>$KqR*!%J>o#~DfXZSGVD-^-e?ni0(k@u*@&4>@E^1mCBcCs6X!sJO1P~OO!X8HV@W?l zTgIO{jtx~uO--1Clioj71LspLFevX(`Ldd@qW&`lBR(phn$@29Sr)G!h1R9My>+}i zRrP_B!eXCic-gC46G>}9m>HXvyp%5-4Eb)`ER}pDhstcMa$T+?&Wbfp{Pt6x^?BBoP`)*6gp}lmfC@Ym&_{;mLHz-M;zj z8BZIA#AqS4*IyfH)mlfh`lLOr&s%v|@$P4PBDcn&vGF;p89tt6OHX5E`z)>K`V1Fi zhGvdA;;09XcZMv}baS(sbTNZ;(+t|af1^9ZPo1+Yv8%#oL1loE|6MfsZn<7f$@Ej5 z=CJUACsVl&6}q{Dk&9%fqI)$3r&sJ8Yc-^%_Y@<2sBAC?_lBNAOU<4Ow0?@lJ@tU` zGw&9^DQQH*#WW02;frTa2$P9XOzy#Pa;uzJ=vUw|iPa!C4otewWYsIAM}o~BbCdMp#PMy&T;G0fp^RH|wmpvUYq?7r#p0Nb`%U zF!}xJiKq0WEDxn@IlkAj#9A6%4YCQUF*?YS>8)SQscQM)be0pgl2+m>K)X{k)|y{8 zbfkt1=IfhTe(o;SB5)m`ns<2`wAnsZdC2Ox>!psb3&7^q3a;8F8+61qsXg@Y4e~ZHL*tA!2;UEz>Z;(-(k#3{S1>@UM?c&<$WIh9N+i{_ z65PjwPIci*g8O8^41yP(mfxz)ENoeGdt0NwkG8~I1LQmt*E2%dx z50+x26AJd4n)iG4P&*J=672`uT$*=eoRvDY2WGd>cVlCd=m69fs5qG}WZy`8%4Q3Y z)~c{Rnuu z&ak8_{CelGFM~<>hUU*tcw& zb6)+BjHa)FfDMSH>r?bjMeO(eX&Lyoj@j9>92`oz z^6uf-{b>&gc~O|x8!#d_e?kuMhTLlKUE9t@Jkn4Rau#$RyQvtly$*Li)^+EA-f|8$ zo^i37BOsgJ2GO5RY@yCtmFVWOd@+tN_uuQ-f9}%yYJEdKvY!uYCQ%+i?f$~e>nhq7 zAC4<#1{L?;ZePBmTqMxJ_HTf3(1n;!{8xN@=l^td`sde&2m81&^Qvcz#=eA(7=uPl z;{C`(epW_YtTgA*^Ci4FrpI$osCp`MUTg3nWP=TUy@9=~^HE`m3&rfC| Qj)g`4zVW^CyN_S}H#nP34*&oF literal 12181 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 LRV{gJ{pNoGbV`Y@ diff --git a/docs/images/topics.png b/docs/images/topics.png index 766e0cf80235b46671f3cd7f5a6bb40ed559bff4..d52a6582497fe76e9c873138f8ccaf51345f03cd 100644 GIT binary patch literal 16890 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%0D>HvT> z0o>eAMPqmTW(779Q9c`rxINU+=FdHHq00ndxwUQZK&fqRKw+ubz8&O|*kCAajXvZPzt5+13TPCHGgF-sF!fvCHkOa`#b4Tw_u_Y8od3VTsMkfz7Fv z?^`3d2lZ>SFVuh-LePY2Y^rM*)pvt5?4vW&7S`EG=(75GK446|HTLs27M(J|vi3=* z131vMQ)-6qV%SMI0FM%}tCRa2Mg47bJiYZZ?8Ca(TGvQeU94CCuB!kSPsF-yhEaKr zmRG$tsCxdW6^3HoGZlmH%6G#`I z&A_L}Vb&txeC@xWJlST3g%DF!yb)_)ZaCk>&A6QrzW4<$UyP@vvRJtfsaRW3wD+Oj z$Ow!wqxD(_6jdK##hqSTz_tMdi$!(3Z}Q2-GAG-3Tv6J;6>!lNKIk|78Y(Q zim(MI#5^BF&XWhQ7bg%a2VETb2rSls@ht|^xoLZ=w$6#0ms(+C_vl1j5~~ zMlzNqxfjx+X z>YA-PCsw{ct@n~S+4sF{?tvu}OeQ)8BIcKDPdBuXKwn1ZT^DJemJCK9JN-6hrz zG8JNK1v}ElNLD#Y#-g?^Sr!Ek_@Ss6@_4OufO63-7eN^Mj~V zQ}zrR^+9Qj@>2^lF<^4FGlUturrC_%pbkm^mMJEFfQH>2aLI`W_G_Vy$QGv89PMA( z<*O`94{x>G?l0nx;J!`}-+%2vA&T^fwzeh}$4FQv3g5N7)_p&6#lNAZF-qRPo3w4K z!gbqQr9bMoSziKYf#6i?L03XkdqYNc>uCDN&q(xZ8)V}YL%4lnP2-6S_n85&FlyMN z!+Xrz13g~6sjLz44`|b{U+=h*(}YKP2dpMi{3C zmWm-w5gC8`wiA&$0pctw2fwG8dyUSbwuXMnaz29>BGW2Jm25_ zu&meN%(a3$hw6;51DIoxVgcw#GHGc*L+$}taP z{oFn{3EpNg(C+X!g85wj-D2K%Sc8SQ)r!gn{i3{d>9D-eZfFMOlj&{7xLg{5mEt4G}p3@V5&f$u-xjM9ta6i3P}EPKWJ! zHUid8s|#^s%Ukl(_&T^)ZD3RavUrIc|9ZC=(K4dece7%<>+P)S^zUd84!Ib14_2$nn3F}xK!2)z!4WJ54MBryg zAzS-XvbTrcKLc#}0e*p-RF84kF{*VCG^Bw)e zjB4hxJTejt+K0uoO$v9)+r7z1EQU2@bG3vPeQ-ZmftMbTYG=e~4)7O@o z+S2!`i>KmIYq-tZnu`KES?B@pyGpd^w8*q2KDA1&B%v4)<*@jcppxkJv{i_OIf%~3RbT6Qze5{&GU92RQv(BLz1~}qq=jWmy~iuk7Zn~hE{*`4M*RL+@Duii85ERKHhyTwvndtX2dL(z z)GRCRj3&>#Yw`A4Aul0AYE1`?&(1s9n}IEN4b?7(?{@M(7X|@R_pde4*736x(dxjK z%gxflQ-;%Hh|YHOD}(~mpLD22_e2OLduRNj3eaolAXMM-;4}DsViUX z>Fm05LJN@+tIk)(%553B#XuJBo|!Tp^_beB;Bs}{wfG$eFH4j2%4Gh5=LU;@h&yR` zOOSG}c1`weae4dd+BUDs!_n;rgYbfnGmMOto3= zd!fGzP!VuxB?{FF6q(q_Rcd)-}qX4*@lW!IRbLZ4YD@s~aKl^4X zy36&S39D3wf%CU`mqH^yBVq`zTEhpJfUaBeYAhaG4fSVy9HD^+R?%6ItI{f2||3* zn*aTrgTM@mipY3BE!0`c6{E5BL`qqIz%{Sg0I7R6)(iF(`oXx_J zyqwDnKQ|h_e$ae+!A{;wlBOgc@qS0HrTp~1R<_*n z%F92x=%idL_o+WvU1WRXn7ZdlRL6xhEWEwuD<~L0=d38`3`@^&$|M$=b(Dq-JI$hk z#L7zPg6cl!aYXROB3b#)K*vFaQBq@L)J7I{_6s}8Us5l=ob({4CD zJSgz)oj{+Vet!t)@|&V$k!8NtLZu)fjx=@NwWFp;iypV2y;e_6R)xF$obqJ!&SJE9 z5ADGRKO?xuxVWd&+w+mEQ9{}GPPkax*x2Nnwu`o$`C4-JIj$AHu7f#UGn~cqoRzY& zQDwCCVj9$tsjRJ(X`EE3rBB)@g7kugmaK zQfSB8O}^FE%7f2O?l@+s03@_2pLn1a_PkH19+*t*b9GHp!mYTpfyp?N##W$d$ZbNJ zdC%oj`O5@r)oE|{98=%Pt9$AVWw$j6MF(Db*=*@%QYuNeJ*NnfZNVu%-J<~>6XmGq ziuPL9J(AO5*9NdI*#fmz{#5+~06&YIGoVkq!cUm=Gh*;R!rF-+`k4E@2rrB-|LL5$ z=DxcIR;n0kDMT0doVPynH8bYT?rZQzf2YK+DZLVGOA!aOmNM7@bJOb@PM1EM7r0L}uGM20hi^G6Nq3PQESU>eVy&nvLiE^ zLmhyhG*PDmiDYK|kb_~9-(26RnGMD$60*HV{#FcVstezh5+Ak5FRDp->4Vp=)l;84 zez~)8+vsC?*zM1@SMIAt7|@89F(xnCc)iGzy*bt@78;#Ca^&fMBUA5w%ZJd<5)iJf z+%}c=cTAlE4g5;Iv5F($Anc8W(-8=v+|*9k*|)_LeMHQ_VhCl{X8d?t68hsj-ZZa= zs%v6%>s}0VH+*Y{6oh!q?20Zjdcbyzn`l5$LkR8fUpt7n5vf+Vt#gKO^NRj;uRVWy zN5YYflufj$&a^<~C4=B3PQO=U3bDa+xh7qkUcJZ|`*>1F;Mpm#5ts5Sf#<&?oey-WIDyyGrb3h4|8j zz#fB;l3xNcq%dm?D9G}16YX*0czFnF+`mcQH2byiowR%=BI$WW#-0eJKH-4NDTQuP zxgr`EZ6Ro%9P82P-;(K362QW#;WX7#Wy>uO7eLJ5(PiijQ=!xkB;%jtae_82?Gt#H zY~}&!$)sgtX7@!UAwEnO%9`kok>8Z1<}r>Ct5Q&jL0LK1E;sjjllK7mms z#HvWsuX;UnMxhKI;gSCH{eDOzzolw3x>*l$eCrvfw9+ugv3S8hdIj(}s3bs1=`)#R ztP~Y4s6bz7e^clVf!EJil=7ZjE2;Us*Io8^9+6LSJ-=Gbwa6;tm9j1$W;m|pQeG9* zf}_^8&P!No=ABZ~Cy%-a8Ct4gaXEZCEI0MxU8QGbdL(!|*gK56zy);}IJ$khdU{7L za$hpH!%cn9R4>5M(G9AcF_qdyhWtwUq)<0Ud_S^|Cy0Or_sAwJ!hjZ@+ZFJ zy1%&S?JvsbIOw`Fuq^YA6lDCtw%f6i+N0v#I+IhDV@OAloX zUx48Df8sAg)qe}bJMIFMI!~LjdFN0_3UQKt=Wote76sqS{+N~E(L^Nu+KVsQZWWg_ zSPg|s_^yWpvg|31h|Udqi&?oGfH1+Fkz0b7?#`*6bxD|Zw)7wz!h4_jENfwb|BA#6 z9r71F7>(ASluKQdDi(MllKG-(S<+@~i1hIT6S!cDMH-dB7_I-*YmOQChq`7s4MQ

Q^z);Sz?)7zfM;2*aVwh@!~=;J4+3tCJ$gayVsXni&i3Yo@UUozJwo2*o|;1nCX1kP zI9zw+cxmqYY3D!B;3=B=2~I7;1@;Qca>rZn!;{16`r6R8u97=xmO~x=U&mP$#7b$_ zk${j87uziD|61)Cerm>9cr^2Pooszpg?n$j1r+b18Z%zaz(zI$fdCR*xlKJGy}#&BS7zc1p22=S+VoJqEugZ7 z=o_604OzgYAHS!m1F87nyMikYe?DHC&N-$EQ(8huDzuLklySb7YumLgc#C;W6+cGj zT6OVXzpT?=^(ui`W2Qb_*Wu5n>lw(Rp`!Yv(f8Y!aY&iYrk0#@Bda_S`RX15b*wda zGfyJ#;C)HEYi~Zinm^?y3r*nHu(qZptoqs?gA^_r7soajrwE*`(sdEsg&*2(h1kld zMd=z^$or%_64LX&kMsLFOe1V)N*is?7(HZUWb9ngJ_Yfr;OWiGS*gG#X%C;a<1&vJ zmqKak@tEqhBAWZ9PUL?RbUL}WJPOOjG|d9r+%Z-zqsiJmUO-3Gm_g$v53puf2C&7~ z7pxHWdAGmtPxJj~7MA_F1~o$KKYG^B@Y7J$sX`OV6@yjdL0lQs;&~XPQDWfYKYl^c zhyS+q3I1!wpHTnzl~!&?h~!zCO3g6odm1|F=~P7zPP;RZ5WwaCvfo_`z*2L9Y-Uyp zRRf$W=r%igBN?`Io5nosg0u8=gm0$QQEU*{BpZXp#z+yMNCufX(!=y;~|Vev&OkLsH%~*Yp&?AE9C%C#U`x?XH(=3+q6|JycvgL0WHDkJg;0 z(x=^O#m5(aKFHjS#Ecly$MG=1UZ;lD$%LPq-Q8&rx4y1BI3zt18vjJ}ddmKAEPQcj zpX|{)FrJocsz_9tagNUOFyw`>_2w$g%=Fxurb4fo$<5@Oqx@6Bok7C zuT{|cwKoGK7OcqD((0*&_Wp|q^C_9U7K_t)xq7*VvNCx3o2#oS3d)jyI~K<1II%oh z++-n^XbKFCqxayXn7$6d*`jILx%?OA%s!z*NKYZvac{X$ske-;%vzh93j=&Smv1xR z>yX@cvv(3lpKGYMM4m+zVJFTijL$uy$9e?N4 z)gG^5O1BAGHWaB*DNemq6*xbhEHgar3v=-NRzn9DGPZQJYSzCv%GyBnpXqga5HQV# z?rEY9y;1XQmR&1TDvV9<+hGTR{B3s{7O$T+{pjZ402=rW|DEXnyufkJ-KH zeMi9;%-=vMsLd(s7xCvj?-MZR;InwQTs0?_?Q&ot3$U_DdCCSbDE*Lq@j9c7-2`r- zAU;-Ie`^BKREkV}tRCnX3H8x67m>t8}zSZtZ1lQG2(mPEe9mg!Bav z>XI+R751cUAJXeN8E3z{aI{Ryd(Rk~u9)V@dL1!lNW~1!4MvO46vI#p1{N7k8!8^1G6sSFldfb3`T28)M{oK8tMWvwNFr z+0?o&iJqd5^*p|J1=(4c_i*EmKkz(BqpPKq9&xGQrxh|MRW8NBCSgh`lxLPhMkAB( z7BlaRErXer)ea>l)fx`GQmSqDN;83MV&VVw~evF}mBIs(d3wG2d;q zYnNc9dNncSBXE#Jj}ovD&*dV53M|^kv^==b=xbYVtlpsUL_IWmv-w2d=r+x8MbvDx z4clsnJ!6F@_DGunJJgv_$>of+CcF@{tSAjpa!8H>bKSzOwB;9UEy=?rvPE{HVH;sm+d8&?{h%46{*X#LJl>KFP7Cw8W1j&m&OXP zcqTgTXr^3?PZrff)Dj0kF9(A8t7`w@8Dj&26Ar~6s;#C%O?tO+XD4C&*x zKI-iaS-g3g`PH{0{OG-`A34+)QzehK_O0gz9?jQkoVXDP1y5)cOafIl;LBsxpMnUrTnScl?sY zzS~p4*GfDJ7eaLM{Ik**gOUXaJsuN)B;~#z4EOM|rHQ5u6_V3XU|yF>G~p7eN^eQ# z+*t783hq^j$*A?ym=o)#<%N#k9(f08CNpaUwj9*_hB+$<^e%P)RcLEqNXRJ(0^eX@ zauGdF?gz_#qOQ$NRfLl359@B#j(ib$R;x2#C#jH8VLq2-Q7(Y%a%*MPduQBeM7<`M zOuX1yKP}ooB()Mz$xP|tilqj+hNUC-o{sZubxdBXAFT*Y)#RG!`=T^!b1PHne^ zp&Zg)P9x4Y$Kh>?yVhstiyC?lY_w??ci0VuoCzCeQQ3W2)j4htwV|)N1`v6C&yfL= z5ch~^nS+!r{g~hyYv0ir?m)}Z7_lu8m=)vKnaF3^0)7T*;xV=|la6Ah?1A?)7pAhR z=&txLL?)Um<6^>dUPfY(!M5UUSVwwyJ?z^ot;+6R#P``P`tw{8Z zvF`dBC9=`$8IfNMn)=om|XZcVf#R7#|Fi2M8n9j2CI#XY>T5 ze$`s$dv7*RgxU4RnzUavZMI{&KaPdtcVpTBid)UoFH~~UjYqty8k@}9?#9Q2gOtUm zz5uGDqEybOv*6foJpcuuWCm|GE7|-`>d3!?yj}Co=wQBsk1D=W*PsW;eCrW`tjE{yJy-^Yj)w z>DrH0Gr3RJ?0>R{-%25&+69F0wwfoJ;jBnr68Sgq)bvv!$-c7@S?Qfa&qg2*-r-!! z-dYHb)}QSg#plfQ(I=W+@kxwf)mPJAbQ@Gr@5;g*gd^P9G%t(*6b^vSo9NSSVK8I+ zkIU%aR-R$Q3+wlCR{9*j_>>291ju=81n-t+{WZ)+yZu#6;q^&-CtrG8zFtg`+)dWk zxE8-A@>h$M`5KL}yG1XP!uN+2tTNHlo{V%fv?b@!m_hC+Z*BGgzuX!e|IInwz3()h zAVtOx-e1O_7I$gS_P^&X1{lU?tlzKyG1t6?1}LV*H;4FqYY>ADTUl3XZ8U~v)pj@0 zH)`;FIyzXJ>)io8&W_wlQQa@dyJVa7E;hjdRH2%|chw@&W@x7kevD0}y-a#N=rOc% zae+6!zXfBv>;jOpxx@0ln-3iHOT5K8Bw>crjg2se`940L2FlYaUFc{*|3ApbN$Cr4 zZlI-nfcKqOnYlKK8{RW$Q&Xa@9W9%OCYhAbUc=h-#>6tiaX!Jg*0&UwZrNNK4CK#p zv8CgYqaOCFf|^By;>nJoa!q%r1s8+}+4+Ndbl-5*<6R*2`!eM_V#}Ge-WySvJ!+%fKhnsB}DuMEcc6+Z&>H zCg!7?{#rD4#yOzVr#^euW&cPAJ<@C`3ovao1{T+iNd9TbF*tZfA4;u~VY zxuh<-@59-j#kyUa?|RDbkMJKiuz0j+lM7X<1Dr@mYX%;;MQN)W5xJa8jqkI8gr;#r z(rl~U$%bMzk`F-lT%ddNp1F$xsEx7GMt#c+BPOIk0w??k)-+Hhzy2wLcglip=g(QM zoMP4y&C1_Tc3dSLtC8P)`IC-xyvW?c(dR~;fk5?oy7I=bk8#T9K;3-R-lk!gmzoBu@mF z-KBmXo~|k8XPpHKqXiz^vPGmk5lM$=iLX`LHt*0p^{2hc6!k9d`qA)!^|EhAs~G6V z3V49@=}#^MtT>d*O3V4OGXEU0dZk6ERO1~w1Upqb3gI-Gh?&p04emR3&EgEH+*tvi zu#Z0aZ)mj+DG+VZ{Dx-y;GOeU>e|6S( zL_Y(NoBAlv2q?PMq>q#a&(>HRAs!;m{fn(U@lj@_Ijb(^%qyC4l3`tJh={bc6?6CO zTr+0>aYC?@klQ8Wt1p5Lf-QbkbX<5wz*VTL7EJh*KL3ZIEH#H)(HP3zD;u&MLFUuK zkyn{>&Or!S?vrP)aV&d-&T~Q-=1{fiQJ=7>F$zqOvB8We%_gFca(PKWhtqjfats{~ zUAZ4fgTksZ?Uq(C^vo!KrM4QfyxevW->i9SyzFhw zR4ZB$lcxV-GeL1QHq+vZqM<*lI;g#tsN5!|LA}(>N)}-t&ZiVB}GDi(1XuzYRE4-YiI|SPdss zrT)F|eRwm(Gr{)BF0Xhyh_!}X;uwfBdWkn}7OBY*$r18s3!a47tMoJRGG@6_Ab`<$ zvQjh=Wlwu49mx`=kSKKe(0(@qh~q5f@{6DXb*07m^m|*nX>O1EbzT*f=^!VtqCfyA}f%B zcQ%9FOeGj=Kw~9aht&rM7iKE1MK#^p0j|#?(h{~EK{L>>vLohOQmXRna;S~C992&6 z*FtMYS{~y`z*|=xThrKwR2P6i#Ym|-<4!H|VXb&sm@ZX!@Wdrr<l;40J^W(;jYbe>7&-$v3MDy0^I*Y)!w1aM&$b@e z=p|^&`jp*XI-zPQ{QZv;`A;rH9jvsns6*?4r~Qqf37i8+Gu7;$IdEz?gV4A|Bo znkUekw=7SmJbP%AXGh)Tj^Z6#;mpEFuW%(jqhp(eta$G<+dbbo>IZPS!n0$JMSU(` z#~xJ_N(#rFDUN^btLmCDN%fyTg0&5@->1vH#jVy)0i!_$oGNjH;k4HA2+_F}H*bHcAI>|zF*a^Vy1xILR?CuVv-@Ccprh)Qzt78lDz1Jm`3yY`>Zt}@*C zx5;_p+xj0ilVM%T!sDt?oFtuux|dLR{pCYBJNlgqE8stb%em^<^l6Z_663_`uNILa z+OD+}`@M4a$WQNsDgMBI0}L)X3)5oQi6-Gx&Rt^dVXobH?@B585WW4vU0 zm*+#CT&A|*NdNb7YjmW9u;5hFwPZ=Ay`1Ehj^ng1Ca9#E=S&{UW~!gWbS$Pvj{LBh zzr{BaeJ|`u{7J{ITnqw)L`DXeh6C?(yV&yOrf!!~-iwU}%v$I5PEE0$7|&KM;3^&W z0JZgZxYXLx8eu1KWlSGLS!p?b_<@uA@oW@5Z=ZBM4OJ5QSM>ho@gIuv%bbP6r}6p% zMPl6%iB}@pv|SumVW*2+(icxjaT9WiD({VWyMajMpYMRATmK39>gJs807U?EwILT~ zHz3mMfW0xIMRdpNo3%q%#f3(2<6$6F_+Zp=Pk!r75mRrLlwLJpPZ~$B#S0#@yPtwt z#InBVa2P5BG8&~hPlX9&^;D^op0lpRzZ#|Q<0)`ekE!f4K3PV@&`F(a6LTrrZq5Mg zUgJ@LL$nF2+0q?OcbCV`&#F?9T1{*jLyujWBDzJn-)rsvuy%`^c#}}v-m1u2le}>s zKcq98dUqjxRoQW(pgNl;SgvlzGM{HO666%lU9f+iOs~}GArCQVMmfu<`!gWyL!<7zuURhQZy=Fju=89vO3K)&3tYczeJTcUGwq`S5<~?&GQ?`lF zkh9`l7v}(UK!Zq?59;)OR@wF)&CZE6+B%#r#^;^B6uTNTmrHuRz%Gr)I)OqA4HlbH zuY-gV&TOj04lw;wkx>sd!a}sM@FfsQ+GVp|jFXikKf#%8;`)#6dHi~qiTUw)^1!pI z(o10+1uT&42f*t0P0)v+IRHiAZ2{q7wHUhl?Xt2o3axunhn%P~}?MKD4xkdG&*xc0M z>WYLjkrM~cF>lKLu;Eu@<2C7hb&z}M3#~c^H(*w8Qw+Z+SlF809h!-Jq?pt;gOe4E zt>>xqoRDoF0K4H~=+Cy}t?(?jc+N>$!;@+l6YnO`D6a0;&|g=vbiL_ZVH&H3Mxb*= zR$=W2#nhpYXYaZL6}aQ_@)m|4Lo4h>rf}}+Hp??5>gZBz;&9Ytvp?42)Uo^^}1}s*gjz~9$ zxt%y@Xt)A>YZIIj4V@>gmn0bbxH8v)wyyl?Yyqqqp%D7q;UIQ1bND|XS`>~9m}d)` zdeOhqB)Ig7(=43od2ZEp#aKZx(qOn(v@HzuExDQ&)OO`L_HA5@SZr2^A;jdD9!qS*U==lY!tCivvvO+$%=p72?^E&WUZ!SykahC=<`kn%A=lYjU`n07 zN>H%;%+3_kH@&Bdup|9OA$cQItzo`3n|3Phph?VCUTlxk*M`#XRV{N%;HPcTtro6g zO=fhyV+Z|9T2G*b*Q4bsW0a0=c5(~X8F~E=<0*X#H5QYcsIyS~KilYz76(pB7#;H1H3B)FcA|r^JXHl5xeoE*zM#rr*G*< zbw{bIx3i5&Ou8%muE{&JG>@L+Fx25qGDqli7{d$9gMYL5|Lgxj;Qw_a%>OxibA*zP Z8A%iku**^FYkGUNH1ySLAKJb8zW~O#{ABz(Y_!_bLLSvc<}9f#by%Q{`v3Uscq zMb(jOXh=V{Y-~Exz+WURPWZ?jh3r7jzqY?P+xyuk_G&2G`8T!~tk=%JeY~M`f%xtD z{kR%P(%p-jdXYP2ehNk0ptyNwDqyF*g#7H28TC<-PY|72$~@ErWQOy=;100Jo+;e(82@f&baU|HJ+LUpy?Z>A7~UX1qcGD;Ny^C2p@;p!quF z+)i(}EiWp+*Or~(WEHema>#khZq*ls$U<__4dTQ=h$n+doUNLnw)dy^$j$JX%y@ z*6AVQln-yNck8;XVE7ln+`!ZO%SF1Sy{kiw_Fe4&K{fsb=GDa$zltc%ShHPhzOj%^ zF`yTZi_3)ZtsWav?`otvrp}=1K6UR8aOuwc8k?9ikO}kb*U$LVNO{4Z#h4sD8Q9?; zK&Ib(wA#q%wCKIolkrSyPO(CexRLg@KH&$-q zU|OzoQ+!yoV>2_u+d&t#{)jiPYk0D6pN#0Xq>^w)+U^xUAJW2WyXd~|J$$v{sxBD6 zogy+`IU{X|>e0t(%kSvM_MCM5LZ{iXKO9ghtp#+c+6zRzVvj7=T=>vH`SmT0! z*xoCdUi>PH*!G5tltC45oWEv)mm5jrqt#24Bby zF$po^=M35xQHeL;q|ID!o$!`(*t1iw}jUpz`*GS(vScIRJqAtZhTt)j?dC1oCP* zlug=$L;mvjin}q!+7e=M)fK9C_Qh$ZKukH%DcymJXiST7cXGCeeL`eZ4^6}_ZfxjA z6qakRgbVv$u;w%>OtVxW}Hq$j?JU>l?`#Kx#bv9)n5({uu|6x7) z$=NPthvu}f1#irAXN9iowrsHUtcLsImGF{COmMGr}qoyK*H=F2NSsRtwj7 z^7@M~Zp=mZn1Utgqpm}30m5^AT9mnfA=OfP<%h0Hs12=({w(JCabXs6%5uS>1tHy3 z(=i0Dx8y?@V-;+IajI~fH&ea}$6WW!f_4GV`i^)J2zrUQ%Su(^+gLmZgN0xiWRfst zEbVDlRPxY<>o74+8cz2~*N8PLnMljKOpUF<*$xKr{?K(>t}elFf?ru-lO8yjn0yoG zdLLi6AR0M2yOCHROjge&e0j{IZ7go!e2pnl@^HwZV0>d9G&$|1f_qS|B7|Q}HjK&4 z5i}YhL#y-Bik+$T8J%4JfHkA(?$3y_$*{VG>o+?$7j|7iBC`DDh%|>)*Ii|h>fgRc zMlKjH@-S78Cduo3jW?*--v_6}TOyg#_;17Nwpj77;Hl)XW;=faSmSy> zo%9lLU9(!W` z!me^1yCs!ZiC52##+!qu6&TsvvE-D(wKg(=e4V!B(Qi^iE1bxxswl6^kb;RjN+XAr zAA;TZmU&nZnX{tdZNnAk$%pZFq@|Y?$z)`0gDc4!U)*cdqX*a88NGfv)?WE_bi@gM z2hk-X#Xf%S&uBn`iDLQ_B`lvoe*fNweF-V*==GJ2GVs84w&^P!?cyX8GO-8z_DUb$ zk#eyo-W}6_%n+S5@9oW@H`Hpw>*#JS?VjC}`pMYc-F->ApQ#hyw=>h@h1o`}+jlLK z;of;jNImc}MHHV>=?~_59=LBbxw((sC-3SEy6CO6=5!0o)i-JYAUwLM;=FOI(Ut^C z@5%p^nS0cyW=C%Jz>2yWnR4R9E3)!tVu!n0KXqS=DP&!U*J;XHbdNdaaZUq;Llb`rKbm(|(c=z|q zr`ZX4;5OcWUZvhKqghUrLDge+O?qWe+`jE4Ju41FqvIv>mGWSYb-f`zb^B7!`dQ@r zl8*P<@>?nE?&YKrchd{+#MJ-#dEEBoB4-8YaPLvf^+=ug8g5aZfV3j%mEXTLBjiI$ zhTRcopg_#M@ud9b&bGv^JDZ)4s5`Tv&-k5wl-Kd#vy2&YVTDFSnR-gq;NYhh&96-h z>b6cOU69VwgTJIxZbDNI8`5izoY}^qN#($FuV_h;XpmJWjv8JyYUJ+ht8Zp!1CUab zS=g2>eO=C{C7mHK!MAcUFOC>I*#9zOVcw&+Qm(8T?eNfrR^A{PZHIr zUXH3Wp9ZI7n#3QKu4A}y4&E7gwiX}7udB_9?cz%ieNnR-3kWULk-h}3H4Pc!3;_F9 zyd0lA!8G8chwv)5%d&TEAGTf@9w=Rp{?Ud$dg_wV;CdB1X$N&prEN6z0zQ#iS^lXh zspQSB_E-@IffHt%H{^T zv%&f;8rs`X8+1*nP13rs4-dUEOGwwkPg@JwBulLXTQFagw&!R~yq6{>KrP_GJJiIq znG+^|5*i7*1h$3wesnOIC>?7l>A7t(P(4?hNu6Ey5~kSkPD^V5Bm!FP2G{Hs^Wy2s zz;Xh_hh^Y~MC&pyJkk}(0 za*XHoS*W@x{`58rgVFZvx{{e3Cu(zB_Fk|wpYi$^#>{Ma%zpKV#qAoT9Mk#jk!3Swl_Q@rZO zQn2jd#bPm)L+L6_bG>c$bXdisVz2-VvI>UblDL08MF2^$lznc9*xqWVcK|jqJ0pnb z5LzO}NjrI2tUiDniAVy!H))vcTdsj_I@zy{ScG|~&jc80q~r3{3{9fgBq*zee@W*r zYZ1!#n(Qo3jeCMil4USf+q5(qC?mc$@{82a0E_ z;Wj6K#`!hUPd#oiR&8=j6Wp|SY%~WDfL)4dudbtoSnbYksejunY$j$iv~CDBG@uYu zMlrU7=(A>n&U?5`wAI&d&NVW9;yg)1xYddIfoehs=Cu-F?yIX0p*z+idhK2(p@+loWjU?;p6qMz6cwKc>U@e$m^nF_#CKO( zOxN`Ee(|tr3(7hUei&K1F5!g-Hi}{vI&pQq*X+s_Ctl|eQrnq(TYts1QTqXZ*M&LB zuA%0~&=R1!Ijcrgin$J^9Bd0}Y2~nyd{mR^AuvC1*?O}Ki<@m9^p|ZMakN_OK|e>=YggrL zkAJ_Qn;jW}f}rIq&8>DR!}8KFc|Mfat1IP!6%x(0r$s7RbPK_tDGdn=zzB*9>_auU z*cphrh9tLi>Z2^STlKJU32I%!t6cWW+QnSMQkIz<*2H!}hK*)tutxPhBNYf_TaU4? z+MxqA>H&0Gf#n1dpeAHGQNyg#C&hiA|hX$K1+P@pwTidJLp-3NZqiT zuGS}HDn@uRuw z8qzircM5gP*$7b^1JLQ$$K-V2 zF|Z1ojGI9fD}nXubE0fLL7h^4kk*WrVArqWBVsuqFx(Dp6(7*-+k8{$SC0>~3iEVk zuv=C7(euXTZqU56!RWK~)kkZ9DNv`IFBfPujQ7s$%mQ$F885+;Ehg!Lr&(>7mQ3g##i zKCVTb-`^$$LQ$I1Oj)&FmRaxfU~-qjdo!~J8B`~16x~O$p4qZ% z<1^%PDgHti=$F*@cUFq)N8R2y7eaZ1e4O`fi&4sN5PX@J_i0&}NFSot= zNIH4>;bz^d)qU9AdY@G!_Hu=Cv;Xk)x7Oi>-p$mP9>YeHt=pUvtri3Z&Re^aX`jp< zCC93a=j(r$a;s2y)$4n*3Wq6Mxpgaq+_a8sM?&Wz4j-n=S)kcdtgiD|Jfy!h?dogz zYT+8oAlz~Uc`~I}*XC%1H`l2>m~1yRnOz_`wRSR_NXKtNz?}<36L?+J^vPR{Bzxqt z+0f4h_L6#9hgm%^%>? zhf(yT$SK1sA8O|>{tQTz1wElh}OE-NIDsY`Qf!#cW>a36Ny=K z!!K+IJ4CK$g65Fhxi5RHyFJvC1EyOTVXpaG75R5}e04@13s?UamyEo!uuXlU6P6_^=2D7(3S=;~ z{b`7euKVHtdw}Y|XKduv9ERNi=RYlFno_&oY^1y!x*v;~<9EXBzD86Yx#vld8%-Kb z_lr4o)ODDT^t_vLl1<;&)0{z>wS<`Q2QemM(ra~10X8i?DjsTmWnlfd0&um9t3Fcf zQA$qE_}swSv_TCLy5SFv$l`=ZI>O{8B?N?CI;H%XR(P-Tm7*u|;!`C4ME_t|lfna% zg*L9!k*{)`pSrF&vuew~V?3Zsi;*R-O?G8!X$rnK32mLSJ0Ti!`$7#lAR%Z0+QAMH zSLRl&Sy*#R(x36tKQ-|VLDJG@&exaXHO2kKQmAbbgK&%`r%{b<-yh8SuJ@&TEt;Yf ztnm0}^j9VWZ23&UdZV4iS`0>Dat9z%u=qsr;Hx+@40AMhqJ{IK{&;X^%p|;6=Dfzj zo>p5dPWZUUjd{I42#G{z?!qH+VJn2(@8S=9jnFIy){|d0nQY&jTiLJ929LS8nosVk znI}NJhNt1J!)+=7FKs0?3R_c#BE{7wL}mwb=N8sI3>t(UTqF7E_3)78CJ9Mp$nnef znKk+(fx!|YcFGGm-o)JC zd-GNJ(ILIuiP&H;r##jxc9cWaDe+W*NPpnoeae6HB9|=+^PE5p5~EG-kCSu8gT#Yg znZSj~J(BsrQFwSSrvAFX-I#f-RLV5P4Ub|~5KgS#%S5+(V1BjAKHT+;y!L$&rpkEg zD-`|_$0-%b!S1J!Kvn_ANtWF1J8vVDC&uX}63eW|@4UN$b`$)9V{>1LkEqEq?;^6+ zdxu6htL%*@+Bt}(sYEVaR8~+_S64q)G}`?@XT{;D=3pR&s08;}bI*v!xuJO2EX;|31ED$EMc(ps{V^!(tmeIJ0qtcuA6*)gyU<#$f+>;gUI-YD^fsA+BYc^JUW9b=#!9{pcKy!YxEof| z#6OHk~9 z!)Dg}tzWaL0{W)24ocGz6^5;G3I+G@wm&4DrbW>YurS@iRbw71^^p}`M-$Xt;~B-r%Q}4TvU|Cmw(=XNNc9DLqlDc%1z$jNGr0G^J zx&#|$_UG?a>%HuBEYp}x_6jn-Bw?4JH2{ci<#v)ZD6Dq!hc%+~XSeak?zRav2T32$ zZRu&M=mglX$>3h2@fBHdeZ;105j5fo0u>@Tos9fms^&yFhhK3;es^%fuR2;-JzlPu zn1i~WW;dHx2?sjPHKeGR(iGWQ ze1&bO$MU0&bZw&}$Nt!1bj|!ujO0RPalA+QPIGb`%x5=bzE{QKs-@I`*AxmC>^>W# zXx4}p@$RVX(QRY76fI$wA-Oem$IArXGmJv^=#G^MMo>wl$vo(b?Cx+m&c3h zgQNjQslnZgc@IFNZ!J`)2J|vnC#HggSFeBx709?ymh@@nk7RoSt7di8$Bn$tT(|Ysu!d zWdqT$;GG9vjHO@agF}J4v9;mOAUjCINOwt50b_qOTP88WVU(6~fxFoH;KdC~w7XPB z2iU6Sh;G8B&Pz9LL&vqLfhM|*scFPpF08HJ+GJoT4Pen+_*P}Krt4MO@5NN2<-RF1 zDrt9G?XxFmu zjKEw`5Q-UEEYl>8&u>3t;SlXYz_PVhz+(rc(u$gYQ~-jPJsg@zQ}u4^6!6C`eCalc zF98co!QJ02gtQ*YblO6*iy>Nl<~d=yW?zS@J-&WqQ5!&Mp5WI~ z!_imIZf^>bbV0esNV#TOcDaIc4SAU}B3%&XYoSn?jczi6&82k~ZbJi*lv>)TO!_W! ze>fcgJ+Stjx0Z1oe=>UHSWYAFLH-2VQfxCFWiz#R;+=Z*cK*)bpz+$3Y+GBA0l)r( z+MpyDBpG?l<_4`EFfVO-`9ALOd&xU%l!>ra2DaIerR;fbYXzL&Jz&HTq$2S>B@S<` zqzHY)Ky0(c_B+xmtFUq@OXTEq04GYPb)v3Qdhq&M83QcCJEJ#lPT$~cfBi~BYo{$Y zweSv;86hIak$Oez77ls6_V>uB3+y!3KYX#{Bc$~Z2(YOGt@2xc@n}cj0fG(C!@<_kZ4r$R}WBk1yG#XMNewA0v9iW$%$vaIsWs4vR%qT;?J;W3((n-wP(^F=*CBfi>76a zW*+SYpW5SXdKT*+VCl~{Ez)(Jt>or?V!3`r+UFuZ*V;OkP|<>;xRg*a{)r?>XrCM3312Xf<_TNMOA383Ek78 z1sY(tYe4BKH?T^5v_qVDKW~Iy$j)Zt?KSmyt@@FK;__Qb0I>h(;&iY^-`MR#4nhZb z^Y)|1hUb_4MN<)XaLg*}qnij1jFZV*vZE_;{_?)2$i^XZP?sfz6SxT#lCMGV=X7#K(W-0uy9dq zqr-nhKav&B%s6W;baVxu=cq(j`V*e^TJtiJ_q+rT4dUZgHL+e9aVZ*52Fbg*pFf`F zvv?)3^x6xZgTE|Nrs*)Cszc3Bl$ZFD8_78unzj-&90v4R)wK$ja*5}(w>178saVPW zrEYOBpeYM>b6@9=Rp?7Y^STlQGM5G4H_cx|6HgegSK6=1I3?30mL8|j|Uv`0+C12uh^DYR%YsV&! zNpOhR!?0h+j!0xl3J>`k@jP%4G3jR9(nj)1GyhWuSts)>V)w{;0t0XBX#V>2i1tZ2 zHsFht|6f(!eZlyNlpd7;R=(CkU0E5nE`PI${F!a#<`=gk$X?51bgI~m3I1`CrK^%t znUl?8ZJ#>qF&^84^I1QZ*U~OI#ogOpn6=RG)7#uJ|rSt$aPEm$XXWqD51*JM0mZSxULvf>!f=- zA>i4t^uH8OYZsIi(F}VE-BX=O#%A=SZJwnhUwxldzq<eZp@cv+o+B|58aOg!rZwE<^ zHhX~%d+U|vX(mqYC@|eQn4Zq`oQ&5%@<839(Z_Dfh^lQMlmW_rig(NY=6i};lp-jz ze6SA8FJ;3VO)lbT78Z`f$JG=-->Z*v1IS-?o0X8xY?w#rn^NW&i!xsIKLIjDsc1!8 z-6uR$4^fizorZH4>Lct8Q8aqfh>)IhM9p@Lp$2eNWsQ*cAz#<&)}6x!o4&5ub2 zGPup%nAH(NiA2$iQiD<6f1gtJNfGXj&ZRaT9WIFLp>R}0d?RlRIyMt9Nvm7hyI1MC z{o^I*p;;YBP(A^MS!n7=|M9vhh>%WK>T?o>ppqTiPdt7nudy6etUp`qrR* z{Tz;QLXH@99JJl9DgF?@F9+OTTIS(STF24QDA0m#o#@ z{qU+u%QOj;IQvB7%&poDZZRowGWRy!@;N#7fDSST<7kX-s$SFy{ydQQa5eE(O(YO{ zkWa7YjH4!_oreeimLD(boOwwvrOC(5C6tOyGiM!n$U-l2QCQ`lhE&$7oquQA}pTt5BKB-*!qODWp0Gfn6OIrNBoqjkC3Y4)`v~M+F^cSXlKJ?S+f>F@ZmLxcPc>5HyrhGli97&o1 z0J%MOt(bo`F#MN1;Bn780Y5d!^LxYUe<)@LiZ+TKcuBdapsliIy^4*pb@q*&DD(?X!tzK ztIQubCf&U~jV1KVc>}u=PnBuO;8pyRtR);oS2mnBjbaN4d zzKPDf)BMbF=g+b9AP3QM?@(ir(kGtK&Eyslf_5wuvcOkZKC__QWtL4AK~Op_2}j-< z)Ya+$Ps#+iMC`|-XLw%%fvPSS1i#akNfzb2n3YJq{O(h9t-?4;FSHnNayiEYzflfG zxQt%D5(aZvM>_!gg65neAf0ac4)BaeLnoei>T5LfQf*@OSxEX0kqQ%Kz1Dd=MsQ-n2L z?2cbu$k%NVXvot)ZhNpFbscLK67tE=Di`--P#o@lGutdfeVg}eyR-YNLJA32_c>jB zuA{VB_}hmC7O{@e9AWpqlq97aLCDxAaOBm^Z{3|G%Ep4Du2bk-H*$eqy@&#v2KO1w zrI0w9OHoN;TB#MZhNL+Jh3WwvL0T(xmUV-XKWJ7X(5AEr`oQEQ5BfSs49&W1r?E6v zGNyI=mEu8W&65@siUNf4LhLur252J{T)~bK&8^-DW26y*#3dDMiE4&JhS62C`p{S; z!hCqlosgwm1_A%XL8s#YSe zyQP={G`i!<7c2#km>gr{5^MU3AFejupMe{M=mp~T=w$LI3cJ2RUz|((-k8b#N3}(u znTel&5p@4k9sc*a?|%+cTHM@Rmy;yu$VY-NwtLfZ0{t8ucgk30#aEr^)wW}{i>RUV z=Oy4iV&^|sfEykd;j{Jg(VGJCWbfmJW-j^#1tm?&m~g&-i%USyz}?Rgl!y)QgOah} zq~3fI{w^Wul|77%!g3XEVJB_K@yVG`5(z*6d3;O=RK^6~$f_aNw=IZ|Xj&z{GlptqW#wB)B0AdFE&dC9uJL)OodCURy`BfW89rl(>4qdXD|3GE z^qx#8WQgUDA}G;*9o*qSelh9!$f9{sMBau!si?>Dx0Z=&(8IH<{*L%B4D?SuLTz#U zDhBhtRo_4%ly8GGRRj`EO{;08L?pXNaz-M$Ag8_3eA7g3noOnaNUZed!E@T|zqsi} z5%0LIP^?7M6ttxHNKFe`w3YvR;F@GSU2C+-x=i!EB<(@(waU5px;aQ)re*-lAWFp= z@Dk_5O6k}t(F7mr?TX3>)_GNb`bCzzk|(pYO5aYGkc z_&s{u{a2o46_!Q55Q|jBQ&aA)nz#NgTdI;Z~V5Ds>?3K2d-syq%{DEjxi58`Q6*r zN_=$N*)RgWDstZrek^i^k1iE+$7U4ThK!1YXK4=IYPI^n#H$TB+Wp$Ow6M!Ef6qf+ zEIN|yFqA^pcKJ?%7MJGrRk?n6b$s>Y^pJj<**a1D48n%vm&J^dkrdP!fC@7^B_198 zbF`jZ?AN@vH%m2MTFsd6Qe;8&0s4IV48gt!1Yx!a;#Aq$Kj4h2F3%}LRE4;194FWP z{4RxIsdEW@t!=}PF7@cC6EAGd8S(aFo+a`I?G*%GkyG#Pm=E-2nZ?)ba%;|udBMv; z)A~Aym=}P-p1fq!jh&QW)U!lMfiviY%{u-qB+#4}yi@Q1KU^P+#=dJ8kqn3Xoy&Nf z{#Z@>gOinzjZ)x`HA{I`YICQ%%rfsf)rcP0MGWn5>X;59wUK3AE^Vvv>h@Hv_bH3^m z+OsFknw1m=nU;;YXa;Ejl6g}d(;HRA7UeqjBR@-uqP_e4%^YfNzE?Et z%KeOVar%|FLv^+oP=iQ#6NC|%5B+yI^k&?5^skHvI})|NCbN(HC4z1vVa6 zY+>la2kQNL$%5|Z{^pNDA3BOLqYJ7Qb{nUeR8wU~`M#1i+ojNQd@+NsmO6iIZbQra z$OH(hE`ZRaPhA?_#uqiPais=cSx%1>2u3pPX<3kPhWa$g-y zb1{z}X^S#?%K_qU47Ei z4@C0X(1n)(Xdw606tox4N6X%H>5u%yA+@K-{WHGyq!vY9NiK~OGz4uV(0X?7q~8|J zvFX=@8V+oGm-+@m4U&py*3J>t8^8Z(q5q@6zWVRb@}JFxJl^Uf68|K>bO`9UprjG} z_9gum-5Ap>3)GZWg>n;Hs_hB5LS)kp`G_5ZpTevX_(V=%4-@Jc5gTwmOl+{7N zv9GUBc_q)P0s7~Sq(18HB7)5IsGssXjj+Q)me`2TAaQ1Gt=tFnFpn?u6(m9TwoW6X zIHWLU#(0a12=OWjCUyFJL5MIDb=Ozo_|e0y>%_mmkxU67kUgbJd85f4?L14{lH~*` zoel42OS(X2U+B2uo!2F`%OS3?RhO?hAujsbpURQW^{&^gpNxBdcTp;!nb(IQuJH_n zlF$R?Cs5jub2Mb(0Z`4htX%aZC;E z44$bVR854Ic)D>iu5HL{cOW$`aMsw4_=sX-j>92oVHDv^qv+Q_IwFkV)L$)Rj=oJO z1tJ8=%GrC|;__=)mcGSN9O9j&uc=ned1)Dmj?>RmY?>;9Dj%+jm$6PnNtk7p%v{;p zNc1ujmo3Ae;ffmJ%6_ifZQ{*HWgU+cAVmSSp-;ec7{}>$PMD3+`TCU%?vw=if>{a7 zcnlS7{Y>Yo?=#0f)c3w;oXk1H)(@jr>KR5-@oAPC03sI1<|51TZuH~O4;X)C4DTFn z;wXI{NtSA=c)M!2b{KJe?h~`{_>2eptOF4##2c4o*q0va6km`B;v zJB~%An+K~RTP7p)Hd|ZdDE{DXgc1$XZi{+Zg<22K&3I4E--6oE&D63iq+qeE4)E60 za_S$NzZ>R+KU_aZI_o@}sJ`azpSFQryPPK5*cwugP<2*C9+&vak_1Q^>1z<1^>4g- zp;M63Txz}NGyVs2xoU9>As=-(9fEyl2^tWFcHaa5|6b(8z);8B!6`MbZXoEy)h`LcnG)sCz6XJV3UXNca) zS~hn4x^|qy7M&5A%-S$aX=HQf%%5a$!R`)Go3%~*28r_U*G>MV0qG1Q@W~E8%T{j zJ`Czb(5mVYFBmJobT$qf$FlIrOf^g-NG`BhPiG0>Kbk;FD5x=&Os<9|)%RzOlACYa zNq^fE&{?pIkXUUU?l6|~+ZTLwKWxjUYS`<(O8BNgST6mzxH(ONJi>V$ zGRJs0;L;Q)x~$dI!Eqv3Q8T0Ht(L38kw~9ElR_AXpuuxE(Rb~IGaJ|1BE;0+4)BQ~ z5ydYN`_4{T(&XTrBfjyGSL^;EwoiyTCy?rWQBjWfpUcE-t!-6l(fvekWc`J4-Uj!F z0wCp0HF>48SUmc^CTSXK<=I~~p!>^shjW4s=MQ~c73r1Mt?2?@Pf4@MqO13kuT^at zhNQM>%XBqobcI$F8rD;pFPXixR>z}Lx;$=a^%=|NVt+dslSCe+PLY_~wtk0KilCG(FM^LriyzJ|uR^E;J z#^Ic|TcX%h@shf~sgT}rQ-xb^j`RDJ`Weo1Kqc?jj%TpZZg6EGxr2I97DJ^q=9kN9W05CYTBg?|0l8G56c3$ri&u>_%w oO$5m#B)0#Kw*CM1IO2^%>4eK4bzLgSiF4k{^6GLGFD%~vFB3zzCIA2c diff --git a/docs/images/welcome.png b/docs/images/welcome.png index a2105aa93792a73cff7da2d745cd4d081216b5e7..22233801a892ef3a8eedeba0e3cd99f3bbf39ffd 100644 GIT binary patch literal 9591 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 literal 8226 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 RqCe=&Zx?>8ICb^ze*mGaY25$- diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 1d9a3c5edd..3839583d15 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -93,7 +93,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } private Command getCommand(Ui ui, OptionList optionList) { - String userInput = ui.getInputFromUser(); + String userInput = ui.getQuizInputFromUser(); return quizParser.parseCommand(optionList, userInput); } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 36f8ffae4b..e26aee6b84 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -30,7 +30,7 @@ public class Ui { + System.lineSeparator() + "understand software engineering and OOP principles through a" + System.lineSeparator() + "gamified platform and enhances their " + "learning experience." + System.lineSeparator() + System.lineSeparator() + "You can attempt bite-sized quizzes based " - + "on your choice of topic " + System.lineSeparator() + + "on your choice of topic" + System.lineSeparator() + "and access key concepts for easy revision!"; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8!" + System.lineSeparator() + "What would you like to learn today?"; @@ -50,6 +50,12 @@ public class Ui { private static final String MESSAGE_HINT = "Hint: "; public String getInputFromUser() { + System.out.print("Enter your command or 'help': "); + return SCANNER.nextLine(); + } + + public String getQuizInputFromUser() { + System.out.print("Enter your answer or get a hint ('hint'): "); return SCANNER.nextLine(); } @@ -107,14 +113,16 @@ public void printEndQuizPage() { public void printAnswerIsWrong(int correctAnswer, String explanation) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_ANSWER_WRONG + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); - System.out.println("Explanation:" + System.lineSeparator() + explanation); + System.out.println(System.lineSeparator() + "Explanation:" + System.lineSeparator() + explanation); + System.out.println(HORIZONTAL_LINE); System.out.println(HORIZONTAL_LINE); } public void printAnswerIsCorrect(String explanation) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_ANSWER_CORRECT); - System.out.println("Explanation:" + System.lineSeparator() + explanation); + System.out.println(System.lineSeparator() + "Explanation:" + System.lineSeparator() + explanation); + System.out.println(HORIZONTAL_LINE); System.out.println(HORIZONTAL_LINE); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 633930c828..c2e88007c8 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -5,17 +5,19 @@ | |___ | |_| | |_| | |_____||____/|_____| ------------------------------------------------------------------------------------------------------------------------ -Hello! I'm E-Duke-8 -What can I do for you? ------------------------------------------------------------------------------------------------------------------------- +Hello! I'm E-Duke-8! +What would you like to learn today? ------------------------------------------------------------------------------------------------------------------------ +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ E-Duke-8 is a desktop app that helps CS2113/T students learn and understand software engineering and OOP principles through a -gamified platform and enhance their learning experience. It also -consolidates key concepts for easy revision. ------------------------------------------------------------------------------------------------------------------------- +gamified platform and enhances their learning experience. + +You can attempt bite-sized quizzes based on your choice of topic +and access key concepts for easy revision! ------------------------------------------------------------------------------------------------------------------------ -These are the commands that you can used: +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ +These are the commands that you can use: 1) about 2) help 3) topics @@ -23,15 +25,15 @@ These are the commands that you can used: 5) quiz t/ n/ 6) exit ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ The textbook for this module is available at: https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ These are the available topics and the number of available questions in each: OOP [1] ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP @@ -43,18 +45,20 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Hint: check the textbook ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! + Explanation: because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP @@ -66,21 +70,23 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Oops! The correct answer is 1! Do visit the textbook to read up more. + Explanation: because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ The number of quiz questions must be more than 1! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ There is not enough questions in the topic for the quiz! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP @@ -92,48 +98,50 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Please choose the answer using its index (1,2,3 or 4)! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Please choose only options 1, 2, 3 or 4 ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! + Explanation: because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Error! There is no such topic listed in our storage. Please try again. ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. The topic chosen is: OOP @@ -145,14 +153,16 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! + Explanation: because option A is the best answer ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Bye bye. Hope you had a fruitful revision and see you soon! ------------------------------------------------------------------------------------------------------------------------ From 13a9af012fd19f5b7ee532161627b47b06acb6cb Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 22 Oct 2020 19:01:03 +0800 Subject: [PATCH 162/447] Fix QuizQuestionsManager sequence diagram --- ...izQuestionsManager_setQuizQuestions.drawio | 2 +- .../QuizQuestionsManager_setQuizQuestions.png | Bin 31456 -> 32906 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio index 9b7ce059b9..78a7ef5e4c 100644 --- a/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio +++ b/docs/diagrams/QuizQuestionsManager_setQuizQuestions.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/QuizQuestionsManager_setQuizQuestions.png b/docs/images/QuizQuestionsManager_setQuizQuestions.png index 8ff61a130e54c18bb1de93a773be12732a750f59..a628fd89c98184dc3456e21a3ada21a6934e1595 100644 GIT binary patch literal 32906 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 z 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 I;qu-81L!Z96951J literal 31456 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%0DMOU7=e#vaW zPZ*-%00?OB9kDKr+5g2>4(5=>f`r>G!N?SKY`KQLK&U^PwQ}odin`#`;BWo_dpptG z!moe6&jeE}d)`vsMXv5y}!-DR4J#Dog ze1n!;i^VvB_&_Nmj4i-Y^x84gB=jgd`Dmulgdr~f?!M%1gW|M)m|7qGLu_t&Pg*G( zlCTdp-rOdTaEvtWdZ8!^MVjCr01gh%t8MJKEE6U}4^CCm^*GXFvrf@skMJ#XBf!V! z%`$kw1~R)+_QY_w$wNO?b>M+HsA?{qPC2Hze-5xoLy9bg^2d8*OCN7f@RNIOG+$J2 z9z8a}fo1Eg?mlZ!qkEXu>gb@|zzf*%zSBUP4lraF>yoZX8y-IIxwqc}`p*+@D*b+~ zu@QeX?8t4==NBq07!C`#=a~kiT2brx*n&_VYfyBltw?LZB*UB6MEM7llYfz#1Oe~D zQyP}p1v%jY-cYBtcPq`w95*BeYTH05;q@?)gO;@LBYfV_^g~ne!vzwReBVN2$9QpN z!yLVbd~7PE+AFv9dBS3Xqk{+{`uMkXhSwJ1!_DnTLTqZubIrb#ApOeM7Q2rC$o__1 z(`EtPR;qbOJlGO@q)*x^W3pDF@8Ep+-sYSetp|H1kN5&cb>HU-kTql;s2mEjBw1aK zTZ)~()Hl=6!Z`@a%bLU%IkV6D5(_^Bi#R}O(xKddLA1t^POYL$oKJe0WBkoEQt4v@ zyPlTu*~uv;EAkELr|jw!I+?OQmAm~Z3Nt+6ZfIw9ioo|S4~VJd=n^q^ys^K-Ps zaO@N##!Km%en}U^my>xV6tUd@jChwLY{_-sBQ($8MsD?Ob`DEnB{6r#92R7eJ_q)O z+IOp1w>o~)a zb70`e7_B964-wfYXd#|zJ%6f|$q!>?e4O@$xn4F@r#pE-p-o>#N2UE}I641|B30Xj zSxAy=viC=>D}uXGpKHZzond8Hq7Lz9=sH-l9~vA}71oonSU!8EYRSNDnqsH)iPcPtSg*9vaCaVZ?yit zj5t)S$5gkNy7N8tBc$ZvcNL11i#`pU6_8(=L~eMq9)4qjs47^}>dr;eD%d^NNc4e0 zD}j{dVlNj&sW>U>{C*$DvqIl_yY4-a)ZSkbhpqMr@D*5K3@NeHm5F(s#zNk&HXQ|a zriPUb0|mT0Di#F|wOsbe+ zFFXHg<;hJ6%Z>9|ihPItJ3uDTkZZUap4gJb({uRz2%+Xium7tss>n!I@8j_;D0VmA-Z7H9z1D0qK)$O?3Qswwwm6(drgiJ}wFPsN(CpZRO2ERQa$hIp8 zi#L_4uDvqsbNRUM?O8=W>Iec5zhTlrdM1s*KVvS~Zc_bmqEaX zdY=oL9YZRpTqpwCV@JglPf<}33@HKO_!bY167D(hN~8x|2GNuK6HJbA6MmzP8&G14 z*eSzQzfLE~rfyt#aLZ->{&ZQ=vq2Z-NG3`@eBAy}$2^6BT8i2shzRb0i%iku30g^y z)@Xrr?}-bVEl#+8tbZcFqxWV|-`Nl4cm==rJHWjm1h>5BK^2JAd+FWGjH0!$`a8EHc;4Q?36TER; zw6>`xEF^M+{`xX?rW1D;fWt}@;FbW3W>V8arbW@ zRvkU+FiHl{Lr22xHeE#p^im_&!+C3OcDsJbrli_w?~yGFEyXDs)$)?&Qt$`b#SFLB z6QWBS4bsR@7b6t?I-HOziBDWU!hD>~D+byj6rwd1@Mu=jnSI6jXG#MbpFzStKIu14 z#$;9JY0M8g523mGYTC5*_tlLr5$~C7vJdoIM*3(L_cpcr? zG_6|B!R+4H(PmT{NRBItK2B-`>jVa@hOwb z?k$g6bopx1c?!8cG^w;?n#tHN=uobrHZ~bv5go2=Z|1KhD^({VO%p=2a#=jsb6rB zRRNYS+$H2!^j3Nqpky{X{NQY~deWZ78GO>+v!nA)sLBltY6~M)FZ%SrITa`uE?s$< zi0bePYrl?7ye*xvh=XC3%RJ1D_I)FqM0qwmPu$0jurgS3W9e!1bxf)9W=GHv%tY3$ zSHCs++9YpnmSo-Ot5C%aTyUN)8o(yrjCHY!cyme=TRFkTzbwYRE;UO;FkC#_-?%p& zzwgI_$DrxJ7?XqNu%J)e+nZZw3an!)%LQfdn*vsa&b)e6l0IxXOA_PGwQ_)*;v@Jd ze>2&A*tSDWmmj*>4Vi@_YDM&zUk?F>%|}#GcOJY_o_F4&Go?gFVw|ZbS3T;ST!*iI zT$Qb+#VdTxw$Lj>&!AUk>yLY~H9E)rXVWLI-1pd*ST$ifoXU+#{e3l4vx{Ljv`2myoB2Ma&&@xl=_}lglXrKEiP5hrxG+}t%D8+ z!unOjOrg@B?IF%t$bdqfg{A~VDy9LEo~6&%IFn0}786U^$>(9%D)39W9{F5m~}!kNzhlkR_) zUo;IMjY_GoI|m)F&2D`Z33rNTL3-LRi&&3XAxz5<=0*vaB`xn|Zh?za^jYPRaAfM% z;Pjls_A<9ojN>@^fEvrKg~apYi%<21Nk{Z%49=U9+=NIm{o^K1FYxWBYv7~7%}>t- z%mzWUBOj6Iht*cE7iAMq)*KWeIn%NZ^CG%w-F3#J_rD%)$Xh#_Qq864lJ!10PnSCP z8URO47O$9^Tl4Euv4~_aF5==}8}?DVVQj7QIC}cWycCFHh+McS;0)lFd-su~9d3kz zoE@*x=V8+W6&xI_w%&btZDB7_xtJK}RDQ^)xJzQkU#qxhZ7f>kBhmKG$$1~)TDE8> z7FfsbK)N6>>(z37V@|zK9y%pO&D|scFF3i1 zW#LHRx0G3VMSMHmzWxa#2vUj7ZcZ-}m6kjrLB*s;b@BJEHr`PWOQ-j9Ev}|y`myn%rYG2lJc%3xksqXKm0VA#;=n)ebJrANO zysdW%ab@O|cZGR){P79#Vlc)q#Tqu0IpZ)obcwjbF0B!8vctbZG{)=(aN=8~RP_`}D$k&wWC zeNiyw?`cq|c&b{hf4iB#0H~S$)Axz|^mFV3_sQJ125?F>kmEzzcPltx**&I9q z!ov3H_crFz|CXlZUEJEws@yI?97a`UIS6$7(~F1g^86lio=gTT;@o`{w&4bYpzqIWX<24!T*DG;Xjl8|JY>z7L#Q5i$ZhCF5$VN zYtD0J&!WR}_E&YQgGK;+Rv&p2a~29aD;*MVWnX6T^)Ujb zk=||)@Z~RKg>94ppRz}%%{WBZ$+__S7Nkz1$UuF!+@Oj|u~iGJ>u4>NtncOngeov( z_5W=+OE=d3z=1=*y~%KdXzf28n#+8kk_maNK4^fvh$SN-wVBui26#n(b8_VV_VTBI z>6ejnnIRJB`aZKjp_ln-Y22%LN{FwR`CB0eJ(h5__+<=*_EliDF8h#{MU)zH!m;Tu zu{E&=#-_lyL^jW~upHsL`6)i<4X*GYO zxCiKx%!+(v46NoF!@2MLG{3bi_I2S+Ma!EK(^Kf`0j;T*K}dVz>#NJJ`Qeed()fqN zA_e_P2do{8TMQ|i`A3mIV(0%SgiEGqk!+KS0+qa0?@9~;Qup%XFu+kmJ~4J^|9;k> zwTg}cyh&q2?utUaV9_TY7VFbv9Y5b031p=NCF$)`gC4~on*S~YaMQ*9Qi*=*GZpr< zl>;T?hh*FUJ*uo{FW}7oW(1+r){To~|BtVSlSF+O6L-^Oy1(3T$*Hlxc=?e+Y~rcG zL{&iC7%TJ7v92_AqyYvD?_Uo`*)aPu`cWcqA3oQ=3YEXnhz{A2JVYIGjj~3Lbe`KC ztSf&pSS?B89B!ci7u(L&nEEXas0UHe<0gfu6RVMdrMTNl1bB3 z049@{AMq)E-_g5C+QO2(R|2Jd1nKra_-sfG3i>bCS8=p}+zCSVn-_Fo@&%YPMeIn` z4!6yOU?3xDn&&9&XG(&eE;V+DLJ@Oc0++{2-b^0In3O;()NB#uty;SxJpV z))2=-GgI%&zgZ2uv(?feVOkJ|Yy@Eu?C>65 zNy#O(D=miMAj7b;c=r)sjK;{)K4wfp&E&ioaoc>+%hVVNutJ@AVCWZ?rMJXAk@wbVdNOX5PUm6bF@}&)}c++#&FhxjOG@gCioao90NCp3;9NgT^10a8ma4z>9u^$foJhwHj|r~;j%$MyFvJ1E(u7-!sjdrF;BJeKpt;q zyfe;$?cE9MNY@IQBNx>S_`ARCeqSlxoEL7T0K$#JA*kd3|35~2l2^3 z3c2XLm94NcNK&tIbHblixRqAuB9j!{kKjia=Ym$>P^Zb@Aq$jD3R5%Sg{YV1S?t9) zSiYs~xww!*GkGVjRhRn5B@X;&5nQ%(Tqv^`$H+w~AvhlH=OV<)f*uj1wyyefU*{FI z(|iP|vj>N+2mR{**WY-AE~>&UE-?v;@T1j_f&XUKPK!g$+gXOKjJpvV6@>m zoy-wWZpD)HjFG@(UmFj~&ERc!U%R7&2PYU98mj_>o?KGm2+78HC&Il-SbU_))76-X zMGP52_kmxKI@?TJ0QW!oLAf!%OA)P7ldg3zQEj}(moT5Dt3q$dcxlw(`1Sb#d2uoT zdfDQ!!00m!$B!Z{=K>TO zr$bZ6NBJ@C&f-VBR=fpqY&rDX$ypFN9ilob<_lgn#cSxDl?=BlH zf=(OS^3J6pC`nq+>-%>%yZBlYOXEvx8k?f*#YmbVhkWPJV6njzZ#Bx-+yo}$w*lPD zv_e|x;I_(8U9aePIC&skxAtglrI#Xq5i4c$G(m;rk1TKw6)fhj4V3ctj~pXuhH`FS zp|Fp6Pd9e+6!eS-(GA zuQXKD0)1k!yF7FT)Q!Z7>@l;uMBp{5PkuO{Lvym${NAO`=d+|S+W}ORWAT>Pl3O4E zLM@M6)Ae#`MN(*0RGyNtwzi#+)22x8(?p^uyKes{b%tXkY8d;_ToOgMcY6KNPhocv zYx7_CV(bkv)z{nXVl*IGk9|wv9BBq@oG5(L8D9z{qQu{*&Hp<{Q41)>7+1>u<%4az zp$ygOe*28!&0T5|VO}^dHs6ri7S$`wCs`t3pk0`)nGyJAQtD!z$hq;i3Knv}%( z)cZz?$*X!c-4Z8o5qSk`dw)_Cs%9w_{j%Xab1eDWu`>Au+DPafi{eQ(v`^CQh)ob;U zTE%JWtB>77C>jot`}fA0+?Veyea;!6Ar=ffo_(}UA(pwrtbBW%+^ajV>tE}nQKr2@ zut`0N#)U%km!$&QYsJlm@MJ`F!`s)FTG^3TLPVNAt5ZUW4|+eX9nyh)EHFn|#U7&| zLoBC$%D)2)(vFX(0Twp6UrV`u0FSm<9nCuGN^f;7hR{$j&D;E#`zPc{2%skgf9r9b5vkkeFPa6VU`iuy-3N0isi0Cc)5m z=5n;kEukNPDHDogVLJweM;UH#wqvQM>`bgsGp}Br!SiqRHi2NmKuJ;@_^|vgi3RTR znLp+P5`8>a9d&|G5)i@{nue3B=xS9=6O1}fWaO6n2)TF3Li_X=RRNN~8vz=K#@E1T z@J7NU|M()<{vA}}v>4J!E2(53EyWLPI1ZpU6#%>&VW})dpEz>`?fv- z1;`%uV&qSeNUK(9EQ#=h0E{2|2!JP*1sbyA0XN=BEQnKQBktH`E*uIR{?kW*N@a|A zc%@h>Fq;7vIDu=5~z-hTC*9T}x%SgZg{&PN+U8d)7 z>bnz=*a<4yJbFoU35Eswj=nH{nF}MpHTps%pUOuzL*-A$wdvH*5-m8-)5t%LjQ}fS zDfG}Az7O7S;x(Zee%NC^g%*x@BLqi;G!v7Z>tLmREqUr*RMI4QAEr@YZcQ`8s)~_jI95&y=j@{CkbB4tEz@I7ip&xR z4V?DZzqWAF94i%OM_L30wf}LlLzFra2to9jz1+9z8P>;_!-+$Q%@r8xV7 z<0VFwCwask1A-8Xab6D)vaH?0v6KqbO3E29^Mj5z;ej(70HU91C_%Fr5f5s_JN&~P z>roK6lrjUo`OouhATF^GFk*pPc>!jp{qU0~yAg!t~g*`m@tY zM}c9M($O zlziq=-UdzXz!Gqq7!q2T_E2Qr4%7Q)u{;&gDSS18%#Or6+eoLtM`1m&>R$&L+v{H# zK6(t9)xPU(%AzJ27P@ERD7h0A`R1x^*J+UZ`ZVBmP2ki4bMj?}qm{WGF~;)+qo z(16)r^XWgvUm6`4e^9Go*3mD_Jp@g`2Tx&902I_YmqpEe9&OBtI6 z!JlgAz(t_;KqTm@uJwq*5sw!H^TS&6@Txkndt*w)v|lEAa&r~(WG=0U^E}A83;f0; zUK}6j0iGmZf!^UIh=K-=z4hw9Oze_f;Q6(~MyWFb;%C?KZ#*);ELYT3pufm2l=7a! z^xot4D%{`h`R$5=_yhySOM(rjNvk<#DrO4MnH!08@a&9A1AigRg+B<#~^B|6xBPK&1v*2Y^;r;8eh_j3%MYO&eJGfL=`i ziLH>;xUCHk-Bqb(g`0 z|H_*wwzRY{aE=5`*{!xq#4Eq0@fg^FCpf{d?6+q+o!KZig&Bky78gP}!GUv-k;<>9 zwFl+_j&sPM0b3PZqyh(w`k^gPIP`tnH-Y#jpTZM!Ew5HEn+n*P=)|Bu^hjs|N~#PL4%f86~4 e-d3ZiJ!h*50U}5e0w-7R(bX}~F3`O3_`d*d1#Ytd From 54ea30f4129624d8260ed65d2e67b94d07edf8ff Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 19:52:12 +0800 Subject: [PATCH 163/447] Add exceptions to find method of DisplayableList classes and remove some assertions --- src/main/java/seedu/eduke8/command/QuizCommand.java | 6 ------ src/main/java/seedu/eduke8/common/DisplayableList.java | 4 +++- src/main/java/seedu/eduke8/option/OptionList.java | 4 ++-- src/main/java/seedu/eduke8/question/QuestionList.java | 5 +++-- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 1 - src/main/java/seedu/eduke8/topic/TopicList.java | 8 ++++---- src/test/java/seedu/eduke8/option/OptionListTest.java | 7 ++++--- src/test/java/seedu/eduke8/question/QuestionListTest.java | 3 ++- 8 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 2c6c175e45..f8f08869e0 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -7,7 +7,6 @@ import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; -import java.util.logging.Level; import java.util.logging.Logger; public class QuizCommand extends Command { @@ -20,7 +19,6 @@ public class QuizCommand extends Command { public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { assert topicList != null; - assert numOfQuestions != 0; this.topicList = topicList; this.numOfQuestions = numOfQuestions; @@ -36,11 +34,7 @@ public void execute(DisplayableList displayableList, Ui ui) { singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); - } catch (NullPointerException e) { - LOGGER.log(Level.WARNING, "QuizCommand Execution: A NullPointerException was thrown."); - ui.printError("Error! There is no such topic listed in our storage. Please try again."); } - } } diff --git a/src/main/java/seedu/eduke8/common/DisplayableList.java b/src/main/java/seedu/eduke8/common/DisplayableList.java index 94645351f9..c44a6ae831 100644 --- a/src/main/java/seedu/eduke8/common/DisplayableList.java +++ b/src/main/java/seedu/eduke8/common/DisplayableList.java @@ -1,11 +1,13 @@ package seedu.eduke8.common; +import seedu.eduke8.exception.Eduke8Exception; + import java.util.ArrayList; public interface DisplayableList { ArrayList getInnerList(); - Displayable find(String description); + Displayable find(String description) throws Eduke8Exception; int getCount(); } diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index adaed3974a..a4a88e9d0f 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -23,13 +23,13 @@ public ArrayList getInnerList() { } @Override - public Displayable find(String description) { + public Displayable find(String description) throws Eduke8Exception { for (Displayable option : options) { if (description.equals(option.getDescription())) { return option; } } - return null; + throw new Eduke8Exception("No such option exists, did you spell it correctly?"); } public int findCorrectOptionIndex() throws Eduke8Exception { diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index d0704b0793..b1f7589d4f 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -2,6 +2,7 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; @@ -27,12 +28,12 @@ public ArrayList getInnerList() { } @Override - public Displayable find(String description) { + public Displayable find(String description) throws Eduke8Exception { for (Displayable question : questions) { if (description.equals(question.getDescription())) { return question; } } - return null; + throw new Eduke8Exception("No such question exists, did you spell it correctly?"); } } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 1d9a3c5edd..24b0ecd0bd 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -28,7 +28,6 @@ public class SingleTopicQuiz implements Quiz { public SingleTopicQuiz(Topic topic, int numberOfQuestions) { assert topic != null; - assert numberOfQuestions >= 0; this.topic = topic; this.numberOfQuestions = numberOfQuestions; diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 72736fa6d5..08733badcd 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -2,10 +2,10 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.ui.Ui; import java.util.ArrayList; -import seedu.eduke8.ui.Ui; -import java.util.logging.Level; import java.util.logging.Logger; public class TopicList implements DisplayableList { @@ -27,13 +27,13 @@ public ArrayList getInnerList() { } @Override - public Displayable find(String topicName) { + public Displayable find(String topicName) throws Eduke8Exception { for (Displayable topic : topics) { if (topicName.equals(topic.getDescription())) { return topic; } } - return null; + throw new Eduke8Exception("No such topic exists, did you spell it correctly?"); } public int getCount() { diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java index 71eb6efa78..e05a7f290a 100644 --- a/src/test/java/seedu/eduke8/option/OptionListTest.java +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -2,11 +2,12 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; + class OptionListTest { private static final String PLACEHOLDER_OPTION_ONE_DESCRIPTION = "Option one"; private static final String PLACEHOLDER_OPTION_TWO_DESCRIPTION = "Option two"; @@ -35,7 +36,7 @@ void getInnerList_oneOption_expectsTrue() { } @Test - void find_twoOptions_returnOptionOne() { + void find_twoOptions_returnOptionOne() throws Eduke8Exception { OptionList optionList = createOptionList(); Displayable optionOne = optionList.find(PLACEHOLDER_OPTION_ONE_DESCRIPTION); diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java index 85f78f79e0..ba928a17e3 100644 --- a/src/test/java/seedu/eduke8/question/QuestionListTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.explanation.Explanation; import seedu.eduke8.hint.Hint; import seedu.eduke8.option.Option; @@ -29,7 +30,7 @@ void getCount_twoQuestions_returnsCountOfTwo() { } @Test - void find_questionListWithTwoQuestions_returnsFirstQuestion() { + void find_questionListWithTwoQuestions_returnsFirstQuestion() throws Eduke8Exception { QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); Displayable firstQuestionOfQuestionList = questionList.find(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); From 8f6b0fd24d943eda87813f05001bccc2edc7608a Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 19:55:16 +0800 Subject: [PATCH 164/447] Correct error message --- src/main/java/seedu/eduke8/exception/ExceptionMessages.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java index 4551bd92c6..d5d1748316 100644 --- a/src/main/java/seedu/eduke8/exception/ExceptionMessages.java +++ b/src/main/java/seedu/eduke8/exception/ExceptionMessages.java @@ -15,7 +15,7 @@ public class ExceptionMessages { public static final String ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS = "Please choose only options 1, 2, 3 or 4"; public static final String ERROR_QUIZ_INVALID_QUESTION_NUMBER = "The number of quiz questions" - + " must be more than 1!"; + + " must be more than 0!"; public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = "There is not enough questions in the topic for the quiz!"; From 7e2ba05e5ca3624f19b4743d31b7d3378dea42e4 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 21:02:13 +0800 Subject: [PATCH 165/447] Clean up and standardize Junit tests using abstract class --- .../java/seedu/eduke8/storage/LogStorage.java | 4 +- .../java/seedu/eduke8/storage/Storage.java | 3 +- .../seedu/eduke8/storage/TopicsStorage.java | 7 +- src/test/java/seedu/eduke8/Eduke8Test.java | 112 +++++++++++++++++- .../eduke8/command/AnswerCommandTest.java | 41 ++++--- .../seedu/eduke8/command/HintCommandTest.java | 16 +-- .../eduke8/explanation/ExplanationTest.java | 8 +- src/test/java/seedu/eduke8/hint/HintTest.java | 8 +- .../java/seedu/eduke8/note/NoteListTest.java | 13 +- .../seedu/eduke8/option/OptionListTest.java | 36 +++--- .../java/seedu/eduke8/option/OptionTest.java | 15 ++- .../seedu/eduke8/parser/MenuParserTest.java | 28 +---- .../seedu/eduke8/parser/QuizParserTest.java | 13 +- .../eduke8/question/QuestionListTest.java | 52 ++------ .../seedu/eduke8/question/QuestionTest.java | 47 ++------ .../question/QuizQuestionsManagerTest.java | 54 +-------- .../eduke8/quiz/SingleTopicQuizTest.java | 21 +--- .../seedu/eduke8/storage/LogStorageTest.java | 14 +-- .../seedu/eduke8/topic/TopicListTest.java | 78 ++---------- .../java/seedu/eduke8/topic/TopicTest.java | 57 +-------- 20 files changed, 227 insertions(+), 400 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index 1fa1c7e9c3..60b4cdb365 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -19,7 +19,7 @@ public LogStorage(String filePath) { // Set up save to file inside of print to console @Override - public void save() throws IOException { + public File save() throws IOException { LogManager.getLogManager().reset(); LOGGER.setLevel(Level.ALL); @@ -37,6 +37,8 @@ public void save() throws IOException { LOGGER.addHandler(fh); LOGGER.log(Level.INFO, "Logging to file started"); + + return logFile; } @Override diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index 35936e5e36..f553336630 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -3,11 +3,12 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import java.io.File; import java.io.IOException; import java.util.ArrayList; public interface Storage { - void save() throws IOException; + File save() throws IOException; ArrayList load() throws IOException, ParseException; diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 25d4af5c64..3de287a320 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -13,6 +13,7 @@ import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; @@ -27,10 +28,8 @@ public TopicsStorage(String filePath) { } @Override - public void save() throws IOException { - createFileIfNotExists(); - - // For adding and removing questions for v2 + public File save() throws IOException { + return createFileIfNotExists(); } @Override diff --git a/src/test/java/seedu/eduke8/Eduke8Test.java b/src/test/java/seedu/eduke8/Eduke8Test.java index fc9842864d..97326e9f6b 100644 --- a/src/test/java/seedu/eduke8/Eduke8Test.java +++ b/src/test/java/seedu/eduke8/Eduke8Test.java @@ -1,12 +1,112 @@ package seedu.eduke8; -import static org.junit.jupiter.api.Assertions.assertTrue; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.explanation.Explanation; +import seedu.eduke8.hint.Hint; +import seedu.eduke8.option.Option; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; -import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.Arrays; -class Eduke8Test { - @Test - public void sampleTest() { - assertTrue(true); +public abstract class Eduke8Test { + protected static final String PLACEHOLDER_TOPIC_ONE_DESCRIPTION = "First Topic"; + protected static final String PLACEHOLDER_TOPIC_TWO_DESCRIPTION = "Second Topic"; + protected static final String PLACEHOLDER_QUESTION_ONE_DESCRIPTION = "First question description."; + protected static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; + protected static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; + protected static final String PLACEHOLDER_OPTION_ONE_DESCRIPTION = "Option one"; + protected static final String PLACEHOLDER_OPTION_TWO_DESCRIPTION = "Option two"; + protected static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; + protected static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = + "Option A gives the best explanation out of all."; + protected static final String NONSENSE_DESCRIPTION = "Nonsense"; + + protected TopicList createTestTopicList() { + ArrayList topics = new ArrayList<>(); + Topic topic1 = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); + Topic topic2 = createTestTopic(PLACEHOLDER_TOPIC_TWO_DESCRIPTION); + + topics.add(topic1); + topics.add(topic2); + + return new TopicList(topics); + } + + protected Topic createTestTopic(String description) { + QuestionList questionList = createQuestionList(); + + return new Topic(description, questionList); + } + + protected QuestionList createQuestionList() { + Question question1 = createTestQuestion(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestion(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + Question question3 = createTestQuestion(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); + + ArrayList questions = new ArrayList<>( + Arrays.asList(question1, question2, question3) + ); + + return new QuestionList(questions); + } + + protected Question createTestQuestion(String description) { + OptionList optionList = createOptionList(); + + Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); + Explanation explanation = new Explanation(PLACEHOLDER_EXPLANATION_DESCRIPTION); + + return new Question(description, optionList, hint, explanation); + } + + protected OptionList createOptionList() { + Option option1 = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + Option option2 = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); + ArrayList options = new ArrayList<>( + Arrays.asList(option1, option2) + ); + + return new OptionList(options); + } + + // Creates a question list that holds two questions, each with a unique description + protected QuestionList createQuestionListWithTwoUniqueQuestions() { + Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + + ArrayList questions = new ArrayList<>( + Arrays.asList(question1, question2) + ); + + return new QuestionList(questions); + } + + // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint + protected Question createTestQuestionWithCustomDescription(String description) { + OptionList optionList = createOptionList(); + + Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); + + Explanation explanation = new Explanation(PLACEHOLDER_EXPLANATION_DESCRIPTION); + + return new Question(description, optionList, hint, explanation); + } + + // Creates a question list that holds two questions, each with a unique description + protected QuestionList createQuestionListWithThreeUniqueQuestions() { + Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + Question question3 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); + + ArrayList questions = new ArrayList<>( + Arrays.asList(question1, question2, question3) + ); + + return new QuestionList(questions); } } diff --git a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java index 178c6b6458..36873d4c4c 100644 --- a/src/test/java/seedu/eduke8/command/AnswerCommandTest.java +++ b/src/test/java/seedu/eduke8/command/AnswerCommandTest.java @@ -1,37 +1,36 @@ package seedu.eduke8.command; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; +import seedu.eduke8.Eduke8Test; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; import seedu.eduke8.question.Question; import seedu.eduke8.ui.Ui; -import java.util.ArrayList; - +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -public class AnswerCommandTest { +public class AnswerCommandTest extends Eduke8Test { @Test - public void execute_correctAnswer_markAnsweredCorrectly() { - Option option = new Option("test"); - option.markAsCorrectAnswer(); - // OptionList optionList = new OptionList(); - // optionList.add(option); - ArrayList optionsArrayList = new ArrayList<>(); - optionsArrayList.add(option); - OptionList optionList = new OptionList(optionsArrayList); + public void execute_correctAnswer_markAnsweredCorrectly() throws Eduke8Exception { + Question question = createTestQuestion(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Option correctOption = (Option) question.getOptionList().find(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + correctOption.markAsCorrectAnswer(); + + Command answerCommand = new AnswerCommand(correctOption, question); + answerCommand.execute(question.getOptionList(), new Ui()); - Hint hint = new Hint("test"); - Explanation explanation = new Explanation("test"); + assertTrue(question.wasAnsweredCorrectly()); + } - Question question = new Question("test", optionList, hint, explanation); + @Test + public void execute_wrongAnswer_notMarkAnsweredCorrectly() throws Eduke8Exception { + Question question = createTestQuestion(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + Option wrongOption = (Option) question.getOptionList().find(PLACEHOLDER_OPTION_ONE_DESCRIPTION); - Command answerCommand = new AnswerCommand(option, question); - answerCommand.execute(optionList, new Ui()); + Command answerCommand = new AnswerCommand(wrongOption, question); + answerCommand.execute(question.getOptionList(), new Ui()); - assertTrue(question.wasAnsweredCorrectly()); + assertFalse(question.wasAnsweredCorrectly()); } } diff --git a/src/test/java/seedu/eduke8/command/HintCommandTest.java b/src/test/java/seedu/eduke8/command/HintCommandTest.java index ff04fabe49..5bdf168d76 100644 --- a/src/test/java/seedu/eduke8/command/HintCommandTest.java +++ b/src/test/java/seedu/eduke8/command/HintCommandTest.java @@ -1,28 +1,22 @@ package seedu.eduke8.command; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; import seedu.eduke8.option.OptionList; import seedu.eduke8.ui.Ui; -import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertTrue; -public class HintCommandTest { +public class HintCommandTest extends Eduke8Test { @Test public void execute_normal_hintWasShown() { - Hint hint = new Hint("test"); + Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); Command hintCommand = new HintCommand(hint); - Option option1 = new Option("test1"); - ArrayList optionsArrayList = new ArrayList(); - optionsArrayList.add(option1); + OptionList optionList = createOptionList(); - OptionList options = new OptionList(optionsArrayList); - - hintCommand.execute(options, new Ui()); + hintCommand.execute(optionList, new Ui()); assertTrue(hint.wasShown()); } diff --git a/src/test/java/seedu/eduke8/explanation/ExplanationTest.java b/src/test/java/seedu/eduke8/explanation/ExplanationTest.java index b2e9fb73e1..3532bb94aa 100644 --- a/src/test/java/seedu/eduke8/explanation/ExplanationTest.java +++ b/src/test/java/seedu/eduke8/explanation/ExplanationTest.java @@ -1,16 +1,16 @@ package seedu.eduke8.explanation; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import static org.junit.jupiter.api.Assertions.assertEquals; -public class ExplanationTest { +public class ExplanationTest extends Eduke8Test { @Test void getExplanationDescription_explanationDescription_returnsExplanationDescription() { - String inputExplanationDescription = "Option A gives the best explanation out of all."; - Explanation explanation = new Explanation(inputExplanationDescription); + Explanation explanation = new Explanation(PLACEHOLDER_EXPLANATION_DESCRIPTION); - assertEquals(inputExplanationDescription, explanation.getDescription()); + assertEquals(PLACEHOLDER_EXPLANATION_DESCRIPTION, explanation.getDescription()); } } diff --git a/src/test/java/seedu/eduke8/hint/HintTest.java b/src/test/java/seedu/eduke8/hint/HintTest.java index 7227f7525e..b2ef62ff82 100644 --- a/src/test/java/seedu/eduke8/hint/HintTest.java +++ b/src/test/java/seedu/eduke8/hint/HintTest.java @@ -1,16 +1,16 @@ package seedu.eduke8.hint; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import static org.junit.jupiter.api.Assertions.assertEquals; -class HintTest { +class HintTest extends Eduke8Test { @Test void getHintDescription_hintDescription_returnsHintDescription() { - String inputHintDescription = "Please check the textbook page 88"; - Hint hint = new Hint(inputHintDescription); + Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); - assertEquals(inputHintDescription, hint.getDescription()); + assertEquals(PLACEHOLDER_HINT_DESCRIPTION, hint.getDescription()); } } \ No newline at end of file diff --git a/src/test/java/seedu/eduke8/note/NoteListTest.java b/src/test/java/seedu/eduke8/note/NoteListTest.java index 8f7ea798db..be604b58ab 100644 --- a/src/test/java/seedu/eduke8/note/NoteListTest.java +++ b/src/test/java/seedu/eduke8/note/NoteListTest.java @@ -5,6 +5,7 @@ import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; +import java.util.Arrays; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,7 +16,6 @@ public class NoteListTest { private static final String NOTE_THREE = "Third Note"; private static final int DEFAULT_NOTE_COUNT = 2; - @Test void getCount_TwoNotes_returnsCountOfTwo() throws Eduke8Exception { NoteList noteList = createTestNoteList(); @@ -41,16 +41,13 @@ void delete_thirdNoteToNoteList_returnsCountOfOne() throws Eduke8Exception { } private NoteList createTestNoteList() throws Eduke8Exception { - ArrayList noteArrayList = new ArrayList<>(); - Note note1 = new Note(NOTE_ONE); Note note2 = new Note(NOTE_TWO); - noteArrayList.add(note1); - noteArrayList.add(note2); - - NoteList noteList = new NoteList(noteArrayList); + ArrayList noteArrayList = new ArrayList<>( + Arrays.asList(note1, note2) + ); - return noteList; + return new NoteList(noteArrayList); } } diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java index e05a7f290a..27c8d23f26 100644 --- a/src/test/java/seedu/eduke8/option/OptionListTest.java +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -1,33 +1,27 @@ package seedu.eduke8.option; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; -import java.util.ArrayList; - import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; -class OptionListTest { - private static final String PLACEHOLDER_OPTION_ONE_DESCRIPTION = "Option one"; - private static final String PLACEHOLDER_OPTION_TWO_DESCRIPTION = "Option two"; - private static final int DEFAULT_OPTION_COUNT = 1; +class OptionListTest extends Eduke8Test { + private static final int DEFAULT_OPTION_COUNT = 2; @Test - void getCount_oneOption_returnsCountOfOne() { + void getCount_twoOptions_returnsCountOfTwo() { OptionList optionList = createOptionList(); assertEquals(DEFAULT_OPTION_COUNT, optionList.getCount()); } @Test - void getInnerList_oneOption_expectsTrue() { + void getInnerList_sameOption_expectsTrue() { OptionList optionList = createOptionList(); - ArrayList options = new ArrayList<>(); - - Option optionOne = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); - options.add(optionOne); - OptionList optionListTest = new OptionList(options); + OptionList optionListTest = createOptionList(); String optionListDescription = optionList.getInnerList().get(0).getDescription(); String optionListTestDescription = optionListTest.getInnerList().get(0).getDescription(); @@ -43,13 +37,17 @@ void find_twoOptions_returnOptionOne() throws Eduke8Exception { assertEquals(PLACEHOLDER_OPTION_ONE_DESCRIPTION, optionOne.getDescription()); } - private OptionList createOptionList() { - ArrayList options = new ArrayList<>(); - Option optionOne = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); + @Test + void findCorrectOptionIndex_notCorrectOption_expectEduke8Exception() { + OptionList optionList = createOptionList(); + + assertThrows(Eduke8Exception.class, optionList::findCorrectOptionIndex); + } - options.add(optionOne); - OptionList optionList = new OptionList(options); + @Test + void find_optionNotFound_expectEduke8Exception() { + OptionList optionList = createOptionList(); - return optionList; + assertThrows(Eduke8Exception.class, () -> optionList.find(NONSENSE_DESCRIPTION)); } } diff --git a/src/test/java/seedu/eduke8/option/OptionTest.java b/src/test/java/seedu/eduke8/option/OptionTest.java index ff1a640e28..2d1aee6a53 100644 --- a/src/test/java/seedu/eduke8/option/OptionTest.java +++ b/src/test/java/seedu/eduke8/option/OptionTest.java @@ -1,31 +1,30 @@ package seedu.eduke8.option; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -class OptionTest { - private static final String PLACEHOLDER_OPTION_DESCRIPTION = "Option"; - +class OptionTest extends Eduke8Test { @Test void getDescription_placeholderOptionDescription_returnsOptionDescription() { - Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + Option option = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); - assertEquals(PLACEHOLDER_OPTION_DESCRIPTION, option.getDescription()); + assertEquals(PLACEHOLDER_OPTION_ONE_DESCRIPTION, option.getDescription()); } @Test void wasShown_placeholderOptionDescription_expectsTrue() { - Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + Option option = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); - String optionDescription = option.getDescription(); + option.getDescription(); assertTrue(option.wasShown()); } @Test void markAsCorrectAnswer_optionMarkedAsCorrectOption_expectsTrue() { - Option option = new Option(PLACEHOLDER_OPTION_DESCRIPTION); + Option option = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); option.markAsCorrectAnswer(); assertTrue(option.isCorrectAnswer()); diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index d003d03825..23dcf8166a 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -1,39 +1,17 @@ package seedu.eduke8.parser; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.command.Command; import seedu.eduke8.command.IncorrectCommand; -import seedu.eduke8.common.Displayable; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.OptionList; -import seedu.eduke8.question.Question; -import seedu.eduke8.question.QuestionList; -import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; -import seedu.eduke8.ui.Ui; - -import java.lang.reflect.Array; -import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertTrue; -public class MenuParserTest { +public class MenuParserTest extends Eduke8Test { @Test public void menuParser_wrongStringInput_expectIncorrectCommand() { - Ui ui = new Ui(); - Hint hint = new Hint("description"); - ArrayList optionsArrayList = new ArrayList<>(); - OptionList optionList = new OptionList(optionsArrayList); - Explanation explanation = new Explanation("explanation"); - ArrayList questions = new ArrayList<>(); - Question question = new Question("description", optionList, hint, explanation); - questions.add(question); - QuestionList questionList = new QuestionList(questions); - Topic topic = new Topic("description", questionList); - ArrayList topics = new ArrayList<>(); - topics.add(topic); - TopicList topicList = new TopicList(topics); + TopicList topicList = createTestTopicList(); MenuParser menuParser = new MenuParser(); try { diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java index b98befd86a..fb2474863f 100644 --- a/src/test/java/seedu/eduke8/parser/QuizParserTest.java +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -1,6 +1,7 @@ package seedu.eduke8.parser; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.command.AnswerCommand; import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; @@ -13,11 +14,12 @@ import seedu.eduke8.question.Question; import java.util.ArrayList; +import java.util.Collections; import static org.junit.jupiter.api.Assertions.assertTrue; -public class QuizParserTest { +public class QuizParserTest extends Eduke8Test { @Test public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @@ -35,7 +37,10 @@ public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @Test public void quizParser_correctStringInput_success() { Hint hint = new Hint("description"); - ArrayList optionsArrayList = new ArrayList<>(); + Option option = new Option("1"); + ArrayList optionsArrayList = new ArrayList<>( + Collections.singletonList(option) + ); OptionList optionList = new OptionList(optionsArrayList); Explanation explanation = new Explanation("explanation"); QuizParser quizParser = new QuizParser(); @@ -45,10 +50,6 @@ public void quizParser_correctStringInput_success() { Command resultCommand = quizParser.parseCommand(optionList, "hint"); assertTrue(resultCommand instanceof HintCommand); - optionsArrayList.add(new Option("1")); - // optionList.add(new Option("1")); - optionList = new OptionList(optionsArrayList); - quizParser.setQuestion(question); resultCommand = quizParser.parseCommand(optionList, "1"); assertTrue(resultCommand instanceof AnswerCommand); diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java index ba928a17e3..a3168f106d 100644 --- a/src/test/java/seedu/eduke8/question/QuestionListTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -1,27 +1,18 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; - -import java.util.ArrayList; +import seedu.eduke8.topic.TopicList; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; -class QuestionListTest { +class QuestionListTest extends Eduke8Test { - private static final String PLACEHOLDER_QUESTION_ONE_DESCRIPTION = "First question description."; - private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; - private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; - private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; - private static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = "Option A gives the best explanation out of all."; private static final int DEFAULT_QUESTION_COUNT = 2; - @Test void getCount_twoQuestions_returnsCountOfTwo() { QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); @@ -38,37 +29,10 @@ void find_questionListWithTwoQuestions_returnsFirstQuestion() throws Eduke8Excep assertEquals(PLACEHOLDER_QUESTION_ONE_DESCRIPTION, firstQuestionOfQuestionList.getDescription()); } + @Test + void find_questionNotFound_expectEduke8Exception() { + QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); - // Creates a question list that holds two questions, each with a unique description - private QuestionList createQuestionListWithTwoUniqueQuestions() { - ArrayList questions = new ArrayList<>(); - Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); - - questions.add(question1); - questions.add(question2); - - QuestionList questionList = new QuestionList(questions); - return questionList; - } - - // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint - private Question createTestQuestionWithCustomDescription(String description) { - Option option1 = new Option("test1"); - Option option2 = new Option("test2"); - ArrayList optionsArrayList = new ArrayList<>(); - optionsArrayList.add(option1); - optionsArrayList.add(option2); - OptionList optionList = new OptionList(optionsArrayList); - - String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; - Hint hint = new Hint(inputHintDescription); - - String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; - Explanation explanation = new Explanation(inputExplanationDescription); - - Question question = new Question(description, optionList, hint, explanation); - - return question; + assertThrows(Eduke8Exception.class, () -> questionList.find(NONSENSE_DESCRIPTION)); } } \ No newline at end of file diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index ab3fe8d84f..6475f8ab13 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -1,18 +1,13 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; -import seedu.eduke8.explanation.Explanation; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; - -import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -class QuestionTest { +class QuestionTest extends Eduke8Test { private static final String PLACEHOLDER_QUESTION_DESCRIPTION = "This is a question description."; private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; @@ -23,7 +18,7 @@ class QuestionTest { @Test void getDescription_placeholderQuestionDescription_returnsQuestionDescription() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); assertEquals(PLACEHOLDER_QUESTION_DESCRIPTION, question.getDescription()); } @@ -31,7 +26,7 @@ void getDescription_placeholderQuestionDescription_returnsQuestionDescription() @Test void wasShown_questionThatWasShownToUser_expectsTrue() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); // When question is being shown to user, it is marked as shown automatically. String questionDescriptionShownToUser = question.getDescription(); @@ -41,7 +36,7 @@ void wasShown_questionThatWasShownToUser_expectsTrue() { @Test void getOptionList_optionListWithTwoOptions_returnsCountOfTwoOptions() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); assertEquals(OPTIONLIST_OPTIONS_COUNT, question.getOptionList().getCount()); } @@ -49,16 +44,15 @@ void getOptionList_optionListWithTwoOptions_returnsCountOfTwoOptions() { @Test void getHint_hintObject_returnsHintDescription() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); assertEquals(PLACEHOLDER_HINT_DESCRIPTION, question.getHint().getDescription()); } - @Test void wasHintShown_questionWithHintShown_expectsTrue() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); Hint hintThatWasShownToUser = question.getHint(); @@ -71,7 +65,7 @@ void wasHintShown_questionWithHintShown_expectsTrue() { @Test void getExplanation_explanationObject_returnsExplanationDescription() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); assertEquals(PLACEHOLDER_EXPLANATION_DESCRIPTION, question.getExplanation().getDescription()); } @@ -79,32 +73,9 @@ void getExplanation_explanationObject_returnsExplanationDescription() { @Test void wasAnsweredCorrectly_questionMarkedAsAnsweredCorrectly_expectsTrue() { //Creates a question object with description, 2 options, explanation and a hint - Question question = createTestQuestion(); + Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); question.markAsAnsweredCorrectly(); assertTrue(question.wasAnsweredCorrectly()); } - - - //Creates a question object with description, 2 options, explanation and a hint - private Question createTestQuestion() { - String inputQuestionDescription = PLACEHOLDER_QUESTION_DESCRIPTION; - - Option option1 = new Option("test1"); - Option option2 = new Option("test2"); - ArrayList optionsArrayList = new ArrayList<>(); - optionsArrayList.add(option1); - optionsArrayList.add(option2); - OptionList optionList = new OptionList(optionsArrayList); - - String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; - Hint hint = new Hint(inputHintDescription); - - String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; - Explanation explanation = new Explanation(inputExplanationDescription); - - Question question = new Question(inputQuestionDescription, optionList, hint, explanation); - - return question; - } } diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index b710fcfdef..c478e048cc 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -1,27 +1,16 @@ package seedu.eduke8.question; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; - -import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; -class QuizQuestionsManagerTest { +class QuizQuestionsManagerTest extends Eduke8Test { - private static final String PLACEHOLDER_QUESTION_ONE_DESCRIPTION = "First question description."; - private static final String PLACEHOLDER_QUESTION_TWO_DESCRIPTION = "Second question description."; - private static final String PLACEHOLDER_QUESTION_THREE_DESCRIPTION = "Second question description."; - private static final String PLACEHOLDER_HINT_DESCRIPTION = "Please check the textbook page 88"; - private static final String PLACEHOLDER_EXPLANATION_DESCRIPTION = "Option A gives the best explanation out of all."; private static final int TOPIC_QUESTIONS_COUNT = 3; private static final int QUIZ_QUESTIONS_COUNT = 2; private static final int QUIZ_QUESTIONS_COUNT_MAX = 3; @@ -103,41 +92,4 @@ void areAllQuestionsAnswered_fullyAnsweredQuiz_expectsTrue() throws Eduke8Except assertTrue(quizQuestionsManager.areAllQuestionsAnswered()); } - - - - // Creates a question list that holds two questions, each with a unique description - private QuestionList createQuestionListWithThreeUniqueQuestions() { - ArrayList questions = new ArrayList<>(); - Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); - Question question3 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); - - questions.add(question1); - questions.add(question2); - questions.add(question3); - - QuestionList questionList = new QuestionList(questions); - return questionList; - } - - // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint - private Question createTestQuestionWithCustomDescription(String description) { - Option option1 = new Option("test1"); - Option option2 = new Option("test2"); - ArrayList optionsArrayList = new ArrayList<>(); - optionsArrayList.add(option1); - optionsArrayList.add(option2); - OptionList optionList = new OptionList(optionsArrayList); - - String inputHintDescription = PLACEHOLDER_HINT_DESCRIPTION; - Hint hint = new Hint(inputHintDescription); - - String inputExplanationDescription = PLACEHOLDER_EXPLANATION_DESCRIPTION; - Explanation explanation = new Explanation(inputExplanationDescription); - - Question question = new Question(description, optionList, hint, explanation); - - return question; - } } diff --git a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java index 0bdcda2f44..0b8943001c 100644 --- a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java +++ b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java @@ -1,31 +1,17 @@ package seedu.eduke8.quiz; -import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; -import java.io.IOException; -import java.util.ArrayList; - import static org.junit.jupiter.api.Assertions.assertThrows; -public class SingleTopicQuizTest { - private Topic topic; - - public SingleTopicQuizTest() throws ParseException, IOException { - TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); - ArrayList topics = topicsStorage.load(); - assert topics != null; - topic = (Topic) topics.get(0); - assert topic != null; - } - +public class SingleTopicQuizTest extends Eduke8Test { @Test public void startQuiz_zeroQuestions_expectEduke8Exception() { + Topic topic = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, 0); assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); @@ -33,6 +19,7 @@ public void startQuiz_zeroQuestions_expectEduke8Exception() { @Test public void startQuiz_tooManyQuestions_expectEduke8Exception() { + Topic topic = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); int questionsInTopic = topic.getQuestionList().getCount(); SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, questionsInTopic + 1); diff --git a/src/test/java/seedu/eduke8/storage/LogStorageTest.java b/src/test/java/seedu/eduke8/storage/LogStorageTest.java index cc649a5acd..1aac028d68 100644 --- a/src/test/java/seedu/eduke8/storage/LogStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/LogStorageTest.java @@ -21,10 +21,8 @@ public class LogStorageTest { @Test public void save_newLogFile_newLogFileCreated() throws IOException { LogStorage logStorage = new LogStorage(LOG_PATH); - logStorage.save(); - String filePath = appendRelativePath(new File("").getAbsolutePath(), LOG_PATH); - File logFile = new File(filePath); + File logFile = logStorage.save(); assertTrue(logFile.exists()); @@ -40,14 +38,4 @@ private String getSecondLineOfLogs(File logFile) throws FileNotFoundException { logReader.close(); return logData; } - - private String appendRelativePath(String originalPath, String relativePath) { - String fullPath = originalPath; - String[] relativePathSplit = relativePath.split("/"); - for (String path: relativePathSplit) { - fullPath += File.separator + path; - } - - return fullPath; - } } diff --git a/src/test/java/seedu/eduke8/topic/TopicListTest.java b/src/test/java/seedu/eduke8/topic/TopicListTest.java index c0e2c10a0b..7f018cadf1 100644 --- a/src/test/java/seedu/eduke8/topic/TopicListTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicListTest.java @@ -1,29 +1,14 @@ package seedu.eduke8.topic; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestTemplate; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; -import seedu.eduke8.question.Question; -import seedu.eduke8.question.QuestionList; -import java.util.ArrayList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -class TopicListTest { +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; - private static final String TOPIC_ONE_DESCRIPTION = "First Topic"; - private static final String TOPIC_TWO_DESCRIPTION = "Second Topic"; - private static final String TOPIC_THREE_DESCRIPTION = "Third Topic"; - private static final String QUESTION_ONE_DESCRIPTION = "First Question"; - private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; - private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; - private static final String HINT = "Hint"; - private static final String EXPLANATION = "Explanation"; +class TopicListTest extends Eduke8Test { private static final int DEFAULT_TOPIC_COUNT = 2; @Test @@ -37,58 +22,15 @@ void getCount_TwoTopics_returnsCountOfTwo() { @Test void find_topicListWithTwoTopics_returnsFirstTopic() throws Eduke8Exception { TopicList topicList = createTestTopicList(); - Displayable topic1 = topicList.find(TOPIC_ONE_DESCRIPTION); - - assertEquals(TOPIC_ONE_DESCRIPTION, topic1.getDescription()); - } - - - private TopicList createTestTopicList() { - ArrayList topics = new ArrayList<>(); - Topic topic1 = createTestTopic(TOPIC_ONE_DESCRIPTION); - Topic topic2 = createTestTopic(TOPIC_TWO_DESCRIPTION); - - topics.add(topic1); - topics.add(topic2); - - TopicList topicList = new TopicList(topics); - return topicList; - } + Displayable topic1 = topicList.find(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); - private Topic createTestTopic(String description) { - QuestionList questionList = createQuestionList(); - Topic topic = new Topic(description, questionList); - - return topic; - } - - private QuestionList createQuestionList() { - ArrayList questions = new ArrayList<>(); - Question question1 = createTestQuestion(QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestion(QUESTION_TWO_DESCRIPTION); - Question question3 = createTestQuestion(QUESTION_THREE_DESCRIPTION); - - questions.add(question1); - questions.add(question2); - questions.add(question3); - - QuestionList questionList = new QuestionList(questions); - return questionList; + assertEquals(PLACEHOLDER_TOPIC_ONE_DESCRIPTION, topic1.getDescription()); } - private Question createTestQuestion(String description) { - Option option1 = new Option("test1"); - Option option2 = new Option("test2"); - ArrayList optionsArrayList = new ArrayList(); - optionsArrayList.add(option1); - optionsArrayList.add(option2); - OptionList optionList = new OptionList(optionsArrayList); - - Hint hint = new Hint(HINT); - Explanation explanation = new Explanation(EXPLANATION); - - Question question = new Question(description, optionList, hint, explanation); + @Test + void find_topicNotFound_expectEduke8Exception() { + TopicList topicList = createTestTopicList(); - return question; + assertThrows(Eduke8Exception.class, () -> topicList.find(NONSENSE_DESCRIPTION)); } } diff --git a/src/test/java/seedu/eduke8/topic/TopicTest.java b/src/test/java/seedu/eduke8/topic/TopicTest.java index 4084ae48d9..014cb4b449 100644 --- a/src/test/java/seedu/eduke8/topic/TopicTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicTest.java @@ -1,72 +1,27 @@ package seedu.eduke8.topic; import org.junit.jupiter.api.Test; -import seedu.eduke8.common.Displayable; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.explanation.Explanation; -import seedu.eduke8.hint.Hint; -import seedu.eduke8.option.Option; -import seedu.eduke8.option.OptionList; -import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; -import java.util.ArrayList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -class TopicTest { +import static org.junit.jupiter.api.Assertions.assertEquals; - private static final String QUESTION_ONE_DESCRIPTION = "First Question"; - private static final String QUESTION_TWO_DESCRIPTION = "Second Question"; - private static final String QUESTION_THREE_DESCRIPTION = "Third Question"; - private static final String HINT = "Hint"; - private static final String EXPLANATION = "Explanation"; +class TopicTest extends Eduke8Test { private static final String INPUT = "JUnit: Basic"; @Test void getsTopicDescription_topicDescription_returnsTopicDescription() throws Eduke8Exception { - String input = INPUT; - Topic topic = new Topic(input, createQuestionList()); + Topic topic = new Topic(INPUT, createQuestionList()); - assertEquals(input, topic.getDescription()); + assertEquals(INPUT, topic.getDescription()); } @Test void getsQuestionList_questionList_returnsQuestionList() throws Eduke8Exception { - String input = INPUT; QuestionList questionList = createQuestionList(); - Topic topic = new Topic(input, questionList); + Topic topic = new Topic(INPUT, questionList); assertEquals(questionList, topic.getQuestionList()); } - - private QuestionList createQuestionList() { - ArrayList questions = new ArrayList<>(); - Question question1 = createTestQuestion(QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestion(QUESTION_TWO_DESCRIPTION); - Question question3 = createTestQuestion(QUESTION_THREE_DESCRIPTION); - - questions.add(question1); - questions.add(question2); - questions.add(question3); - - QuestionList questionList = new QuestionList(questions); - return questionList; - } - - private Question createTestQuestion(String description) { - Option option1 = new Option("test1"); - Option option2 = new Option("test2"); - ArrayList optionsArrayList = new ArrayList(); - optionsArrayList.add(option1); - optionsArrayList.add(option2); - - OptionList optionList = new OptionList(optionsArrayList); - - Hint hint = new Hint(HINT); - Explanation explanation = new Explanation(EXPLANATION); - - Question question = new Question(description, optionList, hint, explanation); - - return question; - } } From 1bd1ae72daa4b859c7f697da9a26f52633db3696 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 21:09:21 +0800 Subject: [PATCH 166/447] Refactor for standardization --- src/test/java/seedu/eduke8/Eduke8Test.java | 51 +++---------------- .../seedu/eduke8/command/HintCommandTest.java | 2 +- .../seedu/eduke8/option/OptionListTest.java | 12 ++--- .../eduke8/question/QuestionListTest.java | 14 +++-- .../question/QuizQuestionsManagerTest.java | 12 ++--- .../java/seedu/eduke8/topic/TopicTest.java | 4 +- 6 files changed, 29 insertions(+), 66 deletions(-) diff --git a/src/test/java/seedu/eduke8/Eduke8Test.java b/src/test/java/seedu/eduke8/Eduke8Test.java index 97326e9f6b..1f1259a8c0 100644 --- a/src/test/java/seedu/eduke8/Eduke8Test.java +++ b/src/test/java/seedu/eduke8/Eduke8Test.java @@ -27,23 +27,23 @@ public abstract class Eduke8Test { protected static final String NONSENSE_DESCRIPTION = "Nonsense"; protected TopicList createTestTopicList() { - ArrayList topics = new ArrayList<>(); Topic topic1 = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); Topic topic2 = createTestTopic(PLACEHOLDER_TOPIC_TWO_DESCRIPTION); - topics.add(topic1); - topics.add(topic2); + ArrayList topics = new ArrayList<>( + Arrays.asList(topic1, topic2) + ); return new TopicList(topics); } protected Topic createTestTopic(String description) { - QuestionList questionList = createQuestionList(); + QuestionList questionList = createTestQuestionList(); return new Topic(description, questionList); } - protected QuestionList createQuestionList() { + protected QuestionList createTestQuestionList() { Question question1 = createTestQuestion(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); Question question2 = createTestQuestion(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); Question question3 = createTestQuestion(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); @@ -56,7 +56,7 @@ protected QuestionList createQuestionList() { } protected Question createTestQuestion(String description) { - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); Explanation explanation = new Explanation(PLACEHOLDER_EXPLANATION_DESCRIPTION); @@ -64,49 +64,14 @@ protected Question createTestQuestion(String description) { return new Question(description, optionList, hint, explanation); } - protected OptionList createOptionList() { + protected OptionList createTestOptionList() { Option option1 = new Option(PLACEHOLDER_OPTION_ONE_DESCRIPTION); Option option2 = new Option(PLACEHOLDER_OPTION_TWO_DESCRIPTION); + ArrayList options = new ArrayList<>( Arrays.asList(option1, option2) ); return new OptionList(options); } - - // Creates a question list that holds two questions, each with a unique description - protected QuestionList createQuestionListWithTwoUniqueQuestions() { - Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); - - ArrayList questions = new ArrayList<>( - Arrays.asList(question1, question2) - ); - - return new QuestionList(questions); - } - - // Creates a question with a specific description, 2 standard options, 1 standard explanation and a standard hint - protected Question createTestQuestionWithCustomDescription(String description) { - OptionList optionList = createOptionList(); - - Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); - - Explanation explanation = new Explanation(PLACEHOLDER_EXPLANATION_DESCRIPTION); - - return new Question(description, optionList, hint, explanation); - } - - // Creates a question list that holds two questions, each with a unique description - protected QuestionList createQuestionListWithThreeUniqueQuestions() { - Question question1 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); - Question question2 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); - Question question3 = createTestQuestionWithCustomDescription(PLACEHOLDER_QUESTION_THREE_DESCRIPTION); - - ArrayList questions = new ArrayList<>( - Arrays.asList(question1, question2, question3) - ); - - return new QuestionList(questions); - } } diff --git a/src/test/java/seedu/eduke8/command/HintCommandTest.java b/src/test/java/seedu/eduke8/command/HintCommandTest.java index 5bdf168d76..38dc329605 100644 --- a/src/test/java/seedu/eduke8/command/HintCommandTest.java +++ b/src/test/java/seedu/eduke8/command/HintCommandTest.java @@ -14,7 +14,7 @@ public void execute_normal_hintWasShown() { Hint hint = new Hint(PLACEHOLDER_HINT_DESCRIPTION); Command hintCommand = new HintCommand(hint); - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); hintCommand.execute(optionList, new Ui()); diff --git a/src/test/java/seedu/eduke8/option/OptionListTest.java b/src/test/java/seedu/eduke8/option/OptionListTest.java index 27c8d23f26..7b903bc8bc 100644 --- a/src/test/java/seedu/eduke8/option/OptionListTest.java +++ b/src/test/java/seedu/eduke8/option/OptionListTest.java @@ -13,15 +13,15 @@ class OptionListTest extends Eduke8Test { @Test void getCount_twoOptions_returnsCountOfTwo() { - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); assertEquals(DEFAULT_OPTION_COUNT, optionList.getCount()); } @Test void getInnerList_sameOption_expectsTrue() { - OptionList optionList = createOptionList(); - OptionList optionListTest = createOptionList(); + OptionList optionList = createTestOptionList(); + OptionList optionListTest = createTestOptionList(); String optionListDescription = optionList.getInnerList().get(0).getDescription(); String optionListTestDescription = optionListTest.getInnerList().get(0).getDescription(); @@ -31,7 +31,7 @@ void getInnerList_sameOption_expectsTrue() { @Test void find_twoOptions_returnOptionOne() throws Eduke8Exception { - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); Displayable optionOne = optionList.find(PLACEHOLDER_OPTION_ONE_DESCRIPTION); assertEquals(PLACEHOLDER_OPTION_ONE_DESCRIPTION, optionOne.getDescription()); @@ -39,14 +39,14 @@ void find_twoOptions_returnOptionOne() throws Eduke8Exception { @Test void findCorrectOptionIndex_notCorrectOption_expectEduke8Exception() { - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); assertThrows(Eduke8Exception.class, optionList::findCorrectOptionIndex); } @Test void find_optionNotFound_expectEduke8Exception() { - OptionList optionList = createOptionList(); + OptionList optionList = createTestOptionList(); assertThrows(Eduke8Exception.class, () -> optionList.find(NONSENSE_DESCRIPTION)); } diff --git a/src/test/java/seedu/eduke8/question/QuestionListTest.java b/src/test/java/seedu/eduke8/question/QuestionListTest.java index a3168f106d..2fd85db7b3 100644 --- a/src/test/java/seedu/eduke8/question/QuestionListTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionListTest.java @@ -4,25 +4,23 @@ import seedu.eduke8.Eduke8Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; -import seedu.eduke8.topic.TopicList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; class QuestionListTest extends Eduke8Test { - - private static final int DEFAULT_QUESTION_COUNT = 2; + private static final int DEFAULT_QUESTION_COUNT = 3; @Test - void getCount_twoQuestions_returnsCountOfTwo() { - QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + void getCount_threeQuestions_returnsCountOfThree() { + QuestionList questionList = createTestQuestionList(); assertEquals(DEFAULT_QUESTION_COUNT, questionList.getCount()); } @Test - void find_questionListWithTwoQuestions_returnsFirstQuestion() throws Eduke8Exception { - QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + void find_questionListWithThreeQuestions_returnsFirstQuestion() throws Eduke8Exception { + QuestionList questionList = createTestQuestionList(); Displayable firstQuestionOfQuestionList = questionList.find(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); @@ -31,7 +29,7 @@ void find_questionListWithTwoQuestions_returnsFirstQuestion() throws Eduke8Excep @Test void find_questionNotFound_expectEduke8Exception() { - QuestionList questionList = createQuestionListWithTwoUniqueQuestions(); + QuestionList questionList = createTestQuestionList(); assertThrows(Eduke8Exception.class, () -> questionList.find(NONSENSE_DESCRIPTION)); } diff --git a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java index c478e048cc..6dcab5f067 100644 --- a/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java +++ b/src/test/java/seedu/eduke8/question/QuizQuestionsManagerTest.java @@ -20,7 +20,7 @@ class QuizQuestionsManagerTest extends Eduke8Test { @Test void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_returnsCountOfTwo() throws Eduke8Exception { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); // Creating a quiz with 2 questions selected from a total of 3 questions from the topic QuizQuestionsManager quizQuestionsManager = @@ -33,7 +33,7 @@ void quizQuestionsManagerConstructor_twoQuizQuestionsFromThreeTopicQuestions_ret @Test void quizQuestionsManagerConstructor_threeQuizQuestionsFromThreeTopicQuestions_returnsCountOfTwo() throws Eduke8Exception { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); // Creating a quiz with 3 questions selected from a total of 3 questions from the topic QuizQuestionsManager quizQuestionsManager = @@ -45,7 +45,7 @@ void quizQuestionsManagerConstructor_threeQuizQuestionsFromThreeTopicQuestions_r @Test void quizQuestionsManagerConstructor_lessThanZeroNumberOfQuizQuestions_expectsException() { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); assertThrows(Eduke8Exception.class, () -> { QuizQuestionsManager quizQuestionsManager = @@ -56,7 +56,7 @@ void quizQuestionsManagerConstructor_lessThanZeroNumberOfQuizQuestions_expectsEx // Number of quiz questions requested by user exceeds the number of questions in the topic @Test void quizQuestionsManagerConstructor_invalidNumberOfQuizQuestions_expectsException() { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); assertThrows(Eduke8Exception.class, () -> { QuizQuestionsManager quizQuestionsManager = @@ -69,7 +69,7 @@ void quizQuestionsManagerConstructor_invalidNumberOfQuizQuestions_expectsExcepti @Test void getNextQuestion_currentQuestionNumberAtZero_returnsCurrentQuestionNumberAtOne() throws Eduke8Exception { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); // Creating a quiz with 2 questions selected from a total of 3 questions from the topic QuizQuestionsManager quizQuestionsManager = @@ -81,7 +81,7 @@ void getNextQuestion_currentQuestionNumberAtZero_returnsCurrentQuestionNumberAtO @Test void areAllQuestionsAnswered_fullyAnsweredQuiz_expectsTrue() throws Eduke8Exception { - QuestionList topicQuestionList = createQuestionListWithThreeUniqueQuestions(); + QuestionList topicQuestionList = createTestQuestionList(); // Creating a quiz with 2 questions selected from a total of 3 questions from the topic QuizQuestionsManager quizQuestionsManager = diff --git a/src/test/java/seedu/eduke8/topic/TopicTest.java b/src/test/java/seedu/eduke8/topic/TopicTest.java index 014cb4b449..0c8158acc8 100644 --- a/src/test/java/seedu/eduke8/topic/TopicTest.java +++ b/src/test/java/seedu/eduke8/topic/TopicTest.java @@ -12,14 +12,14 @@ class TopicTest extends Eduke8Test { @Test void getsTopicDescription_topicDescription_returnsTopicDescription() throws Eduke8Exception { - Topic topic = new Topic(INPUT, createQuestionList()); + Topic topic = new Topic(INPUT, createTestQuestionList()); assertEquals(INPUT, topic.getDescription()); } @Test void getsQuestionList_questionList_returnsQuestionList() throws Eduke8Exception { - QuestionList questionList = createQuestionList(); + QuestionList questionList = createTestQuestionList(); Topic topic = new Topic(INPUT, questionList); assertEquals(questionList, topic.getQuestionList()); From 28a4732efbd564e3b2d18fdcfe241009e8a2fd24 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 21:40:15 +0800 Subject: [PATCH 167/447] Fix io tesitng --- text-ui-test/EXPECTED.TXT | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index c849fbb2af..cb399d184d 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -75,7 +75,7 @@ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -The number of quiz questions must be more than 1! +The number of quiz questions must be more than 0! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ There is not enough questions in the topic for the quiz! @@ -120,16 +120,16 @@ quiz t/ n/ (Topics available can be found using the "topics" command) ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -Error! There is no such topic listed in our storage. Please try again. +No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -Error! There is no such topic listed in our storage. Please try again. +No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -Error! There is no such topic listed in our storage. Please try again. +No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ -Error! There is no such topic listed in our storage. Please try again. +No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ Start of quiz: From 2b2e22c77304780eadfcac34729cff3fe818f708 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 22 Oct 2020 22:29:23 +0800 Subject: [PATCH 168/447] Update io testing --- text-ui-test/EXPECTED.TXT | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index e27fbeb10e..8272346436 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -80,7 +80,7 @@ because option A is the best answer This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ The number of quiz questions must be more than 0! ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ @@ -127,16 +127,16 @@ Invalid command! The command for quiz is as follows: quiz t/ n/ (Topics available can be found using the "topics" command) ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------- +Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ No such topic exists, did you spell it correctly? ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ From fee34147e79676c36afa2cb87316ec3a34cd429f Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 23 Oct 2020 02:49:55 +0800 Subject: [PATCH 169/447] Add bookmark function. --- src/main/java/seedu/eduke8/Eduke8.java | 5 ++- .../seedu/eduke8/bookmark/BookmarkList.java | 43 +++++++++++++++++++ .../seedu/eduke8/command/BookmarkCommand.java | 41 ++++++++++++++++++ .../seedu/eduke8/command/QuizCommand.java | 7 ++- .../java/seedu/eduke8/parser/MenuParser.java | 20 ++++----- .../java/seedu/eduke8/parser/QuizParser.java | 18 +++++--- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 14 +++--- 7 files changed, 122 insertions(+), 26 deletions(-) create mode 100644 src/main/java/seedu/eduke8/bookmark/BookmarkList.java create mode 100644 src/main/java/seedu/eduke8/command/BookmarkCommand.java diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 6ce64bb3f5..3f486fd50e 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -1,6 +1,7 @@ package seedu.eduke8; import org.json.simple.parser.ParseException; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.command.Command; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; @@ -9,6 +10,7 @@ import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; +import java.awt.print.Book; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -24,6 +26,7 @@ public class Eduke8 { private static final String LOG_PATH = "data/logs/" + DATE_TIME_NOW.format(DATE_TIME_FORMATTER) + ".log"; private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + public BookmarkList bookmarks = new BookmarkList(); private MenuParser menuParser; private TopicsStorage topicsStorage; private LogStorage logStorage; @@ -31,7 +34,7 @@ public class Eduke8 { private Ui ui; private Eduke8(String dataPath, String logPath) { - menuParser = new MenuParser(); + menuParser = new MenuParser(bookmarks); topicsStorage = new TopicsStorage(dataPath); logStorage = new LogStorage(logPath); ui = new Ui(); diff --git a/src/main/java/seedu/eduke8/bookmark/BookmarkList.java b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java new file mode 100644 index 0000000000..4f5c856c06 --- /dev/null +++ b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java @@ -0,0 +1,43 @@ +package seedu.eduke8.bookmark; + +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + +import java.util.ArrayList; + +public class BookmarkList implements DisplayableList { + + private ArrayList bookmarks = new ArrayList<>(); + + @Override + public ArrayList getInnerList() { + return bookmarks; + } + + + public void add(Displayable question) { + assert question != null; // Exception in future if user can add question + bookmarks.add(question); + } + + + public void delete(int index) { + assert (index > 0 && index < bookmarks.size()); // Exception in future if user can delete question + bookmarks.remove(index); + } + + @Override + public Displayable find(String description) { + for (Displayable question : bookmarks) { + if (description.equals(question.getDescription())) { + return question; + } + } + return null; + } + + @Override + public int getCount() { + return bookmarks.size(); + } +} diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java new file mode 100644 index 0000000000..afae1bdab1 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -0,0 +1,41 @@ +package seedu.eduke8.command; + +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.question.Question; +import seedu.eduke8.ui.Ui; + +import java.util.ArrayList; + +public class BookmarkCommand extends Command { + + private BookmarkList bookmarks; + String typeOfBookmarkCommand = ""; + + public BookmarkCommand(Question question, String typeOfBookmarkCommand, BookmarkList bookmarks) { + assert bookmarks != null; + bookmarks.add(question); + this.bookmarks = bookmarks; + this.typeOfBookmarkCommand = typeOfBookmarkCommand; + } + + public BookmarkCommand(String typeOfBookmarkCommand, BookmarkList bookmarks) { + this.typeOfBookmarkCommand = typeOfBookmarkCommand; + this.bookmarks = bookmarks; + } + + + @Override + public void execute(DisplayableList displayableList, Ui ui) { + if(typeOfBookmarkCommand.equals("listing")) { + ArrayList allBookmarks; + allBookmarks = bookmarks.getInnerList(); + int i = 1; + for (Displayable question : allBookmarks) { + System.out.println(i + ". " + question.getDescription()); + i++; + } + } + } +} diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index f8f08869e0..5b1e6354a6 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -1,5 +1,6 @@ package seedu.eduke8.command; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.quiz.SingleTopicQuiz; @@ -16,21 +17,23 @@ public class QuizCommand extends Command { private int numOfQuestions; private String topicName; private Ui ui; + private BookmarkList bookmarks; - public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui) { + public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui, BookmarkList bookmarks) { assert topicList != null; this.topicList = topicList; this.numOfQuestions = numOfQuestions; this.topicName = topicName; this.ui = ui; + this.bookmarks = bookmarks; } @Override public void execute(DisplayableList displayableList, Ui ui) { try { Topic topic = (Topic) topicList.find(topicName); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions, bookmarks); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index baf9b13748..72ee3f96fe 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,13 +1,7 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.AboutCommand; -import seedu.eduke8.command.ExitCommand; -import seedu.eduke8.command.HelpCommand; -import seedu.eduke8.command.IncorrectCommand; -import seedu.eduke8.command.TextbookCommand; -import seedu.eduke8.command.TopicsCommand; -import seedu.eduke8.command.QuizCommand; +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.command.*; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; @@ -26,7 +20,9 @@ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - public MenuParser() { + private BookmarkList bookmarks; + public MenuParser(BookmarkList bookmarks) { + this.bookmarks = bookmarks; } /** @@ -40,6 +36,7 @@ public MenuParser() { public Command parseCommand(DisplayableList topicList, String userInput) { assert topicList != null; + LOGGER.log(Level.INFO, "Begin parsing command."); String[] commandArr = userInput.trim().split(" ", 0); @@ -72,7 +69,10 @@ public Command parseCommand(DisplayableList topicList, String userInput) { return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } LOGGER.log(Level.INFO, "Parsing complete: quiz command chosen."); - return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui); + return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui, bookmarks); + case "bookmark": + System.out.println("bookmarks are as follows: "); + return new BookmarkCommand("listing", bookmarks); case "exit": LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index caad4f450a..c4f2402e9a 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -1,9 +1,7 @@ package seedu.eduke8.parser; -import seedu.eduke8.command.AnswerCommand; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.HintCommand; -import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.command.*; import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.option.Option; @@ -26,6 +24,11 @@ public class QuizParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private Question question; + private BookmarkList bookmarks; + + public QuizParser(BookmarkList bookmarks){ + this.bookmarks = bookmarks; + } public void setQuestion(Question question) { assert question != null; @@ -37,7 +40,7 @@ public void setQuestion(Question question) { * Parses the user input. * * @param optionList the option list that contains the list of options available for the current question - * @param userInput the string input typed by the user + * @param userInput the string input typed by the user * @return a Command object which when executed will carry out the appropriate action */ @Override @@ -45,8 +48,11 @@ public Command parseCommand(DisplayableList optionList, String userInput) { if ("hint".equals(userInput)) { LOGGER.log(Level.INFO, "Parsing complete: hint command chosen."); return new HintCommand(question.getHint()); + } else if ("bookmark".equals(userInput)) { + LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); + return new BookmarkCommand(question, "storing", bookmarks); } - + try { ArrayList options = optionList.getInnerList(); int chosenIndex = Integer.parseInt(userInput) - 1; diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 93c0ce3d66..81c63d12d1 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,9 +1,7 @@ package seedu.eduke8.quiz; -import seedu.eduke8.command.AnswerCommand; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.HintCommand; -import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.command.*; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; @@ -25,13 +23,15 @@ public class SingleTopicQuiz implements Quiz { private Topic topic; private int numberOfQuestions; private QuizParser quizParser; + private BookmarkList bookmarks; - public SingleTopicQuiz(Topic topic, int numberOfQuestions) { + public SingleTopicQuiz(Topic topic, int numberOfQuestions, BookmarkList bookmarks) { assert topic != null; this.topic = topic; this.numberOfQuestions = numberOfQuestions; - quizParser = new QuizParser(); + this.bookmarks = bookmarks; + quizParser = new QuizParser(bookmarks); } @Override @@ -73,7 +73,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan Command command = getCommand(ui, optionList); - assert (command instanceof AnswerCommand || command instanceof HintCommand); + assert (command instanceof AnswerCommand || command instanceof HintCommand || command instanceof BookmarkCommand); while (!(command instanceof AnswerCommand)) { command.execute(optionList, ui); From c18268b9b636691facfc324dc2e136f7194eb5dc Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 23 Oct 2020 04:30:20 +0800 Subject: [PATCH 170/447] Add JUnit tests for ExitCommand and QuizCommand. --- .../seedu/eduke8/command/ExitCommandTest.java | 19 ++++++++++ .../seedu/eduke8/command/QuizCommandTest.java | 37 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/test/java/seedu/eduke8/command/ExitCommandTest.java create mode 100644 src/test/java/seedu/eduke8/command/QuizCommandTest.java diff --git a/src/test/java/seedu/eduke8/command/ExitCommandTest.java b/src/test/java/seedu/eduke8/command/ExitCommandTest.java new file mode 100644 index 0000000000..956362a1f4 --- /dev/null +++ b/src/test/java/seedu/eduke8/command/ExitCommandTest.java @@ -0,0 +1,19 @@ +package seedu.eduke8.command; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class ExitCommandTest extends Eduke8Test { + + @Test + public void execute_normal_isExitIsTrue() { + Command exitCommand = new ExitCommand(); + DisplayableList displayableList = createTestOptionList(); + exitCommand.execute(displayableList, new Ui()); + assertTrue(exitCommand.isExit); + } +} diff --git a/src/test/java/seedu/eduke8/command/QuizCommandTest.java b/src/test/java/seedu/eduke8/command/QuizCommandTest.java new file mode 100644 index 0000000000..4f653e48aa --- /dev/null +++ b/src/test/java/seedu/eduke8/command/QuizCommandTest.java @@ -0,0 +1,37 @@ +package seedu.eduke8.command; + +import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.question.QuizQuestionsManager; +import seedu.eduke8.quiz.SingleTopicQuiz; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +public class QuizCommandTest extends Eduke8Test { + + @Test + public void execute_badTopicName_exceptionThrown(){ + Ui ui = new Ui(); + TopicList topicList = createTestTopicList(); + Command badQuizCommand = new QuizCommand(topicList,1, "badname", ui); + Eduke8Exception exception = assertThrows(Eduke8Exception.class, () -> { + topicList.find("badname"); + }); + } + + @Test + public void execute_wrongTopicNum_exceptionThrown(){ + Ui ui = new Ui(); + TopicList topicList = createTestTopicList(); + Eduke8Exception ee = assertThrows(Eduke8Exception.class, () -> { + new QuizQuestionsManager(50, createTestQuestionList().getInnerList()); + }); + } + +} From c13fe673d14be49f98d665a8dd90ce7de71270d3 Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 23 Oct 2020 04:34:05 +0800 Subject: [PATCH 171/447] Fix checkstyle issues. --- src/test/java/seedu/eduke8/command/QuizCommandTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/seedu/eduke8/command/QuizCommandTest.java b/src/test/java/seedu/eduke8/command/QuizCommandTest.java index 4f653e48aa..3b91988a51 100644 --- a/src/test/java/seedu/eduke8/command/QuizCommandTest.java +++ b/src/test/java/seedu/eduke8/command/QuizCommandTest.java @@ -16,17 +16,17 @@ public class QuizCommandTest extends Eduke8Test { @Test - public void execute_badTopicName_exceptionThrown(){ + public void execute_badTopicName_exceptionThrown() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); - Command badQuizCommand = new QuizCommand(topicList,1, "badname", ui); + Command badQuizCommand = new QuizCommand(topicList, 1, "badname", ui); Eduke8Exception exception = assertThrows(Eduke8Exception.class, () -> { topicList.find("badname"); }); } @Test - public void execute_wrongTopicNum_exceptionThrown(){ + public void execute_wrongTopicNum_exceptionThrown() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); Eduke8Exception ee = assertThrows(Eduke8Exception.class, () -> { From b98e4b9ffdedc809e0df0fe97ed4caac5f3c0dde Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 23 Oct 2020 11:54:32 +0800 Subject: [PATCH 172/447] Update bookmark implementation. --- src/main/java/seedu/eduke8/command/BookmarkCommand.java | 2 +- src/test/java/seedu/eduke8/parser/MenuParserTest.java | 4 +++- src/test/java/seedu/eduke8/parser/QuizParserTest.java | 7 +++++-- src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java | 7 +++++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java index afae1bdab1..3d38203ba6 100644 --- a/src/main/java/seedu/eduke8/command/BookmarkCommand.java +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -28,7 +28,7 @@ public BookmarkCommand(String typeOfBookmarkCommand, BookmarkList bookmarks) { @Override public void execute(DisplayableList displayableList, Ui ui) { - if(typeOfBookmarkCommand.equals("listing")) { + if (typeOfBookmarkCommand.equals("listing")) { ArrayList allBookmarks; allBookmarks = bookmarks.getInnerList(); int i = 1; diff --git a/src/test/java/seedu/eduke8/parser/MenuParserTest.java b/src/test/java/seedu/eduke8/parser/MenuParserTest.java index 23dcf8166a..903c0b55b0 100644 --- a/src/test/java/seedu/eduke8/parser/MenuParserTest.java +++ b/src/test/java/seedu/eduke8/parser/MenuParserTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.Eduke8Test; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.command.Command; import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.topic.TopicList; @@ -11,8 +12,9 @@ public class MenuParserTest extends Eduke8Test { @Test public void menuParser_wrongStringInput_expectIncorrectCommand() { + BookmarkList bookmarks = new BookmarkList(); TopicList topicList = createTestTopicList(); - MenuParser menuParser = new MenuParser(); + MenuParser menuParser = new MenuParser(bookmarks); try { Command badCommand = menuParser.parseCommand(topicList, "quiz t/wrongtopic n/badnnum"); diff --git a/src/test/java/seedu/eduke8/parser/QuizParserTest.java b/src/test/java/seedu/eduke8/parser/QuizParserTest.java index fb2474863f..c2a2947692 100644 --- a/src/test/java/seedu/eduke8/parser/QuizParserTest.java +++ b/src/test/java/seedu/eduke8/parser/QuizParserTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.Eduke8Test; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.command.AnswerCommand; import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; @@ -23,9 +24,10 @@ public class QuizParserTest extends Eduke8Test { @Test public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { + BookmarkList bookmarks = new BookmarkList(); ArrayList optionsArrayList = new ArrayList<>(); OptionList optionList = new OptionList(optionsArrayList); - QuizParser quizParser = new QuizParser(); + QuizParser quizParser = new QuizParser(bookmarks); Command badCommand = quizParser.parseCommand(optionList, "one"); assertTrue(badCommand instanceof IncorrectCommand); @@ -36,6 +38,7 @@ public void quizParser_wrongStringInput_expectIncorrectCommandReturn() { @Test public void quizParser_correctStringInput_success() { + BookmarkList bookmarks = new BookmarkList(); Hint hint = new Hint("description"); Option option = new Option("1"); ArrayList optionsArrayList = new ArrayList<>( @@ -43,7 +46,7 @@ public void quizParser_correctStringInput_success() { ); OptionList optionList = new OptionList(optionsArrayList); Explanation explanation = new Explanation("explanation"); - QuizParser quizParser = new QuizParser(); + QuizParser quizParser = new QuizParser(bookmarks); Question question = new Question("description", optionList, hint, explanation); quizParser.setQuestion(question); diff --git a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java index 0b8943001c..c0e10c1135 100644 --- a/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java +++ b/src/test/java/seedu/eduke8/quiz/SingleTopicQuizTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.Eduke8Test; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; @@ -11,18 +12,20 @@ public class SingleTopicQuizTest extends Eduke8Test { @Test public void startQuiz_zeroQuestions_expectEduke8Exception() { + BookmarkList bookmarks = new BookmarkList(); Topic topic = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, 0); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, 0, bookmarks); assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); } @Test public void startQuiz_tooManyQuestions_expectEduke8Exception() { + BookmarkList bookmarks = new BookmarkList(); Topic topic = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); int questionsInTopic = topic.getQuestionList().getCount(); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, questionsInTopic + 1); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, questionsInTopic + 1, bookmarks); assertThrows(Eduke8Exception.class, () -> singleTopicQuiz.startQuiz(new Ui())); } From 9d2fecd3d5fd71eee4e3dac6e365855cd6189a5b Mon Sep 17 00:00:00 2001 From: Joseph Date: Fri, 23 Oct 2020 17:01:13 +0800 Subject: [PATCH 173/447] Fix checkstyle issues. --- src/main/java/seedu/eduke8/parser/MenuParser.java | 11 ++++++++++- src/main/java/seedu/eduke8/parser/QuizParser.java | 8 ++++++-- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 9 +++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 72ee3f96fe..0f86b04698 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,7 +1,15 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.HelpCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.TextbookCommand; +import seedu.eduke8.command.TopicsCommand; +import seedu.eduke8.command.AboutCommand; +import seedu.eduke8.command.QuizCommand; +import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.ExitCommand; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; @@ -21,6 +29,7 @@ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private BookmarkList bookmarks; + public MenuParser(BookmarkList bookmarks) { this.bookmarks = bookmarks; } diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index c4f2402e9a..8b448ddbe1 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -1,7 +1,11 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.AnswerCommand; +import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.HintCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.option.Option; @@ -26,7 +30,7 @@ public class QuizParser implements Parser { private Question question; private BookmarkList bookmarks; - public QuizParser(BookmarkList bookmarks){ + public QuizParser(BookmarkList bookmarks) { this.bookmarks = bookmarks; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 81c63d12d1..564d9fe170 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,7 +1,11 @@ package seedu.eduke8.quiz; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.*; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.AnswerCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.HintCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; @@ -73,7 +77,8 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan Command command = getCommand(ui, optionList); - assert (command instanceof AnswerCommand || command instanceof HintCommand || command instanceof BookmarkCommand); + assert (command instanceof AnswerCommand || command instanceof HintCommand + || command instanceof BookmarkCommand); while (!(command instanceof AnswerCommand)) { command.execute(optionList, ui); From 6ca7e4f67ce1884654ec25ea17d971462c96da32 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 23 Oct 2020 17:47:14 +0800 Subject: [PATCH 174/447] Improve abstraction to add UserStorage skeleton --- .../seedu/eduke8/storage/LocalStorage.java | 24 ++++++++++- .../java/seedu/eduke8/storage/LogStorage.java | 2 +- .../seedu/eduke8/storage/TopicsStorage.java | 42 ++++++++----------- .../seedu/eduke8/storage/UserStorage.java | 24 +++++++++++ 4 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 src/main/java/seedu/eduke8/storage/UserStorage.java diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 2bf2636ebe..612a561f62 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -1,6 +1,11 @@ package seedu.eduke8.storage; +import org.json.simple.JSONArray; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.util.logging.Logger; @@ -8,13 +13,28 @@ public abstract class LocalStorage implements Storage { protected String filePath = new File("").getAbsolutePath(); protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - public LocalStorage(String filePath) { + protected LocalStorage(String filePath) { assert filePath != null; // Use relative path for Unix systems this.filePath = appendRelativePath(this.filePath, filePath); } + @Override + public File save() throws IOException { + return createFileIfNotExists(); + } + + protected JSONArray getJsonArrayFromFile() throws IOException, ParseException { + //JSON parser object to parse read file + JSONParser jsonParser = new JSONParser(); + + FileReader reader = new FileReader(filePath); + + //Read JSON file + return (JSONArray) jsonParser.parse(reader); + } + private String appendRelativePath(String originalPath, String relativePath) { String fullPath = originalPath; String[] relativePathSplit = relativePath.split("/"); @@ -25,7 +45,7 @@ private String appendRelativePath(String originalPath, String relativePath) { return fullPath; } - protected File createFileIfNotExists() throws IOException { + private File createFileIfNotExists() throws IOException { File file = new File(filePath); if (!file.exists()) { diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index 60b4cdb365..8e5fc5e395 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -29,7 +29,7 @@ public File save() throws IOException { LOGGER.addHandler(ch); // Log all to the file - File logFile = createFileIfNotExists(); + File logFile = super.save(); FileHandler fh = new FileHandler(logFile.getAbsolutePath()); fh.setFormatter(new SimpleFormatter()); diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 3de287a320..89dfe763b0 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -2,7 +2,6 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; import seedu.eduke8.explanation.Explanation; @@ -13,8 +12,6 @@ import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; -import java.io.File; -import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.logging.Level; @@ -23,26 +20,23 @@ public class TopicsStorage extends LocalStorage { + private static final String KEY_TOPIC = "topic"; + private static final String KEY_QUESTIONS = "questions"; + private static final String KEY_DESCRIPTION = "description"; + private static final String KEY_OPTIONS = "options"; + private static final String KEY_HINT = "hint"; + private static final String KEY_EXPLANATION = "explanation"; + private static final String KEY_CORRECT_OPTION = "correct"; + public TopicsStorage(String filePath) { super(filePath); } - @Override - public File save() throws IOException { - return createFileIfNotExists(); - } - @Override public ArrayList load() throws IOException, ParseException { - //JSON parser object to parse read file - JSONParser jsonParser = new JSONParser(); - - FileReader reader = new FileReader(filePath); - - //Read JSON file - JSONArray topicsAsJsonArray = (JSONArray) jsonParser.parse(reader); + JSONArray topicsAsJsonArray = getJsonArrayFromFile(); - //Iterate over employee array + //Iterate over topics array ArrayList topicsAsObjects = (ArrayList) topicsAsJsonArray.stream() .map(topic -> parseToTopicObject((JSONObject) topic)) .collect(toList()); @@ -55,9 +49,9 @@ public ArrayList load() throws IOException, ParseException { } private Topic parseToTopicObject(JSONObject topic) { - String topicTitle = (String) topic.get("topic"); + String topicTitle = (String) topic.get(KEY_TOPIC); - JSONArray questionsAsJsonArray = (JSONArray) topic.get("questions"); + JSONArray questionsAsJsonArray = (JSONArray) topic.get(KEY_QUESTIONS); ArrayList questionsAsObjects = (ArrayList) questionsAsJsonArray.stream() .map(question -> parseToQuestionObject((JSONObject) question)) .collect(toList()); @@ -70,8 +64,8 @@ private Topic parseToTopicObject(JSONObject topic) { } private Question parseToQuestionObject(JSONObject question) { - String questionDescription = (String) question.get("description"); - JSONArray optionsAsJsonArray = (JSONArray) question.get("options"); + String questionDescription = (String) question.get(KEY_DESCRIPTION); + JSONArray optionsAsJsonArray = (JSONArray) question.get(KEY_OPTIONS); ArrayList optionsAsObjects = (ArrayList) optionsAsJsonArray.stream() .map(option -> parseToOptionObject((JSONObject) option)) .collect(toList()); @@ -80,11 +74,11 @@ private Question parseToQuestionObject(JSONObject question) { OptionList optionList = new OptionList(optionsAsObjects); - String hintDescription = (String) question.get("hint"); + String hintDescription = (String) question.get(KEY_HINT); Hint hint = new Hint(hintDescription); - String explanationDescription = (String) question.get("explanation"); + String explanationDescription = (String) question.get(KEY_EXPLANATION); Explanation explanation = new Explanation(explanationDescription); @@ -92,8 +86,8 @@ private Question parseToQuestionObject(JSONObject question) { } private Option parseToOptionObject(JSONObject option) { - String optionDescription = (String) option.get("description"); - boolean isCorrectAnswer = (boolean) option.get("correct"); + String optionDescription = (String) option.get(KEY_DESCRIPTION); + boolean isCorrectAnswer = (boolean) option.get(KEY_CORRECT_OPTION); Option optionAsObject = new Option(optionDescription); diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java new file mode 100644 index 0000000000..f60e2b915c --- /dev/null +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -0,0 +1,24 @@ +package seedu.eduke8.storage; + +import org.json.simple.JSONArray; +import org.json.simple.parser.ParseException; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; + +import java.io.IOException; +import java.util.ArrayList; + +public class UserStorage extends LocalStorage { + private DisplayableList infoList; + + protected UserStorage(String filePath) { + super(filePath); + } + + @Override + public ArrayList load() throws IOException, ParseException { + JSONArray objectsAsJsonArray = getJsonArrayFromFile(); + + return null; + } +} From 7a5b5c5296978e18a43f823db34cb7a6b5e5c468 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 23 Oct 2020 18:08:03 +0800 Subject: [PATCH 175/447] Add save method --- src/main/java/seedu/eduke8/storage/UserStorage.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index f60e2b915c..a43de8a297 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -5,6 +5,7 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -15,6 +16,13 @@ protected UserStorage(String filePath) { super(filePath); } + @Override + public File save() throws IOException { + File file = super.save(); + + return file; + } + @Override public ArrayList load() throws IOException, ParseException { JSONArray objectsAsJsonArray = getJsonArrayFromFile(); From 0ca26e379530b9a2870a30f09e2e8e8db1ce5479 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 23 Oct 2020 18:30:12 +0800 Subject: [PATCH 176/447] Start to integrate bookmarklist to user storage --- src/main/java/seedu/eduke8/Eduke8.java | 23 +++++++++++-------- .../seedu/eduke8/bookmark/BookmarkList.java | 6 ++++- .../seedu/eduke8/storage/LocalStorage.java | 13 +++++++++-- .../java/seedu/eduke8/storage/LogStorage.java | 23 ++++--------------- .../seedu/eduke8/storage/TopicsStorage.java | 2 +- .../seedu/eduke8/storage/UserStorage.java | 8 ++++--- 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 3f486fd50e..6bd0ccb51e 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -3,14 +3,13 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.command.Command; -import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.LogStorage; import seedu.eduke8.storage.TopicsStorage; +import seedu.eduke8.storage.UserStorage; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; -import java.awt.print.Book; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -25,26 +24,32 @@ public class Eduke8 { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"); private static final String LOG_PATH = "data/logs/" + DATE_TIME_NOW.format(DATE_TIME_FORMATTER) + ".log"; private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private static final String USER_PATH = "data/main/user.json"; - public BookmarkList bookmarks = new BookmarkList(); private MenuParser menuParser; private TopicsStorage topicsStorage; private LogStorage logStorage; + private UserStorage userStorage; private TopicList topicList; + private BookmarkList bookmarkList; private Ui ui; - private Eduke8(String dataPath, String logPath) { - menuParser = new MenuParser(bookmarks); - topicsStorage = new TopicsStorage(dataPath); - logStorage = new LogStorage(logPath); + private Eduke8(String dataPath, String logPath, String userPath) { ui = new Ui(); try { + topicsStorage = new TopicsStorage(dataPath); + logStorage = new LogStorage(logPath); + userStorage = new UserStorage(userPath); + logStorage.save(); topicList = new TopicList(topicsStorage.load()); + bookmarkList = new BookmarkList(userStorage.load()); } catch (ParseException | IOException e) { ui.printError(ERROR_STORAGE_FAIL); - LOGGER.log(Level.WARNING, "Error reading or writing local files."); + LOGGER.log(Level.WARNING, "Error reading or writing local files"); + System.exit(1); } + menuParser = new MenuParser(bookmarkList); } private void run() { @@ -75,6 +80,6 @@ private void exit() { } public static void main(String[] args) { - new Eduke8(DATA_PATH, LOG_PATH).run(); + new Eduke8(DATA_PATH, LOG_PATH, USER_PATH).run(); } } diff --git a/src/main/java/seedu/eduke8/bookmark/BookmarkList.java b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java index 4f5c856c06..e539830080 100644 --- a/src/main/java/seedu/eduke8/bookmark/BookmarkList.java +++ b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java @@ -7,7 +7,11 @@ public class BookmarkList implements DisplayableList { - private ArrayList bookmarks = new ArrayList<>(); + private ArrayList bookmarks; + + public BookmarkList(ArrayList bookmarks) { + this.bookmarks = bookmarks; + } @Override public ArrayList getInnerList() { diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 612a561f62..be36360b7e 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -3,26 +3,35 @@ import org.json.simple.JSONArray; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import seedu.eduke8.common.Displayable; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.util.ArrayList; import java.util.logging.Logger; public abstract class LocalStorage implements Storage { protected String filePath = new File("").getAbsolutePath(); protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + protected File file; - protected LocalStorage(String filePath) { + protected LocalStorage(String filePath) throws IOException { assert filePath != null; // Use relative path for Unix systems this.filePath = appendRelativePath(this.filePath, filePath); + file = createFileIfNotExists(); } @Override public File save() throws IOException { - return createFileIfNotExists(); + return file; + } + + @Override + public ArrayList load() throws IOException, ParseException { + return null; } protected JSONArray getJsonArrayFromFile() throws IOException, ParseException { diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index 8e5fc5e395..2d91ad498f 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -1,19 +1,11 @@ package seedu.eduke8.storage; -import org.json.simple.parser.ParseException; -import seedu.eduke8.common.Displayable; - import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.logging.ConsoleHandler; -import java.util.logging.FileHandler; -import java.util.logging.Level; -import java.util.logging.LogManager; -import java.util.logging.SimpleFormatter; +import java.util.logging.*; public class LogStorage extends LocalStorage { - public LogStorage(String filePath) { + public LogStorage(String filePath) throws IOException { super(filePath); } @@ -29,20 +21,13 @@ public File save() throws IOException { LOGGER.addHandler(ch); // Log all to the file - File logFile = super.save(); - - FileHandler fh = new FileHandler(logFile.getAbsolutePath()); + FileHandler fh = new FileHandler(file.getAbsolutePath()); fh.setFormatter(new SimpleFormatter()); fh.setLevel(Level.ALL); LOGGER.addHandler(fh); LOGGER.log(Level.INFO, "Logging to file started"); - return logFile; - } - - @Override - public ArrayList load() throws IOException, ParseException { - return null; + return file; } } diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 89dfe763b0..85d2caecbc 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -28,7 +28,7 @@ public class TopicsStorage extends LocalStorage { private static final String KEY_EXPLANATION = "explanation"; private static final String KEY_CORRECT_OPTION = "correct"; - public TopicsStorage(String filePath) { + public TopicsStorage(String filePath) throws IOException { super(filePath); } diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index a43de8a297..9af1947ba9 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -12,19 +12,21 @@ public class UserStorage extends LocalStorage { private DisplayableList infoList; - protected UserStorage(String filePath) { + public UserStorage(String filePath) throws IOException { super(filePath); } @Override public File save() throws IOException { - File file = super.save(); - return file; } @Override public ArrayList load() throws IOException, ParseException { + if (!file.exists()) { + return new ArrayList<>(); + } + JSONArray objectsAsJsonArray = getJsonArrayFromFile(); return null; From a70d2895ab9972f3ba59b07c6ba4df1ebe59b016 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Fri, 23 Oct 2020 18:36:44 +0800 Subject: [PATCH 177/447] Fix file construction --- src/main/java/seedu/eduke8/storage/LocalStorage.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index be36360b7e..41b35cb2d8 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -21,12 +21,12 @@ protected LocalStorage(String filePath) throws IOException { // Use relative path for Unix systems this.filePath = appendRelativePath(this.filePath, filePath); - file = createFileIfNotExists(); + file = new File(this.filePath); } @Override public File save() throws IOException { - return file; + return createFileIfNotExists(); } @Override @@ -55,8 +55,6 @@ private String appendRelativePath(String originalPath, String relativePath) { } private File createFileIfNotExists() throws IOException { - File file = new File(filePath); - if (!file.exists()) { file.getParentFile().mkdirs(); file.createNewFile(); From 352b6f220b953909518f584ad7bcf91eb07f0384 Mon Sep 17 00:00:00 2001 From: Joseph Date: Sat, 24 Oct 2020 01:13:14 +0800 Subject: [PATCH 178/447] Cleaned up Ui aspect of the bookmarking function. --- .../seedu/eduke8/command/BookmarkCommand.java | 10 ++----- src/main/java/seedu/eduke8/ui/Ui.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java index 3d38203ba6..ebdfd7bf1d 100644 --- a/src/main/java/seedu/eduke8/command/BookmarkCommand.java +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -29,13 +29,9 @@ public BookmarkCommand(String typeOfBookmarkCommand, BookmarkList bookmarks) { @Override public void execute(DisplayableList displayableList, Ui ui) { if (typeOfBookmarkCommand.equals("listing")) { - ArrayList allBookmarks; - allBookmarks = bookmarks.getInnerList(); - int i = 1; - for (Displayable question : allBookmarks) { - System.out.println(i + ". " + question.getDescription()); - i++; - } + ui.printListOfBookmarkedQuestions(bookmarks); + } else if (typeOfBookmarkCommand.equals("storing")) { + ui.printBookmarkedIndicator(); } } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index e26aee6b84..7655473d32 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -1,5 +1,6 @@ package seedu.eduke8.ui; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.common.Displayable; import seedu.eduke8.hint.Hint; import seedu.eduke8.note.Note; @@ -8,6 +9,7 @@ import seedu.eduke8.topic.Topic; import java.util.ArrayList; +import java.util.Arrays; import java.util.Scanner; public class Ui { @@ -189,4 +191,31 @@ private void printStartQuizQuestions(int numberOfQuestionsChosen) { System.out.println("s."); } } + public void printBookmarkedIndicator() { + printMessage("Bookmarked this question!"); + } + + public void printListOfBookmarkedQuestions(BookmarkList bookmarks) { + int i = 1; + ArrayList allBookmarks; + allBookmarks = bookmarks.getInnerList(); + String output = ""; + for (Displayable question : allBookmarks) { + String optionOutput = ""; + Question properQuestion = (Question) question; + ArrayList optionsAvailable = properQuestion.getOptionList().getInnerList(); + int j = 1; + for (Displayable option : optionsAvailable) { + optionOutput += "\n " + j + ") " + option.getDescription() + + ((j == optionsAvailable.size()) ? "\n" : ""); + j++; + } + output += i + ". " + question.getDescription() + optionOutput + " " + + ((i == allBookmarks.size()) ? "" : "\n"); + i++; + } + printMessage(output); + } + + } From 927c88d8546fcebbdad531b77346fcf470331f9f Mon Sep 17 00:00:00 2001 From: Joseph Date: Sat, 24 Oct 2020 01:28:02 +0800 Subject: [PATCH 179/447] Fixed a minor checkstyle issue. --- src/main/java/seedu/eduke8/ui/Ui.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 7655473d32..de9da1356f 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -191,6 +191,7 @@ private void printStartQuizQuestions(int numberOfQuestionsChosen) { System.out.println("s."); } } + public void printBookmarkedIndicator() { printMessage("Bookmarked this question!"); } From 324e26d616bbe74bfb4d39a30424c77a9bcddcc5 Mon Sep 17 00:00:00 2001 From: Joseph Date: Sat, 24 Oct 2020 01:59:23 +0800 Subject: [PATCH 180/447] Change testing sequence for QuizCommandTest. --- .../seedu/eduke8/command/QuizCommandTest.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/test/java/seedu/eduke8/command/QuizCommandTest.java b/src/test/java/seedu/eduke8/command/QuizCommandTest.java index 3b91988a51..785ea4d891 100644 --- a/src/test/java/seedu/eduke8/command/QuizCommandTest.java +++ b/src/test/java/seedu/eduke8/command/QuizCommandTest.java @@ -16,22 +16,21 @@ public class QuizCommandTest extends Eduke8Test { @Test - public void execute_badTopicName_exceptionThrown() { + public void execute_badTopicName_exceptionCaughtAndProgramContinuesWithoutLoopsOrFailing() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); Command badQuizCommand = new QuizCommand(topicList, 1, "badname", ui); - Eduke8Exception exception = assertThrows(Eduke8Exception.class, () -> { - topicList.find("badname"); - }); + badQuizCommand.execute(topicList, ui); + assertTrue(true); } @Test - public void execute_wrongTopicNum_exceptionThrown() { + public void execute_wrongTopicNum_exceptionCaughtAndProgramContinuesWithoutLoopsOrFailing() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); - Eduke8Exception ee = assertThrows(Eduke8Exception.class, () -> { - new QuizQuestionsManager(50, createTestQuestionList().getInnerList()); - }); + Command badQuizCommand = new QuizCommand(topicList, 50, "First Topic", ui); + badQuizCommand.execute(topicList, ui); + assertTrue(true); } } From 8574bbd06c6407c4e757da83035c0fc47d188a95 Mon Sep 17 00:00:00 2001 From: Joseph Date: Sat, 24 Oct 2020 02:07:18 +0800 Subject: [PATCH 181/447] Fix lack of bookmarklist in parameter of QuizCommand constructor in the test. --- src/test/java/seedu/eduke8/command/QuizCommandTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/eduke8/command/QuizCommandTest.java b/src/test/java/seedu/eduke8/command/QuizCommandTest.java index 785ea4d891..908841d2e8 100644 --- a/src/test/java/seedu/eduke8/command/QuizCommandTest.java +++ b/src/test/java/seedu/eduke8/command/QuizCommandTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Test; import seedu.eduke8.Eduke8Test; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.question.QuizQuestionsManager; import seedu.eduke8.quiz.SingleTopicQuiz; @@ -19,7 +20,8 @@ public class QuizCommandTest extends Eduke8Test { public void execute_badTopicName_exceptionCaughtAndProgramContinuesWithoutLoopsOrFailing() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); - Command badQuizCommand = new QuizCommand(topicList, 1, "badname", ui); + BookmarkList bookmarks = new BookmarkList(); + Command badQuizCommand = new QuizCommand(topicList, 1, "badname", ui, bookmarks); badQuizCommand.execute(topicList, ui); assertTrue(true); } @@ -28,7 +30,8 @@ public void execute_badTopicName_exceptionCaughtAndProgramContinuesWithoutLoopsO public void execute_wrongTopicNum_exceptionCaughtAndProgramContinuesWithoutLoopsOrFailing() { Ui ui = new Ui(); TopicList topicList = createTestTopicList(); - Command badQuizCommand = new QuizCommand(topicList, 50, "First Topic", ui); + BookmarkList bookmarks = new BookmarkList(); + Command badQuizCommand = new QuizCommand(topicList, 50, "First Topic", ui, bookmarks); badQuizCommand.execute(topicList, ui); assertTrue(true); } From 9bb93bc9e40498aec5cd2f34c29008e89cfd039b Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sat, 24 Oct 2020 02:19:11 +0800 Subject: [PATCH 182/447] Add Stats class skeleton --- docs/DeveloperGuide.md | 2 +- src/main/java/seedu/eduke8/Stats.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/eduke8/Stats.java diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c14878ddfb..dcabc7eab6 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -205,7 +205,7 @@ The Sequence Diagram below shows how `QuizQuestionsManager` achieves this for th `nextInt(5)` is a method call to an object of the `Random` class. It returns a random integer between 0 (inclusive) and the number passed in as argument, 5 in this scenario, exclusive. -To determine if randomQuestionIndex is not selected before, an integer ArrayList is initialized to record all the selected integers. By checking against this collection of integers, it can be determined if a currently selected integer is repeated or not, and if it is, no question will be added for that iteration of the loop. +To ensure that no two of the same question is selected, the selected randomQuestionIndex is checked to see if it is repeated. To determine if randomQuestionIndex is not selected before, an integer ArrayList is initialized to record all the selected integers. By checking against this collection of integers, it can be determined if a currently selected integer is repeated or not, and if it is, no question will be added for that iteration of the loop. An ArrayList of `Question` objects stores all the selected questions meant for the quiz. diff --git a/src/main/java/seedu/eduke8/Stats.java b/src/main/java/seedu/eduke8/Stats.java new file mode 100644 index 0000000000..1b7d0a8fdc --- /dev/null +++ b/src/main/java/seedu/eduke8/Stats.java @@ -0,0 +1,5 @@ +package seedu.eduke8; + +public class Stats { + +} From 8fc13d1cf4d0e2184807df033e66af8f6c5fc7e9 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sat, 24 Oct 2020 13:11:20 +0800 Subject: [PATCH 183/447] Add Stats classes and StatsCalculator class and subclasses --- src/main/java/seedu/eduke8/Stats.java | 15 ++++ .../java/seedu/eduke8/StatsCalculator.java | 76 +++++++++++++++++ .../seedu/eduke8/TopicalStatsCalculator.java | 85 +++++++++++++++++++ .../seedu/eduke8/UserStatsCalculator.java | 59 +++++++++++++ .../seedu/eduke8/question/QuestionList.java | 2 +- 5 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/eduke8/StatsCalculator.java create mode 100644 src/main/java/seedu/eduke8/TopicalStatsCalculator.java create mode 100644 src/main/java/seedu/eduke8/UserStatsCalculator.java diff --git a/src/main/java/seedu/eduke8/Stats.java b/src/main/java/seedu/eduke8/Stats.java index 1b7d0a8fdc..1dc921e151 100644 --- a/src/main/java/seedu/eduke8/Stats.java +++ b/src/main/java/seedu/eduke8/Stats.java @@ -1,5 +1,20 @@ package seedu.eduke8; +import seedu.eduke8.question.Question; + public class Stats { + private void showPointsEarned() { + + } + + + private void showTotalProgression() { + + } + + private void showTopicalProgression(){ + + } + } diff --git a/src/main/java/seedu/eduke8/StatsCalculator.java b/src/main/java/seedu/eduke8/StatsCalculator.java new file mode 100644 index 0000000000..7694b2ec03 --- /dev/null +++ b/src/main/java/seedu/eduke8/StatsCalculator.java @@ -0,0 +1,76 @@ +package seedu.eduke8; + +import org.json.simple.parser.ParseException; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.storage.TopicsStorage; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +import java.io.IOException; +import java.util.ArrayList; + +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static seedu.eduke8.exception.ExceptionMessages.ERROR_STORAGE_FAIL; + +public class StatsCalculator { + protected static final String DATA_PATH = "data/main/topics.json"; + protected static final int POINTS_PER_QUESTION = 2; + protected static final int POINTS_FOR_CORRECT_ANSWER_WITHOUT_HINT = 2; + protected static final int POINTS_FOR_CORRECT_ANSWER_WITH_HINT = 1; + protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + + protected TopicsStorage topicsStorage; + protected Ui ui; + + protected TopicList topicList; + protected ArrayList topics; + + public StatsCalculator() { + topicsStorage = new TopicsStorage(DATA_PATH); + ui = new Ui(); + + try { + topicList = new TopicList(topicsStorage.load()); + } catch (ParseException | IOException e) { + ui.printError(ERROR_STORAGE_FAIL); + LOGGER.log(Level.WARNING, "Error reading or writing local files."); + } + + topics = topicList.getInnerList(); + } + + protected int calculatePointsEarnedForQuestion(Question question) { + if (!question.wasAnsweredCorrectly()) { + return 0; + } else if (question.wasAnsweredCorrectly() && question.wasHintShown()) { + return POINTS_FOR_CORRECT_ANSWER_WITH_HINT; + } else { + return POINTS_FOR_CORRECT_ANSWER_WITHOUT_HINT; + } + } + + protected int calculateProgressionLevelPercentage(int userProgress, int total) { + int progressionLevel = userProgress / total; + + int progressionLevelPercentage = progressionLevel * 100; + + return progressionLevelPercentage; + } + + protected int calculateTotalQuestionCount() { + int totalQuestionCount = 0; + + for (Displayable topic : topics) { + QuestionList topicQuestionList = ((Topic) topic).getQuestionList(); + totalQuestionCount += topicQuestionList.getCount(); + } + + return totalQuestionCount; + } +} diff --git a/src/main/java/seedu/eduke8/TopicalStatsCalculator.java b/src/main/java/seedu/eduke8/TopicalStatsCalculator.java new file mode 100644 index 0000000000..44bc0c3336 --- /dev/null +++ b/src/main/java/seedu/eduke8/TopicalStatsCalculator.java @@ -0,0 +1,85 @@ +package seedu.eduke8; + +import seedu.eduke8.common.Displayable; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; + +// maybe can extend from statsCalculator +public class TopicalStatsCalculator extends StatsCalculator { + + private Topic topic; + private QuestionList topicQuestionList; + + public TopicalStatsCalculator(Topic topic) { + this.topic = topic; + this.topicQuestionList = topic.getQuestionList(); + } + + // check each qn and see if they are done + public int calculateTopicalQuestionsAttemptCount() { + int questionAttemptCount = 0; + for (Displayable question : topicQuestionList.getInnerList()) { + if (question.wasShown()) { + questionAttemptCount++; + } + } + return questionAttemptCount; + } + + public int calculateTopicalCompletionPercentage() { + return calculateProgressionLevelPercentage(calculateTopicalQuestionsAttemptCount(), + topicQuestionList.getCount()); + + } + + // check each qn and see if they are correct + public int calculateTopicalQuestionsCorrectCount() { + int questionCorrectCount = 0; + for (Displayable question : topicQuestionList.getInnerList()) { + if (((Question) question).wasAnsweredCorrectly()) { + questionCorrectCount++; + } + } + return questionCorrectCount; + } + + // Percentage + public int calculateTopicalAccuracyPercentage() { + return calculateProgressionLevelPercentage(calculateTopicalQuestionsCorrectCount(), + calculateTopicalQuestionsAttemptCount()); + } + + // check each qn and calculate number of hints used + public int calculateTopicalHintUsage() { + int hintUsageCount = 0; + for (Displayable question : topicQuestionList.getInnerList()) { + if (((Question) question).wasHintShown()) { + hintUsageCount++; + } + } + return hintUsageCount; + } + + + // The 2 methods below maybe could just extend from StatsCalulator + public int calculateTopicalPointsEarned() { + int pointsEarned = 0; + for (Displayable question : topicQuestionList.getInnerList()) { + pointsEarned += calculatePointsEarnedForQuestion((Question) question); + } + return pointsEarned; + } + + public int calculateTopicalPointsAvailable() { + int pointsAvailable = topicQuestionList.getCount() * POINTS_PER_QUESTION; + + return pointsAvailable; + } + + + public int calculateTopicalProgressionPercentage() { + return calculateProgressionLevelPercentage(calculateTopicalPointsEarned(), + calculateTopicalPointsAvailable()); + } +} diff --git a/src/main/java/seedu/eduke8/UserStatsCalculator.java b/src/main/java/seedu/eduke8/UserStatsCalculator.java new file mode 100644 index 0000000000..9c6431b55e --- /dev/null +++ b/src/main/java/seedu/eduke8/UserStatsCalculator.java @@ -0,0 +1,59 @@ +package seedu.eduke8; + + +import seedu.eduke8.common.Displayable; +import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; +import seedu.eduke8.topic.Topic; + +import java.util.ArrayList; + + +public class UserStatsCalculator extends StatsCalculator { + + public UserStatsCalculator() { + super(); + } + + // idea is to get the list of topics from topicList, iterate each topic and access their questionList + // Then in each questionList, iterate through each question and see if wasAnsweredCorrectly and if + // hint was shown. Answered correction without hint = +2 points, else with hint shown = +1 point + // can use topicalStatsCalculator method to help + public int calculateTotalPointsEarned() { + int totalPointsGained = 0; + + for (Displayable topic : topics) { + QuestionList topicQuestionList = ((Topic) topic).getQuestionList(); + + ArrayList questions = topicQuestionList.getInnerList(); + + for (int i = 0; i < questions.size(); i++) { + Question question = (Question) questions.get(i); + totalPointsGained += calculatePointsEarnedForQuestion(question); + } + } + + return totalPointsGained; + } + + // just get the count of the questionList * 2 + public int calculateTotalPointsAvailable() { + int totalPointsAvailable = calculateTotalQuestionCount() * POINTS_PER_QUESTION; + + return totalPointsAvailable; + } + + public int calculateOverallProgressionLevelPercentage() { + return calculateProgressionLevelPercentage(calculateTotalPointsEarned(), + calculateTotalPointsAvailable()); + } + + // determines if progression is over 50%, print diff messages + public boolean isProgressionOverHalf() { + if (calculateOverallProgressionLevelPercentage() >= 50) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index b1f7589d4f..87e701f61f 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -8,7 +8,7 @@ public class QuestionList implements DisplayableList { - private ArrayList questions; // list of questions for the particular topic + private ArrayList questions; // list of questions for a particular topic public QuestionList(ArrayList questions) { // The question list for topics must contain some questions about the topic From 6097111d46e0423ffe36684c8a44e644ce3d3854 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sat, 24 Oct 2020 22:30:30 +0800 Subject: [PATCH 184/447] Add sample code --- src/main/java/seedu/eduke8/Eduke8.java | 3 +- .../seedu/eduke8/storage/LocalStorage.java | 2 +- .../java/seedu/eduke8/storage/LogStorage.java | 4 +- .../seedu/eduke8/storage/TopicsStorage.java | 5 +- .../seedu/eduke8/storage/UserStorage.java | 51 ++++++++++++++++++- 5 files changed, 59 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 6bd0ccb51e..27f7457ccb 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -39,10 +39,11 @@ private Eduke8(String dataPath, String logPath, String userPath) { try { topicsStorage = new TopicsStorage(dataPath); logStorage = new LogStorage(logPath); - userStorage = new UserStorage(userPath); logStorage.save(); topicList = new TopicList(topicsStorage.load()); + + userStorage = new UserStorage(userPath, topicList); bookmarkList = new BookmarkList(userStorage.load()); } catch (ParseException | IOException e) { ui.printError(ERROR_STORAGE_FAIL); diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 41b35cb2d8..6ad6adc84b 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -16,7 +16,7 @@ public abstract class LocalStorage implements Storage { protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); protected File file; - protected LocalStorage(String filePath) throws IOException { + protected LocalStorage(String filePath) { assert filePath != null; // Use relative path for Unix systems diff --git a/src/main/java/seedu/eduke8/storage/LogStorage.java b/src/main/java/seedu/eduke8/storage/LogStorage.java index 2d91ad498f..20a4fccfb4 100644 --- a/src/main/java/seedu/eduke8/storage/LogStorage.java +++ b/src/main/java/seedu/eduke8/storage/LogStorage.java @@ -5,7 +5,7 @@ import java.util.logging.*; public class LogStorage extends LocalStorage { - public LogStorage(String filePath) throws IOException { + public LogStorage(String filePath) { super(filePath); } @@ -21,6 +21,8 @@ public File save() throws IOException { LOGGER.addHandler(ch); // Log all to the file + file = super.save(); + FileHandler fh = new FileHandler(file.getAbsolutePath()); fh.setFormatter(new SimpleFormatter()); fh.setLevel(Level.ALL); diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 85d2caecbc..4a1439bac9 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -28,11 +28,12 @@ public class TopicsStorage extends LocalStorage { private static final String KEY_EXPLANATION = "explanation"; private static final String KEY_CORRECT_OPTION = "correct"; - public TopicsStorage(String filePath) throws IOException { + public TopicsStorage(String filePath) { super(filePath); } @Override + @SuppressWarnings("unchecked") public ArrayList load() throws IOException, ParseException { JSONArray topicsAsJsonArray = getJsonArrayFromFile(); @@ -48,6 +49,7 @@ public ArrayList load() throws IOException, ParseException { return topicsAsObjects; } + @SuppressWarnings("unchecked") private Topic parseToTopicObject(JSONObject topic) { String topicTitle = (String) topic.get(KEY_TOPIC); @@ -63,6 +65,7 @@ private Topic parseToTopicObject(JSONObject topic) { return new Topic(topicTitle, questionList); } + @SuppressWarnings("unchecked") private Question parseToQuestionObject(JSONObject question) { String questionDescription = (String) question.get(KEY_DESCRIPTION); JSONArray optionsAsJsonArray = (JSONArray) question.get(KEY_OPTIONS); diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 9af1947ba9..be2ea31bfd 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -1,23 +1,65 @@ package seedu.eduke8.storage; import org.json.simple.JSONArray; +import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.topic.TopicList; import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; public class UserStorage extends LocalStorage { - private DisplayableList infoList; + private DisplayableList bookmarkList; + private DisplayableList userList; + private TopicList topicList; - public UserStorage(String filePath) throws IOException { + public UserStorage(String filePath, TopicList topicList) { super(filePath); + this.topicList = topicList; } @Override + @SuppressWarnings("unchecked") public File save() throws IOException { + file = super.save(); + + // First Employee + JSONObject employeeDetails = new JSONObject(); + employeeDetails.put("firstName", "Lokesh"); + employeeDetails.put("lastName", "Gupta"); + employeeDetails.put("website", "howtodoinjava.com"); + + JSONObject employeeObject = new JSONObject(); + employeeObject.put("employee", employeeDetails); + + //Second Employee + JSONObject employeeDetails2 = new JSONObject(); + employeeDetails2.put("firstName", "Brian"); + employeeDetails2.put("lastName", "Schultz"); + employeeDetails2.put("website", "example.com"); + + JSONObject employeeObject2 = new JSONObject(); + employeeObject2.put("employee", employeeDetails2); + + //Add employees to list + JSONArray employeeList = new JSONArray(); + employeeList.add(employeeObject); + employeeList.add(employeeObject2); + + //Write JSON file + try (FileWriter writer = new FileWriter("employees.json")) { + + writer.write(employeeList.toJSONString()); + writer.flush(); + + } catch (IOException e) { + e.printStackTrace(); + } + return file; } @@ -29,6 +71,11 @@ public ArrayList load() throws IOException, ParseException { JSONArray objectsAsJsonArray = getJsonArrayFromFile(); + /* + * [{question: "", bookmarked: "", note: ""}] + * */ + + return null; } } From 512db08bea99afbf2ec3843558d66e9418156010 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Sat, 24 Oct 2020 22:55:20 +0800 Subject: [PATCH 185/447] Add table of contents and organise headers --- docs/DeveloperGuide.md | 241 ++++++++++++++++++++++++++--------------- docs/UserGuide.md | 15 ++- 2 files changed, 170 insertions(+), 86 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c14878ddfb..4363baeb8b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,84 +1,53 @@ # Developer Guide for E-Duke-8 -- Table of Contents {:toc} +- [Developer Guide for E-Duke-8](#developer-guide-for-e-duke-8) + - [Introduction](#introduction) + - [Software Overview](#software-overview) + - [Setting up](#setting-up) + - [Design & implementation](#design--implementation) + - [Model Component](#model-component) + - [Design of TopicList](#design-of-topiclist) + - [Implementation of TopicList](#implementation-of-topiclist) + - [Implementation of Notes](#implementation-of-notes) + - [Design of Option and OptionList](#design-of-option-and-optionlist) + - [Logic Component](#logic-component) + - [Design of Parser](#design-of-parser) + - [Implementation of MenuParser](#implementation-of-menuparser) + - [Design of QuizQuestionsManager](#design-of-quizquestionsmanager) + - [Implementation of QuizQuestionsManager](#implementation-of-quizquestionsmanager) + - [Storage Component](#storage-component) + - [Design of TopicsStorage](#design-of-topicsstorage) + - [Implementation of TopicsStorage](#implementation-of-topicsstorage) + - [UI Component](#ui-component) + - [Implementation of Ui](#implementation-of-ui) + - [Product scope](#product-scope) + - [Target user profile](#target-user-profile) + - [Value proposition](#value-proposition) + - [User Stories](#user-stories) + - [Non-Functional Requirements](#non-functional-requirements) + - [Glossary](#glossary) + - [Instructions for manual testing](#instructions-for-manual-testing) ## Introduction -### Software Overview: -Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Quiz component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. +### Software Overview + +Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Model component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. Purpose of the document: E-duke-8 is an education companion, intended for students to enhance their learning experience. This guide will allow any interested contributors who wish to develop this learning companion further, to understand the inner workings of the program. This understanding will enable such contributors to add value to the current code, by improving its performance, level of interaction or capabilities. -### Setting up: +### Setting up + Fork the repo, and clone the fork into your own PC. You are recommended to use IntelliJ to best edit the program. Do not forget to configure the JDK, and to import the project as a Gradle project, and lastly, remember to verify that the JUnit tests pass, to ensure the program is functional. ## Design & implementation -{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} -### Logic Component - -##### Design - -![Parser Diagram](./images/ParserDiagram.png) - -1. After constructing a new MenuParser() in the `Eduke8` class, the parseCommand() method is used to parse the - user command. -2. This results in a `Command` object, which is executed by `Command` class itself, using the execute() method. -3. The `Ui` object in the `Command` object is used to display the requested information, or to display the required task -to be completed as per the user input. - -Below is the sequence diagram for how the Parser component of `Eduke8` works with commands to show output to the user. - -![Parser Sample Sequence](./images/ParserSampleSequence.png) - -#### Command parsing feature - -##### Implementation +### Model Component -The command parsing feature is our program’s way of reading the user’s input into the command line. It makes use of a -single method parseCommand that identifies what command the user is calling for and then calls the command. There are -two parsers in our program that implements a single Parser interface. One parser is for choosing menu options and is -named `MenuParser`. The other parser is used during quizzes, in order to answer questions or request for hints, and is -called `QuizParser`. Given below is an example usage scenario of how the command parsing feature works at each step, -when the user types in input to get help in order to see what commands are available to the user. - -Step 1. The user launches the program for the first time. The parser will be initialised and awaiting the user’s input - to proceed. - -Step 2. The user types in help into the command line interface and presses enter. This user input “help” is stored as - a string and is put into the parseCommand() method as a parameter, together with the topic list. This topic - list is not relevant to the help command for now. - -Step 3. The user input string is subjected to the trim() and split() functions of a string in the Java libraries in - order to remove redundant spaces around the input, and to discern the number of words in the input. The split() - function uses a blank space string, “ “, as the delimiter to split the string into its individual components. - -Step 4. Each subsequent string separated by a space is stored in a string array named commandArr. The 0th index of the - commandArr array is the first word, the 1st index is the second word, and so on. In this case there is only one - word stored in the array, at the 0th index, which is “help”. - -Step 5. The string at the 0th index is then used in a switch statement, where each case represents the different menu - options available. As such, the contents of the case with reference “help” is run, which is a return statement - containing a new HelpCommand(). This leads to the execution of the `help` command. - -### Loading Data - -Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` -class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. - -![TopicsStorage Class Diagram](./images/TopicsStorage.png) - -Given below is an example usage scenario of loading in two topics with two questions each. - -When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method -which will return a `TopicList` object. The following sequence diagram shows how the load operation works: - -![TopicsStorage load](./images/TopicsStorage_load.png) - -### Implementation of commands relating to TopicList, namely: +#### Design of TopicList 1. Listing topics in TopicList 2. Finding a topic in TopicList @@ -92,7 +61,9 @@ TopicList is an ArrayList of type Displayable, which is one of two interfaces im in the code for EDuke8. As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The TopicList is used to store Topics. -#### 1) Listing topics in TopicList: +#### Implementation of TopicList + +**Listing topics in TopicList:** ![TopicListSampleSequence](./images/TopicListSampleSequence.png) @@ -105,7 +76,7 @@ Step 2: The TopicList.showTopics() method then calls the method Ui.printTopicLis Step 3: The Ui.printTopicList() method then prints out the description of each topic in the TopicList. -#### 2) Finding a topic in TopicList +**Finding a topic in TopicList:** This task is performed by the TopicList.find() method. @@ -123,7 +94,9 @@ NoteList is also an ArrayList of type Displayable, which is one of two interface As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The NoteList stores Note objects. Each topic has 1 NoteList. -#### 1) Adding a new note: +#### Implementation of Notes + +**Adding a new note:** This task is performed by the NoteList.add() method. @@ -133,7 +106,7 @@ Step 1: The parseCommand() method instantiates a NoteCommand object which then c Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.add() method, to add the Note object into NoteList. -#### 2) Deleting a note: +**Deleting a note:** This task is performed by the NoteList.add() method. @@ -144,7 +117,7 @@ Step 1: The parseCommand() method instantiates a NoteCommand object which then c Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.remove() method, to delete the Note object in NoteList. -#### 3) Listing out all notes in a topic +**Listing out all notes in a topic** This task is performed by the Topic.showNotes() method. @@ -152,10 +125,8 @@ Step 1: The parseCommand() method instantiates a TopicCommand object which then Step 2: The Topic.showNotes() methd calls the Ui.printNoteList() method. The topic's NoteList into this method. Ui.printNoteList() prints out all the descriptions of the Note objects in the NoteList. -======= -### Class Component -#### Option and OptionList Class +#### Design of Option and OptionList The `Option` and `OptionList` classes implements the `Displayable` and `DisplayableList` interfaces respectively. The `Option` object stores one option of a question while the `OptionList` object stores all 4 options of the same @@ -163,24 +134,51 @@ question. The class diagram below illustrates the structure of both classes. ![Option_and_OptionList_Class](./images/Option.png) -### User Interface +### Logic Component -#### Implementation +#### Design of Parser -The `Ui` class handles all the interactions with the users. It reads the input from the users and prints out replies to -the users. It is the point of communication between EDuke8 and the users. +![Parser Diagram](./images/ParserDiagram.png) -An example is provided below to illustrate how the `Ui` class prints out the starting page of the quiz for -the user to comprehend. +1. After constructing a new MenuParser() in the `Eduke8` class, the parseCommand() method is used to parse the + user command. +2. This results in a `Command` object, which is executed by `Command` class itself, using the execute() method. +3. The `Ui` object in the `Command` object is used to display the requested information, or to display the required task +to be completed as per the user input. -![Ui_Printing_Start_Quiz_Page](./images/PrintQuizStartPage.png) +#### Implementation of MenuParser -As the user starts the quiz, the `Ui` class will print out the quiz page to show that the quiz has started. -The user inputs the number of questions that he wants to answer and also the topics that he wants to be tested on. -The `Ui` will go through printStartQuizQuestions() to print out the number of questions that the user has chosen. -Afterwards, the `Ui` will go through printStartQuizTopics() to print out the topics that the user has chosen. +Below is the sequence diagram for how the Parser component of `Eduke8` works with commands to show output to the user. + +![Parser Sample Sequence](./images/ParserSampleSequence.png) -### Design of the Quiz system +The command parsing feature is our program’s way of reading the user’s input into the command line. It makes use of a +single method parseCommand that identifies what command the user is calling for and then calls the command. There are +two parsers in our program that implements a single Parser interface. One parser is for choosing menu options and is +named `MenuParser`. The other parser is used during quizzes, in order to answer questions or request for hints, and is +called `QuizParser`. Given below is an example usage scenario of how the command parsing feature works at each step, +when the user types in input to get help in order to see what commands are available to the user. + +Step 1. The user launches the program for the first time. The parser will be initialised and awaiting the user’s input + to proceed. + +Step 2. The user types in help into the command line interface and presses enter. This user input “help” is stored as + a string and is put into the parseCommand() method as a parameter, together with the topic list. This topic + list is not relevant to the help command for now. + +Step 3. The user input string is subjected to the trim() and split() functions of a string in the Java libraries in + order to remove redundant spaces around the input, and to discern the number of words in the input. The split() + function uses a blank space string, “ “, as the delimiter to split the string into its individual components. + +Step 4. Each subsequent string separated by a space is stored in a string array named commandArr. The 0th index of the + commandArr array is the first word, the 1st index is the second word, and so on. In this case there is only one + word stored in the array, at the 0th index, which is “help”. + +Step 5. The string at the 0th index is then used in a switch statement, where each case represents the different menu + options available. As such, the contents of the case with reference “help” is run, which is a return statement + containing a new HelpCommand(). This leads to the execution of the `help` command. + +### Design of QuizQuestionsManager To start a quiz in E-Duke-8, the user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. @@ -209,7 +207,80 @@ To determine if randomQuestionIndex is not selected before, an integer ArrayList An ArrayList of `Question` objects stores all the selected questions meant for the quiz. +### Storage Component + +#### Design of TopicsStorage + +Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` +class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. The class diagram below shows this relationship. + +![TopicsStorage Class Diagram](./images/TopicsStorage.png) + +The format of the JSON file is important as it is loaded in a particular way. This format was designed as an array of topics that hold the different properties for questions, options, hints and explanations. An example is as such: + +```json +[ + { + "topic": "OOP", + "questions": [ + { + "description": "What is encapsulation?", + "hint": "check the textbook", + "explanation": "because option A is the best answer", + "options": [ + { + "description": "A", + "correct": true + }, + { + "description": "B", + "correct": false + }, + { + "description": "C", + "correct": false + }, + { + "description": "D", + "correct": false + } + ] + } + ] + } +] +``` + +#### Implementation of TopicsStorage + +Given below is an example usage scenario of loading in two topics with two questions each. + +When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method +which will return a `TopicList` object. The following sequence diagram shows how the load operation works: + +![TopicsStorage load](./images/TopicsStorage_load.png) + +As there is a high level of nesting in the JSON file, many methods are called in loops to parse each section and return them as objects which are then used to build the next object at a higher level. For example, a `Question` object requires an `OptionList` which is created with an `ArrayList(^Uz!N;CffUW_c6x4ZxjFU0j-b3{o3`WIbRf2 z3JhxKk@wU@{2W?-5m-uu%kSQsfqbH;!y(;Gn=KlK8Xp#6NAbSup{{hpBbifx0w=F* zTfxJ$V0z=}%-%=_xU3K6^a%EmMLy%qR|(AWteaYgr+N2+8;bbm50?qdbG{g3@*%Gc zW@4x+0$ZzDyON~qCXydCuFp^@WBd;7oIeQVJYCgszk94FM)6mSQVV+V5O22iPzGWiwM1Lt*lZ7QO75=5Bq(QA5bPO8!*uZG~i)-Yo%$`crD z5foxY_#hZ4RxiZ!-ufRTL!p~MYc~AIr9s`IW&?xp(u9Fwb?)Leckrfpxma2Je$aOj zn3BPnm0WRW>>&ak*8lxIbm#5f;QUlfHM*6V5YwI~saW5|CGBPD24H6RD)V*GXZOkKBHz-BF5O>ZekS7)6 zUg0}kG~sYjj^+~@H4tB;J|{7Z6kGATL4{I&Op%9?k(2zy*tcz)?>Msc`-p0<@%7r> z&>;=}bNs{U2CZHz&*-%J3Hcy`{~0TdTZq@ISQYSo_WbUL($3}i8rF2{>lj@7R4Q_U z4Lcr+?&_1+)sS0yjT`5jE>j2L2^81eX#NRvn)Lyx@(I(AYp{F|=hX?m-iwAZS;7lz zeaVwE(?)grd46!_p4eT9I>$WYdHK z@PiIUs?D8m2Lp|Ms`!iy<^~;Ahs*L>pKmVc<84!Je1p14($OqDm-PCte2RK_QbhPh zMpnk%FKc&x<}aah41MJ=VY~`gdr&@N#T%Qob;$}0W+ zwm?{5z1PR>Scj*0_iwjUqCaZ(*7(5P-v>9BQl_Rg+iJG9$5}Y_uMCVaK867Id$<=- z-l>NgR6D1ndBI_fcRFKkqHgpHiu1@C$B_aV-4c&qR4Hrvh|+1d+?*w%lw&RGOx+2) z?AS6IOd}eW37&(LM(&Jz&Cc)U%>rjb^KprH=gq<3Cg*I?F_t+q2M-&iioQkE-QlwM z(f4UReG&wDIj_!nZm%`#5KZT!p3!~!ASUS)%xV!oxqp81JzdC#Hr4`nLQ8yb^Z%!mj~DeGP7{Y8A=bni~}HbvhEGxEwpVjC51pVaM)u zJyM6fX@K^hlQ$u+rR15ZhI}u+$q`{?Z+jYLvR}|$^>)+TX@V<$)HJP|DGw%E2yx2O4GyXLmI3oWPIQ*e`ptd0;|U+e^iW(G2qqOmFsp#N`+d!?H4; zQvYMLJFe-KWjo`XX!sOsM{Q(NT2&~L83Tk21?E&Y7Wedz{aDOXJ>`jeepiH$htJn8 z*0A040ogW3>&PpL^?%S49Z&Uu)=rH3NP+1#zJV7KgWnA`-oqi%+?w-KZzg9ZD|M|EJxQu2*F`-OYo!9mV8c(iQ{ZwP&04$+nxaGnoxvqNjO-J5J;eV)vz0f!Tel zWv;}a%FK*yc!n~gp zNN|dGIcr*$5MG!0_3TpEI@#l>5$_mi%nwAgH zdo3XTnD^BYYyQ`g=q84Bx#pv3sYU*nm%b&$Kvd*mzqEf`{*jiT zQVaT?4%fWe{vOG9lWir16xP-z?|A_L8iRK>BN_XT#&2A0$f%o`nXn(8BG58%?8ZvT zTy}h5>(v)cc*zP4ee0L5xqG(HEasu$(Ogt&Csq$D(fkEP`49-)FjV)eOC`CUt!#@ynH`>CGoqngt)2r^sfQq=LS@tP{Cmry2Mf-r z^NJ6;v9oL1{rdD*0jsWNDNWv0rpT0Ml-c70J?me;x{c z$GJi;oBiqGrT+PZ_`j$O$J6&WBOx+RpO6%O7~9l)!Veyv#ZfLJZs3kx{TI!I(P8fV x{JhL!$RAM-hL?^UW8!~X1^@pq?h5PBg^b7eeoFwz#y=wI-7(ZDyY2A!KL9Jl{`mj^ literal 7894 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%0A-Ays)IpiDtwYU!h z3h=d+kUKFtquT^?3cyAUX( zd_7uL8qw))R@~P!_)}i9)Pw!4KV#LI>brM`_W3>Y@MxZ?CPY#9V|-pr9SQ$geO6;Q zF@WL2i{r8eF-vBI6^Yx>makX*wM(E{ zvbxC7&lmH`)5?mp>8l;WJ;1?CU^(0E11z3t=9Rc*=5K|9z~X`c4_url9zp%-)!dqZ zC4Py`xp&Xp&Tgb+?$@~olO*z751kYr`{jW;urqi;$fc=`oZDawBuxhTw!{`fNFjR% zHzC5M(MHUDq&-s2_m(iodopFkkxLMI;lf zu}d6{`1h!@BcWF|ail21qdLCCGSsn>L=Q7STo_@!keUg2h(Xbfg|rUDMAUEU zcWWgi0eSSVz9$-h&}`o}&yL5dX|b0>XZg`);=0sua(N({R-P6@%-ejmu-R5?{cL!1IW~(UXm)AQj1HV zkYs_d;vfN-8t9S|oX^`$eFnmhXWcxa^s1!>`!bC%Ud}W7Ab7?;*u&ulp)xD`rUitn z%~AW6oxN#UqJC|{Mjf+O>PE)($g4+ia+E0M5l8Y;Mv-Ows7^_0pPE4=f1w32$N_n}F6X1e}_E>Q6qoYul3kDReP{*#y?$=N2e}Bno8a3{~FnFnVdnu7ayFdINbGT)i8f_)J+E|kSND}!)gdr9HZ46qT?9I z(B_h|dWT2dAYaKe8roxglRoSMe7Ho5)5x_N4>exvryA1GQ%Bk;UsQbUcDj?|tLx7z zfBqctDWpOI3F~+*(e(?vdQCsKXZ8AHQ_HHrbUZ3YTXZ}@1Ctsw&*1`hb- zNj^jgUl!51;yvoDk-l<`lM&Qiyw*0rAib-QRa2n-f_jov&EurkJr0r5kx_ z^R(sNj>hJMsB^U4Z!|lIQ%WWQGP!|ev=F>rbjSW1cfC=>Z9R5cCqx`hc{R?yt~G?y z(|FJ$nIF2_Trsa}GIyRGZr$2IRyXC(E&PI%{exkSaP%XN(xyBwBwRlS| zWe-2=8HkESRK_G2Ka*O!Bt=gEAWon`8dBHi6Gh##dqWn3-+sQAoRvRxz#X*@O|0-_ zhE^&GI|TYGagk59pSo|WdJY?yeZRM7Ba45NGZbI+pyI0*mLaBrUgUIi?iolQhK{_X zn_grNs?GawS}{zE%v*zI$E2sGH8nLKV?66$eYJfmYWn$#F&}+Nwz%B#*~hVI3xkA3 zLD%Fx{K=OQc+Zid)hVc8b|~m0$(J&b`{>Tk8|dC}2qJw#4)NUS7p9>yQ?X7Du1F*1 zj~@$Y!%M4KtU(}sqHB>>3gWl8Nb`lMnTooP!bBKS7(?n!QAkfy2`F=95bIHW{El_u ztBt^OL$5b)hNrq>ba zFR(S+XZlntauBUrLH%nt${+GNJJ*hHJyH?uL$w$N>X_094~reI=wc)Wt1og8;*mih8d0fDic!E-$oHKi7eigB* z4H}5)hg^6^j(PaIZEN3707KC^xD94no63xJhEf0}t9{^wp+T0qN++4h?_Ye!ahlXu zU&nES>8sI3wY5X$Vx0Nj_;b)nQyXeq2YqNgX}sc{%D<-h(zi5M8*Z7}`Gac+5o`V< z((``Xq|xms${Nho`pt~$-tKLA7atF^FtTFU$>bgP%p!O0KfCk1eD@m*lBj2*q7lpI zzWp;?^-thUFeg*7{HOBSl_LmYjE2tk(>h1%?txG(^BIyx@wv6?I+LekzuQjxyKHU+ zL1L|vb+fjMh)Tl9->qw$H?DAErxF>3NUy`{8mrHZuxL`s@*(15OV0~7%iU|e5oSHe z8~P%o+FQA_?@@m0R|L{6qJhUK$*6@^2KUHrS`Q`&3|^>p)%#6wR}XK(GClS-Ko1{- z(O#R&=-_e)(G;wp%VId9=ZITzfcV+^pP)NggT-|?Y&4dF)4ubV_A8Hju_wf36W~2| zc*lN~McQmX!K0X2lZF^H*y*#Edv_Y3U569laPnHOQw8YLN&nl{Zc-~{=R(aW)%$-6 zin%jV)WB?tz)#f7xb`<-U-D#2d2HqL*rbo8&5nvAw^FM$jp4Q8XXh_u^rVlE-r{1teV0aGb&cyeLc3oK~q z6q%es!2H4RnvtF1ZDRo1b+=ky+RR_iicD6e9=M$@nWC`ulVRHQsAX0P7SffSg1nYuc-M>_b<6>0{KE*~TY_aELO0INKo-L1Jyx-!$-YLWku|YU z%d)!m_2q%m_o$q-OEG`Mv1u92hiZz`z)_jK-R-=w=JuCSb;vVdD64X;zM>JnVJ6*} z5z;ZYYHmN-aw}_gNi_`zo@(5e^ABiCP-OuXT-Z~C*j;d{eXeJ z=yG~@i?SQ5VP=uPB8iCnE#d4~6hi3*mIR_cD`mENw^;@Zn0(-`?BfwfB|AFT7O41+ zsO%mSF`FHP>Z-wV=PSaw@-bQ9QhS_DEL1|gWKcw+Ae`6}p{mseyxmd{V?pax0T#+L zi;!B0?k>hQ;$+&IzsgNn^__L%2)%LFX#qX3^}WpUy0njWNrDifp2W2ka|l;-mAtPL z-zBf0zjapL2jk|(pjQ0 z{-p0AQ71$@-K4vDi{KYyiXGNJtbNMx-P?kRMeE{(ZbvWRm?u0N_`#)Mf z1|!>JP+7~U^~6k9cOX3%WK~?GS?ljH(X!RVxHC0#WELnlUR&H_y{VJ;&F-dd{}BLY z6TkZpviZMlY5pHnZxc>FQO2BO4E!F~kk4%-Ha>Ke)t6PWoJ2E~Ecbt6m{&(Jo7$n| zsZf1$aKh5J$^6gB>HqPF;J*;-Kh6~X3k^&-;6P%VUS&>B&OQ>U%)wPIp@IF#Y)y=5 z3|qoN$=h>{-^C{&5=xV%BM~*lWGN$1ZdfJ1XxMpu=!a=&U)+MA8Z3Qb0V0v`6{|U@ zj_k(6)i0JFk^k`TEx<0C%fsS3Y?OiLIFw{wySDjMlgeX?Ia`89NpWM%&mH?D9UgfU z%`sjql--^MhI&Ri7QEG-HTf4`SpZwT5c94yJd+iwS@-L{x9NX+b& ztTa3vAN+COoV20Du^Q)n%?nyKc-|-q3SL@Fm``|~w+(oXpSspkhkmGmxeN<@r!%QG zMwe_yAYfA=W8AfA}LTKA#4`}4T%df^YLmTPc?lU$Ymn z05J}1`ESn@-}j{&ybXG>y~o7 z1`G2uI!ZYW55b|verfm)n0*j5Z#;{X?WDN WKBPD(?ZbRai}PuZQ*|e<-2N9eNF*}= From 71a79323cdaeb62bd47f53ac07ed16e91753fcf2 Mon Sep 17 00:00:00 2001 From: Joseph Date: Sun, 25 Oct 2020 11:10:14 +0800 Subject: [PATCH 194/447] Encompassed the necessary words with ` ` as agreed on. --- docs/DeveloperGuide.md | 95 +++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c21a35b3a4..662ade0501 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -67,64 +67,64 @@ use of the package java.util.ArrayList. The TopicList is used to store Topics. ![TopicListSampleSequence](./images/TopicListSampleSequence.png) -This task is performed by the TopicList.showTopics() method. +This task is performed by the `TopicList.showTopics()` method. -Step 1: The parseCommand() method instantiates a TopicsCommand object which then calls the - TopicList.showTopics() method. -Step 2: The TopicList.showTopics() method then calls the method Ui.printTopicList(). The - current TopicList is passed into the called method. -Step 3: The Ui.printTopicList() method then prints out the description of each topic in the - TopicList. +Step 1: The `parseCommand()` method instantiates a `TopicsCommand` object which then calls the + `TopicList.showTopics()` method. +Step 2: The `TopicList.showTopics()` method then calls the method `Ui.printTopicList()`. The + current `TopicList` is passed into the called method. +Step 3: The `Ui.printTopicList()` method then prints out the description of each topic in the + `TopicList`. **Finding a topic in TopicList:** -This task is performed by the TopicList.find() method. +This task is performed by the `TopicList.find()` method. -Step 1: The parseCommand() method instantiates a TopicsCommand object which then calls the TopicList.find() method. - A String object derived from the user's input is passed into this method. +Step 1: The `parseCommand()` method instantiates a `TopicsCommand` object which then calls the `TopicList.find()` + method. A String object derived from the user's input is passed into this method. -Step 2: The TopicList.find() method checks if any Topic object in the TopicList has a description that contains the - String object passed into the method. Such Topic objects are stored in a new TopicList +Step 2: The `TopicList.find()` method checks if any `Topic` object in the `TopicList` has a description that contains + the `String` object passed into the method. Such `Topic` objects are stored in a new `TopicList`. -Step 3: The TopicList.find() method then calls the TopicList.showTopics() method, passing in the new TopicList. The - Ui.printTopicList() method is called within the TopicList.showTopics() method, printing out topic descriptions - containing the user's input. +Step 3: The `TopicList.find()` method then calls the `TopicList.showTopics()` method, passing in the new TopicList. The + `Ui.printTopicList()` method is called within the `TopicList.showTopics()` method, printing out topic + descriptions containing the user's input. -NoteList is also an ArrayList of type Displayable, which is one of two interfaces implemented in the code for EDuke8. -As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The NoteList -stores Note objects. Each topic has 1 NoteList. +`NoteList` is also an `ArrayList` of type `Displayable`, which is one of two interfaces implemented in the code for +E-Duke-8. As such, many of the commands that manipulate the `TopicList` make use of the package `java.util.ArrayList`. +The `NoteList` stores `Note` objects. Each topic has 1 `NoteList`. #### Implementation of Notes **Adding a new note:** -This task is performed by the NoteList.add() method. +This task is performed by the `NoteList.add()` method. -Step 1: The parseCommand() method instantiates a NoteCommand object which then calls the NoteList.add() method. A new - Note object is passed into its parameter. +Step 1: The `parseCommand()` method instantiates a `NoteCommand` object which then calls the `NoteList.add()` method. + A new `Note` object is passed into its parameter. -Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.add() method, to add the Note - object into NoteList. +Step 2: The `NoteList.add()` method makes use of `ArrayList` API, specifically the `ArrayList.add()` method, to add + the `Note` object into `NoteList`. **Deleting a note:** -This task is performed by the NoteList.add() method. +This task is performed by the `NoteList.add()` method. -Step 1: The parseCommand() method instantiates a NoteCommand object which then calls the NoteList.delete() method. - An integer that represents the index of the Note object to be deleted within the NoteList is passed into this - method. +Step 1: The `parseCommand()` method instantiates a `NoteCommand` object which then calls the `NoteList.delete()` method. + An integer that represents the index of the `Note` object to be deleted within the `NoteList` is passed into + this method. -Step 2: The NoteList.add() method makes use of ArrayList API, specifically the ArrayList.remove() method, to delete the - Note object in NoteList. +Step 2: The `NoteList.add()` method makes use of `ArrayList` API, specifically the `ArrayList.remove()` method, to + delete the `Note` object in `NoteList`. **Listing out all notes in a topic** -This task is performed by the Topic.showNotes() method. +This task is performed by the `Topic.showNotes()` method. -Step 1: The parseCommand() method instantiates a TopicCommand object which then calls the Topic.showNotes() method. +Step 1: The `parseCommand()` method instantiates a `TopicCommand` object which then calls the `Topic.showNotes()` method. -Step 2: The Topic.showNotes() methd calls the Ui.printNoteList() method. The topic's NoteList into this method. - Ui.printNoteList() prints out all the descriptions of the Note objects in the NoteList. +Step 2: The `Topic.showNotes()` method calls the `Ui.printNoteList()` method. The topic's `NoteList` into this method. + `Ui.printNoteList()` prints out all the descriptions of the `Note` objects in the `NoteList`. #### Design of Option and OptionList @@ -153,30 +153,31 @@ Below is the sequence diagram for how the Parser component of `Eduke8` works wit ![Parser Sample Sequence](./images/ParserSampleSequence.png) The command parsing feature is our program’s way of reading the user’s input into the command line. It makes use of a -single method parseCommand that identifies what command the user is calling for and then calls the command. There are -two parsers in our program that implements a single Parser interface. One parser is for choosing menu options and is +single method `parseCommand` that identifies what command the user is calling for and then calls the command. There are +two parsers in our program that implements a single `Parser` interface. One parser is for choosing menu options and is named `MenuParser`. The other parser is used during quizzes, in order to answer questions or request for hints, and is called `QuizParser`. Given below is an example usage scenario of how the command parsing feature works at each step, when the user types in input to get help in order to see what commands are available to the user. -Step 1. The user launches the program for the first time. The parser will be initialised and awaiting the user’s input - to proceed. +Step 1. The user launches the program for the first time. The `MenuParser()` will be initialised and awaiting the user’s + input to proceed. -Step 2. The user types in help into the command line interface and presses enter. This user input “help” is stored as - a string and is put into the parseCommand() method as a parameter, together with the topic list. This topic - list is not relevant to the help command for now. +Step 2. The user types in "help" into the command line interface and presses enter. This user input “help” is stored as + a string and is put into the `parseCommand()` method as a parameter, together with the list of topics. This + topic list is not relevant to the help command for now. -Step 3. The user input string is subjected to the trim() and split() functions of a string in the Java libraries in - order to remove redundant spaces around the input, and to discern the number of words in the input. The split() - function uses a blank space string, “ “, as the delimiter to split the string into its individual components. +Step 3. The user input string is subjected to the `lang.string.trim()` and `lang.string.split()` functions of a string + in the Java libraries in order to remove redundant spaces around the input, and to discern the number of words + in the input. The `lang.string.split()` function uses a blank space string, “ “, as the delimiter to split the + string into its individual components. -Step 4. Each subsequent string separated by a space is stored in a string array named commandArr. The 0th index of the - commandArr array is the first word, the 1st index is the second word, and so on. In this case there is only one - word stored in the array, at the 0th index, which is “help”. +Step 4. Each subsequent string separated by a space is stored in a string array named `commandArr`. The 0th index of the + `commandArr` array is the first word, the 1st index is the second word, and so on. In this case there is only + one word stored in the array, at the 0th index, which is “help”. Step 5. The string at the 0th index is then used in a switch statement, where each case represents the different menu options available. As such, the contents of the case with reference “help” is run, which is a return statement - containing a new HelpCommand(). This leads to the execution of the `help` command. + containing a new `HelpCommand()`. This leads to the execution of the `help` command. #### Design of QuizQuestionsManager From 6ac41cd3447d6b3de5e7cbd3e6fc74f0fd756675 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 25 Oct 2020 12:03:25 +0800 Subject: [PATCH 195/447] Add statsCommand and ensure a single topicList is pass to stats classes --- .../seedu/eduke8/command/AboutCommand.java | 6 ++-- .../seedu/eduke8/command/AnswerCommand.java | 1 + .../seedu/eduke8/command/BookmarkCommand.java | 1 + .../seedu/eduke8/command/ExitCommand.java | 4 +++ .../seedu/eduke8/command/HelpCommand.java | 4 +++ .../seedu/eduke8/command/HintCommand.java | 1 + .../eduke8/command/IncorrectCommand.java | 1 + .../seedu/eduke8/command/QuizCommand.java | 1 + .../seedu/eduke8/command/StatsCommand.java | 23 +++++++++++++ .../seedu/eduke8/command/TextbookCommand.java | 5 +++ .../seedu/eduke8/command/TopicsCommand.java | 4 +++ .../java/seedu/eduke8/parser/MenuParser.java | 13 +++----- src/main/java/seedu/eduke8/stats/Stats.java | 23 ++++--------- .../seedu/eduke8/stats/StatsCalculator.java | 31 ++++-------------- .../eduke8/stats/TopicalStatsCalculator.java | 32 ------------------- .../eduke8/stats/UserStatsCalculator.java | 14 ++++---- src/main/java/seedu/eduke8/ui/Ui.java | 13 ++------ 17 files changed, 75 insertions(+), 102 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/StatsCommand.java diff --git a/src/main/java/seedu/eduke8/command/AboutCommand.java b/src/main/java/seedu/eduke8/command/AboutCommand.java index 7f0fa31a70..8972ef9c9d 100644 --- a/src/main/java/seedu/eduke8/command/AboutCommand.java +++ b/src/main/java/seedu/eduke8/command/AboutCommand.java @@ -6,10 +6,12 @@ public class AboutCommand extends Command { + public AboutCommand() { + super(); + } + @Override public void execute(DisplayableList displayableList, Ui ui) { ui.printAbout(); - - new Stats().showStatsToUser(ui); } } diff --git a/src/main/java/seedu/eduke8/command/AnswerCommand.java b/src/main/java/seedu/eduke8/command/AnswerCommand.java index 9bd0dd055d..8d529207e8 100644 --- a/src/main/java/seedu/eduke8/command/AnswerCommand.java +++ b/src/main/java/seedu/eduke8/command/AnswerCommand.java @@ -12,6 +12,7 @@ public class AnswerCommand extends Command { private Question question; public AnswerCommand(Option option, Question question) { + super(); assert option != null && question != null; this.option = option; diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java index ebdfd7bf1d..92c1d4198f 100644 --- a/src/main/java/seedu/eduke8/command/BookmarkCommand.java +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -14,6 +14,7 @@ public class BookmarkCommand extends Command { String typeOfBookmarkCommand = ""; public BookmarkCommand(Question question, String typeOfBookmarkCommand, BookmarkList bookmarks) { + super(); assert bookmarks != null; bookmarks.add(question); this.bookmarks = bookmarks; diff --git a/src/main/java/seedu/eduke8/command/ExitCommand.java b/src/main/java/seedu/eduke8/command/ExitCommand.java index ee8f8cc30e..4bf6a5ca20 100644 --- a/src/main/java/seedu/eduke8/command/ExitCommand.java +++ b/src/main/java/seedu/eduke8/command/ExitCommand.java @@ -4,6 +4,10 @@ import seedu.eduke8.ui.Ui; public class ExitCommand extends Command { + public ExitCommand() { + super(); + } + @Override public void execute(DisplayableList displayableList, Ui ui) { isExit = true; diff --git a/src/main/java/seedu/eduke8/command/HelpCommand.java b/src/main/java/seedu/eduke8/command/HelpCommand.java index 72092455cd..c9a6010ba7 100644 --- a/src/main/java/seedu/eduke8/command/HelpCommand.java +++ b/src/main/java/seedu/eduke8/command/HelpCommand.java @@ -4,6 +4,10 @@ import seedu.eduke8.ui.Ui; public class HelpCommand extends Command { + public HelpCommand() { + super(); + } + @Override public void execute(DisplayableList displayableList, Ui ui) { ui.printHelp(); diff --git a/src/main/java/seedu/eduke8/command/HintCommand.java b/src/main/java/seedu/eduke8/command/HintCommand.java index bd089fa7ac..5321e306dd 100644 --- a/src/main/java/seedu/eduke8/command/HintCommand.java +++ b/src/main/java/seedu/eduke8/command/HintCommand.java @@ -8,6 +8,7 @@ public class HintCommand extends Command { private Hint hint; public HintCommand(Hint hint) { + super(); assert hint != null; this.hint = hint; diff --git a/src/main/java/seedu/eduke8/command/IncorrectCommand.java b/src/main/java/seedu/eduke8/command/IncorrectCommand.java index 2613c07308..ee4768f170 100644 --- a/src/main/java/seedu/eduke8/command/IncorrectCommand.java +++ b/src/main/java/seedu/eduke8/command/IncorrectCommand.java @@ -7,6 +7,7 @@ public class IncorrectCommand extends Command { String errorMessage; public IncorrectCommand(String errorMessage) { + super(); this.errorMessage = errorMessage; } diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 5b1e6354a6..84f54e8365 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -20,6 +20,7 @@ public class QuizCommand extends Command { private BookmarkList bookmarks; public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui, BookmarkList bookmarks) { + super(); assert topicList != null; this.topicList = topicList; diff --git a/src/main/java/seedu/eduke8/command/StatsCommand.java b/src/main/java/seedu/eduke8/command/StatsCommand.java new file mode 100644 index 0000000000..e951b40326 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/StatsCommand.java @@ -0,0 +1,23 @@ +package seedu.eduke8.command; + +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.stats.Stats; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.topic.TopicList; +import seedu.eduke8.ui.Ui; + +public class StatsCommand extends Command { + private TopicList topicList; + + public StatsCommand(TopicList topicList) { + super(); + assert topicList != null; + + this.topicList = topicList; + } + + @Override + public void execute(DisplayableList displayableList, Ui ui) { + new Stats(topicList).showStatsToUser(ui); + } +} diff --git a/src/main/java/seedu/eduke8/command/TextbookCommand.java b/src/main/java/seedu/eduke8/command/TextbookCommand.java index ef3466b113..6be6ebbcba 100644 --- a/src/main/java/seedu/eduke8/command/TextbookCommand.java +++ b/src/main/java/seedu/eduke8/command/TextbookCommand.java @@ -4,6 +4,11 @@ import seedu.eduke8.ui.Ui; public class TextbookCommand extends Command { + + public TextbookCommand() { + super(); + } + @Override public void execute(DisplayableList displayableList, Ui ui) { ui.printTextbook(); diff --git a/src/main/java/seedu/eduke8/command/TopicsCommand.java b/src/main/java/seedu/eduke8/command/TopicsCommand.java index db2d692480..bc28904656 100644 --- a/src/main/java/seedu/eduke8/command/TopicsCommand.java +++ b/src/main/java/seedu/eduke8/command/TopicsCommand.java @@ -5,6 +5,10 @@ import seedu.eduke8.ui.Ui; public class TopicsCommand extends Command { + public TopicsCommand() { + super(); + } + @Override public void execute(DisplayableList displayableList, Ui ui) { assert displayableList != null; diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 0f86b04698..6f7d53ad46 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,15 +1,7 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.HelpCommand; -import seedu.eduke8.command.IncorrectCommand; -import seedu.eduke8.command.TextbookCommand; -import seedu.eduke8.command.TopicsCommand; -import seedu.eduke8.command.AboutCommand; -import seedu.eduke8.command.QuizCommand; -import seedu.eduke8.command.BookmarkCommand; -import seedu.eduke8.command.ExitCommand; +import seedu.eduke8.command.*; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; @@ -85,6 +77,9 @@ public Command parseCommand(DisplayableList topicList, String userInput) { case "exit": LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); + case "stats": + LOGGER.log(Level.INFO, "Parsing complete: stats command chosen."); + return new StatsCommand((TopicList) topicList); default: break; } diff --git a/src/main/java/seedu/eduke8/stats/Stats.java b/src/main/java/seedu/eduke8/stats/Stats.java index 70eeed3d75..73905f3123 100644 --- a/src/main/java/seedu/eduke8/stats/Stats.java +++ b/src/main/java/seedu/eduke8/stats/Stats.java @@ -2,18 +2,21 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; import java.util.ArrayList; + public class Stats { private UserStatsCalculator userStatsCalculator; - private TopicalStatsCalculator topicalStatsCalculator; - public Stats() { - userStatsCalculator = new UserStatsCalculator(); - topicalStatsCalculator = new TopicalStatsCalculator(); + protected ArrayList topics; + + public Stats(TopicList topicList) { + topics = topicList.getInnerList(); + userStatsCalculator = new UserStatsCalculator(topicList); } public void showStatsToUser(Ui ui) { @@ -35,10 +38,6 @@ private void showTotalProgression(Ui ui) { } private void showTopicalProgression(Ui ui) { - // need to loop through all topics and pass into the topicCalculator - // then loop through and print them one by one. - - ArrayList topics = topicalStatsCalculator.getTopics(); ui.printTopicProgressionHeader(); // Loop through the different topics to get the stats from each of them individually @@ -51,11 +50,6 @@ private void showTopicalProgression(Ui ui) { specificTopicStatsCalculator.calculateTopicalQuestionsAttemptCount(), specificTopicStatsCalculator.getTopicQuestionsCount()); - // not using this as getting the percentage might cause a divisionByZero exception - /* ui.showTopicAccuracyLevel(specificTopicStatsCalculator.calculateTopicalQuestionsCorrectCount(), - specificTopicStatsCalculator.calculateTopicalQuestionsAttemptCount(), - specificTopicStatsCalculator.calculateTopicAccuracyPercentage()); */ - ui.showTopicAccuracyLevel(specificTopicStatsCalculator.calculateTopicalQuestionsCorrectCount(), specificTopicStatsCalculator.calculateTopicalQuestionsAttemptCount()); @@ -64,9 +58,6 @@ private void showTopicalProgression(Ui ui) { ui.showTopicalPoints(specificTopicStatsCalculator.calculateTopicalPointsEarned(), specificTopicStatsCalculator.calculateTopicalPointsAvailable(), specificTopicStatsCalculator.calculateTopicalProgressionPercentage()); - } - } - } diff --git a/src/main/java/seedu/eduke8/stats/StatsCalculator.java b/src/main/java/seedu/eduke8/stats/StatsCalculator.java index 8358682bab..4d1acc90a8 100644 --- a/src/main/java/seedu/eduke8/stats/StatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/StatsCalculator.java @@ -1,46 +1,29 @@ package seedu.eduke8.stats; -import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; -import seedu.eduke8.storage.TopicsStorage; import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; -import seedu.eduke8.ui.Ui; -import java.io.IOException; import java.util.ArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static seedu.eduke8.exception.ExceptionMessages.ERROR_STORAGE_FAIL; public class StatsCalculator { - protected static final String DATA_PATH = "data/main/topics.json"; protected static final int POINTS_PER_QUESTION = 2; protected static final int POINTS_FOR_CORRECT_ANSWER_WITHOUT_HINT_SHOWN = 2; protected static final int POINTS_FOR_CORRECT_ANSWER_WITH_HINT_SHOWN = 1; - protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - protected TopicsStorage topicsStorage; - protected TopicList topicList; protected ArrayList topics; - public StatsCalculator() { - topicsStorage = new TopicsStorage(DATA_PATH); - - try { - topicList = new TopicList(topicsStorage.load()); - } catch (ParseException | IOException e) { - new Ui().printError(ERROR_STORAGE_FAIL); - LOGGER.log(Level.WARNING, "Error reading or writing local files."); - } + public StatsCalculator(TopicList topicList) { + topics = topicList.getInnerList(); + } - topics = topicList.getInnerList(); + public StatsCalculator() { } + protected int calculatePointsEarnedForQuestion(Question question) { assert question != null; @@ -54,9 +37,9 @@ protected int calculatePointsEarnedForQuestion(Question question) { } protected int calculateProgressionLevelPercentage(int userProgress, int total) { - int progressionLevel = userProgress / total; + double progressionLevel = (double) userProgress / total; - int progressionLevelPercentage = progressionLevel * 100; + int progressionLevelPercentage = (int) (progressionLevel * 100); return progressionLevelPercentage; } diff --git a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java index a030c5c0e4..57f1358a4d 100644 --- a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java @@ -5,23 +5,15 @@ import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; -import java.util.ArrayList; -// maybe can extend from statsCalculator public class TopicalStatsCalculator extends StatsCalculator { - private Topic topic; private QuestionList topicQuestionList; public TopicalStatsCalculator(Topic topic) { - super(); - this.topic = topic; this.topicQuestionList = topic.getQuestionList(); } - TopicalStatsCalculator() { - super(); - } // check each qn and see if they are done public int calculateTopicalQuestionsAttemptCount() { @@ -38,13 +30,6 @@ public int getTopicQuestionsCount() { return topicQuestionList.getCount(); } - /* - public int calculateTopicCompletionPercentage() { - return calculateProgressionLevelPercentage(calculateTopicalQuestionsAttemptCount(), - getTopicQuestionsCount()); - } - */ - // check each qn and see if they are correct public int calculateTopicalQuestionsCorrectCount() { int questionCorrectCount = 0; @@ -56,19 +41,6 @@ public int calculateTopicalQuestionsCorrectCount() { return questionCorrectCount; } - /* - // Division by zero for percentage is possible here - public int calculateTopicAccuracyPercentage() { - if (calculateTopicalQuestionsAttemptCount() > 0) { - return calculateProgressionLevelPercentage(calculateTopicalQuestionsCorrectCount(), - calculateTopicalQuestionsAttemptCount()); - } else { - return -1; - } - } - */ - - // check each qn and calculate number of hints used public int calculateTopicalHintUsage() { int hintUsageCount = 0; @@ -101,8 +73,4 @@ public int calculateTopicalProgressionPercentage() { return calculateProgressionLevelPercentage(calculateTopicalPointsEarned(), calculateTopicalPointsAvailable()); } - - public ArrayList getTopics() { - return topics; - } } diff --git a/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java b/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java index a9fdd01ccc..640888a626 100644 --- a/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java @@ -5,20 +5,18 @@ import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; import java.util.ArrayList; public class UserStatsCalculator extends StatsCalculator { - public UserStatsCalculator() { - super(); + public UserStatsCalculator(TopicList topicList) { + super(topicList); } - // idea is to get the list of topics from topicList, iterate each topic and access their questionList - // Then in each questionList, iterate through each question and see if wasAnsweredCorrectly and if - // hint was shown. Answered correction without hint = +2 points, else with hint shown = +1 point - // can use topicalStatsCalculator method to help + public int calculateTotalPointsEarned() { int totalPointsGained = 0; @@ -36,7 +34,7 @@ public int calculateTotalPointsEarned() { return totalPointsGained; } - // just get the count of the questionList * 2 + // Gets the count of the questionList * 2 public int calculateTotalPointsAvailable() { int totalPointsAvailable = calculateTotalQuestionCount() * POINTS_PER_QUESTION; @@ -48,7 +46,7 @@ public int calculateOverallProgressionLevelPercentage() { calculateTotalPointsAvailable()); } - // determines if progression is over 50%, print diff messages + // Determines if progression is over 50%, print diff messages for each section public boolean isProgressionOverHalf() { return calculateOverallProgressionLevelPercentage() >= 50; } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 0fb4d78178..95eb882601 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -211,7 +211,7 @@ public void showTotalProgression(int progressionLevelPercentage, boolean progres if (progressOverHalf) { System.out.println("Good job! Keep it up!" + System.lineSeparator()); } else { - System.out.println("Let's do some more quizzes!" + System.lineSeparator()); + System.out.println("Let's do some quizzes!" + System.lineSeparator()); } } @@ -229,21 +229,11 @@ public void showTopicalQuestionsCompletionLevel(int questionsAttempted, int ques + " questions done"); } - /* - public void showTopicAccuracyLevel(int questionsAnsweredCorrectly, - int questionsAttempted, int accuracyPercentage) { - System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAnsweredCorrectly + "/" - + questionsAttempted + "questions correctly answered [" + accuracyPercentage + "%]"); - } - */ - public void showTopicAccuracyLevel(int questionsAnsweredCorrectly, int questionsAttempted) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAnsweredCorrectly + "/" + questionsAttempted + " questions correctly answered"); } - - public void showTopicalHintUsage(int hintUsage) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + hintUsage + (hintUsage <= 1 ? " hint used" : " hints used")); @@ -254,6 +244,7 @@ public void showTopicalPoints(int pointsEarned, int pointsAvailable, int progres + pointsAvailable + " available [" + progressionPercentage + "%]"); } + public void printBookmarkedIndicator() { printMessage("Bookmarked this question!"); } From d24b3221c3958e2e4dd9f3baec84a5bec2ddc698 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Sun, 25 Oct 2020 12:07:13 +0800 Subject: [PATCH 196/447] Fix Checkstyle errors --- src/main/java/seedu/eduke8/parser/MenuParser.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 6f7d53ad46..4c794ebf1a 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,7 +1,16 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.*; +import seedu.eduke8.command.AboutCommand; +import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.ExitCommand; +import seedu.eduke8.command.HelpCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.QuizCommand; +import seedu.eduke8.command.StatsCommand; +import seedu.eduke8.command.TextbookCommand; +import seedu.eduke8.command.TopicsCommand; import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; From 1486f8312aaf44755f02cf37ab30408c49049634 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Sun, 25 Oct 2020 17:26:56 +0800 Subject: [PATCH 197/447] Update the Ui picture for DG Clean up Ui Clean up exceptions Remove some magic strings --- docs/images/PrintQuizStartPage.png | Bin 13551 -> 24684 bytes src/main/java/seedu/eduke8/Eduke8.java | 2 - .../seedu/eduke8/command/BookmarkCommand.java | 6 +- .../eduke8/exception/ExceptionMessages.java | 8 +- .../java/seedu/eduke8/option/OptionList.java | 10 ++- .../java/seedu/eduke8/parser/MenuParser.java | 41 +++++---- .../java/seedu/eduke8/parser/QuizParser.java | 12 +-- .../seedu/eduke8/question/QuestionList.java | 4 +- .../java/seedu/eduke8/topic/TopicList.java | 4 +- src/main/java/seedu/eduke8/ui/Ui.java | 85 ++++++++++-------- text-ui-test/EXPECTED.TXT | 27 +++--- 11 files changed, 115 insertions(+), 84 deletions(-) diff --git a/docs/images/PrintQuizStartPage.png b/docs/images/PrintQuizStartPage.png index 6f3bf855fabc7d0bb6e8c1c00f80953514a21a84..f2359d0790ad57856ba77578bf148fa344e776d7 100644 GIT binary patch literal 24684 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 n/" + System.lineSeparator() + "(Topics available can be found using the \"topics\" command)"; - public static final String ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED = "Oh! This command has yet to be implemented. " - + System.lineSeparator() + "Stay tune for Version 2.0!"; public static final String ERROR_QUIZ_ANSWER_NOT_INDEX = "Please choose the answer using its index (1,2,3 or 4)!"; public static final String ERROR_QUIZ_ANSWER_INDEX_OUT_OF_BOUNDS = "Please choose only options 1, 2, 3 or 4"; @@ -18,5 +15,8 @@ public class ExceptionMessages { + " must be more than 0!"; public static final String ERROR_QUIZ_INSUFFICIENT_TOPIC_QUESTIONS = "There is not enough questions in the topic for the quiz!"; - + public static final String ERROR_TOPIC_DOES_NOT_EXIST = "No such topic exists, did you spell it correctly?"; + public static final String ERROR_QUESTION_DOES_NOT_EXIST = "No such question exists, did you spell it correctly?"; + public static final String ERROR_OPTION_DOES_NOT_EXIST = "No such option exists, did you spell it correctly?"; + public static final String ERROR_NO_RIGHT_ANSWER = "Error with question: No right answer specified"; } diff --git a/src/main/java/seedu/eduke8/option/OptionList.java b/src/main/java/seedu/eduke8/option/OptionList.java index a4a88e9d0f..dbe12d563c 100644 --- a/src/main/java/seedu/eduke8/option/OptionList.java +++ b/src/main/java/seedu/eduke8/option/OptionList.java @@ -4,6 +4,9 @@ import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_OPTION_DOES_NOT_EXIST; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_NO_RIGHT_ANSWER; + import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; @@ -11,7 +14,6 @@ public class OptionList implements DisplayableList { private final ArrayList options; private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - private static final String NO_RIGHT_ANSWER_ERROR = "Error with question: No right answer specified"; public OptionList(ArrayList options) { this.options = options; @@ -29,7 +31,7 @@ public Displayable find(String description) throws Eduke8Exception { return option; } } - throw new Eduke8Exception("No such option exists, did you spell it correctly?"); + throw new Eduke8Exception(ERROR_OPTION_DOES_NOT_EXIST); } public int findCorrectOptionIndex() throws Eduke8Exception { @@ -39,8 +41,8 @@ public int findCorrectOptionIndex() throws Eduke8Exception { } } - LOGGER.log(Level.WARNING, NO_RIGHT_ANSWER_ERROR); - throw new Eduke8Exception(NO_RIGHT_ANSWER_ERROR); + LOGGER.log(Level.WARNING, "Error with question: No right answer specified"); + throw new Eduke8Exception(ERROR_NO_RIGHT_ANSWER); } @Override diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 0f86b04698..938efdaaca 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -11,7 +11,6 @@ import seedu.eduke8.command.BookmarkCommand; import seedu.eduke8.command.ExitCommand; import seedu.eduke8.common.DisplayableList; -import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; @@ -27,6 +26,16 @@ */ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private static final String TOPICS_INDICATOR = "t/"; + private static final String QN_INDICATOR = "n/"; + private static final String BOOKMARK_LIST = "listing"; + private static final String COMMAND_ABOUT = "about"; + private static final String COMMAND_HELP = "help"; + private static final String COMMAND_TOPICS = "topics"; + private static final String COMMAND_TEXTBOOK = "textbook"; + private static final String COMMAND_QUIZ = "quiz"; + private static final String COMMAND_BOOKMARK = "bookmark"; + private static final String COMMAND_EXIT = "exit"; private BookmarkList bookmarks; @@ -51,38 +60,38 @@ public Command parseCommand(DisplayableList topicList, String userInput) { Ui ui = new Ui(); switch (commandArr[0]) { - case "about": + case COMMAND_ABOUT: LOGGER.log(Level.INFO, "Parsing complete: about command chosen."); return new AboutCommand(); - case "help": + case COMMAND_HELP: LOGGER.log(Level.INFO, "Parsing complete: help command chosen."); return new HelpCommand(); - case "topics": + case COMMAND_TOPICS: LOGGER.log(Level.INFO, "Parsing complete: topics command chosen."); return new TopicsCommand(); - case "textbook": + case COMMAND_TEXTBOOK: LOGGER.log(Level.INFO, "Parsing complete: textbook command chosen."); return new TextbookCommand(); - case "quiz": + case COMMAND_QUIZ: int numOfQuestions = 0; String topicName = ""; try { - if (commandArr[2].contains("n/")) { - numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf("n/") + 2)); - topicName = commandArr[1].substring(commandArr[1].indexOf("t/") + 2); - } else if (commandArr[2].contains("t/")) { - numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf("n/") + 2)); - topicName = commandArr[2].substring(commandArr[2].indexOf("t/") + 2); + if (commandArr[2].contains(QN_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf(QN_INDICATOR) + 2)); + topicName = commandArr[1].substring(commandArr[1].indexOf(TOPICS_INDICATOR) + 2); + } else if (commandArr[2].contains(TOPICS_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf(QN_INDICATOR) + 2)); + topicName = commandArr[2].substring(commandArr[2].indexOf(TOPICS_INDICATOR) + 2); } } catch (NumberFormatException | IndexOutOfBoundsException e) { return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } LOGGER.log(Level.INFO, "Parsing complete: quiz command chosen."); return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui, bookmarks); - case "bookmark": - System.out.println("bookmarks are as follows: "); - return new BookmarkCommand("listing", bookmarks); - case "exit": + case COMMAND_BOOKMARK: + LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); + return new BookmarkCommand(BOOKMARK_LIST, bookmarks); + case COMMAND_EXIT: LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); default: diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 8b448ddbe1..012c26ba39 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -18,14 +18,14 @@ import java.util.logging.Level; import java.util.logging.Logger; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_ANSWER_NOT_INDEX; -import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUIZ_COMMAND_NOT_IMPLEMENTED; - /** * Parses user input during a quiz activity. */ public class QuizParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private static final String COMMAND_HINT = "hint"; + private static final String COMMAND_BOOKMARK = "bookmark"; + private static final String BOOKMARK_STORE = "storing"; private Question question; private BookmarkList bookmarks; @@ -49,12 +49,12 @@ public void setQuestion(Question question) { */ @Override public Command parseCommand(DisplayableList optionList, String userInput) { - if ("hint".equals(userInput)) { + if (COMMAND_HINT.equals(userInput)) { LOGGER.log(Level.INFO, "Parsing complete: hint command chosen."); return new HintCommand(question.getHint()); - } else if ("bookmark".equals(userInput)) { + } else if (COMMAND_BOOKMARK.equals(userInput)) { LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); - return new BookmarkCommand(question, "storing", bookmarks); + return new BookmarkCommand(question, BOOKMARK_STORE, bookmarks); } try { diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index b1f7589d4f..ec67d54726 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -4,6 +4,8 @@ import seedu.eduke8.common.DisplayableList; import seedu.eduke8.exception.Eduke8Exception; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_QUESTION_DOES_NOT_EXIST; + import java.util.ArrayList; public class QuestionList implements DisplayableList { @@ -34,6 +36,6 @@ public Displayable find(String description) throws Eduke8Exception { return question; } } - throw new Eduke8Exception("No such question exists, did you spell it correctly?"); + throw new Eduke8Exception(ERROR_QUESTION_DOES_NOT_EXIST); } } diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 08733badcd..f717b52dcf 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -5,6 +5,8 @@ import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.ui.Ui; +import static seedu.eduke8.exception.ExceptionMessages.ERROR_TOPIC_DOES_NOT_EXIST; + import java.util.ArrayList; import java.util.logging.Logger; @@ -33,7 +35,7 @@ public Displayable find(String topicName) throws Eduke8Exception { return topic; } } - throw new Eduke8Exception("No such topic exists, did you spell it correctly?"); + throw new Eduke8Exception(ERROR_TOPIC_DOES_NOT_EXIST); } public int getCount() { diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index de9da1356f..1e09d69132 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -9,7 +9,6 @@ import seedu.eduke8.topic.Topic; import java.util.ArrayList; -import java.util.Arrays; import java.util.Scanner; public class Ui { @@ -40,7 +39,8 @@ public class Ui { private static final String MESSAGE_HELP = "These are the commands that you can use:" + System.lineSeparator() + "1) about" + System.lineSeparator() + "2) help" + System.lineSeparator() + "3) topics" + System.lineSeparator() + "4) textbook" + System.lineSeparator() - + "5) quiz t/ n/" + System.lineSeparator() + "6) exit"; + + "5) quiz t/ n/" + System.lineSeparator() + "6) bookmark" + + System.lineSeparator() + "7) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!" + System.lineSeparator() + "Hope you have learnt something new!"; @@ -50,14 +50,32 @@ public class Ui { private static final String MESSAGE_TEXTBOOK = "The textbook for this module is available at:" + System.lineSeparator() + TEXTBOOK_WEBSITE; private static final String MESSAGE_HINT = "Hint: "; + private static final String MESSAGE_GET_INPUT_FROM_USER = "Enter your command or 'help': "; + private static final String MESSAGE_GET_INPUT_FROM_USER_QUIZ = "Enter your answer, 'hint' or 'bookmark': "; + private static final String MESSAGE_PRINT_TOPIC_LIST = "These are the available topics and the number of " + + "available questions in each:"; + private static final String MESSAGE_EXPLANATION = "Explanation:"; + private static final String MESSAGE_PRINT_NOTE_LIST_NONE = "There are no notes for this topic!"; + private static final String MESSAGE_PRINT_NOTE_LIST = "These are the notes for this topic: "; + private static final String MESSAGE_QUIZ_TOPIC_CHOSEN = "The chosen topics is: "; + private static final String MESSAGE_QUIZ_QUESTION_CHOSEN = "You have chosen to complete "; + private static final String MESSAGE_QUIZ_QUESTION_CHOSEN_SECOND = " question"; + private static final String MESSAGE_BOOKMARK_INDICATOR = "Bookmarked this question!"; + private static final String MESSAGE_BOOKMARK_LIST = "This is your list of bookmarks: "; + private static final String CLOSE_BRACKET = ") "; + private static final String OPEN_SQUARE_BRACKET = "["; + private static final String CLOSE_SQUARE_BRACKET = "] "; + private static final String DOT = "."; + private static final String DOT_SPACE = ". "; + private static final String DOT_PLURAL = "s."; public String getInputFromUser() { - System.out.print("Enter your command or 'help': "); + System.out.print(MESSAGE_GET_INPUT_FROM_USER); return SCANNER.nextLine(); } public String getQuizInputFromUser() { - System.out.print("Enter your answer or get a hint ('hint'): "); + System.out.print(MESSAGE_GET_INPUT_FROM_USER_QUIZ); return SCANNER.nextLine(); } @@ -77,7 +95,7 @@ public void printExitMessage() { } public void printOption(Option option, int optionNumber) { - System.out.println(optionNumber + ") " + option.getDescription()); + System.out.println(optionNumber + CLOSE_BRACKET + option.getDescription()); if (optionNumber == LAST_OPTION) { System.out.println(HORIZONTAL_LINE); } @@ -93,16 +111,15 @@ public void printHint(Hint hint) { System.out.println(HORIZONTAL_LINE); } - //Formatting of topicsChosen: separated by "," public void printStartQuizPage(int numberOfQuestionsChosen, String topicsChosen) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_QUIZ_START); - //Showing the number of questions chosen by user + //Shows the number of questions chosen by user printStartQuizQuestions(numberOfQuestionsChosen); - //Showing the topics chosen by user - printStartQuizTopics(topicsChosen); + //Shows the topics chosen by user + System.out.println(MESSAGE_QUIZ_TOPIC_CHOSEN + topicsChosen); System.out.println(HORIZONTAL_LINE); } @@ -115,7 +132,7 @@ public void printEndQuizPage() { public void printAnswerIsWrong(int correctAnswer, String explanation) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_ANSWER_WRONG + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); - System.out.println(System.lineSeparator() + "Explanation:" + System.lineSeparator() + explanation); + System.out.println(System.lineSeparator() + MESSAGE_EXPLANATION + System.lineSeparator() + explanation); System.out.println(HORIZONTAL_LINE); System.out.println(HORIZONTAL_LINE); } @@ -123,7 +140,7 @@ public void printAnswerIsWrong(int correctAnswer, String explanation) { public void printAnswerIsCorrect(String explanation) { System.out.println(HORIZONTAL_LINE); System.out.println(MESSAGE_ANSWER_CORRECT); - System.out.println(System.lineSeparator() + "Explanation:" + System.lineSeparator() + explanation); + System.out.println(System.lineSeparator() + MESSAGE_EXPLANATION + System.lineSeparator() + explanation); System.out.println(HORIZONTAL_LINE); System.out.println(HORIZONTAL_LINE); } @@ -147,10 +164,11 @@ public void printError(String errorMessage) { public void printTopicList(ArrayList topics) { System.out.println(HORIZONTAL_LINE); - System.out.println("These are the available topics and the number of available questions in each:"); + System.out.println(MESSAGE_PRINT_TOPIC_LIST); for (int i = 0; i < topics.size(); i++) { Topic topic = (Topic) topics.get(i); - System.out.println(topic.getDescription() + " [" + topic.getQuestionList().getCount() + "]"); + System.out.println(OPEN_SQUARE_BRACKET + topic.getQuestionList().getCount() + CLOSE_SQUARE_BRACKET + + topic.getDescription()); } System.out.println(HORIZONTAL_LINE); @@ -159,44 +177,42 @@ public void printTopicList(ArrayList topics) { public void printNoteList(ArrayList notes) { if (notes.size() == 0) { - System.out.println("There are no notes for this topic!"); + System.out.println(MESSAGE_PRINT_NOTE_LIST_NONE); } else { - System.out.println("These are the notes for this topic"); + System.out.println(MESSAGE_PRINT_NOTE_LIST); for (int i = 0; i < notes.size(); i++) { System.out.println(HORIZONTAL_LINE); Note note = (Note) notes.get(i); - System.out.println(i + ". " + note.getDescription()); + System.out.println(i + DOT + note.getDescription()); } } System.out.println(HORIZONTAL_LINE); } - private void printStartQuizTopics(String topicsChosen) { - if (topicsChosen.contains(",")) { - int indexOfSplit = topicsChosen.indexOf(","); - String topics1 = topicsChosen.substring(0, indexOfSplit).trim(); - String topics2 = topicsChosen.substring(indexOfSplit + 1).trim(); - System.out.println("The topics chosen are: " + topics1 + " and " + topics2); - } else { - System.out.println("The topic chosen is: " + topicsChosen); - } - } - private void printStartQuizQuestions(int numberOfQuestionsChosen) { - System.out.print("You have chosen to complete " + numberOfQuestionsChosen + " question"); + System.out.print(MESSAGE_QUIZ_QUESTION_CHOSEN + numberOfQuestionsChosen + MESSAGE_QUIZ_QUESTION_CHOSEN_SECOND); if (numberOfQuestionsChosen < 2) { - System.out.println("."); + System.out.println(DOT); } else { - System.out.println("s."); + System.out.println(DOT_PLURAL); } } public void printBookmarkedIndicator() { - printMessage("Bookmarked this question!"); + printMessage(MESSAGE_BOOKMARK_INDICATOR); } public void printListOfBookmarkedQuestions(BookmarkList bookmarks) { + String list = listOfBookmarkedQuestions(bookmarks); + + System.out.println(HORIZONTAL_LINE); + System.out.println(MESSAGE_BOOKMARK_LIST); + System.out.println(list); + System.out.println(HORIZONTAL_LINE); + } + + private String listOfBookmarkedQuestions(BookmarkList bookmarks) { int i = 1; ArrayList allBookmarks; allBookmarks = bookmarks.getInnerList(); @@ -207,16 +223,15 @@ public void printListOfBookmarkedQuestions(BookmarkList bookmarks) { ArrayList optionsAvailable = properQuestion.getOptionList().getInnerList(); int j = 1; for (Displayable option : optionsAvailable) { - optionOutput += "\n " + j + ") " + option.getDescription() + optionOutput += "\n " + j + CLOSE_BRACKET + option.getDescription() + ((j == optionsAvailable.size()) ? "\n" : ""); j++; } - output += i + ". " + question.getDescription() + optionOutput + " " + output += i + DOT_SPACE + question.getDescription() + optionOutput + " " + ((i == allBookmarks.size()) ? "" : "\n"); i++; } - printMessage(output); + return output; } - } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 8272346436..16dddba268 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -23,7 +23,8 @@ These are the commands that you can use: 3) topics 4) textbook 5) quiz t/ n/ -6) exit +6) bookmark +7) exit ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ The textbook for this module is available at: @@ -31,12 +32,12 @@ https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/index.html ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ These are the available topics and the number of available questions in each: -OOP [1] +[1] OOP ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The topic chosen is: OOP +The chosen topics is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -45,10 +46,10 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Hint: check the textbook ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! Explanation: @@ -61,7 +62,7 @@ Hope you have learnt something new! Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The topic chosen is: OOP +The chosen topics is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -70,7 +71,7 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Oops! The correct answer is 1! Do visit the textbook to read up more. Explanation: @@ -89,7 +90,7 @@ There is not enough questions in the topic for the quiz! Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The topic chosen is: OOP +The chosen topics is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -98,13 +99,13 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Please choose the answer using its index (1,2,3 or 4)! ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Please choose only options 1, 2, 3 or 4 ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! Explanation: @@ -142,7 +143,7 @@ No such topic exists, did you spell it correctly? Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The topic chosen is: OOP +The chosen topics is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -151,7 +152,7 @@ The topic chosen is: OOP 3) C 4) D ------------------------------------------------------------------------------------------------------------------------ -Enter your answer or get a hint ('hint'): ------------------------------------------------------------------------------------------------------------------------ +Enter your answer, 'hint' or 'bookmark': ------------------------------------------------------------------------------------------------------------------------ Great Job! That is the correct answer! Keep it up! Explanation: From 2b3e939e3ebed27a19ae6b66cdb803e46fd842fa Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 26 Oct 2020 13:39:02 +0800 Subject: [PATCH 198/447] Edit UG after CS2101 consultation --- docs/UserGuide.md | 83 +++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2e0150f1aa..2c2d0e756b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,29 +1,15 @@ # User Guide for E-Duke-8 -- [User Guide for E-Duke-8](#user-guide-for-e-duke-8) - - [Introduction](#introduction) - - [Quick Start](#quick-start) - - [Features](#features) - - [Welcome Page](#welcome-page) - - [Viewing E-Duke-8 information : `about`](#viewing-e-duke-8-information--about) - - [Viewing available commands : `help`](#viewing-available-commands--help) - - [Listing all topics : `topics`](#listing-all-topics--topics) - - [Accessing the CS2113T textbook content: `textbook`](#accessing-the-cs2113t-textbook-content-textbook) - - [Starting a quiz: `quiz`](#starting-a-quiz-quiz) - - [Showing a hint : `hint`](#showing-a-hint--hint) - - [Exiting the program : `exit`](#exiting-the-program--exit) - - [FAQ](#faq) - - [Command summary](#command-summary) - -## Introduction - -E-Duke-8 helps CS2113/T students **learn and understand software engineering and OOP principles** through a gamified + +## 1. Introduction + +E-Duke-8 (pronounced "Educate") helps CS2113/T students **learn and understand software engineering and [OOP](#Command-Line-Interface-(CLI)) principles** through a gamified platform and enhances their learning experience. -It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the **Command Line Interface (CLI)**, to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. +It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#Command-Line-Interface-(CLI)), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. -## Quick Start +## 2. Quick Start 1. Ensure that you have Java 11 or above installed. 2. Download the latest version of **E-Duke-8** from [here](https://github.com/AY2021S1-CS2113T-F12-3/tp/releases). @@ -41,23 +27,25 @@ It is a desktop application where CS2113/T students can attempt bite-sized quizz 8. Refer to the section on **Features** below for details of each command. -## Features +## 3. Features ℹ️ Notes about the command format: - Words in UPPER_CASE are the parameters that you can specify for your usage. -- e.g. in `quiz t/TOPIC n/QUESTIONS`, 'TOPIC' is a parameter that allows you to choose the topic you want the quiz to be based on, and 'QUESTIONS' specifies the number of questions you want to have in your quiz. +- e.g. in `quiz t/TOPIC n/NUM_QUESTIONS`, 'TOPIC' is a parameter that allows you to choose the topic you want the quiz to be based on, and 'NUM_QUESTIONS' specifies the number of questions you want to have in your quiz. -### Welcome Page +### 3.1. Loading Data Data is automatically loaded from the files in the **data** folder for use in quizzes and notes. To ensure that data could be loaded successfully, ensure that the data folder that comes along with the eduke8.jar file is placed in the same folder as eduke8.jar. This is part of the setup and is to be done prior to the running of the app. +### 3.2. Welcome Page + Upon successful startup, you should be greeted with a screen like this: ![welcome](./images/welcome.png) -### Viewing E-Duke-8 information : `about` +### 3.3. Viewing E-Duke-8 information : `about` Shows a message explaining what E-Duke-8 is about and your benefits of using it. @@ -71,7 +59,7 @@ What you should see: ![about](./images/about.png) -### Viewing available commands : `help` +### 3.4. Viewing available commands : `help` Shows a list of commands that you can use. @@ -85,7 +73,7 @@ What you should see: ![help](./images/help.png) -### Listing all topics : `topics` +### 3.5. Listing all topics : `topics` Shows the entire list of CS2113/T's topics that you can choose for your quiz to be based upon. @@ -101,7 +89,7 @@ What you should see: ![topics](./images/topics.png) -### Accessing the CS2113T textbook content: `textbook` +### 3.6. Accessing the CS2113T textbook content: `textbook` You can find a link to the module's textbook using this command. @@ -115,32 +103,36 @@ What you should see: ![textbook](./images/textbook.png) -### Starting a quiz: `quiz` +### 3.7. Starting a quiz: `quiz` Starts a quiz with the number of questions and topic as specified by you. -Regardless of right or wrong answer, an explanation about the question will be displayed after you gave an answer. +Regardless of right or wrong answer, an explanation about the question will be displayed after you give an answer. You will then proceed to the next question. Note: - Each of the questions in the quiz will be related to the topic you have chosen. +- You can choose any topic from the topic list. +- Refer to [topics](#3.5.-Listing-all-topics-:-`topics`) to see the number of questions you can choose from. - The first question will be immediately displayed to you once the quiz starts. - The quiz will only end when you have attempted all of the questions in the it. -Input format: `quiz t/TOPIC n/QUESTIONS` +Input format: `quiz t/TOPIC n/NUM_QUESTIONS` Example of usage: ``` quiz t/OOP n/5 ``` -- This will start a quiz that contains 5 questions from the topic on OOP. +- This will start a quiz that contains 5 randomly-chosen questions from the topic on OOP. What you should see: ![quiz](./images/quiz.png) From here on you can either: + 1) Enter in your answer by typing '1', '2', '3' or '4' and pressing enter. -2) Request for a hint by typing 'hint' and pressing enter. Refer to the next section on **Hint** for more information. + +2) If you do not know the answer, you can request for a hint by typing 'hint' and pressing enter. Refer to [**the Hint section**](#3.8.-Showing-a-hint-:-`hint`) for more information. If you have entered the correct answer, this is what you will see: ![quiz](./images/quiz_correct.png) @@ -150,12 +142,15 @@ If you have entered the wrong answer, this is what you will see: After attempting all of the questions, the quiz will automatically end: ![quiz](./images/quiz_end.png) + After the quiz ends, you will be prompted to enter in a new command. At this point, you can choose to start a new quiz again! -### Showing a hint : `hint` +### 3.8. Showing a hint : `hint` Shows a hint to the current question. -- Do note that each question only contain exactly one hint. + +Note: +- Each question only contains exactly one hint. Example of usage: ``` @@ -166,10 +161,11 @@ What you should see: ![hint](./images/hint.png) -### Exiting the program : `exit` +### 3.9. Exiting the program : `exit` Exits E-Duke-8. - You can only exit the application when you are not in a quiz. +- If you are in the middle of a quiz and really want to exit, you can give random answers for the questions. Example of usage: ``` @@ -179,11 +175,13 @@ exit ![exit](./images/exit.png) -## FAQ +## 4. FAQ + **Q**: How do I change the questions in the quizzes? -**A**: Open topics.json in any text editor to edit the questions, make sure to follow the format of the questions already provided. -## Command summary +**A**: Open `topics.json` in any text editor to edit the questions, make sure to follow the format of the questions already provided. + +## 5. Command summary | Action | Format, Examples | | ------ | ---------------- | @@ -192,6 +190,13 @@ exit | Listing all topics | `topics` | | Accessing the CS2113T textbook content | `textbook` | | Starting a quiz | `quiz t/TOPIC n/QUESTIONS`
e.g. `quiz t/OOP n/5` | -| Showing a hint | 'hint; | +| Showing a hint | `hint` | | Exit | `exit` | +## 6. Glossary + +##### 1. Command Line Interface (CLI) +CLI is a text-based interface that allows users to respond to visual prompts by typing single commands into the interface and receiving a reply in the same way. (From [techopedia](https://www.techopedia.com/definition/3337/command-line-interface-cli)) + +##### 2. Object-oriented Programming (OOP) +OOP is a programming paradigm. A programming paradigm guides programmers to analyze programming problems, and structure programming solutions, in a specific way. (From [CS2113/T textbook](https://nus-cs2113-ay2021s1.github.io/website/se-book-adapted/chapters/oop.html)) \ No newline at end of file From f80fa66a26e3e266a133e6c02abdf253451195c9 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 26 Oct 2020 13:43:23 +0800 Subject: [PATCH 199/447] Add table of contents --- docs/UserGuide.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2c2d0e756b..04d9c9e119 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,5 +1,22 @@ # User Guide for E-Duke-8 +Table of contents: + +- [1. Introduction](#1-introduction) +- [2. Quick Start](#2-quick-start) +- [3. Features](#3-features) + * [3.1. Loading Data](#31-loading-data) + * [3.2. Welcome Page](#32-welcome-page) + * [3.3. Viewing E-Duke-8 information : `about`](#33-viewing-e-duke-8-information----about-) + * [3.4. Viewing available commands : `help`](#34-viewing-available-commands----help-) + * [3.5. Listing all topics : `topics`](#35-listing-all-topics----topics-) + * [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content---textbook-) + * [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz---quiz-) + * [3.8. Showing a hint : `hint`](#38-showing-a-hint----hint-) + * [3.9. Exiting the program : `exit`](#39-exiting-the-program----exit-) +- [4. FAQ](#4-faq) +- [5. Command summary](#5-command-summary) +- [6. Glossary](#6-glossary) ## 1. Introduction @@ -45,7 +62,7 @@ Upon successful startup, you should be greeted with a screen like this: ![welcome](./images/welcome.png) -### 3.3. Viewing E-Duke-8 information : `about` +### 3.3. Viewing E-Duke-8 information: `about` Shows a message explaining what E-Duke-8 is about and your benefits of using it. @@ -59,7 +76,7 @@ What you should see: ![about](./images/about.png) -### 3.4. Viewing available commands : `help` +### 3.4. Viewing available commands: `help` Shows a list of commands that you can use. @@ -73,7 +90,7 @@ What you should see: ![help](./images/help.png) -### 3.5. Listing all topics : `topics` +### 3.5. Listing all topics: `topics` Shows the entire list of CS2113/T's topics that you can choose for your quiz to be based upon. @@ -145,7 +162,7 @@ After attempting all of the questions, the quiz will automatically end: After the quiz ends, you will be prompted to enter in a new command. At this point, you can choose to start a new quiz again! -### 3.8. Showing a hint : `hint` +### 3.8. Showing a hint: `hint` Shows a hint to the current question. @@ -161,7 +178,7 @@ What you should see: ![hint](./images/hint.png) -### 3.9. Exiting the program : `exit` +### 3.9. Exiting the program: `exit` Exits E-Duke-8. - You can only exit the application when you are not in a quiz. From 00c392399834d7bb7871515a261ac15bcc4297c7 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 13:43:37 +0800 Subject: [PATCH 200/447] Implement save method logic --- .../seedu/eduke8/bookmark/BookmarkList.java | 10 ++- .../seedu/eduke8/common/EditableList.java | 8 ++ src/main/java/seedu/eduke8/note/NoteList.java | 38 ++++++--- .../eduke8/stats/TopicalStatsCalculator.java | 29 ++++--- .../seedu/eduke8/storage/UserStorage.java | 81 ++++++++++--------- 5 files changed, 106 insertions(+), 60 deletions(-) create mode 100644 src/main/java/seedu/eduke8/common/EditableList.java diff --git a/src/main/java/seedu/eduke8/bookmark/BookmarkList.java b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java index fa47a05d52..cb8c01971e 100644 --- a/src/main/java/seedu/eduke8/bookmark/BookmarkList.java +++ b/src/main/java/seedu/eduke8/bookmark/BookmarkList.java @@ -2,10 +2,11 @@ import seedu.eduke8.common.Displayable; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.common.EditableList; import java.util.ArrayList; -public class BookmarkList implements DisplayableList { +public class BookmarkList implements DisplayableList, EditableList { private ArrayList bookmarks; @@ -19,15 +20,16 @@ public ArrayList getInnerList() { } + @Override public void add(Displayable question) { assert question != null; // Exception in future if user can add question bookmarks.add(question); } - - public void delete(int index) { + @Override + public Displayable delete(int index) { assert (index > 0 && index < bookmarks.size()); // Exception in future if user can delete question - bookmarks.remove(index); + return bookmarks.remove(index); } @Override diff --git a/src/main/java/seedu/eduke8/common/EditableList.java b/src/main/java/seedu/eduke8/common/EditableList.java new file mode 100644 index 0000000000..54252574e4 --- /dev/null +++ b/src/main/java/seedu/eduke8/common/EditableList.java @@ -0,0 +1,8 @@ +package seedu.eduke8.common; + +public interface EditableList { + + public void add(Displayable displayable); + + public Displayable delete(int index); +} diff --git a/src/main/java/seedu/eduke8/note/NoteList.java b/src/main/java/seedu/eduke8/note/NoteList.java index f624460880..3a3818f43e 100644 --- a/src/main/java/seedu/eduke8/note/NoteList.java +++ b/src/main/java/seedu/eduke8/note/NoteList.java @@ -1,28 +1,48 @@ package seedu.eduke8.note; import seedu.eduke8.common.Displayable; +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.common.EditableList; +import seedu.eduke8.exception.Eduke8Exception; import java.util.ArrayList; import java.util.logging.Logger; -public class NoteList { - private ArrayList noteList; +public class NoteList implements DisplayableList, EditableList { + private ArrayList notes; private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - public NoteList(ArrayList noteList) { - this.noteList = noteList; + public NoteList(ArrayList notes) { + this.notes = notes; } + @Override public void add(Displayable note) { - noteList.add(note); + notes.add(note); } - public void delete(int index) { - assert (index > 0 && index < noteList.size()); - noteList.remove(index); + @Override + public Displayable delete(int index) { + assert (index > 0 && index < notes.size()); + return notes.remove(index); + } + + @Override + public ArrayList getInnerList() { + return notes; + } + + @Override + public Displayable find(String description) throws Eduke8Exception { + for (Displayable note : notes) { + if (description.equalsIgnoreCase(note.getDescription())) { + return note; + } + } + return null; } public int getCount() { - return noteList.size(); + return notes.size(); } } diff --git a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java index 57f1358a4d..184501eff6 100644 --- a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java @@ -5,6 +5,10 @@ import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; +import java.util.ArrayList; + +import static java.util.stream.Collectors.toList; + public class TopicalStatsCalculator extends StatsCalculator { @@ -17,13 +21,13 @@ public TopicalStatsCalculator(Topic topic) { // check each qn and see if they are done public int calculateTopicalQuestionsAttemptCount() { - int questionAttemptCount = 0; - for (Displayable question : topicQuestionList.getInnerList()) { - if (question.wasShown()) { - questionAttemptCount++; - } - } - return questionAttemptCount; + return getTopicalAttemptedQuestions().size(); + } + + public ArrayList getTopicalAttemptedQuestions() { + return (ArrayList) topicQuestionList.getInnerList().stream() + .filter(Displayable::wasShown) + .collect(toList()); } public int getTopicQuestionsCount() { @@ -32,8 +36,9 @@ public int getTopicQuestionsCount() { // check each qn and see if they are correct public int calculateTopicalQuestionsCorrectCount() { + ArrayList attemptedQuestions = getTopicalAttemptedQuestions(); int questionCorrectCount = 0; - for (Displayable question : topicQuestionList.getInnerList()) { + for (Displayable question : attemptedQuestions) { if (((Question) question).wasAnsweredCorrectly()) { questionCorrectCount++; } @@ -41,10 +46,13 @@ public int calculateTopicalQuestionsCorrectCount() { return questionCorrectCount; } + + // check each qn and calculate number of hints used public int calculateTopicalHintUsage() { + ArrayList attemptedQuestions = getTopicalAttemptedQuestions(); int hintUsageCount = 0; - for (Displayable question : topicQuestionList.getInnerList()) { + for (Displayable question : attemptedQuestions) { if (((Question) question).wasHintShown()) { hintUsageCount++; } @@ -55,8 +63,9 @@ public int calculateTopicalHintUsage() { // The 2 methods below maybe could just extend from StatsCalulator public int calculateTopicalPointsEarned() { + ArrayList attemptedQuestions = getTopicalAttemptedQuestions(); int pointsEarned = 0; - for (Displayable question : topicQuestionList.getInnerList()) { + for (Displayable question : attemptedQuestions) { pointsEarned += calculatePointsEarnedForQuestion((Question) question); } return pointsEarned; diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index de9962666f..83943c58e0 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -3,8 +3,12 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; +import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.common.Displayable; -import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.note.NoteList; +import seedu.eduke8.question.Question; +import seedu.eduke8.stats.TopicalStatsCalculator; +import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; import java.io.File; @@ -13,13 +17,15 @@ import java.util.ArrayList; public class UserStorage extends LocalStorage { - private DisplayableList bookmarkList; - private DisplayableList userList; + private BookmarkList bookmarkList; + private NoteList noteList; private TopicList topicList; - public UserStorage(String filePath, TopicList topicList) { + public UserStorage(String filePath, TopicList topicList, BookmarkList bookmarkList, NoteList noteList) { super(filePath); this.topicList = topicList; + this.bookmarkList = bookmarkList; + this.noteList = noteList; } @Override @@ -28,48 +34,49 @@ public File save() throws IOException { file = super.save(); // Get all the questions seen before - JSONArray questions = new JSONArray(); - - // Store if they were correct, bookmarked, any notes - - /* - * [{question: "", correct: "", bookmarked: "", note: ""}] - * */ + JSONArray topics = new JSONArray(); - // First Employee - JSONObject employeeDetails = new JSONObject(); - employeeDetails.put("firstName", "Lokesh"); - employeeDetails.put("lastName", "Gupta"); - employeeDetails.put("website", "howtodoinjava.com"); + for (Displayable topicObject: topicList.getInnerList()) { + JSONObject topic = new JSONObject(); + topic.put("topic", topicObject.getDescription()); - JSONObject employeeObject = new JSONObject(); - employeeObject.put("employee", employeeDetails); + JSONArray questions = getQuestionsJsonArray((Topic) topicObject); + topic.put("questions", questions); - //Second Employee - JSONObject employeeDetails2 = new JSONObject(); - employeeDetails2.put("firstName", "Brian"); - employeeDetails2.put("lastName", "Schultz"); - employeeDetails2.put("website", "example.com"); + JSONArray notes = getNotesJsonArray(); + topic.put("notes", notes); - JSONObject employeeObject2 = new JSONObject(); - employeeObject2.put("employee", employeeDetails2); - - //Add employees to list - JSONArray employeeList = new JSONArray(); - employeeList.add(employeeObject); - employeeList.add(employeeObject2); + topics.add(topic); + } //Write JSON file - try (FileWriter writer = new FileWriter("employees.json")) { - - writer.write(employeeList.toJSONString()); - writer.flush(); + FileWriter writer = new FileWriter(filePath); + writer.write(topics.toJSONString()); + writer.flush(); - } catch (IOException e) { - e.printStackTrace(); + return file; + } + + private JSONArray getNotesJsonArray() { + JSONArray notes = new JSONArray(); + for (Displayable noteObject: noteList.getInnerList()) { + notes.add(noteObject.getDescription()); } + return notes; + } - return file; + private JSONArray getQuestionsJsonArray(Topic topicObject) { + JSONArray questions = new JSONArray(); + TopicalStatsCalculator topicalStatsCalculator = new TopicalStatsCalculator(topicObject); + ArrayList attemptedQuestions = topicalStatsCalculator.getTopicalAttemptedQuestions(); + for (Displayable questionObject: attemptedQuestions) { + JSONObject question = new JSONObject(); + question.put("description", questionObject.getDescription()); + question.put("correct", ((Question) questionObject).wasAnsweredCorrectly()); + question.put("bookmarked", bookmarkList.find(questionObject.getDescription()) != null); + questions.add(question); + } + return questions; } @Override From d4c5a0a671520fab3bf4fd67731e0a53683308bf Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 26 Oct 2020 13:47:11 +0800 Subject: [PATCH 201/447] Edit toc --- docs/UserGuide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 04d9c9e119..9102ec8780 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -2,18 +2,18 @@ Table of contents: -- [1. Introduction](#1-introduction) +- [1. Introduction](#1.-introduction) - [2. Quick Start](#2-quick-start) - [3. Features](#3-features) * [3.1. Loading Data](#31-loading-data) * [3.2. Welcome Page](#32-welcome-page) - * [3.3. Viewing E-Duke-8 information : `about`](#33-viewing-e-duke-8-information----about-) - * [3.4. Viewing available commands : `help`](#34-viewing-available-commands----help-) - * [3.5. Listing all topics : `topics`](#35-listing-all-topics----topics-) + * [3.3. Viewing E-Duke-8 information: `about`](#33-viewing-e-duke-8-information----about-) + * [3.4. Viewing available commands: `help`](#34-viewing-available-commands----help-) + * [3.5. Listing all topics: `topics`](#35-listing-all-topics----topics-) * [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content---textbook-) * [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz---quiz-) - * [3.8. Showing a hint : `hint`](#38-showing-a-hint----hint-) - * [3.9. Exiting the program : `exit`](#39-exiting-the-program----exit-) + * [3.8. Showing a hint: `hint`](#38-showing-a-hint----hint-) + * [3.9. Exiting the program: `exit`](#39-exiting-the-program----exit-) - [4. FAQ](#4-faq) - [5. Command summary](#5-command-summary) - [6. Glossary](#6-glossary) From 8926faf466806e069d919b8da82f2d384504b17e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 26 Oct 2020 13:51:29 +0800 Subject: [PATCH 202/447] Edit toc to make links work --- docs/UserGuide.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 9102ec8780..bf8f09e968 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -2,18 +2,18 @@ Table of contents: -- [1. Introduction](#1.-introduction) +- [1. Introduction](#1-introduction) - [2. Quick Start](#2-quick-start) - [3. Features](#3-features) * [3.1. Loading Data](#31-loading-data) * [3.2. Welcome Page](#32-welcome-page) - * [3.3. Viewing E-Duke-8 information: `about`](#33-viewing-e-duke-8-information----about-) - * [3.4. Viewing available commands: `help`](#34-viewing-available-commands----help-) - * [3.5. Listing all topics: `topics`](#35-listing-all-topics----topics-) - * [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content---textbook-) - * [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz---quiz-) - * [3.8. Showing a hint: `hint`](#38-showing-a-hint----hint-) - * [3.9. Exiting the program: `exit`](#39-exiting-the-program----exit-) + * [3.3. Viewing E-Duke-8 information: `about`](#33-viewing-e-duke-8-information-about) + * [3.4. Viewing available commands: `help`](#34-viewing-available-commands-help) + * [3.5. Listing all topics: `topics`](#35-listing-all-topics-topics) + * [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content-textbook) + * [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz-quiz) + * [3.8. Showing a hint: `hint`](#38-showing-a-hint-hint) + * [3.9. Exiting the program: `exit`](#39-exiting-the-program-exit) - [4. FAQ](#4-faq) - [5. Command summary](#5-command-summary) - [6. Glossary](#6-glossary) From 00616a4f96d0e2c737f592a39dcaabdddeb72fb5 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Mon, 26 Oct 2020 13:54:49 +0800 Subject: [PATCH 203/447] Edit links to glossary --- docs/UserGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index bf8f09e968..be8387c548 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -20,10 +20,10 @@ Table of contents: ## 1. Introduction -E-Duke-8 (pronounced "Educate") helps CS2113/T students **learn and understand software engineering and [OOP](#Command-Line-Interface-(CLI)) principles** through a gamified +E-Duke-8 (pronounced "Educate") helps CS2113/T students **learn and understand software engineering and [OOP](#2-object-oriented-programming-oop) principles** through a gamified platform and enhances their learning experience. -It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#Command-Line-Interface-(CLI)), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. +It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#1-command-line-interface-cli), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. ## 2. Quick Start From 37968d8d2c5accce878f21e57d6a26214a86d289 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:04:28 +0800 Subject: [PATCH 204/447] Fix logic for saving --- src/main/java/seedu/eduke8/Eduke8.java | 2 +- .../seedu/eduke8/storage/UserStorage.java | 36 ++++++++++--------- src/main/java/seedu/eduke8/topic/Topic.java | 11 ++++-- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 27f7457ccb..b8f3519742 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -43,7 +43,7 @@ private Eduke8(String dataPath, String logPath, String userPath) { logStorage.save(); topicList = new TopicList(topicsStorage.load()); - userStorage = new UserStorage(userPath, topicList); + userStorage = new UserStorage(userPath, topicList, bookmarkList); bookmarkList = new BookmarkList(userStorage.load()); } catch (ParseException | IOException e) { ui.printError(ERROR_STORAGE_FAIL); diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 83943c58e0..86c2274102 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -18,14 +18,12 @@ public class UserStorage extends LocalStorage { private BookmarkList bookmarkList; - private NoteList noteList; private TopicList topicList; - public UserStorage(String filePath, TopicList topicList, BookmarkList bookmarkList, NoteList noteList) { + public UserStorage(String filePath, TopicList topicList, BookmarkList bookmarkList) { super(filePath); this.topicList = topicList; this.bookmarkList = bookmarkList; - this.noteList = noteList; } @Override @@ -43,21 +41,34 @@ public File save() throws IOException { JSONArray questions = getQuestionsJsonArray((Topic) topicObject); topic.put("questions", questions); - JSONArray notes = getNotesJsonArray(); + JSONArray notes = getNotesJsonArray(((Topic) topicObject).getNoteList()); topic.put("notes", notes); topics.add(topic); } //Write JSON file - FileWriter writer = new FileWriter(filePath); + FileWriter writer = new FileWriter(file.getAbsolutePath()); writer.write(topics.toJSONString()); writer.flush(); return file; } - - private JSONArray getNotesJsonArray() { + + @Override + public ArrayList load() throws IOException, ParseException { + if (!file.exists()) { + return new ArrayList<>(); + } + + JSONArray objectsAsJsonArray = getJsonArrayFromFile(); + + + return null; + } + + @SuppressWarnings("unchecked") + private JSONArray getNotesJsonArray(NoteList noteList) { JSONArray notes = new JSONArray(); for (Displayable noteObject: noteList.getInnerList()) { notes.add(noteObject.getDescription()); @@ -65,6 +76,7 @@ private JSONArray getNotesJsonArray() { return notes; } + @SuppressWarnings("unchecked") private JSONArray getQuestionsJsonArray(Topic topicObject) { JSONArray questions = new JSONArray(); TopicalStatsCalculator topicalStatsCalculator = new TopicalStatsCalculator(topicObject); @@ -79,15 +91,5 @@ private JSONArray getQuestionsJsonArray(Topic topicObject) { return questions; } - @Override - public ArrayList load() throws IOException, ParseException { - if (!file.exists()) { - return new ArrayList<>(); - } - - JSONArray objectsAsJsonArray = getJsonArrayFromFile(); - - return null; - } } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index cb905cb243..1e674c1535 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -10,7 +10,7 @@ public class Topic implements Displayable { private String description; private QuestionList questionList; - private ArrayList noteList; + private NoteList noteList; private boolean wasShown; public Topic(String description, QuestionList questionList) { @@ -19,10 +19,11 @@ public Topic(String description, QuestionList questionList) { this.description = description; this.questionList = questionList; + this.noteList = new NoteList(new ArrayList<>()); wasShown = false; } - public Topic(String description, QuestionList questionList, ArrayList noteList) { + public Topic(String description, QuestionList questionList, NoteList noteList) { assert description != null; assert questionList != null; @@ -47,7 +48,11 @@ public QuestionList getQuestionList() { return questionList; } + public NoteList getNoteList() { + return noteList; + } + public void showNotes(Ui ui) { - ui.printNoteList(noteList); + ui.printNoteList(noteList.getInnerList()); } } From 8bee149f1260aaa7e53edf47710a4b94f8df5e86 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:20:49 +0800 Subject: [PATCH 205/447] Implement logic for loading user data --- src/main/java/seedu/eduke8/Eduke8.java | 4 +++ .../seedu/eduke8/storage/LocalStorage.java | 3 +- .../java/seedu/eduke8/storage/Storage.java | 3 +- .../seedu/eduke8/storage/UserStorage.java | 33 ++++++++++++++++--- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index b8f3519742..3939367ee9 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -3,6 +3,7 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.command.Command; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.parser.MenuParser; import seedu.eduke8.storage.LogStorage; import seedu.eduke8.storage.TopicsStorage; @@ -49,6 +50,9 @@ private Eduke8(String dataPath, String logPath, String userPath) { ui.printError(ERROR_STORAGE_FAIL); LOGGER.log(Level.WARNING, "Error reading or writing local files"); System.exit(1); + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); + LOGGER.log(Level.INFO, e.getMessage()); } menuParser = new MenuParser(bookmarkList); } diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 6ad6adc84b..b740e3a75b 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -4,6 +4,7 @@ import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import java.io.File; import java.io.FileReader; @@ -30,7 +31,7 @@ public File save() throws IOException { } @Override - public ArrayList load() throws IOException, ParseException { + public ArrayList load() throws IOException, ParseException, Eduke8Exception { return null; } diff --git a/src/main/java/seedu/eduke8/storage/Storage.java b/src/main/java/seedu/eduke8/storage/Storage.java index f553336630..979cb40e56 100644 --- a/src/main/java/seedu/eduke8/storage/Storage.java +++ b/src/main/java/seedu/eduke8/storage/Storage.java @@ -2,6 +2,7 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import java.io.File; import java.io.IOException; @@ -10,6 +11,6 @@ public interface Storage { File save() throws IOException; - ArrayList load() throws IOException, ParseException; + ArrayList load() throws IOException, ParseException, Eduke8Exception; } diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 86c2274102..2cb7827af0 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -5,8 +5,11 @@ import org.json.simple.parser.ParseException; import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.note.Note; import seedu.eduke8.note.NoteList; import seedu.eduke8.question.Question; +import seedu.eduke8.question.QuestionList; import seedu.eduke8.stats.TopicalStatsCalculator; import seedu.eduke8.topic.Topic; import seedu.eduke8.topic.TopicList; @@ -56,15 +59,37 @@ public File save() throws IOException { } @Override - public ArrayList load() throws IOException, ParseException { + public ArrayList load() throws IOException, ParseException, Eduke8Exception { if (!file.exists()) { return new ArrayList<>(); } - JSONArray objectsAsJsonArray = getJsonArrayFromFile(); - + JSONArray topicsAsJsonArray = getJsonArrayFromFile(); + for (Object topic: topicsAsJsonArray) { + String topicDescription = (String) ((JSONObject) topic).get("topic"); + Topic topicObject = (Topic) topicList.find(topicDescription); + + QuestionList questionList = topicObject.getQuestionList(); + JSONArray questions = (JSONArray) ((JSONObject) topic).get("questions"); + for (Object question: questions) { + String questionDescription = (String) ((JSONObject) question).get("description"); // Also marks as shown + Question questionObject = (Question) questionList.find(questionDescription); + if ((boolean) ((JSONObject) question).get("correct")) { + questionObject.markAsAnsweredCorrectly(); + } + if ((boolean) ((JSONObject) question).get("bookmarked")) { + bookmarkList.add(questionObject); + } + } + + NoteList noteList = topicObject.getNoteList(); + JSONArray notes = (JSONArray) ((JSONObject) topic).get("notes"); + for (Object note: notes) { + noteList.add((Note) note); + } + } - return null; + return topicList.getInnerList(); } @SuppressWarnings("unchecked") From 4cbc03a6322ab48cf4e6de0e3fe7f028dced1837 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:46:08 +0800 Subject: [PATCH 206/447] Change marking questions as shown to seperate method and add hints to user storage --- src/main/java/seedu/eduke8/Eduke8.java | 13 +++++++++-- .../java/seedu/eduke8/common/Displayable.java | 2 ++ .../seedu/eduke8/explanation/Explanation.java | 7 +++++- src/main/java/seedu/eduke8/hint/Hint.java | 7 +++++- src/main/java/seedu/eduke8/note/Note.java | 8 ++++++- src/main/java/seedu/eduke8/option/Option.java | 13 +++++++---- .../java/seedu/eduke8/question/Question.java | 8 +++++-- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 1 + .../seedu/eduke8/storage/UserStorage.java | 23 +++++++++++++++---- src/main/java/seedu/eduke8/topic/Topic.java | 7 +++++- src/main/java/seedu/eduke8/ui/Ui.java | 22 ++++++++++-------- 11 files changed, 85 insertions(+), 26 deletions(-) diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index 3939367ee9..ee4d1c312f 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; @@ -37,6 +38,7 @@ public class Eduke8 { private Eduke8(String dataPath, String logPath, String userPath) { ui = new Ui(); + bookmarkList = new BookmarkList(new ArrayList<>()); try { topicsStorage = new TopicsStorage(dataPath); logStorage = new LogStorage(logPath); @@ -45,10 +47,10 @@ private Eduke8(String dataPath, String logPath, String userPath) { topicList = new TopicList(topicsStorage.load()); userStorage = new UserStorage(userPath, topicList, bookmarkList); - bookmarkList = new BookmarkList(userStorage.load()); + userStorage.load(); } catch (ParseException | IOException e) { ui.printError(ERROR_STORAGE_FAIL); - LOGGER.log(Level.WARNING, "Error reading or writing local files"); + LOGGER.log(Level.WARNING, ERROR_STORAGE_FAIL); System.exit(1); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); @@ -80,6 +82,13 @@ private void runCommandLoopUntilExit() { } private void exit() { + try { + userStorage.save(); + } catch (IOException e) { + ui.printError(ERROR_STORAGE_FAIL); + LOGGER.log(Level.WARNING, ERROR_STORAGE_FAIL); + System.exit(1); + } ui.printExitMessage(); System.exit(0); } diff --git a/src/main/java/seedu/eduke8/common/Displayable.java b/src/main/java/seedu/eduke8/common/Displayable.java index c8060729fd..f45d3583b3 100644 --- a/src/main/java/seedu/eduke8/common/Displayable.java +++ b/src/main/java/seedu/eduke8/common/Displayable.java @@ -3,6 +3,8 @@ public interface Displayable { String getDescription(); + void markAsShown(); + boolean wasShown(); } diff --git a/src/main/java/seedu/eduke8/explanation/Explanation.java b/src/main/java/seedu/eduke8/explanation/Explanation.java index cac1e2e160..e68825e8fb 100644 --- a/src/main/java/seedu/eduke8/explanation/Explanation.java +++ b/src/main/java/seedu/eduke8/explanation/Explanation.java @@ -13,10 +13,15 @@ public Explanation(String description) { @Override public String getDescription() { - wasShown = true; + markAsShown(); return description; } + @Override + public void markAsShown() { + wasShown = true; + } + @Override public boolean wasShown() { return this.wasShown; diff --git a/src/main/java/seedu/eduke8/hint/Hint.java b/src/main/java/seedu/eduke8/hint/Hint.java index bd67f88254..45c3380691 100644 --- a/src/main/java/seedu/eduke8/hint/Hint.java +++ b/src/main/java/seedu/eduke8/hint/Hint.java @@ -13,10 +13,15 @@ public Hint(String description) { @Override public String getDescription() { - wasShown = true; + markAsShown(); return description; } + @Override + public void markAsShown() { + wasShown = true; + } + @Override public boolean wasShown() { return this.wasShown; diff --git a/src/main/java/seedu/eduke8/note/Note.java b/src/main/java/seedu/eduke8/note/Note.java index d7179da746..faccd307c3 100644 --- a/src/main/java/seedu/eduke8/note/Note.java +++ b/src/main/java/seedu/eduke8/note/Note.java @@ -13,11 +13,17 @@ public Note(String description) { @Override public String getDescription() { + markAsShown(); return this.description; } + @Override + public void markAsShown() { + wasShown = true; + } + @Override public boolean wasShown() { - return false; + return this.wasShown; } } diff --git a/src/main/java/seedu/eduke8/option/Option.java b/src/main/java/seedu/eduke8/option/Option.java index 237b8242ce..cb83c9c516 100644 --- a/src/main/java/seedu/eduke8/option/Option.java +++ b/src/main/java/seedu/eduke8/option/Option.java @@ -17,20 +17,25 @@ public Option(String description) { @Override public String getDescription() { - wasShown = true; + markAsShown(); return description; } + @Override + public void markAsShown() { + wasShown = true; + } + @Override public boolean wasShown() { - return wasShown; + return this.wasShown; } public boolean isCorrectAnswer() { - return isCorrectAnswer; + return this.isCorrectAnswer; } public void markAsCorrectAnswer() { - this.isCorrectAnswer = true; + isCorrectAnswer = true; } } diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 498283c6d4..4a9006a273 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -37,10 +37,14 @@ public Question(String description, OptionList optionList, Hint hint, Explanatio */ @Override public String getDescription() { - wasShown = true; return description; } + @Override + public void markAsShown() { + wasShown = true; + } + /** * Returns a boolean variable indicating if the question was already attempted before. * @@ -48,7 +52,7 @@ public String getDescription() { */ @Override public boolean wasShown() { - return wasShown; + return this.wasShown; } diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index b37519c098..49bb9b6730 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -70,6 +70,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan Question question = quizQuestionsManager.getNextQuestion(); ui.printQuestion(question, quizQuestionsManager.getCurrentQuestionNumber()); + question.markAsShown(); assert question.wasShown(); OptionList optionList = question.getOptionList(); diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 2cb7827af0..bae91aa0f5 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -72,14 +72,18 @@ public ArrayList load() throws IOException, ParseException, Eduke8E QuestionList questionList = topicObject.getQuestionList(); JSONArray questions = (JSONArray) ((JSONObject) topic).get("questions"); for (Object question: questions) { - String questionDescription = (String) ((JSONObject) question).get("description"); // Also marks as shown + String questionDescription = (String) ((JSONObject) question).get("description"); Question questionObject = (Question) questionList.find(questionDescription); + questionObject.markAsShown(); if ((boolean) ((JSONObject) question).get("correct")) { questionObject.markAsAnsweredCorrectly(); } if ((boolean) ((JSONObject) question).get("bookmarked")) { bookmarkList.add(questionObject); } + if ((boolean) ((JSONObject) question).get("hint")) { + questionObject.getHint().markAsShown(); + } } NoteList noteList = topicObject.getNoteList(); @@ -107,14 +111,23 @@ private JSONArray getQuestionsJsonArray(Topic topicObject) { TopicalStatsCalculator topicalStatsCalculator = new TopicalStatsCalculator(topicObject); ArrayList attemptedQuestions = topicalStatsCalculator.getTopicalAttemptedQuestions(); for (Displayable questionObject: attemptedQuestions) { - JSONObject question = new JSONObject(); - question.put("description", questionObject.getDescription()); - question.put("correct", ((Question) questionObject).wasAnsweredCorrectly()); - question.put("bookmarked", bookmarkList.find(questionObject.getDescription()) != null); + JSONObject question = parseToQuestionJson((Question) questionObject); questions.add(question); } return questions; } + @SuppressWarnings("unchecked") + private JSONObject parseToQuestionJson(Question questionObject) { + JSONObject question = new JSONObject(); + + question.put("description", questionObject.getDescription()); + question.put("correct", questionObject.wasAnsweredCorrectly()); + question.put("bookmarked", bookmarkList.find(questionObject.getDescription()) != null); + question.put("hint", questionObject.wasHintShown()); + + return question; + } + } diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index 1e674c1535..c4392d98e3 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -35,10 +35,15 @@ public Topic(String description, QuestionList questionList, NoteList noteList) { @Override public String getDescription() { - wasShown = true; + markAsShown(); return description; } + @Override + public void markAsShown() { + wasShown = true; + } + @Override public boolean wasShown() { return wasShown; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 780fb36c3a..34e9485ffb 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -31,17 +31,21 @@ public class Ui { private static final String MESSAGE_ABOUT = "E-Duke-8 is a desktop app that helps CS2113/T students learn and" + System.lineSeparator() + "understand software engineering and OOP principles through a" + System.lineSeparator() + "gamified platform and enhances their " + "learning experience." - + System.lineSeparator() + System.lineSeparator() + "You can attempt bite-sized quizzes based " - + "on your choice of topic" + System.lineSeparator() - + "and access key concepts for easy revision!"; + + System.lineSeparator() + + System.lineSeparator() + "You can attempt bite-sized quizzes based on your choice of topic" + + System.lineSeparator() + "and access key concepts for easy revision!"; private static final String MESSAGE_GREETINGS = "Hello! I'm E-Duke-8!" + System.lineSeparator() + "What would you like to learn today?"; private static final String MESSAGE_EXIT = "Bye bye. Hope you had a fruitful revision and see you soon!"; private static final String MESSAGE_HELP = "These are the commands that you can use:" - + System.lineSeparator() + "1) about" + System.lineSeparator() + "2) help" + System.lineSeparator() - + "3) topics" + System.lineSeparator() + "4) textbook" + System.lineSeparator() - + "5) quiz t/ n/" + System.lineSeparator() + "6) bookmark" - + System.lineSeparator() + "7) exit"; + + System.lineSeparator() + "1) about" + + System.lineSeparator() + "2) help" + + System.lineSeparator() + "3) topics" + + System.lineSeparator() + "4) textbook" + + System.lineSeparator() + "5) quiz t/ n/" + + System.lineSeparator() + "6) bookmark" + + System.lineSeparator() + "7) stats" + + System.lineSeparator() + "8) exit"; private static final String MESSAGE_QUIZ_START = "Start of quiz:"; private static final String MESSAGE_QUIZ_END = "This is the end of the quiz!" + System.lineSeparator() + "Hope you have learnt something new!"; @@ -52,8 +56,8 @@ public class Ui { + System.lineSeparator() + TEXTBOOK_WEBSITE; private static final String MESSAGE_HINT = "Hint: "; private static final String POINT_SYSTEM_RULE = "Point system in E-Duke-8: For correct answers, " - + "you earn 2 points if you did not request for hint, " + System.lineSeparator() - + "and 1 point if you did. No point is awarded for wrong answers."; + + "you earn 2 points if you did not request for hint, " + + System.lineSeparator() + "and 1 point if you did. No point is awarded for wrong answers."; private static final String MESSAGE_GET_INPUT_FROM_USER = "Enter your command or 'help': "; private static final String MESSAGE_GET_INPUT_FROM_USER_QUIZ = "Enter your answer, 'hint' or 'bookmark': "; private static final String MESSAGE_PRINT_TOPIC_LIST = "These are the available topics and the number of " From f19eac4d44d118da46f27dbb5695c937e9c3af34 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:47:32 +0800 Subject: [PATCH 207/447] Fix QuestionTest --- src/test/java/seedu/eduke8/question/QuestionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/eduke8/question/QuestionTest.java b/src/test/java/seedu/eduke8/question/QuestionTest.java index 6475f8ab13..a44295be8d 100644 --- a/src/test/java/seedu/eduke8/question/QuestionTest.java +++ b/src/test/java/seedu/eduke8/question/QuestionTest.java @@ -29,7 +29,7 @@ void wasShown_questionThatWasShownToUser_expectsTrue() { Question question = createTestQuestion(PLACEHOLDER_QUESTION_DESCRIPTION); // When question is being shown to user, it is marked as shown automatically. - String questionDescriptionShownToUser = question.getDescription(); + question.markAsShown(); assertTrue(question.wasShown()); } From 2f525612297ac2dd20e2e96a7cb2787c149605dc Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:51:26 +0800 Subject: [PATCH 208/447] Update logs and ignore --- .gitignore | 4 +++- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index effce28882..95c170d9c3 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,6 @@ bin/ text-ui-test/EXPECTED-UNIX.TXT /data/logs/ -/text-ui-test/data/logs \ No newline at end of file +/text-ui-test/data/logs + +/data/main/user.json \ No newline at end of file diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 49bb9b6730..6ebf12d172 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -93,8 +93,10 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan command = getCommand(ui, optionList); if (command instanceof IncorrectCommand) { LOGGER.log(Level.INFO, "Invalid answer given for question"); - } else { + } else if (command instanceof HintCommand) { LOGGER.log(Level.INFO, "Hint shown"); + } else { + LOGGER.log(Level.INFO, "Question bookmarked"g); } } From fd5176a7d864ac0434a53c5b1f0730cbe516797b Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:52:19 +0800 Subject: [PATCH 209/447] Fix typo --- src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 6ebf12d172..48b686be3a 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -96,7 +96,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } else if (command instanceof HintCommand) { LOGGER.log(Level.INFO, "Hint shown"); } else { - LOGGER.log(Level.INFO, "Question bookmarked"g); + LOGGER.log(Level.INFO, "Question bookmarked"); } } From 3722d8b4576dbb897946333a3847b01afa1ca410 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 14:59:43 +0800 Subject: [PATCH 210/447] Refactor using SLAP --- .../seedu/eduke8/storage/UserStorage.java | 91 ++++++++++++------- 1 file changed, 56 insertions(+), 35 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index bae91aa0f5..907f185a43 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -38,16 +38,7 @@ public File save() throws IOException { JSONArray topics = new JSONArray(); for (Displayable topicObject: topicList.getInnerList()) { - JSONObject topic = new JSONObject(); - topic.put("topic", topicObject.getDescription()); - - JSONArray questions = getQuestionsJsonArray((Topic) topicObject); - topic.put("questions", questions); - - JSONArray notes = getNotesJsonArray(((Topic) topicObject).getNoteList()); - topic.put("notes", notes); - - topics.add(topic); + topics.add(parseToTopicJson(topicObject)); } //Write JSON file @@ -65,37 +56,67 @@ public ArrayList load() throws IOException, ParseException, Eduke8E } JSONArray topicsAsJsonArray = getJsonArrayFromFile(); + for (Object topic: topicsAsJsonArray) { - String topicDescription = (String) ((JSONObject) topic).get("topic"); - Topic topicObject = (Topic) topicList.find(topicDescription); - - QuestionList questionList = topicObject.getQuestionList(); - JSONArray questions = (JSONArray) ((JSONObject) topic).get("questions"); - for (Object question: questions) { - String questionDescription = (String) ((JSONObject) question).get("description"); - Question questionObject = (Question) questionList.find(questionDescription); - questionObject.markAsShown(); - if ((boolean) ((JSONObject) question).get("correct")) { - questionObject.markAsAnsweredCorrectly(); - } - if ((boolean) ((JSONObject) question).get("bookmarked")) { - bookmarkList.add(questionObject); - } - if ((boolean) ((JSONObject) question).get("hint")) { - questionObject.getHint().markAsShown(); - } - } - - NoteList noteList = topicObject.getNoteList(); - JSONArray notes = (JSONArray) ((JSONObject) topic).get("notes"); - for (Object note: notes) { - noteList.add((Note) note); - } + parseFromTopicJson((JSONObject) topic); } return topicList.getInnerList(); } + private void parseFromTopicJson(JSONObject topic) throws Eduke8Exception { + String topicDescription = (String) topic.get("topic"); + Topic topicObject = (Topic) topicList.find(topicDescription); + + JSONArray questions = (JSONArray) topic.get("questions"); + loadQuestionAttributes(questions, topicObject); + + JSONArray notes = (JSONArray) topic.get("notes"); + loadNotes(notes, topicObject); + } + + private void loadNotes(JSONArray notes, Topic topicObject) { + NoteList noteList = topicObject.getNoteList(); + for (Object note: notes) { + noteList.add((Note) note); + } + } + + private void loadQuestionAttributes(JSONArray questions, Topic topicObject) throws Eduke8Exception { + QuestionList questionList = topicObject.getQuestionList(); + for (Object question: questions) { + parseFromQuestionJson(questionList, (JSONObject) question); + } + } + + private void parseFromQuestionJson(QuestionList questionList, JSONObject question) throws Eduke8Exception { + String questionDescription = (String) question.get("description"); + Question questionObject = (Question) questionList.find(questionDescription); + questionObject.markAsShown(); + if ((boolean) question.get("correct")) { + questionObject.markAsAnsweredCorrectly(); + } + if ((boolean) question.get("bookmarked")) { + bookmarkList.add(questionObject); + } + if ((boolean) question.get("hint")) { + questionObject.getHint().markAsShown(); + } + } + + @SuppressWarnings("unchecked") + private JSONObject parseToTopicJson(Displayable topicObject) { + JSONObject topic = new JSONObject(); + topic.put("topic", topicObject.getDescription()); + + JSONArray questions = getQuestionsJsonArray((Topic) topicObject); + topic.put("questions", questions); + + JSONArray notes = getNotesJsonArray(((Topic) topicObject).getNoteList()); + topic.put("notes", notes); + return topic; + } + @SuppressWarnings("unchecked") private JSONArray getNotesJsonArray(NoteList noteList) { JSONArray notes = new JSONArray(); From 96c9860098829bce72998c7942cb134ca4c0c0cb Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Mon, 26 Oct 2020 15:15:40 +0800 Subject: [PATCH 211/447] fix io testing --- text-ui-test/EXPECTED.TXT | 3 ++- text-ui-test/data/main/user.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 text-ui-test/data/main/user.json diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index da245aa91c..72b908f510 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -16,7 +16,8 @@ These are the commands that you can use: 4) textbook 5) quiz t/ n/ 6) bookmark -7) exit +7) stats +8) exit ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ The textbook for this module is available at: diff --git a/text-ui-test/data/main/user.json b/text-ui-test/data/main/user.json new file mode 100644 index 0000000000..ba3c64faaa --- /dev/null +++ b/text-ui-test/data/main/user.json @@ -0,0 +1 @@ +[{"notes":[],"questions":[{"correct":true,"bookmarked":false,"hint":true,"description":"What is encapsulation?"}],"topic":"OOP"}] \ No newline at end of file From 2db3472828b56e86621f3a00ace402e00be5e30e Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 28 Oct 2020 00:50:55 +0800 Subject: [PATCH 212/447] Add diagrams and details for architecture and UserStorage --- docs/DeveloperGuide.md | 157 +++++++++++++++++--------- docs/UserGuide.md | 39 ++++--- docs/diagrams/Architecture.drawio | 1 + docs/diagrams/TopicsStorage.drawio | 2 +- docs/diagrams/UserStorage.drawio | 1 + docs/diagrams/UserStorage_save.drawio | 1 + docs/images/Architecture.png | Bin 0 -> 12361 bytes docs/images/TopicsStorage.png | Bin 34229 -> 31558 bytes docs/images/UserStorage.png | Bin 0 -> 30207 bytes docs/images/UserStorage_save.png | Bin 0 -> 18989 bytes 10 files changed, 132 insertions(+), 69 deletions(-) create mode 100644 docs/diagrams/Architecture.drawio create mode 100644 docs/diagrams/UserStorage.drawio create mode 100644 docs/diagrams/UserStorage_save.drawio create mode 100644 docs/images/Architecture.png create mode 100644 docs/images/UserStorage.png create mode 100644 docs/images/UserStorage_save.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9917849b32..bf3524894c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,36 +1,39 @@ # Developer Guide for E-Duke-8 - [Developer Guide for E-Duke-8](#developer-guide-for-e-duke-8) - - [Introduction](#introduction) - - [Software Overview](#software-overview) - - [Setting up](#setting-up) - - [Design & implementation](#design--implementation) - - [Model Component](#model-component) - - [Design of TopicList](#design-of-topiclist) - - [Implementation of TopicList](#implementation-of-topiclist) - - [Implementation of Notes](#implementation-of-notes) - - [Design of Option and OptionList](#design-of-option-and-optionlist) - - [Logic Component](#logic-component) - - [Design of Parser](#design-of-parser) - - [Implementation of MenuParser](#implementation-of-menuparser) - - [Design of QuizQuestionsManager](#design-of-quizquestionsmanager) - - [Implementation of QuizQuestionsManager](#implementation-of-quizquestionsmanager) - - [Storage Component](#storage-component) - - [Design of TopicsStorage](#design-of-topicsstorage) - - [Implementation of TopicsStorage](#implementation-of-topicsstorage) - - [UI Component](#ui-component) - - [Implementation of Ui](#implementation-of-ui) - - [Product scope](#product-scope) - - [Target user profile](#target-user-profile) - - [Value proposition](#value-proposition) - - [User Stories](#user-stories) - - [Non-Functional Requirements](#non-functional-requirements) - - [Glossary](#glossary) + - [1. Introduction](#1-introduction) + - [1.1. Software Overview](#11-software-overview) + - [1.2. Setting up](#12-setting-up) + - [2. Design & implementation](#2-design--implementation) + - [2.1. Architecture](#21-architecture) + - [2.2. Model Component](#22-model-component) + - [2.2.1. Design of TopicList](#221-design-of-topiclist) + - [2.2.2. Implementation of TopicList](#222-implementation-of-topiclist) + - [2.2.3. Implementation of Notes](#223-implementation-of-notes) + - [2.2.4. Design of Option and OptionList](#224-design-of-option-and-optionlist) + - [2.3. Logic Component](#23-logic-component) + - [2.3.1. Design of Parser](#231-design-of-parser) + - [2.3.2. Implementation of MenuParser](#232-implementation-of-menuparser) + - [2.3.3. Design of QuizQuestionsManager](#233-design-of-quizquestionsmanager) + - [2.3.4. Implementation of QuizQuestionsManager](#234-implementation-of-quizquestionsmanager) + - [2.4. Storage Component](#24-storage-component) + - [2.4.1. Design of TopicsStorage](#241-design-of-topicsstorage) + - [2.4.2. Implementation of TopicsStorage](#242-implementation-of-topicsstorage) + - [2.4.3. Design of UserStorage](#243-design-of-userstorage) + - [2.4.4. Implementation of UserStorage](#244-implementation-of-userstorage) + - [2.5. UI Component](#25-ui-component) + - [2.5.1. Implementation of Ui](#251-implementation-of-ui) + - [3. Product scope](#3-product-scope) + - [3.1. Target user profile](#31-target-user-profile) + - [3.2. Value proposition](#32-value-proposition) + - [4. User Stories](#4-user-stories) + - [5. Non-Functional Requirements](#5-non-functional-requirements) + - [6. Glossary](#6-glossary) - [Instructions for manual testing](#instructions-for-manual-testing) -## Introduction +## 1. Introduction -### Software Overview +### 1.1. Software Overview Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Model component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. @@ -39,15 +42,21 @@ E-duke-8 is an education companion, intended for students to enhance their learn This guide will allow any interested contributors who wish to develop this learning companion further, to understand the inner workings of the program. This understanding will enable such contributors to add value to the current code, by improving its performance, level of interaction or capabilities. -### Setting up +### 1.2. Setting up Fork the repo, and clone the fork into your own PC. You are recommended to use IntelliJ to best edit the program. Do not forget to configure the JDK, and to import the project as a Gradle project, and lastly, remember to verify that the JUnit tests pass, to ensure the program is functional. -## Design & implementation +## 2. Design & implementation -### Model Component +### 2.1. Architecture -#### Design of TopicList +The high-level design of our program is based on a 3-tier architecture which consists of the Presentation, Application and Database layers. The Logic component, UI component, Storage component, and Model component can be found in each layer as shown in the architecture diagram below. + +![Architecture](images/Architecture.png) + +### 2.2. Model Component + +#### 2.2.1. Design of TopicList 1. Listing topics in TopicList 2. Finding a topic in TopicList @@ -61,7 +70,7 @@ TopicList is an ArrayList of type Displayable, which is one of two interfaces im in the code for EDuke8. As such, many of the commands that manipulate the TopicList make use of the package java.util.ArrayList. The TopicList is used to store Topics. -#### Implementation of TopicList +#### 2.2.2. Implementation of TopicList **Listing topics in TopicList:** @@ -94,7 +103,7 @@ Step 3: The `TopicList.find()` method then calls the `TopicList.showTopics()` me E-Duke-8. As such, many of the commands that manipulate the `TopicList` make use of the package `java.util.ArrayList`. The `NoteList` stores `Note` objects. Each topic has 1 `NoteList`. -#### Implementation of Notes +#### 2.2.3. Implementation of Notes **Adding a new note:** @@ -126,7 +135,7 @@ Step 1: The `parseCommand()` method instantiates a `TopicCommand` object which t Step 2: The `Topic.showNotes()` method calls the `Ui.printNoteList()` method. The topic's `NoteList` into this method. `Ui.printNoteList()` prints out all the descriptions of the `Note` objects in the `NoteList`. -#### Design of Option and OptionList +#### 2.2.4. Design of Option and OptionList The `Option` and `OptionList` classes implements the `Displayable` and `DisplayableList` interfaces respectively. The `Option` object stores one option of a question while the `OptionList` object stores all 4 options of the same @@ -134,9 +143,9 @@ question. The class diagram below illustrates the structure of both classes. ![Option_and_OptionList_Class](./images/Option.png) -### Logic Component +### 2.3. Logic Component -#### Design of Parser +#### 2.3.1. Design of Parser ![Parser Diagram](./images/ParserDiagram.png) @@ -146,7 +155,7 @@ question. The class diagram below illustrates the structure of both classes. 3. The `Ui` object in the `Command` object is used to display the requested information, or to display the required task to be completed as per the user input. -#### Implementation of MenuParser +#### 2.3.2. Implementation of MenuParser Below is the sequence diagram for how the Parser component of `Eduke8` works with commands to show output to the user. @@ -179,7 +188,7 @@ Step 5. The string at the 0th index is then used in a switch statement, where ea options available. As such, the contents of the case with reference “help” is run, which is a return statement containing a new `HelpCommand()`. This leads to the execution of the `help` command. -#### Design of QuizQuestionsManager +#### 2.3.3. Design of QuizQuestionsManager To start a quiz in E-Duke-8, the user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. @@ -193,7 +202,7 @@ The `startQuiz(:Ui)` method call from the `SingleTopicQuiz` object initializes a Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered()` method calls, the `goThroughQuizQuestions(:Ui, :QuizQuestionsManager)` will loop through the questions until the user answers all of them on the command line interface. -#### Implementation of QuizQuestionsManager +#### 2.3.4. Implementation of QuizQuestionsManager As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. @@ -208,11 +217,11 @@ To ensure that no two of the same question is selected, the selected randomQuest An ArrayList of `Question` objects stores all the selected questions meant for the quiz. -### Storage Component +### 2.4. Storage Component -#### Design of TopicsStorage +#### 2.4.1. Design of TopicsStorage -Data is loaded automatically from JSON files in the data folder. This is mainly facilitated through the `TopicsStorage` +Given data for the topics and questions is loaded automatically from JSON (JavaScript Object Notation) files in the data folder. This is mainly facilitated through the `TopicsStorage` class which handles accessing the file as well as converting from JSON into `Topic`, `Question` and `Option` objects. The class diagram below shows this relationship. ![TopicsStorage Class Diagram](./images/TopicsStorage.png) @@ -252,20 +261,64 @@ The format of the JSON file is important as it is loaded in a particular way. Th ] ``` -#### Implementation of TopicsStorage +#### 2.4.2. Implementation of TopicsStorage Given below is an example usage scenario of loading in two topics with two questions each. When the user launches the app, the main program will initialize a `TopicsStorage` object and call the `load` method which will return a `TopicList` object. The following sequence diagram shows how the load operation works: -![TopicsStorage load](./images/TopicsStorage_load.png) +![TopicsStorage::load Sequence Diagram](./images/TopicsStorage_load.png) As there is a high level of nesting in the JSON file, many methods are called in loops to parse each section and return them as objects which are then used to build the next object at a higher level. For example, a `Question` object requires an `OptionList` which is created with an `ArrayList

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 Date: Wed, 28 Oct 2020 01:33:45 +0800 Subject: [PATCH 213/447] Fix minor mistakes around the project --- docs/DeveloperGuide.md | 25 ++++++---- docs/diagrams/QuizQuestionsManager.drawio | 2 +- docs/images/QuizQuestionsManager.png | Bin 89871 -> 91693 bytes .../seedu/eduke8/common/EditableList.java | 4 +- .../java/seedu/eduke8/parser/MenuParser.java | 10 ++-- .../seedu/eduke8/question/QuestionList.java | 2 +- src/main/java/seedu/eduke8/stats/Stats.java | 2 +- .../eduke8/stats/TopicalStatsCalculator.java | 5 +- src/main/java/seedu/eduke8/ui/Ui.java | 44 ++++++++++++------ 9 files changed, 59 insertions(+), 35 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9917849b32..971fe0821b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -32,16 +32,25 @@ ### Software Overview -Our program, E-duke-8, comprises of a Logic component, UI component, Storage component, and Model component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. +E-Duke-8 (pronounced "Educate") helps CS2113/T students **learn and understand software engineering and OOP principles** through a gamified +platform and enhances their learning experience. -Purpose of the document: -E-duke-8 is an education companion, intended for students to enhance their learning experience. +On this desktop application, CS2113/T students can attempt bite-sized quizzes, through the **Command Line Interface (CLI)**, to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. -This guide will allow any interested contributors who wish to develop this learning companion further, to understand the inner workings of the program. This understanding will enable such contributors to add value to the current code, by improving its performance, level of interaction or capabilities. +E-Duke-8, comprises of a Logic component, UI component, Storage component, and Model component. Each component comprises of multiple classes that work in tandem, to fulfil the purpose of our program. + +The purpose of this developer guide is to allow any interested contributors, who wish to develop this learning companion further, understand the inner workings of the program. +This understanding will enable such contributors to add value to the current code, by improving its performance, level of interaction or capabilities. ### Setting up -Fork the repo, and clone the fork into your own PC. You are recommended to use IntelliJ to best edit the program. Do not forget to configure the JDK, and to import the project as a Gradle project, and lastly, remember to verify that the JUnit tests pass, to ensure the program is functional. +First, fork this repo, and clone the fork into your computer. + +You are recommended to use Intellij IDEA to edit the program. + +1. **Configure the JDK**: Ensure Intellij is configured to use JDK 11. +2. **Import the project as a Gradle project**: Choose the option to import the project as a Gradle project when prompted. +3. **Verify the setup**: Enter some commands to ensure E-Duke-8 functions as expected. Refer to our [User Guide](https://ay2021s1-cs2113t-f12-3.github.io/tp/UserGuide.html) for more information. ## Design & implementation @@ -191,13 +200,13 @@ An object of `SingleTopicQuiz` class represents an instance of the quiz in E-Duk The `startQuiz(:Ui)` method call from the `SingleTopicQuiz` object initializes an object of `QuizQuestionsManager` by passing into it `numberOfQuestions`, as well as an ArrayList of questions from the `Topic` object. The `QuizQuestionsManager` object will then randomly select `numberOfQuestions` questions from the topic the user has chosen, using its `setQuizQuestions(:int, :ArrayList)` method. -Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered()` method calls, the `goThroughQuizQuestions(:Ui, :QuizQuestionsManager)` will loop through the questions until the user answers all of them on the command line interface. +Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `areAllQuestionsAnswered()` method calls, the `goThroughQuizQuestions(:Ui, :QuizQuestionsManager)` will loop through the questions until the user has answered all of them on the command line interface. #### Implementation of QuizQuestionsManager -As mentioned in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. +As mentioned earlier in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. -The Sequence Diagram below shows how `QuizQuestionsManager` achieves this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: +The Sequence Diagram below shows how `QuizQuestionsManager` is implemented to achieve this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: ![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) diff --git a/docs/diagrams/QuizQuestionsManager.drawio b/docs/diagrams/QuizQuestionsManager.drawio index 96a2d84d8e..4f6ffafb00 100644 --- a/docs/diagrams/QuizQuestionsManager.drawio +++ b/docs/diagrams/QuizQuestionsManager.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/QuizQuestionsManager.png b/docs/images/QuizQuestionsManager.png index 195146f91981c5588a7bc85a220810138dd6ab79..c75634c1de07ae0520fd2d82783f5a08008242d9 100644 GIT binary patch delta 61162 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 X2|G>oZ@aDTe@zp3#{ZVUhn)hn z#;GE34%q8*B3klpxj%bXepXgL8LqfL3ouw;_=+E2ZnZd$TR@dc`nWos-duuNn_8|K5+-Hw5ag9qX*2?55|> zZ(OslKcydNbAN9PhD?Wzr*WoVK{~ga_n$Hgm>;lluzgkXZGD0R_2HG zv!6KsYL2YjtunSd-&}y{DLOOpo&5l1SMdL0>0^iOJsEfAn)j-fJ>;y%$xp8}hMn+A zeE%6Jy2?*WD>K~hta6=tee9BD$@zEgsofO;_&p76=nYD#?cl$%#Bo|=Xa{MHN}z8HQ z((?4m2=aBr>cO7J;A>Y*^kXZu?jCk8OVqRbg)@ z*h&|KQ~>e(zV$9)K!M>l#@Ivpl;zTb{cyiSnQ*e|{k@rWBmA4x%N&cj>MUN}rL41K zioY!jD*e>r!DmptDK_u+8;@)|X|4!YkYYHv8i1EyOXdL)u);4i`D9`hz{mr)O59F@ z)jh{Y9uIPx{_OLG@2?HlE=@8&cw%Wk%-Eaw;n*wK9rC0Vg%=y9p6W-OqlYaoZD|nH z&Br&M7_zS>v2RUuqsOl3y_V;AcE%muhsRT?pV#?nAiEOuHgeFGZ9%#cQd?b1X|*@h z^3d3f*-s5iFFkti$>sA2ZxsOB^8eoU=4X>5ljc2ihxskfeQC_3!NZmlTcB-2*@*i9)ZEo2z7M9p|z?rnbO;%42 zJSh74j*ok3n+FmqhV7e=Q~L}dsBRCx+$ARZy*3PU?Yc{vVr~rX&97XObcDNZ@uIs$p3B^ZYkjXG*2k7@yd#7G{#qm7QuDWeVwp9n_1N{ zGVE=5(3*ue>*!ALOH%nZVU(Tb_gd^{T3ZSE?1bCp{c(mbPu6!|I3BC;BdB&1)m`}J zZU6pYRpjOKt;0d~#anpE8Ie2bw!wSup*dSU01Kp^8p4V4_O;J?>jo(EONQ;H zt}{I5>%yt84Yi4TlhS^rn7C`Yu`m1&oDz>+SB-Bu~>E!S`*rUb?F(Xc(;Nd|PWq@piY26P5iLXK^JzPy2k&;9aEFYiw~V z315ycxp*Nsw78@pG40rbvWV788RgCnqNlF8lR`| zG*!h$m;6DYuPKLZ&XC(tv?7r{|K)VUhdNZQ4r&E5M@pD;YUjXkzk4>d z<3ErJ=c5LswS~D>p4@Z&{44|$6oX;_f$wwm{tjyBSF6ulIdIPH%Y!*5`tGU9E$Vp{ zy{D_!(36^KPyhH=>7V@HRRR3mQTa3A;8pIiZ_@0|i++EtcT&TjU%U5e7k)0U$JpYzZ~fBe zI14H_n`DnZfTDQmet+bx>XJblJH)=tS%2>!w62icJp2GX1UpY|I}YjlFdy_nt(%R? zw4ZHwcx3kd*}^NltnSe{fa5MaP69lu;#6!M$i3T_b%6rdWx%gD&Jy+o`QoC6$qPf<_asbvS$B8FxTcP! zd~@uu>11>En;Fx_#gzA$KKC@&lgFO?d=0z&LwCLT^egqF3spOp56^kgi@W{v-mVMc z6XjhKj%eqL9sw4;o(iF8<#v}Vp?bQic?Cm|JPmcflcWPK?=z`MCOs`g#BeY!38BDK$VL{i}}pi=1n651`2FD z3k{Q-J-Zs3oJO?D*6S#HpdWT6;}6OMwtlt#Cb`;~fdKlHSes_enFCpN&;DfljdN1*f^= zuWj#W81~#=SJl6^VYn(?y=&OM>|JvnKLh#kSeO2S#fj7(E7YKj)Nlhpe{MY#5S|CY zJlmU%(bk!!sN1kwXU?#7Vb4q#8;F74_@YT2|NL(9#o(TmdyH@8@%t&O+#3qQ+Czsv z8Su_UyUV>0ob5UK-x)7fk6UeNcz)Hpc*6QI#im)sd1GfDY#CE=es0=4#CL6b*!-)Q zZ=sq8Xt?#gSQa?YyY=+DGkXJ?#uT5Q9Ap#ztjta(6m{q?1>-(5vQn0BEX7pb*9`Af zPx^6fXX23{UuKWz8R)McP5Sko`?|y{H%-eOF!Rf}?z|V>N|iIC7_x2WAJ+EYH51W<nuN7z!EDuJx{1nzX+5=HMr@;Ku?un|vm{ zE=2i`op&^7L>0bh#PTt@6w4{!fq4h6?0Q$$!b!70v%&XkVkyh_gf1vvcJN@tfX|Dr zjrx3#x>}kl0dtpS0Q)C>p8YPc;t^lZQ*(56`52mUSbOfi()}!oK8!~0olefaY!Q0< z7ZUbaFvTOrJUPoBz24h!Wt}ISb%cI=20sd@N?cz@eA4<)ZLW0}CO1zV@4YoV{mimW zwzpjGXM%6)lY^S3-cFJRj493*%)HE7&wXmB3T{)=ih_h!;XwsF)L{PZ%rakN4L{xz zcQ#<`qnZ}%>A7h%Rl<{F+IjTBH-Cp`wBafvQ$feYi;Rs!Ph9F|IgsNZS@VX29DJx~ z4zgqwsA^5K^YZ4ny6)S-+nafZ>dlyM>unstARJzDve&^R6oJC~ypX>Nc%dK1bq-o@ zX-k<^0=mrJa<@-Gg%{N4Lg`}7A#5A#~jFF%=X|Jk$Tw_*h5*=D`DWN8&B&uAdxfNQm!|Dyy& z99{e^r3}&v8#z9-oVEMYsf}HN^KEF+1L^U<1sSIv15Q|7pWDAQR+5*YBiJOAJw@Mw`!@$=o>q{yrf$n@@rQ!P)kMzj zKKr&>$dEg`t(M@==b74)=#F8VEMTLbCfByd0!g9HUp3O>kN)E3U7L<`o$j?42p8{K zcYKPnHv=ukRx@$g+e@B(!rjLUFNahst@u0hza5-cc)28~&Hx(GN?dA}S{&0>_B!_d z`gr7J#>VyYP~3OrJA7HErcOTv#52I9I>!8$2$Qta{;912GiUBRZ(lb3LC>n2>ieHZ z7jN{h)n^ewd2oN+hQ8yY{*(vjY&7@V5I9hO6T2@u5_@If_xH8)LP1ky$jE&~?$`0} z!>VYz`z^2BH1pr>rn{}5F=gvRUvlHy&zSDKr_;CLunQ-)bPjt&9uEr9#)Zm;!y9uT zf>nlW@%s^=$M!pXnn&(O7mxl`TdzL9N*!HnEp}_)f&kWdx^zHKfQ$BzGGnV;^xx9V zyKg`OK>yC*^*tyz(D11lEl|<5`+f6*azO7}oIi2ujZ;5cZfu!WcPj_JvG?L|@2tLh z-Q)S*N1bsPR)BMK8q(SWtA3xZ9+T{uKDRyZNoZ?>ukrliU0e|pVCC@BKGUX!C0=_A zDhHJd%6{l=XI@P5+#E8mc3R(z(Mh{@4fa(Jv)+BlIZ>5{pI|(*!3N~xL-yxY;Xn=A zTn6;H`E^mtJnZ(W-@m^1;0x^7dESLpxiRUMm?x68Lt+Cu8lE`(g?$T-Ngnq8#Z3@& z-OhJb$6vZD(+UGY>AG`5!Qwt6P$@oX+*E>6k?s13%$8NT3mHHup`DS{BOg|n%{Mwf zyFaD&uiSOqXSUFH(c9ihp_Ph*c6DBmvrWVob)Eh;&?!gH^fG7+)ek7w5eORibcz}fTmhmtH_trvfF|MjTjC2n5L<_qlwypuhBE23I~ie=s} z1{~}8+$nb}pKf56ecLr}Ng`!k_thJTHjRJ%@V>@IQ&vOioW(fr9${Z%RccP!o2s&? zrz@AwNMGlJ{&b&Jx8U=GhPSD_h^Ov1QX5K2$F8<7cQytai#1OiovmxQC7?ih79#qZ zfL$Tco3D7HcE4HH9V&hQtj5^~m%VF0(02|4?PAN7jHdvq=^J#<3QwHB3AMR4HQhua zfP?t%vd$gfngLxmj-E&AS)*l5^d1)Be{rA}gPUkQgn3i>;Z~e1|M^@-^*-CSxBm2b z@hiu*fu4&qc`oxDKsN9GarjB~n`eOH%bbL-cdW&~s3d&HqsVqq=&~=mBO5@&$={q4 zB`z1^dD-cvk>g>GxK(#;pihP*?s-1hzxshZb5_rzi@z7v!m7ofeP!@uNkv$RONaPJ zR_gPxxgJ{%P56?K81-u6VEM>z8Mu}j!=UB^b6dAEKio-F2GNZdA6#DhbAL)o=*QXt z@3tRMJ;^G4`Cw$Cde|aGp=Zp9oz0sJHJ^e%yrw-_^cp&qPJ4}a?stgNewdtYTBJjh&vADGRKva#Y2UELtXpT z*D$ZvF-_I&^(Sn>32?yOIjd#s@Q9DNt+)#~p+sahVNe=sf5k$DHdQ+~&X4?-)J+IayJw&EJ`k7o^dTr^=AC``{@gFrNz@#I zDlzDaiQxbC^00ZkPcH9Mc71>J`vT_ujcL;s*KPxCsF!_gcP6hs=s%|OFIS)6ucpZ# zHNHLmJSW+`8m_xX4uI8Ft~#!-}%DNH)2?Xv z(JNa72W{o0Uz^GZUvu()F)ts+M(AUhMUwaWyV7WXI z{Es}Cq`2Ze>Aeorqh)6CKc|NleT zTR=s*er@A`C?Fw2s&u22MTew-G#0Ilq%=s!fHWvAC?z6dAuz;%gdhwh5(>i54U*D= zfd2QR=ltIH{eSQJ*80|Rx$vA}=AQexWAAHU*R_2oeb9XCYVpF$7|Tm_j(P=QJbP<# zEV@+R-!aWPXB#<5j!0~BiBY_Z@p@s1XX-#ZepetJ50{5I&y>vaiQV~hzN?$1-A$Q< znw$0pe$;EoX_oBbPRIunCF$`HPkJo%9hq2a&ehormvnES8Fk{1lUW>XaF)xZS0s51 z${zrcWva}~Q8zGnCjNx)$*rtM+@8q}E2itpR#uM*+ovlCDmN`3YWvkKoUJfUewrDjc4>TE4GTvA9j z;R=bHns8MpujC`v+Bx~}ZhmCPmOv3DId^lokyc-0{Vr5;rptcJIQL1uU!xWnIGW@X zU0ZC8Ql{}$l@e)s?D6QCoAS_*r_N=|uHUEehLb z54jX5oOu-<8L57OBuXk+17fpg5f|GQMy&55*^ml}H57+TFTJ_`Qg4t_Xe3_}r+g^b zT!eu*%q;M`|Ck5L+~ntg67@8+0Z>si~wme?~cg;Gvn)kd5*rlxU?j;lxT z7~M;Rz4O{Q^FRcmBLcT^tkYYbTmF_aT7I{s^))!3kOFmiu>iH-$non|ocy*?%b~rW zi$xiLZhxjYdr5HZ0~tqVS94nBHK1p{DP3;S604ma)Z+C}vJ>umxCR&pRIlD9l@Iji z!Ve2R!f#fF;64?a-xl7ui!RNvg zA`3yeAHyEmj6B55HPglP@vfv$@({SVOVJqJIPr1Wm;w7voSNklNd$LlXifrYO-=Ea z6MnZT?XOEzk&upWH3oHR1aomS88=}qmFFdJ_7RbhYb0nMeyycJp!%d;s;C^(( zk^qPh1LXfUzH$$_CE~AJW@vyYLJ%!YcT}^!i&BU!R}z4@s-;{bJCJtbSVefy<8lZG%K&{Y9WKx$`o_DIOOqxEnJ{Xn34P zT}VVsaS9OZ>MZ%K_dhXTi_!r$e?cPO<-+W}M6isz_{+!kL5TtRs}aKhSMfl zfucv@hg_qW<-6ozTMb7=VO6+laAHWumqCFq5p{7oK_yck&3kMzQ6$8^C;xF7lv;c|A*Pd8W@h*AIu8A3>F5?wRFbhr=cG zw*$^+R^EyzO$WZ4;~sWv20#u|=e^VtZ&~k^`@>=@F2_%t5aSGqpxXgt^^R!Gs`5rC z$9_E~0NBWmcILuzav@KC@6XL@-Tav};8J%$rF`EM=Xl~5I@_3MwbT23kKFEbG6VK7 z2R-~H$(eEU4t#;<5-#O372e-1Y`O|k+XjY6=y%$0{z8k^?YnzGc$N;-ovM2IQ#X4q z9?a`yobQxsG;?cWoLMwW_PYyPJRR1bPs878bPQo~Fiu45BFysoP~|!K>Bjt%`72-F zq`dwi~n4S}9CKuPzK zidgsb>Dza_$`paw-p4{Y5X~%Nf_I%Hd0<(Q?{3CC9PAi`NIp^rYnE6kQsRjO7-vdP z`CkoyF)TW@V(_|696jHNTRf$gS}jsQ!|Eu#Y|>_NR@P1YQ>Uhy_|hi}rdXoy?SB5{ z&Le|zAbUB2PE~iKa5ZE8mw=f%*8Fgui$mh;8S!N^YT44XCT48^W9HXmVf^Lge}#n)j%db53JksZj<;b2Oi0L%)q*MU%){HyMC=h9NY9>Q>rl5 z=_2m^Fq~BFPB%fAd|5p>Ic8J)r~$=U3a(hy3$)&}k7zMdE%ACq+{~coaD@yxA7d6n zIFpi_)woxZ%}g(=#&XeDK4VIzDAlrBqyD1*PTjIvRsa3CWL=rIVK{?k@$`D1ULG#M z*^xfVsCBMqI_0oDSRR*f$y6Wn=K5Q+I?Ac&aQ!EcOJ7;Z z(@g&K=^YV* zY1E_I#W4w-0+^@%w!n<)u1SVoO1u*SCJ{@6Nt{ zQ@Gw?Io_{VH#TzS9aTfw`H#{vmjy0grNLxpnN~P^rVd{?U2*8=(zM-D5YJo2K za{(JTZSTsxMB;VI^Ir7WN96UgF&IA7mE$P3OZZ&5tjfzt*P8-&n0tG5>?OXp=VNZ! z@aga;G*?Ct^`iK`kp!jX>tysL%uw0?ey?=vGDB>fA6AEpgz27f(xKcZQ4xtznR2T2 zQMWElCrk&?vUFt251r@A*}M^3k=J-Oc9=$qyRWOcs!oDTuEPJv3R|n#sq=yIYL4j_ zjF}+wYoy3K`^wIThf+V}U==^+Q`v~QeQH#1??FM(juQUkkX_x%0+~6hUO|8QFfhjl z^T#&fPE4G@pNcmaP1{lgo^*bOGg`{+<5a;w)8PjW-*eLOuTfL*VdgF)5q*8^A(Pg%Dm@!}90bUp4 z!lrgDS-lYQp?0ylVPR9;r#7eHlIP}P?{{)}rhzsw6L5_9{tUatJKE{PL>4)@nLWC) z9c7LKU-}Q(#rhR7SN`-6b_m%~n2h4dOrvhN15%H2Ioeh%(dYcqB?tdjtsbd&YWOd57E~y7_&?&7&`B4LCDq88Aic-WNbRB+ zeYzW90fUCYE84d<8=2WjYqC~=-%+~4NY+<4$W3Q$S-Vhd+4!mV)fI=foTNfTja&hg zZ~DQ(jCyhG{4q34o%UnGse`krYSBtlG8*`w;cdznCcNqE5;3%tCR77rzg0=6PPUyO z;zE_p-i)N5nqia6n>_V!%&|?4$lzX{-@2(-_Qzs&2@xEh^b_1;(?_MfPo*bDDUvCP z=bGB`zcc2)xw#ahk!<@kXkwgE_dav=q-Uxfubgb-cFT6~W!YukC`}JpRYt7ERKqqt zVvF#?m*WaPUo#nFZGAZyc$iINWgkQN8Fd^qG*5q-!1KRO?Rq$CzoCcn4mM+f#CV+9Pw(h@Km<;*?6y!>%oS*NfceQc(3 zxqP{t|GHe}y8oS62~_VoOPmJFv?MwG<$@CgN7e4Ca!Lx)&lgScelyC&Ji(J;+n~xA zQHav-P#HSlscJHoqE)%$}TEH7drwqY%-@b!h0Xa{tSY?61R||7;K9ryrZuceA7iDAhdIH4@ zN7N!?$f2iED$1oSr_fuJ_c&2P6i3xko;~;?0s6<6C^Zwj@-*3i^pebV`?Rdy&qCPb zo1kJY=o+aHL_hm=b#*@{lA7XSDABUnAIcwcy_;=Yxd6k;&I}eZipRufBxrBB(?nOK zb;&b*vWZfNyB3CpJw6@nNogB58SQB*%aU)dQO|rGpFa^zUCn>ppVRZ3H!DWZ(GVr{ z#LoeWatiKw07L0yFT2Je8w;-xr9J}x$DVuQlq9nl=gnJ3idG~w(qxr%I-xj%7 zcn%5mz~m&Vq(?Mgh3EcdI<+x0bKv~-rHS7G!HtC z4&D3ZWnLFOQ*UR*);r%Y0PLz+N*x>s+B`? zx>3!JqG40cFb%LVf*0e6HB0ID9#HZIqP@^*H~C@+HovcyD$ofY2`S@eZ2Bf*s!7ts ziG*FcNVcX2zV;9z%dc`+($>00>s9m9Z7!Aq>OdhPEqoL@X_byiV&J3aMK`ExJfQX zD|qTB2d*7`Ouxe5wygq_7-wgbw^VVn#JqtjD#PaYv-ORQK6MeHkGl+51G}|hGy3sH z{{C6bw{B$~cLa@TDe^7_|FD+FTn4TMUO)k=p@Zb@`J8c!j+Ld?>Bv=pw@SsAeTAGP zfWXk89nGRCD{!fmM1#{4;?^tbA4xnEAyOo}bc zAbW)l$tkFJSG?LYbjif0S;2c^CFEkiYe9nf#jLLrI+$jS53 zB0IGo=5+q&M6X$1q4w|T{91h8-&h#N5^F7nlVFAD)HTzGiNXpLE)tXr1*Kd_?9654 zaYImm5%cam1&b=lCjS4DQd|@62x5vxX2JnxVt;ponoe#_&_VV0(7$8?(U5}XEg)8Y z0=-HH5`p`G;Qa!k0X+21YuTiy*8fLD!$_%Z{0Z?pDJSH7ie1dBY9UlBD96-7c>p_9 z;j@OG8-zzJ_2bL68|Ky~Wp*ed_Q7+v>WKufC*z=^k`7{Vss078L8py9(PG2wguj%f zQbSnfm82!*aC^ zug^dVdem~&phfeND?*|%KXdIM3WMUgLsf2Xz+8Bk zWuE7FJgfAVoP7`id|9*8l70TYxYYRvNEjR}R)Lh;`}1fJ_XI4b`MDQ(iLlfv%5(8gsE-k_gm8nnVHMR z{pQ|TJS1GAYwu_TB8?pz!X94 z9y}o&X+v@%bwXcTVU_Fq1WLH7^o5>>&{cL%fJet~3DwiLi+BMqnQJwc7c&VPEpZke< zn2}d&=#?UFXUV^3u-CGo$$5;lCR=i_`sL6&yU*O}t{}PTSEICZU@`Xe)u653B}xQc=zFl z^t1ku+RqLaPa3E?KI_W}cT#_(Fz<2l6xu*9g@Q-T@#^B*el9J!-zcds2F;hk$ZjZ! z5}E+{8EG0*I3kbjRK~~HC6`P$75Jzme$!~Uj}*X8-*+;wi8Vq6`)J;w)RROx#5xR3 z38A~0emIL!Kl{Z`LDtc>O}F@qzmKf}RA2IqYa{@OQ|h1*1xL{otAWv3SD zLYI?EDoyPd2Q)@MdwXzR{E|^9kBc)l=m>qvVM?Y)?>y%EO605FMkjfyCO!UQkxbuA z@Bi&-q|AiLOJ*`TQpn=pnpTG?AnI=CK^cNNn>5lxZXZ zY&k!d=@IvCHr?S4hR4bg6cT$iZ2igNkB@5#K9(oOBuRX0yF>`O(^aPX>oaht``a?v z&hgWq1kKk;iGv6ZGXN%CZEG2SC2yJI2zNJVcg_~?2_)-NjFtAku*`LgH<#ycx)SEW z8_>1(7Wyr0JFXq#y zRYnue9NU_F2^}zD(Ws8&YdFzi1=e?E)gOubW*Ei=taWG>0HiK8?10}`%S1+l` z-g=rI^u4fLYL&uIUoSH4aj36(L=Y2hDA+n$CH7{!aXb4*P0K#q(9b|TG|_V$({I_2 zpF9z|$Mk!!uE$FXq}cu2J0DA}2*s8*3%#$(d9_TY=e^pt`YrsOMzpS1h-2wKULKoNkYd?~kC+$0KTGRB8x8C#>`h^f-{XmWTn+{&zHKxX>LsV0;;ynD zIq^|hww%no?szxJ4Svjyq@5{cW^%LD#g>b*i5Zs=?zO0x#%(jqqUVpE7kZLlKk>xD z3(Ypb)lU>-B|tMM&?iKRjr-LtwmQrmGadeFC|%FjqWsR+kI}22eR=QtKLhI%daO@2 zzC%~I%dJ+=k>C}Y|RnYd(u8#fetGMIf)EEUz zcC@b}ax=Zc4;BI+XZ$AEr=uT~91;2Up6aBj^&UG&>Mw3%<3H1zx;Ey^7lvA_%$&IK ztnWwl)N*PQ7Ca5`*8@pYUjDYf=y*9S|Ef7fiAO>d<3tq3TCZxz zrEUZv9~~K@Y@KsnJi3-uYaPODCX$MhSYpy;g&a^z7$uQuR7AXGO3%zr= z%3Ni0X7T=GtQMw2Cy@>bnxxVz6}JyxfxK75?2^BlLP1&Lut1@79AMoi7DLoeN6&x> zTEXDZHG%_rt%4~?>So=`Zb)kmnc^>3<^T)i+#C+0(BYs{(0j_EI5g;N!&1ATb)MVJ zBju4`LRktJyJUvcB2UOFV9Jf9laJxxk>*V3%WD|rxY~y+0MiDf3NW&uH3=JNU_iS6#h(ZFZ)H6T*Dy?ZcE!7y!;9S z)c%|m>-N;I+lJ-x*mOxF?uphc?@?pfv1O4unvT?;#rawSLKH)KVq6aKhhDWfJTcOo z4%yf=5pwmJd3Ym}nVaxYxuIaBk+CYaQSxEYiD;6IoD?4NP2sCsApdbsY ztJ#yUT3$JM1#Ac!QH6gVoOxJo3QbML)W7`E%+RFhy=U=c`VSY~=IFn>vO&NN>WPX-n^}TTZ2;mL} zeuI^ZHvv%(?v_)VG9}i-sp5!Sg`sb~d{WYoDo(kG|8=uJRUAlHp^W|G1jLwJ%VnAW zBjvK5)5r;c^j7eR&cL%th}n%@8mHo9JNLIM>Yhi5V0OA^D@73*sUc8HMaq5O^uGhb zMjxyH687t&Pq^PFO||g*9feF0MBlYy2n|$yVa-aS7VU z(EWA{_j=sG0{J%mxFusZ_%;O8eC+7yN##IQ;_irD{#_l5`vT@x0st zyfFs_DSW>ZpQ3CT;)z;3*BqOfZbZV2dpep&XM=$M*(?vot_I&vldrn&h6dN#OUHcq zF$iQLO7=&wG=HH@12e4)I~9-%9cf@DVIuL^-&wPa zA@_`%F4ZXgq|dmQiFeCN;VcpeX@)w!6RT-z=Gl;62Ya%Mx4Xc3RJjNA3Qi$_iL-jVJ2X={bpfcTzQk>_x|_W z;&Ye{u#{^a2Jo=lUG&{_(%>9O+};GnNq%!z;FmX~={wy%cX5B>n8TCyyu&kH+49xb zJAu%3MV13cKNRqzdTi!>;EAyt1=*y--$X6q1tXb4 zBrT#!bja?E16IErc1NVe)18V9Bh!m|g-AYseYN-ulw7INA>&e;$BIT>4 z=d7qVf@Iv+cUoDz1LDXE1A=yEFlqfC-_4|&-gyG4cM`V**$>7HMG}b+Ilb-DVy2)B zJ(>Bu{8%G771e^trc_;@H=RBghT*BM?I2HTWExgV zJyK+`tDH~;gq}>V1y^)${8*rz$10l0vKcD77ogaA-e*<>ylU)uFmjDA)hn2-!zmta zvvByb^>g2{H1&N)lrdp^bfOAGyZNzyYz_euDB%aJ!~*OrI@=Ey@i={c?B#2`A5`4w zirmg_lg7yH%$3lusiwPHe1aG7nbEYzx5i!=vL#U(a5-p!i!Q2|R^8%WJ=1fbm<^T2 zO4PFqVGt=Y8Op*)q`?stTUV}b(AS}St2%leG_10L&6I>Z3!`4P3xyvn{{dHYUzP`I z_^Y+X5-vR{503oS>kt$QvM^^x7q%p&SQb4`J=+HsDxqmBRobh) z**?oosb@tjye)6X8y77)(HL&S8)Pv{M)lIK_+`#c>Dmh2Tj|0K#U6iupQh$R4H&IH z2)k|5OLbj~gg4cahsx}y$hC)V3$Z&z(}vdOQTuQa z9jo*);)>(K)qZShKg{NZS>bnFmQ}0yXhagRJ^w58u_}F3cWThL@ zGHOP-q2`-Jds#ItjH7+bkF^?Pg|28xJ>kx@u?sMoc5Htou2h^-OxB@v+ek%!q7IO- z$DkY{aQ+A#N;fzk`1=lOQNqTOMOePU(qFAy;H%I^>3+6W6wasibNuZ%>1NIrGF9A} z@D{=wGq%gZPSo_tIt$DgoCQmlZqe8!w(^{oOrJ-kMmLAQjlDdV0#%12LM6v|^|?rl zbr3YE@zDsA>~>zmb`9ynQ^`b`bBxN&S1%F1*Qz=`T5OC_AL`*HG2q|Ttk@wRiaQhd zWlkS|iLY;XVadsf0F>OvWFN$xDhsd8=9=N*1Vb(vWqthGHF`OHF4OtC|dU7VhhJ z$A28&<(-zi>d_!>5&e3<=HqrdX~h}GC|kBK!pot@!`LR~)ilJE!w||WEUF*J!*(w} zDi$G8V|`{;!HlW4R4a(mZ3_~yo=}VOdCsLg<9%%L#RsZMQ@MjLOs4pl*0h^MC;BIA zAL5O6*aMb5$BkHp-Ai6@?qVF=v(c-%+pO+OATHDXvN}L5IXrGv zhY!7x^q~H{y)8b4tgwIZWKp?{kJRn1+uFQmH1SV4rZH$A5i8!Qmlm?m1=3`!^dbZ1 zHIIL!UO&?wMwNW>fQdEmL)aREz-UB7M3c%$)y}9L2t^YzkBr!ocYpb{Y5F2jH zuQpvb=ALGa{414=vfw^VL*5!{dXD8?qBN*b3_ot2y7*Xb2;I}+G1*eT@}$ zBgQ=TnUt4C?)K=+f;qXzuT<^!!RmRw^d-;Mbu&8MAofpZvW@m>CcRJAEo!uS{@R^m z@sYjhJHsfjKVZ=kJ7#6>Y?5tMQC^#5EggpuxSkX{zm_N8{jFj-`fC?&3_)%V!y`1PU@o&pp?D z`&z}dKBsqYd3thL#AvLRzHM3GT5jU)Jf_zjc;dw;?wg@Y_||zPl&O_aK0SZ@7#+FX z{lmf|^#{?+PYJJegEkzCO62s$-7qO>;oIMfEYyX>MtK8FgGyER=SivpV?DgI-lejRn>hfUQ+i^aU~SHE;|=?NlHxiQl6`b!Fxn71L+EQSTi zcL_tMzDZ8gKG+`H9{-wr+Psdb*M7^isHe0xPE)mDC7CJX+*7>PVYWdVTQTa!`VRkK zs@&}=5lON8@&+o#K_`@x!}PD<*XQ2dC;f7~AJ^X%*V!$WOglpSGmKDRG*b3t|TKA%q;@KtfxCEvg&?PsgC z=`JyH$G4tf^|1^VuiwNoO*w<7S40*V^dly^kDNj4;*=7|sx0*mN0u%yq7#{RU-$Luqj1+_P9a`?_TbeXNn1DK>&x&U*21EkDzoeUU_GKl_!em!}c*WN;CO+4OTL zQoZU2*hw_AsD;0G^MSO+)cgCU-t0x~D(Dw-?rm2xkT6*w4CFg{;x~61m@|JPHf~k? z?q+jsXh%wlUdVW7qQD49kO3LDjO;YLbC$}llIsKvU-VV8&s?Vln zNzJG7Y#N2{y>o=}^)BLv4aQW{Y4sT{@9mwDC>(TOgY zfcu%uXTXZJ&KI1Us4R|T1+2H}@;g=>n&SDC*yL+C2Xg5ShoV{=3(SG%TpdPo)F+f% z;{InJ8VV~_D6I0V7C$r z9b$a`K93vsjVft0&A@15c!`{oj(Diaaj>jy6NK&2mlf@5*&^PUlDi$BCHH6lc+}td z(MECEp?j=*vcK2jF&79oS)O8kB5Yxh-XD(x@9j&l1kaOn-2uABBx>ABnqAUDjpPA1 z_LL;v-7whJ3tFeQjh}|3cywT@>>F84GvUXH&!-S!3jHMnhw1l>ovQkF-Da;{8|u`b z`mDz^a>5YMD&2_wInTKQVC) zJV5_Cf7+-)4q{I`p2tlcBOLl)%oU`0g(zHmh=y!V;fJ&bkhk+>?T+f7Z1E(%kLSOR z^tG|p>55BMJPY`Qfp#_a>kL24Ud=WlV_390hA=jLW#>Pik6ZlsIFn7376XN0k`u8y ze8hBTj%0iu1HqiC5`_Fbf0}&IE3`i|BlTJtwnr?Pfh9BJ?kQ~LB8XPGH)+qCKn%Z3 zl~W1_F=F~ZiSmI*kVPSXt}JNw{F74_WQ56l6fhouUe2tLxdR5h9wl@afqATRn;FNw zlnm)s$R?H(<94HsVOR3y&*v|HAe;$xir#ru#>~Rt1)IlnjR!5Dp3r(Hc}&< zQSt$^L7eFiFCWerp(61a2ywEH$tKLh^(>C`ivixL-4R^3r`f*_RA2Hm-*bB*m2G?! zDj$sKbO(_95o-HX81rL)7^R7%>4;^-e5*0n-;YC4Y_5z9vHE>`It$95EZ^+`+gQS3 z+&fLMO-bxvHjar6SWc=L{FgZ(2e4EpPUaXOd(KtF$Am3t#`%cjIQ5pGnE44Yfgb-5 zssn~yJX^5a=tQ%%NpujS(5sl?g8P5^MdU;Qmbm{pKB$)!4DxmFWxyUy_3+F zwCBk%;Y1WE!9>c@NX)L@nhjNf+1Q)=xxTZHZ7+A9_X_#r2>&Z%pxRq3k{lin4Q!d& zZb3)7zta~)t|54~rpP@2NW2%oipWyKE$CCqn^bUZOu|5EY3h@*p5qju1Y<=fNCL}< z+bG(J_pcZJefU%kzi(U~pk3)3Jma}=wS~T2xasj@zJA6!XnG-8_w#EJjMI+K6hG;r zs?F(3pLB5|Dk+-q_7#}rQF9FNs!960UZ+Wy^wCi_w1dys{{#%$ z31sCLAG0`DKAmPD)V`+65$L;!r6>JV={EHVeA^t@uSlXO^hUtLwF9X69SEbu=NG3S zrrf(+?}>t^Ww#W^6QyaT;=#S)g##Dh)GYZJt$ojw_F#1psY!yWj)wwrWNw^uh7-UB zh_mG-!wW4gEUKl#4~4nJFJ+i?sh*a|SsRLzcyEkFMv78LqJN~fu z#jmHoNjua3WGcXQWw87Wy(SMPu->K88BBD6W)j%3__nsXIIV^^nA!sJ6%U|kNC(VR z18^9*j-L#F>GS2e$SO&!fOLUv?dv)<=Y#yH89U_cL;f5ikx4oJ;#NawG$X&?YU{bY zM=CEq!G21PHLCSuMy!YJ<2V`4@>#wdEIs;xhpRAXqR?;~0~`<5&y}EMQYW8EPvlWQ zSreur&wa#G>MZwR&RNd5wW2}{&_CiTO{%@#^4vGT`A9*r5WzJOE(yDV$foB_*Rjf4 zqHc$b+7*$aGv=smh7>>fn@Lv@UE>-Intv=icdv;UmY!Xo% z8%7qly-qY!U{PDuCu(_Zb}Z@A<^ygV>Z&pS-;F#$aVvM@`|n@hXTzB-R+lK1V84dlU^C4VJZi z_CKSIDAX8HlxzHL1^NdC2KqpudL5ICQ=lyX}d0$app+ZLg}o8;(a zqU2NBE8}NZA#B#%2Zh?Vf%dJ%{tV}lD#jF&j1fT+flSwX^cV?E)R169$0w7;mgy!FDw*5Www;Vg6%O^3*?iYb|@!GN0Hgw7$eo!IZIHFlQIugXV#1_iz+|- z?2N`0{GCMhOZZ9OoaF2C+sgRK=R_8Cz>_A|OfA06rc15MfL;4;9Yfez^5OeCu}Tz( zSQazuKem^>`?J4}-CpMnjew|K|G*MIXl9&9runZXUd12rMc1C|zq7`>sMS~y%?Lgv zZyqd0>wp!hT+rm%LIH`TbR$Td#TaTV=tzCh$x%jGZpQvehzNqR*0~`;^co}RtAN!9 zo)K^>(5e!hkdK#Lk@5hrI9+lS9EDT3mnW>E-<;C{U_)!T(AsTL4~-N6icSg6IcAXw<#? z2`-x7n#8e|E1BaSg6Pl_YyWg#qC*8UGqDFF4RnmJU_1buj@WMI-d|j6;gD2k_qB?S zDi-1$*9Ds30ljSa3CWVflnokS7vc;zosnnD@H$~JYW>lS#@ zp!j65PolyDw?Y)AXycNEDWA;aG&q3o@M+{K22Q-YHZ}MDo_IN=cuN0nB{FG}?Y9-9 z=Um?J+Ss`W^UKkG0D2x9k)szcl(yQ`3XT-gA6C+S?)gnT-N@f0g{Mscs}!j1Ax6ll z+6k0^BcXJn)8y|mJ%`~WBKCuePR7D$Kk|0n!FKHQgN~emf|6T^Dzkd*pzs5-!{B{Y z3!=1qNZjmP9MY$9Uve{1@g~xjP*lH7e9#`vEg|}D(hO{%SxvFek;kk^LO~wI%tRr9 zh)ws&xMDHSd~VZU2uZshR!^p|O6&nvjD~oo;ZY1cE)gjbi6^A)5N=6SnA`CWtYL8A!z7xszkslbS!88XDDHpVT1XFG(;J%vk*e^z!d zcTR0_2@})JSb^&ev7zS}&tvH$uN?^&t%tU1^ZY!O}zfCFdlq}1nI59YI%)2SR8)ve`Dpo{gCu1P>XSA^3f`P zXL6GEPZ>MxG}82MdVNhR%x$+7iP5pWi=YQ)!0OCq zdwH7CXGj>Ns*}t^Ax|fsPmB9+9CJ40A0p&ZPXlzBkn(3l*E)2ExK6?;pYHvBBTMPU z`X1&eQm&0$gRU)>>f5=QFbVDUH@0K`OoAc`Y|ztANV(>mxENFe{a^eYC18i-A*r1p z`Zj$*b2!wn_0bXZ%tNDq0pU1IZ~o8W-U5enHc98q$8x^zg7I&dFF@187pGC<=|+Xo zZ@>81-oyZRmm6oajdu7axS&&PUF~~o%I4xY96Et_Yg?=01`Go#%#)SY8E=4ki$fT{ z$cuBJnDV)@5Y=qoC1_Yh|JKmEl1>;qrkU=c5XBI1pWC;sf*r>rpnMn5(LWJf49J8Jw+VB_?`QV zLg0fEex}JSFc`k@-KRzNa@Tz}-jGO+Ai_ZU9azT?!<6(K`8qmvnUS7xN>oiYh(88E zK6*qG_}^PMe?$MA+Eavk$hrPp07uby|5}2gFbor0j9KIUn?2>C>Z=Gy6E3in{hF?D z_nW>ztRwjD#`Lk_BwOGx@PP_k_%VTecorRNPR;q(GU2nD$cU=-kcD}TlamAoB>_(d zG{_hJ5P**koTj?Rzm0_+5VPPH`69}Rd*jm8CfCVJ`qqzm6KEjnzAJ?(Vfg#`tn~Hi zgnvX>{b0KObNG!Al|Uyp(W4ivky%ghC|xO`!-AC84Rlvnt<85`LW2 zoL!Yp>Ju@m?EYcR8nn3N)U4kH9P19my(V8b>kioB)9p;Ety5mem8Z~d(h`Df1$Pf~ z$u{lJVu~Rh_pAjib_a9^&5AzB?|SG6)fuqRKbD1k6rJ^2%02f7xT=5$j0>ktY`~dJ zsSMZ2mtgRByi`p%_ex>S`p0xvMx|J0&!Bc8K%k_SDLkmVxQG#VgsG6f=l40%@!I2v zptKJ0Gp=E^JZ8m*30ipdLL1bQ4HgX>8aYVsv;#HAM;bI)C)gZTZ~D#iwY0y!ndby% zy&9=^shIZpxsql6!+WOtNH6=B$Y&I4O;69S?blzUEy5R7MJD7KT=DFt$A0ph>^8wcqDTAI_^#;Tc?$?)^{9SCbbgM_>9h`-XOfih)0pC0#2xGq#PI`qKg(lVS%IJrF;+U;F!ux6fdE$ zmUOb=PLRWYa7noj9Sky1K1j(DIi}@Ef<_M+#~yLf=mudar}92KsRA$%WHs@~3gXN> z?$C<0!IZ|R8=_dIqqjZ^vWjDqYmbO)Aj+oaQEw;N5{nd|MQ%I0BlX`06Gs7EWaAzr zKg$RG0E8>>aXcA#`^yPY)K_c>;#hK_h?h-u;3Q-p+iX)9O-=W86CZIxQ?3QX((Pvf zR)JyZn~*3?1R2QEpknic)LAiZs=Zpi3KR@+pd4?jAbd99{BJZy3O z!hU%6zBI6bR7j^wmo;CWp(K3Ix3va>kH;Co)PK_uI|gDD77F_kj}&#Y3%3m zo#nsBfOVr-ui{27C{c8IEo%Esvb41{)8q>Hc35W^OH$auX~cRA8K5G`bN*n>XG@R2 z^?inOU5h#=aJIrihJ1v!Z#l-iVMi8*@!A7`MVHH5MM5l zSiXVyGo;_5!4&?J)Pyu|!eQ8t!Y@m8|Gr2W>AT3)(R``pk4HX>$G6pUbaqnkng|}7 z!++<@m$Mk8AEnUM>iq3ys#43wBha}le%P9_pt}8ftWb_9@1nLX}(EJM@vGd>qtM}^CDhpb`r)#&qR@@ z3@2An?Y0R7rOM~4mBDh0&A(5ZLK6LNr|uURle21$uceHSQ{-KS`1e|-@LxENGoEylNmf&?5Z2){&yD{4f0g@3&=4Fp zMgvFhe~WFBiIgLtC*y+8?J0KcC5AM!@99H%O$B#tCH6=V06q!3GL7<9tyuqnyu_6FXo zB}WZaQKt(z1__!n1KjFhTi9$l?&JfF5HiSXCDd{xGAbRut{RB3_d+5Ri< zOri*5zYoTaUEKL_Y=JqCj-3mwr8vnzP8CJO?WH(A&-8cP@rs{U@XISE+R|&^nhHK* z9Uw0HpLuTi`9Ky+r&acN)SeOY1!G+}>qNCGVZQ_e;31|F(VX>hvRI(e9_j%lEX{ zP;R|Cp>1mx{ZO4rVStb;e zrpa{lbepAMb7h6sA&fc+U?Ix}jk_~UXWgaq*>%DG!?{l7g zo^#&w{LXuR@BVA=y{voP_xJvOui zO}69n8W6OagQ3Yb0!~nS5Zsgq#GP;g1i6djK|l|vm1}sK93ckJLio3jWl-od^sn;* z5WKrChL;!q9t#+4N*wpvL|S*zoY3K9bK4Wn?XNDGAZiwebq^$+lRV@X*KeocJ|dlb zwVavJt&4Q^!~JX>k;P7OWpnJz{Dvj;%e}4BBPV+%Ov>Y5E==mAC#eh$ zO%@*FQ87N}JFj}J_S2%-OiJ7?h2sb$4co<(>n9GM&uNL_ReL1!0h>L@v9sra^Mx?V zgQqdb^wuV!p=Fp)32+xR47npuR5_{qY8U&N`x0w=xv)m=#y?uf2A6*qANa17Su7fe zA3T|sctw_07~=zMnqZGUFI)13FyrsbH^0~jXE)`}-R`DO&G|Vm&{3GbkmmjE#Vt4A zv5RR9oAIZ7)@SSGT&}N;7FPuqdCzQ3XKbu=tNcSO!oVSmEw)#4}qiFc|c*?ou{i^2_6LdKjmkn<^3tp93E z{8k0--dZ~IyRl#WlC_^LxMl_1(5s3a+v~Ku&Q#yKD2_|U?LS1VZ~{n5OefNN~f)&{FJYp!X8-%mI0%o_eWWG%rFv<(CW6XxBC-b?t zZnTWAHOpw?tM_~jZE#4=E)zUXS~9SG+V@DIzrw(9=NnR)q?DYUiH_w_u72xcc0&O(uG7~mUp2>t z6-R{&ExJ;ETp~>=vM0m;?|Px< z3LnIG73+~o^F>Gt9?^OZ_Sz}5uw`iI_6Q@a)60oJwUwutHOYpqd{^90f+K5^Bj%*X z?;$p%ud=m6&#z5+zs{9mJky-)Q$Q_!Jp0%BJZi?@>CKzG%~eLM9v~y&cc*S>Lyd3o?h}iK<&)y7G;F-5xWcwcv8S`%M%%z?60Q zqpd1-bJ3X!?|t?fsXMiFaLP&*JO>TNY;?xz*w&9d;Qy9(ZQPg2T<5uQsc_LizXJ5} zCiXDwXFVVQ(L+5&o!lW9?RowzLd-C{b5V*rPm;>HB()&JjMu)ZMlBw_;Az^q| zdExY4f~ej@brI6w5Iy`T4bDG@kq>9jZIKd$#ssv2SIRX^8HpAWGT<-1d3R;tey_bcm~$B6TLy2$1?_Yn8Wr#PX3q;KYXxHztIlP2n&j zC=`Y`jdzKhF~ur_KD*NKbX$7=jZQ>my{UhFmjKCDb4MGiJ#I%$ss;bK5V#bRaC0CH zJ>b8AI#_AitR{ExVqCz=-D|MV7bf%GfLJ3Rpc`o@jmN8A(ErMY5e;T#B`$DmhqWVP zq{dFeleLr%?%8@WCA!T$%H6FWG$$ZTe+PZo1)p2MUl(7ktJ9ajxSU`(UcS}8A&fPf z{RFSVlSZbx1GYL+%q-P>9GqT20ESX@{bH%_%FX2lqbfEuq{?^bDwugM7!wSbUNBrY zo-SjlMu#=wLwCI0-B>SNI4pG~je10YbXZ0|Tb7nUQCqK3V?ujfkgN&qdJ;-I7=YP{qs!is!8G)%C%?_5 zQGGpEh7)cnd$yE=P^uHP%&G4ebUKXAEFsjTflmL)&h2=*jT7jtZ$*eCMu;O}yw)Kz zF0)}lH?U3=D`ol%A^~A%j;t;-Z=D3z0QHmf07fO{lxvgSgJUB25V&1e*dslAR3$^U zu4BcY?v{OsOBI6DT_VsJE4m;0{J+%cKfto+YKHbOYfjv#-!Tra%^M55S-Hw{2V9!Z zi>`a(I^dICKlJg;3hswA2)BxqXJNDrM#v`1_niLa;Sso-&k#eOQC##y?}m?&ZnIq( z!CMfYniG&;{bBDs{vs2^rUiqT>On?Tr9=f-*6!JQ9|nUs*fX#0)i`Z!zXMw8<$J`q zdi0OX8da}e(sVdjmSW&WhsM6|V4BD9RS(fz@AZ6Mx|eL~Cr8)RL4I`1 ztHAY$OH=+g{WOMahzCw(|4Z*9G6JNt+k$QQX#%U@8;g6SqBQfl9(l#b+YXGt4 z)^y+wia5&}@TL`>o!Ku;nssaS8(6Q!6N<+hCoW|75)O(=Y8;!q#Y((h&kIH?@GV@A zIbN-D>w4-ejMsXzm@Dn-nf=^By)7Ss39c7Zh{THr^**FM>m{iDx)(!F=sLvv0Bdx_ zo5CFE3P-*zO63vy^~^niPt3!*QcDf3>JoY278W@UG{NS5dV&U{eCXjQ{np)R2L&i} z9|5UkB>+($0`T41Oa>+d6NqVvrxG$!JP!+K@z$VU5x@5aVTRCw8_bdWH5bXPlfv%{X4jxz|)vZ4VFY@&46@cZ?^d^k* z>EziMbVJe!#2^2|`m)}jH_%@%&hwM-{kDxaU?=_WjJ{L1(sqIlYe^6pafoASAY|=V zaR^l}gY!6A$J4T9>G?w6oKfuE?Z4WVCV=DQK7;OV=+ETFG%A7F;FG3-d!|)?p}Vym zI4t152BLPwFFc}2r1Z&UXu(ra;c^?cdMsP#18Cf^q6ds0cFV(#>SVYM%gI4QtBFj| zq_+wG^(5^gU~?DV1j!TIqXj!)$=ij%R@i*a-?z200(3@s7Q3L+g#|0B&jd6Z2I!pn z(A@gdz9X9v#EO}L7!kxp?|mX5D%Jb;J#EyOx@yAV!YD}I{^M{7Ucp^*H?Q!N8Sx{s zX*u@hK`|fMb>}49}~pnexZWxWvb5dl|-=@`4ydLXMg5EK<8y zHvy|lu7XJq10c48?D<-!4HiK?k)pQxRPA@$=9JM_+*_tWItdo^>FMOEEf1OQO#iDP z#4$DdXz{N>!|kW$RcFcAFp6RNvY!NaWqXWvN`U%J_{N7j`$N$;`XwTO&U})03 z1BSi#+c#i0AUY8g?@w=&{ZStcNoS_k5t&4ae-vBy9k7F_VUj8++WD99a%B91w|)UL zRoARw*8Br(r~9)(4*I`)0@qUkHwT&D3cGhXuh%&TJNu2B9mkOxb_kFfKGnE0JkzDY zBs)#aqG`N(4g*42?R07+bWvU!);w`;zUG0O^okgC!?SpE?VzVv&i-j{)OO<(FR#NC;_zoY|>_0PeUghkHw=NHpK~_MUEFyFC1{iH=t2H-NB*DXySp>Lu@R%89VbV&mM94{FLS=n3CfdFeTx~ z{xJILXBiKhVSON@{ya=pkq@u4(}itk$7Q-7qJu-~a7F|9tOT~M9LYo5KsXuW7Uz?s z>gT=uL$R9kuU&@xN3%>rcZ8loAy}OcfgpfK(P=+;YH`$4^R-&TA>-MWapaF9#}sHY zOt$$1@6a?iN{h@a;y-_sgYN1d9-by}3JuMM>f5(YpR^`@kymUq%$Zlr{%i}{84MuY zD1kpXOhz)KT`rtKHw@dUuL0^f*f50O_Iqq?m^k%MS+3oFwfg2O-;A750{{iZ^ZH-S zvWvE(J9{_m?1OqK^jo{*5?{K}=zdjSrTs@;59mEQc4TDX=)YUNoZD#>B~QBQmE>wp zNZL&_C%$O}{sub$xedR_xScy;>lYIP8bbGq8@Jvd_I8eErg%0b$q(#BX7`RqGWM4V z@nOng-=>>~|K|=3T{*OM;0^>vf`6GT7T_#~8P_qwdkCZjM2DH?sQH%9elvsm1!u$| zKYNM(J$dobK?(T(8=?VWlWNx9e{8wmG3hC#C*HpMk_%3tT>I2E@H{lIRy$}?CAW+u z>Jt=bC-t*C6^J6FZWppQEDL%}+atLQw;T>?D%I(#7tE^nkevIY!?>?7jes#bl|Un) z&`TLQf}l6njR6-Ss-N=SJxT>sTNb@j4_ax*Ks%uIY*$zH!V*k3cn1iIX<44p z_&RjFDwktRgyI$v#_rT*4c^sr!$6o`L|KGkl%i0%K8O8cN@#R9( zBIDZ9bc<{O^u*hlkvHp+^^?nYESG;%*GON4FBG%LFrP?|NB@mUOdpNwPQ|`?dGUqz z16JLSubwRf8e;{>TSj_j$}$W^IVymVc1!5LItn|fT`+6|{u)e2EGiL?6 zbjY%ED-xz0I?2+*e^(Ozx{O$V3q1$L0^d5xtHpU*X`KyTDV%O}4HM45u)!#geIG@G z19gTlV{O{4s~IE(XpTWeum&oUzi${8?~=Y z5F)!ve;wVk<#@dH(v3KcCiOqo>8mj7?@Df)B3IArR%?ooLWs4(4C+^wVS|LKX&a*! z9~|;2^>Q|9C$eGW3A9(`@XF77=(lSCc_3&&KM(H71JIh+!3q?x6k!K}dis4(-;5!4x;P6m%Cwji^ zPQIa^2xi2-1016U=5XDnAB7tKJAm)A>Gzf_x{%b{M8d0!te0Re{5z=ackHY0dKycCkbX=J=!`-=`8dx zt8|Z$^n}ulZ|aM`KPuS4r5q<5x9HWK>Is0#Ra_g-c25>~Gk?QVLt+C!e4V<4gf3P5 zRH?bnXLvk46w-nojfaPSqh*NPhd$lo=Ym^Lmq|w(hXn#8Gsf)B6)WpbSWLuR@EP3w z6&m>WZ2|fTTjsLWhpwA)8eantVxyyP!-In;cA8;X+~%|MI#Hh<0&5tKC-cO$GJKOC zm&GCP0KSTq7`e3yteLw4p+*=2wU0;&`GaaQI4nvvqL$bF@=Vc=@%O;dd}p~{YYETJ zwcR@up`m9(gYv^OrMuw!=}z?PV(#l%t`l>ps|FFA65n>_VX_++=f>;~Ob>5v(eLP= zF~Jew)JfU4^^+R^25}Fx8(BI&*p;S+sD4aVl+sI6RXGOD$^!uZO2`qXp-fUkU2mc0 zi@1*nsv2)AR-Q#1OM10M-1Du{Js>4G51UGJTTBnS3S&Ba{bm-UW7$!97R}!q3;({IP+!z}2mV#D|35eFHps9u#iZhuaA5 zuwp|^oi81n$L)WeZq{o^EV#MN?#?RqB8C4vNZ5+om>Jh0Eq5oK<^b|&z~wFXvlDJs z@|(-St&4q$fqDQOBTKdVnamgPHdJa)TceNB4T-2{%y{{geS{!@(?C8~d4ud`x!rVYW4DS37;_z4wSS;Cfiq@nwbzLY9+nD6d(h<_dS zxzs@r&BsrtH^}z8LM}KVL53StYjt(LUFZ=XjD$U@euDlXS$Ma@WeCc)HkuHGF3DF~ zT{z*wim(?dhax=S&tzz)kVs|*m`{dD)=rsa1M?e36I&X5J1Ps-BGI@Gb{j<0XQW3; znIIwrL;?8|QV7sPPvuLELoO8sWdwsH#~xSWb{tds4$7bE!JT6GUfo-7XqZ?JFuNY z|HMsf>lSpDPa_68^NE>qj};-4xPW_Ye!+rF@^S2%8;+r$fHwC5j6l`MT*2f`i+%9U zGBCCk!88K#GH5WLZUgURmuk9*NSs?-dQlCc3Uv#;FOru_rIk-so0YjQ@fKWj$r!l|u`*s5Zv^xKUF>pm3dQ_T|?F55gAk zg;l+v>M$HXm-G#AAH#KfR`0iB%;PAE1-!Y80_a&f%9}Q+DG0BM3CRE-+zz5Skja0 z7Pl>hJ6500U5#O^f0(t}Tv)#oG4}zqYT{Un1`EUYJbY1(W7nY&A_D4sJhS<@89{0D zo$&Iwe2$%sfbb&6b4UV?E)DFBAQq$`IC?LPe`gdWl(>UZZGKYeVOsXQ)AGbFJ+hAG z>iC&&I+-67@VEU!j8wl9D8T3oh6qbhwt*P7_~cW>H7T45ukueZ%M~3@XieC6dtrHY z$O`D;ckJ(2=d#VRJyEUUUTgcvV}JIE#iX%e?|N*yWJ3sxKmBui+NEk(5Zb=0=( zajt;F&Bpge$Z6*Il$(e`-m%x$tTPG{jR~i!`5$DOjLx7XDyA{CE+!?{j3u&p0FB5l z?3k2$GT|DdbFpp4XTvA<{s+axFj*u^&w)D*8VCFP0NX$IB-mu*l|yM)4FqxhFLGt5 z56*O0aXHrtEK(4nwcz&nhBRyHcC}ym0c*Tq1+GJ!{CsPx)3XVn_wzPd>xI8zVvf#L ziLAYO1PRkdJ6uyobCQRPjiH+E8=d{^IfRAbLaoHshmQzH2<7^+ME`_gfq}`w47OI% zIMHFNv}oZoS!v}cELsbo?#mJJ^s0W*t|P>kbo%{i(*2*C$6| zjykVHtPnvQZ%}O0rdik>))`%(tD5p&UEi=~^a2Iz?_!^g+ze_9Ypc zwY)OgZ9*~_H_TCy!sVHlcNo`ni(|*NvQ_rKANu5QCfoMaTtn6G*Oj#K8#&)Lji?+$ z{Pch#D zJ>P6dMJWvl|64>OFZf0%*M_z>^*leTZPP|M{$wr9(NRWlH7ajU39@o{gPVHHg4vFy zRo7y`-7I>#D8Qodf?F6v9i_S)IQ_aE=r1N=uCN&u1`IO8=Seh6)t`|}B@A60fTTID z%hG7k=}i=vRhdKZw+4(isJimMmQx{ybFjnITY}A9gb&+Q$x0As?`HkBS>GC~_Apd~jXl z_VIc=T)2T`TxX~Bmaso4}5iY5Ul!ckuyoVf3&3ahqb>A+EH`+ zx1Iac0As&Gp7!B1=%+%O_YMSvYCsp~9Y8eQQ$HZtvij4k3r;l65hv>q|G-sH1k?at zu@Q%&)8!XP({2kRl3(ozFbb?7lA_jwv%>=`u8Fso<)U!87 zi*0#!Vf3DGfiKd8MTDJ%KId9gCNZ8MBs=|f(SpWDLRuI%T{;vUvN2ZJ={FBFCGPK) ztiW?ASVtZDstz}h1wkUnjV~d4U0fCo)LK%G$c@{>jGUV|?O9kgyRzD&pf&=d_m`bI*m#;aKp1jt7!zaWIYBKAo5aj(*y3zgzr^nZnPi3C>rZ>&!A zkL6{DMfIovqW<)()Sz3R28+rAg6Yal@cEIq?op4n^mJt#9AzhJxrjB8y)l#3c3v6p zyi7dJ+hQVpnyMB{=WfxZ_EBlTXc#~MKr)?uXNm@}5{$002tn@rHC+2qf?7)>+4S{` zmS~;KmCxtmXzOwB8?+acr2;DM&fXShH+8p=!}vg5EF`^cAwDDSfa&X-cnt&ZOfLa< zP@1w@7;E1p!y9qUa&b)Vtq3m8%`m=`oIy|Q*dR5KSKU>f+PKVAU$p62o!`{`)(|2~ zM|AjFCL!94G*%p9$2&NzWPA(0%HVpFs=J*z`b4@mYHWTN$wil(HSo#l6sbMYx~fCj z*G(|va_O_%)x9{C#JCJsUiM4BJVj=A%r;QKiebhTgYR1!9u?=x{?e7e`IBHw=+lZ| z$8#R%=Ps^m!+t?HjM?rIC#~#N z5p1Ihj8G1vI5FN-p??J#g;|u66^hgcex^T~NRDeFE0{$jiQ*#M7o%#g-wTT>EMGMt z9m+B;66vsY7REJBJnYfYENLJsh}nY7#^dM3B-3$DTU_$2L^5H)@c`EBJJQvJWR&e8 zPCmdEijd|zQ?NVHCDvRO@#}1GDsk@TK|`IoDRPr$_I~-m zm%W6X2b7LR1u@-AjM>QEY{Vn8`%|6XAzD(wHDs-FL!awpSGoC|J3q;-)X;9ck&q*? z(BC`-m}Cds#Uis2cF7dUj(T?Nsg18$9JXhQ?7#O~ZTfqv64uOs`LY7me#5m;nK&`5 zLiDTF`cf98KaCWJ+`h${$qycGS5UYvZAc8F zVS0#$PX}{~f*0Knew%|GSV-{kRv^H4mlZx`{Ef>9KEFQdL#T?A6D zz%Q`m7kO!y0R#FH4aeA>zm^~TvJeC!!pB|q{jDw*_>d-6sg52V>=1nXQk$pxq9FXN z#Naa2GQK>5Af-E$V+TAALWe%>zW=SK4bT+digOGYD_}C)%d+Tx)>D8aDkPp8IsiBG zJFP77rRF|0_+fN4;0BSuFUMc2afKdkn~CAS%H+`$G>{(F1Iu(&5|E7rG=TE(on@wD zJs<*s&!_(?@ZrNk2oRD1H-`$8y*XI2(Lk%PvnhIvJw$g}8B%zwS7^ zqyTu@knR8B-J=hSpzr>F`DsVmg{ELGsTE928lVuZIV)l2YA}j1fJc0XYSe}t52t5(d`aha?Q9)=FItl#A^;xlML9{56$lzlwJeUIg{l&2<`uE_;j) zdEWDeX7J%?FR65h6WiXCEy`REHjdf*uF3F80z=i_kpHn-odSEZU1yaKo`byEMY+#C z_*|wEVnPgwyhKAyZT0-@@m03<)yMoDxY?%s1QvbMUaB@SsjYVs+=C?;leO@KI@H}p zssOpfG>ii;+qU2;@Y|mu6e_mQ}+Lr4nTb9<)>CV%95gLg%ag4o&LpmEP zJ9cgI2gM{%Ey&{Xxg>`!Ht5LfJ@8?PgfyhpgtFKUwIVF@&e+lL)8$Ozb@AQpOGA%C zdCCIg_V%v!nVcpu-bk}jI6wK@>nPD_%My=|h7bt!{6qr*B`|oQg3QJ!p${lm;UX?B zKU$6!MG`hHAMWayo)h_MxZ0yfu5*986X~?l z%NURgm6z3tXIvEMNKiNBZJ5_7O}cW)jP3rR7Lr~;Nt11n5L1P-)`?a%hjV5`mc_!o zd*g}4{h%o=Ay*?ig_pz4Djg^&xriCpidvr^7a1b9If#EybPn1(+Slo>qIn`eAjzpYV#s7@jo2)8$U17r{x5^Q+vH=5y_pPky`blTOM zc2GC7$r)r}*XuMbcCURlEr(G+_oGA(cX!>*`dGu%c*DJbc=4mQJJ(QYu>9r`$=4ml zRo^>!4jco0rl?{PUNal-mK>D@7?f7~F3?=DcgX&scqyXR>Jcbm1vN?^*k`6%V~?lI z*6eTGZ-%@qj*_#~?i0sGggH`GTlTP?N(FztfC-?&shDJN6~jqHJgJt@Sn8ejSN!VH z@AuYr>Q_h2Xi_PYl9V9UHed0 zqEz^7Zt%Xoi_dsYi7bEieM_~KrLIOLY)`fx(!;a8D3&0>cHhO}XcPHISI^6^1s9Te zN;2U`MRAt}l-y|I+c#jc(Y>6<#k1yyWYdq0@pT@B5M(b`#&~tz>Kc|K&ITnKG7auH z(aQtX??PA_L1Bp8F;&gK|F(KRdbpz>GNXmfNXbAr*^%-JD~2oMfPboTSa^?S z%)Hsg5=l}2kf&8t>}5LsQ!Be;zqic9+G06&+}pAFX>W{#4>p0j?&n(6<9TJqgBz2D z5tYW+WKkSoUA@MWyn&y4Xe9W}Tre3A8M0_V%XZPwt z4Vz}w_rf-LV&!h4*X_@0$UN(dC!eo3UQP}xc6eTwu{XPW=6!Yd^T;p>x!j~mrvrH@ zN`0vm@+*h-rT025L-NGcu6muHYda2DkmIdbBaGEZfX+=C@Z|M3i!-+O1%TtbFj*g4cS=>X zQkvSO*Vt-2Q*#?I!t4_&S^l9NP=t%2^mZnwtzHHBp@7xUN*_% z@SVHYveOpC%#gc7E%_c-2_a_4q3Mod zw12>Q2~X|&Ug47A9vg9y0am>7jJ61V_B&&GFl=*aJL-fWAW zt=zrarMiEm*`wg2e_)K_L*RQBeq^wGxu2sin2XgRP zxyv&%jItinVCswV0bJ)z>iBP3-2rcA;MFlBk@;Iyd^5;iitj|kLg2g)1NiIHD}%q& zC!sjru|HleMD$6&?e^HpPD`nA+O-7M%)@XK88xA^sIhVqf=KoJKS!#_zaFaoUx-w% zupxgUlK&K#|KE$tw~5|>$QUL)hUD9KBDvB|UrQhL)ClGNJarw`I+Fo1k3EdLZBC@? zLM9+dd-DjI^Sd*gdIKX~rM|-P9)KP|AS`~{A}j{71609;`NvF!gO2Wne(LYK@#2iA z7=kA#aDE^&AJ>xxigV^(cqx^G1jQ{zHr@e25e^PKkOO06ZOMc@X(C^gl9U1i z!zrM+7CXSzzpM?idsTNmIc`8@@)SYcTyp}7Fg4JsUARygD|)v1L}m*Ble_>u#%~-0 z&fEoj+h3dtC?qk-*?hcqbpL}-fJ)g6r9^Qlh5(y*5znw*35R zRS0$SFWU3hwqJvvnfHr%^+S72qj6E2lW%U+o?6LhFHW`EaR4kOterPgRD4KQ?;aey z`0lYr=)NKMKdY8!x;(J4`bzTFtx=T)T8=2>B3!ON!80!(Mmc^mV3S|^DE;uNw}>)fu1Yr0*es){EkYAwf65v56=buR%fd( z0KwQQ`E73x9t0tXLRLsuWI^IYzA7NkLb?$gqX?1JXFH@?t#$Yr0Xk_UBA zTLIJ1QoV=L{MlwDl51VI;k8dj<^+xp6gt&8|B1IL&Rg&IyDYBDgH(shj-nJ$F~e*I zsP6LK!zXZ~Xy>B(3Ev05EvTVN@=-F6t0F%@C#3e(BN9WGcb_#Mum6ytizE~@wLUmq zOnjbQiXWPjowa!Os?wO86jnGp#`&}MeN`dMsy|y-XM3|UhaFkVEyAVG?l)o|S=YAZ<%a&a5bF~SIoE2R$m^NI(atQl8}9my(NWOjeP? zN6h&voFCy8A1M^5p5xK+gs#V49v$-H%1xYQ!_=LeDrYZ&j)=3^Zm5uaEWV_0u+MuW z7xdw70VJy(*`!w7#vEjPrG8Q;b38CmX=VB`fwFvDeSfTg$e0n!3kN2WvVO>lVPqKh z4`k#D5Oz-dtu=Q&FB=_H|U>iFczgrL&x~``FF-Sdzfysc}5Nf&6 zZn>+B6YVNcxk<1=J=C)^>DSnd3>xf;d`+Ij9Zzb_k4l=jELMUP164VdAWwTm;LL^s zmWsyE^zG|2_{Wc8;#{Fqi(t`6J{?B!Y9PN%eR9)=AR!hx`eG#UwUUiW;<5Rulb4F$X$7V}60ICGlRy%Ox$0UzO%iZeVnDVHB znH+n433zczIN4VG?ibsX#P*h?k*t(X^0^8Tq{Ft=_lR?0Q*5}-L%$;~S$Yol!sOjm zbwxj!xLOtfSpCJ{(`^Jg6vPU|pD`N7Rd-8%hI9s(Nwmsy zu_K9)Myl=^>F-bINRqOv>F8SJ7`>H4C{8Vz>mb(wOL$w$5{ejf#Es`Kd}%0H)ywsh z3hyAtV{$E?6^g`D9pM>Yv2py45%WaW>yeb4sCL8{nJ~QEJ`mgsN9`JGtH^P-Ld9O! ziy}6{yEi_;SgeJr$j>_a;_gLwh>~QD*Va*fS;Yxa$wWaF*QA-OX}C70r=&+_TOFyBb-(J>HeD9S;#+)w$h}pt6u_QuqTU-a>Yi`d zi5GWUHrl)JYEl-NT$a5hrX_i+S30#VCyZNRdzHA)L#3s6>{Cc(`YA3}4u3k0gSb#$ zE_SrO&mkTN60(w+28$qx@j)lNdbw6gfeFW^NTIYU1Jzjx(DdynrSosi3a+QsyN>3p zRe-#X-0W(3^;)@N(R-m>-S?N7q5f?U4@7{55at^GR(1#u%}SNfbOh+3BO6apnvlD6 z6E@F=Gq&_?Z5VJxfwk~$6D2J$2Yv!>AGgHkd6WhT(Q01xruXuMty)jP9uXI4I-`R! z(nYu-yM4xAZ>ythjl2KG*05tg_Z9F*9Rv&6#J)YEC(=Jd92>{XTL-u|Yw0~GA87yf z-mKUWWs|G>xle=U~$RUP=(YbBOmTP-uX36g+iJ1{_~EII!ZBvPz?d`yh$hvGf5 z)gkv{llPdX^yShU{6OlG6}PN9CJr<>08|zVG&=c(YEf;2 zXBbTfExJ32aAsP7sxf}#!oJ`)=TKHX-dOr~x=LX_+ER$7)2r*Fxb_P93SSYH1~{gt zuvzGU+kC+pIeikfw;$OsM~ma0Fj=_rb{@iv7N~1lzpOC_$DeRWWnIJ(U|q zEH%>)18!bW?PoX-gangCRET!~CNT{FvCawsCfxua{(`dQHWA%L;+ceR&|`o%N2A-d z9@$E0wOzXHK-9}_p>zIPDpRPH_R@K)q<=SO%yRI{()FK>(@;DGLf1?X>ik;BrQLUx zsH10*q?MZx$Jty)S$oCyj*xmhH?V|8(d!I;g(go{s@A3&SL1q-L5SEYKC&zK56VDI z|MC0Z%owP3nUm$YVeSlYLtRbny#-7Gkra zfO8NE>LQBdSHWrABAUVpy2r@6fqf8gb*FMN*9zB_8wJG~?3Dpzlc$E8j*Rhs80kg;cRoPU#H ziC>s4xKp9zI;PfnJUxMayBl>pgQW8da$s~E!PQ?azlRywY3SeM`4bJ`Y8$A?JEidBN$Il zBp5H`jl)>8sF^!bzWit+8^vb1ViW6r=37p1X=0ds;E--fZBb^5ahiQj-loFad}y=F zhmMPetGLE6W2&^4KPbO0gnV`u8?A!kk;sM0kqZ+KMiJ_mQT4vfvAoS!MAdFvTqUJw z;iKVwM;7bdmQiAi2hF4$Sq#G)yf!p`yR>UJ!MKYnp)8B)>EW0rA#q4l_2&0eL*;|@ z_mOi?WCU{`B}BPlpLo4fn0C5o&^(^FIvv!#MDihuG5dGj_6z-zM{rmf&>hV|YU>fv z3S^bJTLTfcjPJjG(2F`%R&-eucHU7ftR>$$J#dyI0dH8@-uF;GBy_FrO4B26j;3v1 zR~RU2ivModr>(WP0vIJbkLR~Q@uzs~d2=q?-d_dsv!=(eH6#V%M4i5taFu`5(|*c_ zj-NUP%ksGjuSvzlzcjio;c0}G+=>pF$M=`?BJO7K*FQh2h>c1OQNeOm+k6P|uLwCT z$-STk8?u4463Vff%BYP6*w^yu8M1h^i^8Xf3)pkslqcEgQX2{wvjj% z(uD!pyHK|@#p5bj&nMc8N3O4h;A7$lWBpzNhK>(UeFm)@Q?LA$J!+nW-{M--fukE2 zCNXBYIARqNcd{p`=NKkAfv_}=WJbuo9qTtF^@axNEQNW9k6!CV!@BO|_($1va^4*0eCxdN#V( zYnYrPOKj@+PEvezgo|#Np{R@+XMd**~Dj?KvZj6+3V*#WHm zJ6%rI#^qW>;7i^M1Fu{K{rl2$$-K4p#{siuGe0EQDVC6}*{#6++5T0wkR^$-&%$!d zenaeHrbCABy|5{`PNDqk)LcT82bjXR>7x_!$}U}%$nd?rZ@m?Za_rj|;<*>cZz-Fj zg`K&^#!++ZNbN?Rz2LPi#t!(?eoPzfmj1yfVYG1Gq7Aicl?s?6w(ERC$*sINZZof} zNqvVC=jg=?fA+r^?;JHfNVHVU8utw`s*Yt{9QWMVXNUJL4k|AA>Ee~Wq0gz~Gknp4 zN-E5aJM%L~!r23wSwGuP{%}nBGBrhh^rBL`*dRsRPx+*^e(S8lYo^8O2nZAV@oPj6cy z-v;pZy=d$B8gB~34g=8U!QEVX1yyGVjAnFICPWmvRP+}PoqJH$s&Mo32e0xy33kD; zsQyEwddZTSG=%rSyUC*HDK6#bl4Fb#I4w*vn&V$TwSz!o##Tdie z_|Cb&7s7Y2&Y=Z#GE^&ML|~ErdkQo1zrbPs*Pr&E9~Su+o;KtR*`nHC1x*XK5Lxqb z(%UsOi9p+O{sd#KfZ>96c6LoKl%owl&ArfU8fNdqS@cgt8WkuwSh%-cvxk^$0QoiC z_*ZL>-{{k{C>}^eQj}btSW!`g|4$xG4MaHaCb|l_T*M1%A`?63BIiezm*jA zl{;C$@X6QUti44|YUzEbF>msFsbL`9(#i{Ock@ODaFuB2wh2Pr+erJ` zNDA~*hoaenzp;n`4sGk{vK>2lTf3_f6<9;F0w5k;P4l9)7Wj#Fg`mw$kSh+Yha+kgB5Nn1Q~9ErCnE8xs;(3sr9{NG6NT&A<}Cg z$C)T|prB`M;!XzR)geK%CY}}Xs!62olagMdtT0;H9soqA!T2&TOD1|sq=sxv@N?%k zM*92C&h@TWLfZc>e2>`e?&45(1qE^Jbk~@N)~2ySrO8)ZdkO|bxfM5Y*q^`JgA3y{v&_4uwJMt1 z9U?c8a zA>}1PEpVCdsGJg}ecO%()Y-o!Dsu@Vhrp zPQFA!*(ms}?NPUAMtZzT`}5#HyyZ{3C6A7i$Go~s@w<83`-`~*gGwdi$@i%dBi$EH+~WalTY(5@5}%4<>D zvrwgCeT~Kb0THr`dbd7#`SMF&K7;CtL{0cb*3v*|eLKFzbFtatY=uP{&j4lm+@3hc zecG1$#&p%JKYfkS%cj5E&#L3c-eo;prp2XPi+i6Y3I&9Q2!8xiVG^|W-+evK%eveW zbw{c#8hP!F89w4&9yjZ|JP=xg&b&8B@&T?^-8KK2w>t{OpT&u;saB3eG&&C{Jp%Ov zvbKJc!uQX`_&THY{F(?#shYCUZIk^K2TFEu5yRv+e?-K+Ui<8^mg-rzhvtX1TE~^n z33oZyDcF>|Qr~ibSiwIkf=DA3=%bhtB1<)un#l@Svqw59=3l0v4TLGJKUK*Bn^gsb ztJt_X)5IGUA{|Ru+u86Z2H#`*Q%f(QEkvei7GHnlEKCMxRcmJyu(`uA^6-SbzhGhv z_yl)z+AlE{#(iEjPirDoM0%b7A;a#v`O^ZAORkk}4oLVwMtj*E%UA$xieyx#Bh`y5{w>JE>MF_ND#C%IcBnJ<3&T z`1g-sGLAzDuF7=Pl)+SMoVY2ix84p;hawi;V^pJWbq#mL9Ao$6` z9<_jT&yjN}#V)a+@rR0=#jl&TfiMJ~g-*zBXfvtyJgJU_b>2j(gWSFEi+>K`(sfdf z6e(0V{zI|dHd*3AnU}i{HEZv#ia>QgfM&+I%#J|?mu)MYlJdKBJ38udN5tn~AQ~SAIqJ7MUzb}-+BOT?Q#I(&p>k!SlyJ1iWm3WA zwabgeg~~3E!ivR-{j^;Qb{Ez*RbH=lX}Vif$8*ZhURTyi?k!Wbh!rQPUVM4W_u$R* zD>u*YpWLHfRdKm$V7<9Q$*PNAl(0UB!(fE;SPn z7V-$q(ETHe7D9p8Qu-iO^#oo znO=82H2Uul$G-!P$p7z%C(t>uYG)JQE91ed-f})Ia`D_}mT^Oxk*NfBogwmjaJM y`h;{GOj`a!zu@1#^}l)j|L*caf4l!c>JCk>ef86C{Law8KQIDXGxx-m+y4(N?)(n` diff --git a/src/main/java/seedu/eduke8/common/EditableList.java b/src/main/java/seedu/eduke8/common/EditableList.java index 54252574e4..a2ce527b9a 100644 --- a/src/main/java/seedu/eduke8/common/EditableList.java +++ b/src/main/java/seedu/eduke8/common/EditableList.java @@ -2,7 +2,7 @@ public interface EditableList { - public void add(Displayable displayable); + void add(Displayable displayable); - public Displayable delete(int index); + Displayable delete(int index); } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 07396cb6ca..f45e18b563 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -28,7 +28,7 @@ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); private static final String TOPICS_INDICATOR = "t/"; - private static final String QN_INDICATOR = "n/"; + private static final String NUMBER_OF_QUESTIONS_INDICATOR = "n/"; private static final String BOOKMARK_LIST = "listing"; private static final String COMMAND_ABOUT = "about"; private static final String COMMAND_HELP = "help"; @@ -77,11 +77,13 @@ public Command parseCommand(DisplayableList topicList, String userInput) { int numOfQuestions = 0; String topicName = ""; try { - if (commandArr[2].contains(QN_INDICATOR)) { - numOfQuestions = Integer.parseInt(commandArr[2].substring(commandArr[2].indexOf(QN_INDICATOR) + 2)); + if (commandArr[2].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { + numOfQuestions = Integer.parseInt( + commandArr[2].substring(commandArr[2].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + 2)); topicName = commandArr[1].substring(commandArr[1].indexOf(TOPICS_INDICATOR) + 2); } else if (commandArr[2].contains(TOPICS_INDICATOR)) { - numOfQuestions = Integer.parseInt(commandArr[1].substring(commandArr[1].indexOf(QN_INDICATOR) + 2)); + numOfQuestions = Integer.parseInt( + commandArr[1].substring(commandArr[1].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + 2)); topicName = commandArr[2].substring(commandArr[2].indexOf(TOPICS_INDICATOR) + 2); } } catch (NumberFormatException | IndexOutOfBoundsException e) { diff --git a/src/main/java/seedu/eduke8/question/QuestionList.java b/src/main/java/seedu/eduke8/question/QuestionList.java index f3c49abc8d..e7a28590e1 100644 --- a/src/main/java/seedu/eduke8/question/QuestionList.java +++ b/src/main/java/seedu/eduke8/question/QuestionList.java @@ -10,7 +10,7 @@ public class QuestionList implements DisplayableList { - private ArrayList questions; // list of questions for a particular topic + private ArrayList questions; // List of questions for a particular topic public QuestionList(ArrayList questions) { // The question list for topics must contain some questions about the topic diff --git a/src/main/java/seedu/eduke8/stats/Stats.java b/src/main/java/seedu/eduke8/stats/Stats.java index 73905f3123..592fb54c2d 100644 --- a/src/main/java/seedu/eduke8/stats/Stats.java +++ b/src/main/java/seedu/eduke8/stats/Stats.java @@ -12,7 +12,7 @@ public class Stats { private UserStatsCalculator userStatsCalculator; - protected ArrayList topics; + private ArrayList topics; public Stats(TopicList topicList) { topics = topicList.getInnerList(); diff --git a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java index 184501eff6..c911727d96 100644 --- a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java @@ -47,8 +47,7 @@ public int calculateTopicalQuestionsCorrectCount() { } - - // check each qn and calculate number of hints used + // Checks each question and calculate number of hints used public int calculateTopicalHintUsage() { ArrayList attemptedQuestions = getTopicalAttemptedQuestions(); int hintUsageCount = 0; @@ -60,8 +59,6 @@ public int calculateTopicalHintUsage() { return hintUsageCount; } - - // The 2 methods below maybe could just extend from StatsCalulator public int calculateTopicalPointsEarned() { ArrayList attemptedQuestions = getTopicalAttemptedQuestions(); int pointsEarned = 0; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 34e9485ffb..45bf05b966 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -65,7 +65,7 @@ public class Ui { private static final String MESSAGE_EXPLANATION = "Explanation:"; private static final String MESSAGE_PRINT_NOTE_LIST_NONE = "There are no notes for this topic!"; private static final String MESSAGE_PRINT_NOTE_LIST = "These are the notes for this topic: "; - private static final String MESSAGE_QUIZ_TOPIC_CHOSEN = "The chosen topics is: "; + private static final String MESSAGE_QUIZ_TOPIC_CHOSEN = "The chosen topic is: "; private static final String MESSAGE_QUIZ_QUESTION_CHOSEN = "You have chosen to complete "; private static final String MESSAGE_QUIZ_QUESTION_CHOSEN_SECOND = " question"; private static final String MESSAGE_BOOKMARK_INDICATOR = "Bookmarked this question!"; @@ -76,6 +76,21 @@ public class Ui { private static final String DOT = "."; private static final String DOT_SPACE = ". "; private static final String DOT_PLURAL = "s."; + private static final String MESSAGE_SHOW_POINTS = "You have earned "; + private static final String MESSAGE_SHOW_POINTS_SECOND = " points out of a total of "; + private static final String MESSAGE_SHOW_POINTS_THIRD = " points available!"; + private static final String MESSAGE_USER_PROGRESS = "Therefore, your E-Duke-8 progress is "; + private static final String MESSAGE_PRAISE = "Good job! Keep it up!"; + private static final String MESSAGE_MOTIVATE = "Let's do some quizzes!"; + private static final String TOPICS_PROGRESSION_SECTION_HEADER = "Topics' Progression"; + private static final String OUT_OF_SYMBOL = "/"; + private static final String MESSAGE_QUESTIONS_DONE = " questions done"; + private static final String MESSAGE_CORRECT_QUESTIONS_ANSWERED = " questions correctly answered"; + private static final String MESSAGE_HINT_USED_SINGULAR = " hint used"; + private static final String MESSAGE_HINT_USED_PLURAL = " hints used"; + private static final String MESSAGE_POINTS_EARNED_OUT_OF = " points earned / "; + private static final String PERCENTAGE_SIGN = "%"; + private static final String MESSAGE_AVAILABLE_WORD = " available "; public String getInputFromUser() { @@ -213,21 +228,21 @@ public void printPointSystemRules() { } public void showPointsEarned(int pointsEarned, int pointsAvailable) { - System.out.println("You have earned " + pointsEarned + " points out of a total of " - + pointsAvailable + " points available!"); + System.out.println(MESSAGE_SHOW_POINTS + pointsEarned + MESSAGE_SHOW_POINTS_SECOND + + pointsAvailable + MESSAGE_SHOW_POINTS_THIRD); } public void showTotalProgression(int progressionLevelPercentage, boolean progressOverHalf) { - System.out.print("Therefore, your E-Duke-8 progress is " + progressionLevelPercentage + "%. "); + System.out.print(MESSAGE_USER_PROGRESS + progressionLevelPercentage + PERCENTAGE_SIGN + DOT_SPACE); if (progressOverHalf) { - System.out.println("Good job! Keep it up!" + System.lineSeparator()); + System.out.println(MESSAGE_PRAISE + System.lineSeparator()); } else { - System.out.println("Let's do some quizzes!" + System.lineSeparator()); + System.out.println(MESSAGE_MOTIVATE + System.lineSeparator()); } } public void printTopicProgressionHeader() { - System.out.println("Topics' Progression"); + System.out.println(TOPICS_PROGRESSION_SECTION_HEADER); System.out.println(HORIZONTAL_LINE); } @@ -236,23 +251,24 @@ public void printTopicDescriptionForStats(Displayable topic) { } public void showTopicalQuestionsCompletionLevel(int questionsAttempted, int questionsTotal) { - System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAttempted + "/" + questionsTotal - + " questions done"); + System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAttempted + + OUT_OF_SYMBOL + questionsTotal + MESSAGE_QUESTIONS_DONE); } public void showTopicAccuracyLevel(int questionsAnsweredCorrectly, int questionsAttempted) { - System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAnsweredCorrectly + "/" - + questionsAttempted + " questions correctly answered"); + System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAnsweredCorrectly + OUT_OF_SYMBOL + + questionsAttempted + MESSAGE_CORRECT_QUESTIONS_ANSWERED); } public void showTopicalHintUsage(int hintUsage) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + hintUsage - + (hintUsage <= 1 ? " hint used" : " hints used")); + + (hintUsage <= 1 ? MESSAGE_HINT_USED_SINGULAR : MESSAGE_HINT_USED_PLURAL)); } public void showTopicalPoints(int pointsEarned, int pointsAvailable, int progressionPercentage) { - System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + pointsEarned + " points earned / " - + pointsAvailable + " available [" + progressionPercentage + "%]"); + System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + pointsEarned + MESSAGE_POINTS_EARNED_OUT_OF + + pointsAvailable + MESSAGE_AVAILABLE_WORD + OPEN_SQUARE_BRACKET + + progressionPercentage + PERCENTAGE_SIGN + CLOSE_SQUARE_BRACKET); } public void printBookmarkedIndicator() { From 59fda2ee424a62743ab0cdadd7d013d9995f59f4 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 03:52:28 +0800 Subject: [PATCH 214/447] Add Stats Class Diagram --- docs/DeveloperGuide.md | 23 ++++++++++++++++-- docs/diagrams/Stats.drawio | 1 + docs/diagrams/Stats_showPointsEarned.drawio | 1 + docs/images/Stats.png | Bin 0 -> 75943 bytes src/main/java/seedu/eduke8/stats/Stats.java | 15 ++++++------ .../seedu/eduke8/stats/StatsCalculator.java | 7 +++--- .../eduke8/stats/TopicalStatsCalculator.java | 2 +- .../eduke8/stats/UserStatsCalculator.java | 11 ++++----- src/main/java/seedu/eduke8/ui/Ui.java | 12 ++++----- 9 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 docs/diagrams/Stats.drawio create mode 100644 docs/diagrams/Stats_showPointsEarned.drawio create mode 100644 docs/images/Stats.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 783fa34e42..f6694fa491 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -16,6 +16,7 @@ - [2.3.2. Implementation of MenuParser](#232-implementation-of-menuparser) - [2.3.3. Design of QuizQuestionsManager](#233-design-of-quizquestionsmanager) - [2.3.4. Implementation of QuizQuestionsManager](#234-implementation-of-quizquestionsmanager) + - [2.3.5. Design of Stats Feature](#235-design-of-stats-feature) - [2.4. Storage Component](#24-storage-component) - [2.4.1. Design of TopicsStorage](#241-design-of-topicsstorage) - [2.4.2. Implementation of TopicsStorage](#242-implementation-of-topicsstorage) @@ -201,7 +202,7 @@ Step 5. The string at the 0th index is then used in a switch statement, where ea To start a quiz in E-Duke-8, the user will have to indicate the number of questions that he wants to attempt, as well as the topic to get the questions from. Thereafter, questions will be shown to the user one by one until all them are attempted. -The Class Diagram given below explains the high-level design of the Quiz system in E-Duke-8. Given below it is a quick overview of each component. +The class diagram given below explains the high-level design of the Quiz system in E-Duke-8. Given below it is a quick overview of each component. ![QuizQuestionsManager_Class_Diagram](./images/QuizQuestionsManager.png) @@ -215,7 +216,7 @@ Thereafter, by making use of `QuizQuestionsManager`'s `getNextQuestion()` and `a As mentioned earlier in the section on the design of the quiz system, a `QuizQuestionsManager` object will randomly select the indicated number of questions from the list of questions in the `Topic` object, and these will form the quiz questions for the user. -The Sequence Diagram below shows how `QuizQuestionsManager` is implemented to achieve this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: +The sequence diagram below shows how `QuizQuestionsManager` is implemented to achieve this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: ![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) @@ -226,6 +227,24 @@ To ensure that no two of the same question is selected, the selected randomQuest An ArrayList of `Question` objects stores all the selected questions meant for the quiz. +#### 2.3.5 Design of Stats Feature + +E-Duke-8 allows for user’s stats to be shown to the user when requested. These stats correspond to the results of the user’s past attempts of the quiz. An aggregate result, followed by topical results of the quiz will be displayed. + +A `Stats` class facilitates what is to be shown to the user. It also calls the methods of the two subclasses of `StatsCalculator` to retrieve the necessary information to be displayed. + +The class diagram given below showcases the high-level design of the stats feature in E-Duke-8. Given below it is a quick overview of each component. + +![Stats_Class_Diagram](./images/Stats.png) + +Results of the quiz attempts can be calculated using the information stored in a `Question` object, because of its methods, namely `wasShown()`, `wasHintShown()` and `wasAnsweredCorrectly()`, that indicate if it has been attempted before, whether hint was used when user attempted the question and if the question was answered correctly respectively. + +An object of `UserStatsCalculator` class is responsible for calculating the aggregate results from the user’s previous quiz results. For instance, its `calculateTotalPointsEarned()` method will iterate through the multiple topics stored in E-Duke-8 and calculate the total sum of the user’s past results of the quizzes done for those topics. + +On the other hand, an object of `TopicStatsCalculator` is used by the object of `Stats` class to calculate the topical results. In its constructor, the `TopicStatsCalculator` object uses the single `Topic` object passed into it to retrieve its specific `QuestionList` object. Thereafter, by iterating through the questions for the particular `QuestionList` object, the results for individual topics can be calculated with its methods. + + + ### 2.4. Storage Component #### 2.4.1. Design of TopicsStorage diff --git a/docs/diagrams/Stats.drawio b/docs/diagrams/Stats.drawio new file mode 100644 index 0000000000..04a0686c11 --- /dev/null +++ b/docs/diagrams/Stats.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/diagrams/Stats_showPointsEarned.drawio b/docs/diagrams/Stats_showPointsEarned.drawio new file mode 100644 index 0000000000..1f061c4fbe --- /dev/null +++ b/docs/diagrams/Stats_showPointsEarned.drawio @@ -0,0 +1 @@ +7ZjLcpswFIafhmU6RhgbL2Pn0kU6yTSdSbOU4QTUCMQIEeM+fSUQYC5OcGrctNOVpV8XxP/pnMPYsFZhds1xHHxhHlADTbzMsC4MhEyELPmjlK1WTAcVis+Jp7VauCc/QYsTrabEg6QxUTBGBYmbosuiCFzR0DDnbNOc9sRo86kx9qEj3LuYdtUH4omgUB17UuufgfhB+WRzokdCXE7WQhJgj212JOvSsFacMVG0wmwFVLlX+lKsu9ozWh2MQySGLLCidHmV8YW7vZnE0e3DN4Svz/QuL5im+oUN6/x2/UNZWZxabEsr5AvEqpmG9IY8ASWR7C1j4CQEAVyOUC3f1dpSghFYamrczPuU4jgh63zbiVQ4uClPyAt8haTgn6ssjTzwdK8yL+8Izp4rHGpT/RbABWR77TEr0+V1BSYPyLdySnVXNSd9Ux3d3dTUK7bBDnGrFLG+aX61dQ1DNjSPA9igLps2kpiRSOTPtZeGfdHCwbgImM8iTHeBHN/Y/Tdrr9tTu2H2vM/srtfmYiyvrY7XHkliLNyg47kyg8gEcU6JH0lpzYRgYe4e5uJc5RzlvdxKahB5pbKmzH0up+lE5wwlAF4nTQ3xXyZLzH14bR7q58SBYiFjsplQe2zXS+/UTaz5npn9gMsdEpZyF/SiFrvqFO/HOf2HQ8du5qkqb70RO85YoWP/LyFZqxR8mBIy+6vjwD6khPSa3VNCZmN5Pe94zUGkPBpeQHaKBYtBDi09nAS5z2YxvFM2ICPiuzZdtR9V+9PCfndFKVLy25dpWEUZFDe/WWTQvHkFkDVrblEcdbQq4xzho6HnA0G6xrcVWtV5PCTSDgeLBoKd/SmwnaAd+fNh0QEr0dE1lniOAtY8EdihETs9Gdhps0KiduUbGWxZEU6dpM2TJenph4vlNnJ7fqQkLbv1vyfF9PpPKOvyFw== \ No newline at end of file diff --git a/docs/images/Stats.png b/docs/images/Stats.png new file mode 100644 index 0000000000000000000000000000000000000000..d487c4ed11f6378e8f0f1e84370bbab0600f7c7a GIT binary patch literal 75943 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
*j11Z4#&-bH*vT=tU( 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 N topics; - public StatsCalculator(TopicList topicList) { - topics = topicList.getInnerList(); + public StatsCalculator(ArrayList topics) { + assert topics != null; + this.topics = topics; } public StatsCalculator() { @@ -36,7 +37,7 @@ protected int calculatePointsEarnedForQuestion(Question question) { } } - protected int calculateProgressionLevelPercentage(int userProgress, int total) { + protected int calculateProgressionPercentage(int userProgress, int total) { double progressionLevel = (double) userProgress / total; int progressionLevelPercentage = (int) (progressionLevel * 100); diff --git a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java index c911727d96..6a1285e5bb 100644 --- a/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/TopicalStatsCalculator.java @@ -76,7 +76,7 @@ public int calculateTopicalPointsAvailable() { public int calculateTopicalProgressionPercentage() { - return calculateProgressionLevelPercentage(calculateTopicalPointsEarned(), + return calculateProgressionPercentage(calculateTopicalPointsEarned(), calculateTopicalPointsAvailable()); } } diff --git a/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java b/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java index 640888a626..96829fbf83 100644 --- a/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/UserStatsCalculator.java @@ -5,15 +5,14 @@ import seedu.eduke8.question.Question; import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; -import seedu.eduke8.topic.TopicList; import java.util.ArrayList; public class UserStatsCalculator extends StatsCalculator { - public UserStatsCalculator(TopicList topicList) { - super(topicList); + public UserStatsCalculator(ArrayList topics) { + super(topics); } @@ -41,13 +40,13 @@ public int calculateTotalPointsAvailable() { return totalPointsAvailable; } - public int calculateOverallProgressionLevelPercentage() { - return calculateProgressionLevelPercentage(calculateTotalPointsEarned(), + public int calculateOverallProgressionPercentage() { + return calculateProgressionPercentage(calculateTotalPointsEarned(), calculateTotalPointsAvailable()); } // Determines if progression is over 50%, print diff messages for each section public boolean isProgressionOverHalf() { - return calculateOverallProgressionLevelPercentage() >= 50; + return calculateOverallProgressionPercentage() >= 50; } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 45bf05b966..6e69aef60c 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -227,12 +227,12 @@ public void printPointSystemRules() { System.out.println(POINT_SYSTEM_RULE + System.lineSeparator()); } - public void showPointsEarned(int pointsEarned, int pointsAvailable) { + public void printPointsEarned(int pointsEarned, int pointsAvailable) { System.out.println(MESSAGE_SHOW_POINTS + pointsEarned + MESSAGE_SHOW_POINTS_SECOND + pointsAvailable + MESSAGE_SHOW_POINTS_THIRD); } - public void showTotalProgression(int progressionLevelPercentage, boolean progressOverHalf) { + public void printTotalProgression(int progressionLevelPercentage, boolean progressOverHalf) { System.out.print(MESSAGE_USER_PROGRESS + progressionLevelPercentage + PERCENTAGE_SIGN + DOT_SPACE); if (progressOverHalf) { System.out.println(MESSAGE_PRAISE + System.lineSeparator()); @@ -250,22 +250,22 @@ public void printTopicDescriptionForStats(Displayable topic) { System.out.println(topic.getDescription()); } - public void showTopicalQuestionsCompletionLevel(int questionsAttempted, int questionsTotal) { + public void printTopicCompletionLevel(int questionsAttempted, int questionsTotal) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAttempted + OUT_OF_SYMBOL + questionsTotal + MESSAGE_QUESTIONS_DONE); } - public void showTopicAccuracyLevel(int questionsAnsweredCorrectly, int questionsAttempted) { + public void printTopicAccuracyLevel(int questionsAnsweredCorrectly, int questionsAttempted) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + questionsAnsweredCorrectly + OUT_OF_SYMBOL + questionsAttempted + MESSAGE_CORRECT_QUESTIONS_ANSWERED); } - public void showTopicalHintUsage(int hintUsage) { + public void printTopicalHintUsage(int hintUsage) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + hintUsage + (hintUsage <= 1 ? MESSAGE_HINT_USED_SINGULAR : MESSAGE_HINT_USED_PLURAL)); } - public void showTopicalPoints(int pointsEarned, int pointsAvailable, int progressionPercentage) { + public void printTopicalPoints(int pointsEarned, int pointsAvailable, int progressionPercentage) { System.out.println(HORIZONTAL_LINE_FOR_TOPICAL_STATS_FIELDS + pointsEarned + MESSAGE_POINTS_EARNED_OUT_OF + pointsAvailable + MESSAGE_AVAILABLE_WORD + OPEN_SQUARE_BRACKET + progressionPercentage + PERCENTAGE_SIGN + CLOSE_SQUARE_BRACKET); From 67998b7bac1a25fe6c989602951359e88e9274a2 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 04:00:03 +0800 Subject: [PATCH 215/447] Fix I/O testing --- text-ui-test/EXPECTED.TXT | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 72b908f510..5f01ad4dfb 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -30,7 +30,7 @@ These are the available topics and the number of available questions in each: Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The chosen topics is: OOP +The chosen topic is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -55,7 +55,7 @@ Hope you have learnt something new! Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The chosen topics is: OOP +The chosen topic is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -83,7 +83,7 @@ There is not enough questions in the topic for the quiz! Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The chosen topics is: OOP +The chosen topic is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -136,7 +136,7 @@ No such topic exists, did you spell it correctly? Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ Start of quiz: You have chosen to complete 1 question. -The chosen topics is: OOP +The chosen topic is: OOP ------------------------------------------------------------------------------------------------------------------------ 1. What is encapsulation? @@ -156,5 +156,3 @@ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ -Bye bye. Hope you had a fruitful revision and see you soon! ------------------------------------------------------------------------------------------------------------------------- From e4bfc9fa0772154db3bed997ab0606ad0f765a94 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 04:14:24 +0800 Subject: [PATCH 216/447] Edit DG for Stats design --- docs/DeveloperGuide.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f6694fa491..ac4eaad585 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -237,7 +237,9 @@ The class diagram given below showcases the high-level design of the stats featu ![Stats_Class_Diagram](./images/Stats.png) -Results of the quiz attempts can be calculated using the information stored in a `Question` object, because of its methods, namely `wasShown()`, `wasHintShown()` and `wasAnsweredCorrectly()`, that indicate if it has been attempted before, whether hint was used when user attempted the question and if the question was answered correctly respectively. +Results of the quiz attempts can be calculated using the information stored in a `Question` object, because of its methods, namely `wasShown()`, `wasHintShown()` and `wasAnsweredCorrectly()`, that indicate if it has been attempted before, whether hint was used when user attempted the question and if the question was answered correctly respectively. + +The current design of the stats feature is such that a correct answer without hint being used would award the user with 2 points, while a correct answer with hint used would award the user with 1 point. No point is awarded to the user if he chose the wrong answer. `calculatePointsEarnedForQuestion( :Question)’ is the method that contains the logic for this calculation. The method is explored further in the subsequent section. An object of `UserStatsCalculator` class is responsible for calculating the aggregate results from the user’s previous quiz results. For instance, its `calculateTotalPointsEarned()` method will iterate through the multiple topics stored in E-Duke-8 and calculate the total sum of the user’s past results of the quizzes done for those topics. From ffa3c62265116070fb1eba58c806a2bd261d9c99 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 04:16:01 +0800 Subject: [PATCH 217/447] Edit I/O testing --- text-ui-test/EXPECTED.TXT | 2 ++ 1 file changed, 2 insertions(+) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 5f01ad4dfb..be4c74c913 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -156,3 +156,5 @@ This is the end of the quiz! Hope you have learnt something new! ------------------------------------------------------------------------------------------------------------------------ Enter your command or 'help': ------------------------------------------------------------------------------------------------------------------------ +Bye bye. Hope you had a fruitful revision and see you soon! +------------------------------------------------------------------------------------------------------------------------ From 902e80131ac5743814d5e1df5eb62a97bd211978 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Wed, 28 Oct 2020 13:47:27 +0800 Subject: [PATCH 218/447] Implemented NoteCommands + made minor adjustments to DG --- docs/DeveloperGuide.md | 33 ++---- docs/images/TopicListAndNotes.png | Bin 31068 -> 34453 bytes docs/images/TopicListSampleSequence.png | Bin 15102 -> 8151 bytes .../seedu/eduke8/command/NoteCommand.java | 38 +++++++ src/main/java/seedu/eduke8/note/Note.java | 10 +- src/main/java/seedu/eduke8/note/NoteList.java | 9 +- .../java/seedu/eduke8/parser/MenuParser.java | 21 ++-- src/main/java/seedu/eduke8/topic/Topic.java | 4 - .../java/seedu/eduke8/topic/TopicList.java | 10 ++ src/main/java/seedu/eduke8/ui/Ui.java | 103 +++++++++++++++++- .../java/seedu/eduke8/note/NoteListTest.java | 7 +- src/test/java/seedu/eduke8/note/NoteTest.java | 17 ++- 12 files changed, 198 insertions(+), 54 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/NoteCommand.java diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9917849b32..7de9a1fbc0 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -50,10 +50,9 @@ Fork the repo, and clone the fork into your own PC. You are recommended to use I #### Design of TopicList 1. Listing topics in TopicList -2. Finding a topic in TopicList -3. Adding a new note -4. Deleting an existing note -5. Listing out all notes in a topic +2. Adding a new note +3. Deleting an existing note +4. Listing out all notes in a topic ![TopicList_Class_Diagram](./images/TopicListAndNotes.png) @@ -76,20 +75,6 @@ Step 2: The `TopicList.showTopics()` method then calls the method `Ui.printTopic Step 3: The `Ui.printTopicList()` method then prints out the description of each topic in the `TopicList`. -**Finding a topic in TopicList:** - -This task is performed by the `TopicList.find()` method. - -Step 1: The `parseCommand()` method instantiates a `TopicsCommand` object which then calls the `TopicList.find()` - method. A String object derived from the user's input is passed into this method. - -Step 2: The `TopicList.find()` method checks if any `Topic` object in the `TopicList` has a description that contains - the `String` object passed into the method. Such `Topic` objects are stored in a new `TopicList`. - -Step 3: The `TopicList.find()` method then calls the `TopicList.showTopics()` method, passing in the new TopicList. The - `Ui.printTopicList()` method is called within the `TopicList.showTopics()` method, printing out topic - descriptions containing the user's input. - `NoteList` is also an `ArrayList` of type `Displayable`, which is one of two interfaces implemented in the code for E-Duke-8. As such, many of the commands that manipulate the `TopicList` make use of the package `java.util.ArrayList`. The `NoteList` stores `Note` objects. Each topic has 1 `NoteList`. @@ -108,23 +93,25 @@ Step 2: The `NoteList.add()` method makes use of `ArrayList` API, specifically t **Deleting a note:** -This task is performed by the `NoteList.add()` method. +This task is performed by the `NoteList.delete()` method. Step 1: The `parseCommand()` method instantiates a `NoteCommand` object which then calls the `NoteList.delete()` method. An integer that represents the index of the `Note` object to be deleted within the `NoteList` is passed into this method. -Step 2: The `NoteList.add()` method makes use of `ArrayList` API, specifically the `ArrayList.remove()` method, to +Step 2: The `NoteList.delete()` method makes use of `ArrayList` API, specifically the `ArrayList.remove()` method, to delete the `Note` object in `NoteList`. **Listing out all notes in a topic** This task is performed by the `Topic.showNotes()` method. -Step 1: The `parseCommand()` method instantiates a `TopicCommand` object which then calls the `Topic.showNotes()` method. +Step 1: The `parseCommand()` method instantiates a `NoteCommand` object which then instantiates an Ui object +and calls the `Ui.listInteraction` method. This method then calls the `Topic.getNoteList` method. -Step 2: The `Topic.showNotes()` method calls the `Ui.printNoteList()` method. The topic's `NoteList` into this method. - `Ui.printNoteList()` prints out all the descriptions of the `Note` objects in the `NoteList`. +Step 2: The `Topic.showNotes()` method calls the `Ui.printNoteList()` method. The topic's `NoteList` is passed into +this method. `Ui.printNoteList()` prints out the descriptions and texts of all the `Note` objects in the +topic's `NoteList`. #### Design of Option and OptionList diff --git a/docs/images/TopicListAndNotes.png b/docs/images/TopicListAndNotes.png index 932064d07257a7c34fd963004ba3e16abe6aa6c0..5d814bec026b6aba3dceedf3b251486c5e54e9ec 100644 GIT binary patch literal 34453 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 literal 31068 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⪻=&5RiW``PBpY_uriVF<4I0_ zlxJKKHnq{b9($TrCFYi6IChcpV>apaAIXHb=t5<#x#O@*x&8Nd!!QDz>ShVEq+V6;LF9o9C zP?Zju%W7uuMLsCLT*~O!C>o#)`=zt04=oyyM|}$#d$1%GpE7Fic6`+RxT(ngO2<;= z_|k`^XBhpV^Vfu?Sm1WbZ+L=)QY5K#MBz2o{--IivOr@%d_nnwj*}iK8QgT|5`f%3 z+Hi$ckV{J~Zw3c-_I}tYvY6BN9HXA ze8i^OJi-~HQn3Nc`dkY0(a(8(Yp?-spEm4~wmzrG%7bna>+Y|(S%)sXIy;i9o6%&# zEZ#ybT-C!<)XO&o1~*)hmI(t%mvr$Ax`W-=PSaQdy0E{%CE}*ZK*F8*%c7tX39WUm z4|SQ9md?s{m4B3GD5q1{Z?MxxClYRrL{P;$e~8fYDh16lg3&Zx=SdIiEp#9Xs>J6m z0lNg6LmX-Q7X1RpY}(3{V|rA_LW$D>1-)nS6bv6LJP~e~@=oPMg2ET_fZ4qCvexmq z8tc#^Wd=eU`#~S%6{aZY-7Lv1h*MhAgBW777m1QwrPv;-k&YMf2(!=bsfhE|7|-n1 zb4v3Xh|0C9w>Fqyo^w^x(<7xo`=+gCUMs=kwVRu5ReI@;ut-cDnug6E|JvI+9k<^g zjX0@E8PYSM6!@@OaO#coipTz#kV|SEp~BO|_pncEpWHlsqi`E!w5f4@ocxu{|JH5N ze~w@OTZ{LfJ1Q2XkM73Vf*QX|g|e9Ivm4R}z@%y QK_ryM?^-7bs^+)<59B}E5v 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 notes; private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); + private static String INVALID_INT = "Invalid index"; public NoteList(ArrayList notes) { this.notes = notes; @@ -33,15 +34,19 @@ public ArrayList getInnerList() { } @Override - public Displayable find(String description) throws Eduke8Exception { + public Displayable find(String input) throws Eduke8Exception { for (Displayable note : notes) { - if (description.equalsIgnoreCase(note.getDescription())) { + if (input.equalsIgnoreCase(note.getDescription())) { return note; } } return null; } + public Note get(int index) { + return (Note) notes.get(index); + } + public int getCount() { return notes.size(); } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 07396cb6ca..88854a817b 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,17 +1,9 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.AboutCommand; -import seedu.eduke8.command.BookmarkCommand; -import seedu.eduke8.command.Command; -import seedu.eduke8.command.ExitCommand; -import seedu.eduke8.command.HelpCommand; -import seedu.eduke8.command.IncorrectCommand; -import seedu.eduke8.command.QuizCommand; -import seedu.eduke8.command.StatsCommand; -import seedu.eduke8.command.TextbookCommand; -import seedu.eduke8.command.TopicsCommand; +import seedu.eduke8.command.*; import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; @@ -35,6 +27,7 @@ public class MenuParser implements Parser { private static final String COMMAND_TOPICS = "topics"; private static final String COMMAND_TEXTBOOK = "textbook"; private static final String COMMAND_QUIZ = "quiz"; + private static final String COMMAND_NOTE = "note"; private static final String COMMAND_BOOKMARK = "bookmark"; private static final String COMMAND_EXIT = "exit"; @@ -92,7 +85,13 @@ public Command parseCommand(DisplayableList topicList, String userInput) { case COMMAND_BOOKMARK: LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); return new BookmarkCommand(BOOKMARK_LIST, bookmarks); - case COMMAND_EXIT: + case COMMAND_NOTE: + if(commandArr[1].equalsIgnoreCase("add") || commandArr[1]. + equalsIgnoreCase("delete") || commandArr[1].equals("list")) { + LOGGER.log(Level.INFO, "Parsing complete: note command chosen"); + return new NoteCommand(commandArr[1], (TopicList) topicList); + } + case COMMAND_EXIT: LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); case "stats": diff --git a/src/main/java/seedu/eduke8/topic/Topic.java b/src/main/java/seedu/eduke8/topic/Topic.java index c4392d98e3..5461fef08a 100644 --- a/src/main/java/seedu/eduke8/topic/Topic.java +++ b/src/main/java/seedu/eduke8/topic/Topic.java @@ -56,8 +56,4 @@ public QuestionList getQuestionList() { public NoteList getNoteList() { return noteList; } - - public void showNotes(Ui ui) { - ui.printNoteList(noteList.getInnerList()); - } } diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index c425fea426..5865cf1b6f 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -23,6 +23,16 @@ public void showTopics(Ui ui) { ui.printTopicList(topics); } + public boolean doesTopicExist(String topicName) { + boolean result = false; + for(int i = 0; i < topics.size(); i++) { + if(topics.get(i).getDescription().equalsIgnoreCase(topicName)) { + result = true; + } + } + return result; + } + @Override public ArrayList getInnerList() { return topics; diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 34e9485ffb..4d01977bf3 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -2,11 +2,14 @@ import seedu.eduke8.bookmark.BookmarkList; import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.hint.Hint; import seedu.eduke8.note.Note; +import seedu.eduke8.note.NoteList; import seedu.eduke8.option.Option; import seedu.eduke8.question.Question; import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; import java.util.ArrayList; import java.util.Scanner; @@ -76,7 +79,21 @@ public class Ui { private static final String DOT = "."; private static final String DOT_SPACE = ". "; private static final String DOT_PLURAL = "s."; - + private static final String ADD_NOTE_PROMPT_FOR_TOPIC = "Enter the topic you would like to add a note too"; + private static final String ADD_NOTE_PROMPT_FOR_NOTE_TITLE = "Enter a suitable title for your note"; + private static final String ADD_NOTE_PROMPT_FOR_NOTE_BODY = "Enter the contents of your note"; + private static final String ADD_NOTE_SUCCESSFULLY = "Your note has been added!"; + private static final String ADD_NOTE_UNSUCCESSFULLY = "Your note was not added successfully. " + + "Please try again!"; + private static final String DELETE_NOTE_PROMPT_FOR_TOPIC = "Which topic does the note you would like to delete " + + "belong to?"; + private static final String DELETE_NOTE_PROMPT_FOR_INDEX = "What is the index of the note that you would like" + + "to delete?"; + private static final String DELETE_NOTE_SUCCESSFULLY = "The note has been deleted!"; + private static final String DELETE_NOTE_UNSUCCESSFULLY = "The note was not deleted successfully. Try again!"; + private static final String INVALID_TOPIC_NAME = "Please enter a valid topic name"; + private static final String LIST_NOTE_PROMPT = "Which topic's notes would you like to view?"; + private static final String INPUT_ERROR = "Please provide a valid input!"; public String getInputFromUser() { System.out.print(MESSAGE_GET_INPUT_FROM_USER); @@ -183,16 +200,92 @@ public void printTopicList(ArrayList topics) { System.out.println(HORIZONTAL_LINE); } - public void printNoteList(ArrayList notes) { + public void addNoteInteractions(TopicList topicList) { + System.out.println(ADD_NOTE_PROMPT_FOR_TOPIC); + String topicName = SCANNER.nextLine(); + Ui ui = new Ui(); + + try { + if(topicList.doesTopicExist(topicName)) { + System.out.println(ADD_NOTE_PROMPT_FOR_NOTE_TITLE); + String noteName = SCANNER.nextLine(); + System.out.println(ADD_NOTE_PROMPT_FOR_NOTE_BODY); + String noteBody = SCANNER.nextLine(); + + Note note = new Note(noteName, noteBody); + Topic topic = (Topic) topicList.find(topicName); + topic.getNoteList().add(note); + System.out.println(ADD_NOTE_SUCCESSFULLY); + } else { + System.out.println(INPUT_ERROR + "\n" + ADD_NOTE_UNSUCCESSFULLY); + } + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); + } + } + + public void deleteNoteInteractions(TopicList topicList) { + Ui ui = new Ui(); + + System.out.println(DELETE_NOTE_PROMPT_FOR_TOPIC); + String topicName = SCANNER.nextLine(); + + try { + if (topicList.doesTopicExist(topicName)) { + Topic topic = (Topic) topicList.find(topicName); + NoteList noteList = topic.getNoteList(); + ui.printNoteList(noteList); + + System.out.println(DELETE_NOTE_PROMPT_FOR_INDEX); + String input = SCANNER.nextLine(); + + if (input.matches("[0-9]+") && Integer.parseInt(input) > 0 + && Integer.parseInt(input) <= noteList.getCount()) { + int index = Integer.parseInt(input); + topic.getNoteList().delete(index - 1); + System.out.println(DELETE_NOTE_SUCCESSFULLY); + } else { + System.out.println(INPUT_ERROR + "\n" + DELETE_NOTE_UNSUCCESSFULLY); + } + } else { + System.out.println(INPUT_ERROR + "\n" + DELETE_NOTE_UNSUCCESSFULLY); + } + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); + } + } + + public void listInteraction(TopicList topicList) { + Ui ui = new Ui(); + + System.out.println(LIST_NOTE_PROMPT); + String topicName = SCANNER.nextLine(); + + try { + if (topicList.doesTopicExist(topicName)) { + Topic topic = (Topic) topicList.find(topicName); + NoteList noteListTopic = topic.getNoteList(); + ui.printNoteList(noteListTopic); + } else { + System.out.println(INPUT_ERROR); + } + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); + } + } + + + public void printNoteList(NoteList notes) { - if (notes.size() == 0) { + if (notes.getCount() == 0) { System.out.println(MESSAGE_PRINT_NOTE_LIST_NONE); } else { System.out.println(MESSAGE_PRINT_NOTE_LIST); - for (int i = 0; i < notes.size(); i++) { + for (int i = 0; i < notes.getCount(); i++) { System.out.println(HORIZONTAL_LINE); Note note = (Note) notes.get(i); - System.out.println(i + DOT + note.getDescription()); + System.out.println((i + 1) + DOT + note.getDescription()); + System.out.println(note.getNoteText()); } } diff --git a/src/test/java/seedu/eduke8/note/NoteListTest.java b/src/test/java/seedu/eduke8/note/NoteListTest.java index be604b58ab..3eb1981e9a 100644 --- a/src/test/java/seedu/eduke8/note/NoteListTest.java +++ b/src/test/java/seedu/eduke8/note/NoteListTest.java @@ -14,6 +14,7 @@ public class NoteListTest { private static final String NOTE_ONE = "First Note"; private static final String NOTE_TWO = "Second Note"; private static final String NOTE_THREE = "Third Note"; + private static final String DESCRIPTION = "Test"; private static final int DEFAULT_NOTE_COUNT = 2; @Test @@ -26,7 +27,7 @@ void getCount_TwoNotes_returnsCountOfTwo() throws Eduke8Exception { @Test void add_thirdNoteToNoteList_returnsCountOfThree() throws Eduke8Exception { NoteList noteList = createTestNoteList(); - Note note3 = new Note(NOTE_THREE); + Note note3 = new Note(NOTE_THREE, DESCRIPTION); noteList.add(note3); assertEquals(DEFAULT_NOTE_COUNT + 1, noteList.getCount()); @@ -41,8 +42,8 @@ void delete_thirdNoteToNoteList_returnsCountOfOne() throws Eduke8Exception { } private NoteList createTestNoteList() throws Eduke8Exception { - Note note1 = new Note(NOTE_ONE); - Note note2 = new Note(NOTE_TWO); + Note note1 = new Note(NOTE_ONE, DESCRIPTION); + Note note2 = new Note(NOTE_TWO, DESCRIPTION); ArrayList noteArrayList = new ArrayList<>( Arrays.asList(note1, note2) diff --git a/src/test/java/seedu/eduke8/note/NoteTest.java b/src/test/java/seedu/eduke8/note/NoteTest.java index d347b988ce..2375f5644b 100644 --- a/src/test/java/seedu/eduke8/note/NoteTest.java +++ b/src/test/java/seedu/eduke8/note/NoteTest.java @@ -8,13 +8,20 @@ public class NoteTest { - private static final String NOTE_TEST = "Test Note"; + private static final String TEST_NAME = "Note name"; + private static final String TEST = "Test"; @Test - void getsTopicDescription_topicDescription_returnsTopicDescription() throws Eduke8Exception { - String input = NOTE_TEST; - Note note = new Note(input); + void getsNoteDescription_returnsNoteDescription() throws Eduke8Exception { + Note note = new Note(TEST_NAME, TEST); - assertEquals(input, note.getDescription()); + assertEquals(TEST_NAME, note.getDescription()); + } + + @Test + void getsNoteName_returnsNoteName() throws Eduke8Exception { + Note note = new Note(TEST_NAME, TEST); + + assertEquals(TEST, note.getNoteText()); } } From c5f780a07ed6d6c2caeb80ed9d724715b800cd73 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Wed, 28 Oct 2020 15:47:39 +0800 Subject: [PATCH 219/447] Fixed checkstyle errors, fixed merge conflicts --- .../seedu/eduke8/command/NoteCommand.java | 4 +++- .../java/seedu/eduke8/parser/MenuParser.java | 21 ++++++++++++++----- .../seedu/eduke8/storage/UserStorage.java | 2 +- .../java/seedu/eduke8/topic/TopicList.java | 4 ++-- src/main/java/seedu/eduke8/ui/Ui.java | 10 ++++----- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/NoteCommand.java b/src/main/java/seedu/eduke8/command/NoteCommand.java index 5eb282b847..28fee22165 100644 --- a/src/main/java/seedu/eduke8/command/NoteCommand.java +++ b/src/main/java/seedu/eduke8/command/NoteCommand.java @@ -30,9 +30,11 @@ public void execute(DisplayableList displayableList, Ui ui) { case (NOTE_DELETE): ui.deleteNoteInteractions(topics); break; - case (NOTE_LIST) : + case (NOTE_LIST): ui.listInteraction(topics); break; + default: + break; } } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 88854a817b..29d9d66031 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -1,9 +1,18 @@ package seedu.eduke8.parser; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.*; +import seedu.eduke8.command.AboutCommand; +import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.Command; +import seedu.eduke8.command.ExitCommand; +import seedu.eduke8.command.HelpCommand; +import seedu.eduke8.command.IncorrectCommand; +import seedu.eduke8.command.StatsCommand; +import seedu.eduke8.command.TopicsCommand; +import seedu.eduke8.command.TextbookCommand; +import seedu.eduke8.command.NoteCommand; +import seedu.eduke8.command.QuizCommand; import seedu.eduke8.common.DisplayableList; -import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.topic.TopicList; import seedu.eduke8.ui.Ui; @@ -86,12 +95,14 @@ public Command parseCommand(DisplayableList topicList, String userInput) { LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); return new BookmarkCommand(BOOKMARK_LIST, bookmarks); case COMMAND_NOTE: - if(commandArr[1].equalsIgnoreCase("add") || commandArr[1]. - equalsIgnoreCase("delete") || commandArr[1].equals("list")) { + if (commandArr[1].equalsIgnoreCase("add") || commandArr[1] + .equalsIgnoreCase("delete") || commandArr[1].equals("list")) { LOGGER.log(Level.INFO, "Parsing complete: note command chosen"); return new NoteCommand(commandArr[1], (TopicList) topicList); + } else { + break; } - case COMMAND_EXIT: + case COMMAND_EXIT: LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); case "stats": diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 907f185a43..bd10dfb318 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -121,7 +121,7 @@ private JSONObject parseToTopicJson(Displayable topicObject) { private JSONArray getNotesJsonArray(NoteList noteList) { JSONArray notes = new JSONArray(); for (Displayable noteObject: noteList.getInnerList()) { - notes.add(noteObject.getDescription()); + notes.add(noteObject.getDescription(), noteObject.get); } return notes; } diff --git a/src/main/java/seedu/eduke8/topic/TopicList.java b/src/main/java/seedu/eduke8/topic/TopicList.java index 5865cf1b6f..7e23694c44 100644 --- a/src/main/java/seedu/eduke8/topic/TopicList.java +++ b/src/main/java/seedu/eduke8/topic/TopicList.java @@ -25,8 +25,8 @@ public void showTopics(Ui ui) { public boolean doesTopicExist(String topicName) { boolean result = false; - for(int i = 0; i < topics.size(); i++) { - if(topics.get(i).getDescription().equalsIgnoreCase(topicName)) { + for (int i = 0; i < topics.size(); i++) { + if (topics.get(i).getDescription().equalsIgnoreCase(topicName)) { result = true; } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 4d01977bf3..efb27ffae0 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -83,12 +83,12 @@ public class Ui { private static final String ADD_NOTE_PROMPT_FOR_NOTE_TITLE = "Enter a suitable title for your note"; private static final String ADD_NOTE_PROMPT_FOR_NOTE_BODY = "Enter the contents of your note"; private static final String ADD_NOTE_SUCCESSFULLY = "Your note has been added!"; - private static final String ADD_NOTE_UNSUCCESSFULLY = "Your note was not added successfully. " + - "Please try again!"; + private static final String ADD_NOTE_UNSUCCESSFULLY = "Your note was not added successfully. " + + "Please try again!"; private static final String DELETE_NOTE_PROMPT_FOR_TOPIC = "Which topic does the note you would like to delete " + "belong to?"; - private static final String DELETE_NOTE_PROMPT_FOR_INDEX = "What is the index of the note that you would like" + - "to delete?"; + private static final String DELETE_NOTE_PROMPT_FOR_INDEX = "What is the index of the note that you would like" + + "to delete?"; private static final String DELETE_NOTE_SUCCESSFULLY = "The note has been deleted!"; private static final String DELETE_NOTE_UNSUCCESSFULLY = "The note was not deleted successfully. Try again!"; private static final String INVALID_TOPIC_NAME = "Please enter a valid topic name"; @@ -206,7 +206,7 @@ public void addNoteInteractions(TopicList topicList) { Ui ui = new Ui(); try { - if(topicList.doesTopicExist(topicName)) { + if (topicList.doesTopicExist(topicName)) { System.out.println(ADD_NOTE_PROMPT_FOR_NOTE_TITLE); String noteName = SCANNER.nextLine(); System.out.println(ADD_NOTE_PROMPT_FOR_NOTE_BODY); From 241b8a398cfc637491bce71eb89ada602c100c86 Mon Sep 17 00:00:00 2001 From: joelngyx Date: Wed, 28 Oct 2020 15:59:36 +0800 Subject: [PATCH 220/447] fixed checkstyle error --- src/main/java/seedu/eduke8/storage/UserStorage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index bd10dfb318..907f185a43 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -121,7 +121,7 @@ private JSONObject parseToTopicJson(Displayable topicObject) { private JSONArray getNotesJsonArray(NoteList noteList) { JSONArray notes = new JSONArray(); for (Displayable noteObject: noteList.getInnerList()) { - notes.add(noteObject.getDescription(), noteObject.get); + notes.add(noteObject.getDescription()); } return notes; } From 8615c8512ea011bf79a57fcb6b9e2b37cc60d91c Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 16:28:06 +0800 Subject: [PATCH 221/447] Add sequence diagram for stats feature --- docs/DeveloperGuide.md | 21 +++++++++++++++----- docs/diagrams/Stats.drawio | 2 +- docs/diagrams/Stats_showPointsEarned.drawio | 2 +- docs/images/Stats.png | Bin 75943 -> 73706 bytes docs/images/Stats_showPointsEarned.png | Bin 0 -> 58533 bytes 5 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 docs/images/Stats_showPointsEarned.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ac4eaad585..000c95c35f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -219,7 +219,7 @@ As mentioned earlier in the section on the design of the quiz system, a `QuizQue The sequence diagram below shows how `QuizQuestionsManager` is implemented to achieve this for the scenario where the user indicates that he wants to attempt 5 questions from the topic on OOP, which translates to the `setQuizQuestions(5, questionsInTopic)` call: -![QuizQuestionsManager_setQuizQuestions](./images/QuizQuestionsManager_setQuizQuestions.png) +![QuizQuestionsManager::setQuizQuestions_Sequence_Diagram](./images/QuizQuestionsManager_setQuizQuestions.png) `nextInt(5)` is a method call to an object of the `Random` class. It returns a random integer between 0 (inclusive) and the number passed in as argument, 5 in this scenario, exclusive. @@ -229,9 +229,9 @@ An ArrayList of `Question` objects stores all the selected questions meant for t #### 2.3.5 Design of Stats Feature -E-Duke-8 allows for user’s stats to be shown to the user when requested. These stats correspond to the results of the user’s past attempts of the quiz. An aggregate result, followed by topical results of the quiz will be displayed. +E-Duke-8 allows for user’s stats to be shown to the user when requested. These statistics correspond to the results of the user’s past attempts of the quiz. An aggregate result, followed by topical results of the quiz will be displayed. -A `Stats` class facilitates what is to be shown to the user. It also calls the methods of the two subclasses of `StatsCalculator` to retrieve the necessary information to be displayed. +A `Stats` class facilitates what is to be shown to the user. It also calls the methods of the objects of the two subclasses of `StatsCalculator`, `UserStatsCalculator` and `TopicalStatsCalculator` to retrieve the necessary information to be displayed. The class diagram given below showcases the high-level design of the stats feature in E-Duke-8. Given below it is a quick overview of each component. @@ -239,12 +239,23 @@ The class diagram given below showcases the high-level design of the stats featu Results of the quiz attempts can be calculated using the information stored in a `Question` object, because of its methods, namely `wasShown()`, `wasHintShown()` and `wasAnsweredCorrectly()`, that indicate if it has been attempted before, whether hint was used when user attempted the question and if the question was answered correctly respectively. -The current design of the stats feature is such that a correct answer without hint being used would award the user with 2 points, while a correct answer with hint used would award the user with 1 point. No point is awarded to the user if he chose the wrong answer. `calculatePointsEarnedForQuestion( :Question)’ is the method that contains the logic for this calculation. The method is explored further in the subsequent section. +The current design of the stats feature is such that a correct answer without hint being used would award the user with 2 points, while a correct answer with hint used would award the user with 1 point. No point is awarded to the user if they chose the wrong answer. `calculatePointsEarnedForQuestion( :Question)` in `StatsCalculator` class and its subclasses, is the method that contains the logic for this calculation. An object of `UserStatsCalculator` class is responsible for calculating the aggregate results from the user’s previous quiz results. For instance, its `calculateTotalPointsEarned()` method will iterate through the multiple topics stored in E-Duke-8 and calculate the total sum of the user’s past results of the quizzes done for those topics. -On the other hand, an object of `TopicStatsCalculator` is used by the object of `Stats` class to calculate the topical results. In its constructor, the `TopicStatsCalculator` object uses the single `Topic` object passed into it to retrieve its specific `QuestionList` object. Thereafter, by iterating through the questions for the particular `QuestionList` object, the results for individual topics can be calculated with its methods. +On the other hand, an object of `TopicalStatsCalculator` is used by the object of `Stats` class to calculate the topical results. In its constructor, the `TopicalStatsCalculator` object uses the single `Topic` object passed into it to retrieve its specific `QuestionList` object. Thereafter, by iterating through the questions for the particular `QuestionList` object, the results for individual topics can be calculated with its methods. +#### 2.3.6. Implementation of Stats Feature + +The current implementation of the stats feature is such that the object of `Stats` class controls what is shown to the user when the `stats` command is received. It calls on methods of a `UserStatsCalculator` object and a `TopicalStatsCalculator` object to calculate and retrieve the statistics of the user’s previous attempts of quizzes in E-Duke-8, before displaying them. + +The sequence diagram below shows the interactions between the different objects when `showPointsEarned(ui)` is invoked, by the object of `Stats` class, to display to the user the total points he has earned in E-Duke-8 so far, out of all the points that he can potentially earn. + +![Stats::showPointsEarned_Sequence_Diagram](./images/Stats_showPointsEarned.png) + +Through the logic in the object of `UserStatsCalculator`, necessary information regarding the user’s statistics, such as the `totalPointsGained` integer value and `totalPointsAvailable` integer value, are calculated, and then passed to the `Ui` object to print them to the user. This same concept and procedure are applied to the display the other aggregate results. + +A similar procedure is being employed by the `TopicalStatsCalculator` object to calculate the topic-level statistics for the user. The only difference between the objects of these two classes is that instead of iterating through all the topics available, the ` TopicalStatsCalculator` object only deals with a particular topic at any point of time. By iterating through the questions of the single topic, it calculates statistics for the topic and returns it back to the `Stats` object, which will then pass them to the `Ui` object to display them to the user. As such, in order to display the user’s statistics for each and every topic, a loop is done in the `Stats` object to repeatedly calculate the topic-level information for all of the topics and displaying them concurrently. ### 2.4. Storage Component diff --git a/docs/diagrams/Stats.drawio b/docs/diagrams/Stats.drawio index 04a0686c11..b56c3ccba2 100644 --- a/docs/diagrams/Stats.drawio +++ b/docs/diagrams/Stats.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/diagrams/Stats_showPointsEarned.drawio b/docs/diagrams/Stats_showPointsEarned.drawio index 1f061c4fbe..3b03f1e9a3 100644 --- a/docs/diagrams/Stats_showPointsEarned.drawio +++ b/docs/diagrams/Stats_showPointsEarned.drawio @@ -1 +1 @@ -7ZjLcpswFIafhmU6RhgbL2Pn0kU6yTSdSbOU4QTUCMQIEeM+fSUQYC5OcGrctNOVpV8XxP/pnMPYsFZhds1xHHxhHlADTbzMsC4MhEyELPmjlK1WTAcVis+Jp7VauCc/QYsTrabEg6QxUTBGBYmbosuiCFzR0DDnbNOc9sRo86kx9qEj3LuYdtUH4omgUB17UuufgfhB+WRzokdCXE7WQhJgj212JOvSsFacMVG0wmwFVLlX+lKsu9ozWh2MQySGLLCidHmV8YW7vZnE0e3DN4Svz/QuL5im+oUN6/x2/UNZWZxabEsr5AvEqpmG9IY8ASWR7C1j4CQEAVyOUC3f1dpSghFYamrczPuU4jgh63zbiVQ4uClPyAt8haTgn6ssjTzwdK8yL+8Izp4rHGpT/RbABWR77TEr0+V1BSYPyLdySnVXNSd9Ux3d3dTUK7bBDnGrFLG+aX61dQ1DNjSPA9igLps2kpiRSOTPtZeGfdHCwbgImM8iTHeBHN/Y/Tdrr9tTu2H2vM/srtfmYiyvrY7XHkliLNyg47kyg8gEcU6JH0lpzYRgYe4e5uJc5RzlvdxKahB5pbKmzH0up+lE5wwlAF4nTQ3xXyZLzH14bR7q58SBYiFjsplQe2zXS+/UTaz5npn9gMsdEpZyF/SiFrvqFO/HOf2HQ8du5qkqb70RO85YoWP/LyFZqxR8mBIy+6vjwD6khPSa3VNCZmN5Pe94zUGkPBpeQHaKBYtBDi09nAS5z2YxvFM2ICPiuzZdtR9V+9PCfndFKVLy25dpWEUZFDe/WWTQvHkFkDVrblEcdbQq4xzho6HnA0G6xrcVWtV5PCTSDgeLBoKd/SmwnaAd+fNh0QEr0dE1lniOAtY8EdihETs9Gdhps0KiduUbGWxZEU6dpM2TJenph4vlNnJ7fqQkLbv1vyfF9PpPKOvyFw== \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/Stats.png b/docs/images/Stats.png index d487c4ed11f6378e8f0f1e84370bbab0600f7c7a..c0438e811cb889e8c8c428d4e224561aa6a32bd2 100644 GIT binary patch literal 73706 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


&)5DY{DGb#+HNu?U%LK$cp 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
*j11Z4#&-bH*vT=tU( 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 N|f)u`7rLg9QtA5ET{a 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 literal 0 HcmV?d00001 From c229776a71ee6f1aa8b019b1568b2d79440c1b6e Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 16:40:02 +0800 Subject: [PATCH 222/447] Fix UML note and update developer guide table of contents --- docs/DeveloperGuide.md | 1 + docs/diagrams/Stats_showPointsEarned.drawio | 2 +- docs/images/Stats_showPointsEarned.png | Bin 58533 -> 58318 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 000c95c35f..e516afc090 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -17,6 +17,7 @@ - [2.3.3. Design of QuizQuestionsManager](#233-design-of-quizquestionsmanager) - [2.3.4. Implementation of QuizQuestionsManager](#234-implementation-of-quizquestionsmanager) - [2.3.5. Design of Stats Feature](#235-design-of-stats-feature) + - [2.3.6. Implementation of Stats Feature](#236-implementation-of-stats-feature) - [2.4. Storage Component](#24-storage-component) - [2.4.1. Design of TopicsStorage](#241-design-of-topicsstorage) - [2.4.2. Implementation of TopicsStorage](#242-implementation-of-topicsstorage) diff --git a/docs/diagrams/Stats_showPointsEarned.drawio b/docs/diagrams/Stats_showPointsEarned.drawio index 3b03f1e9a3..0d9be7dea2 100644 --- a/docs/diagrams/Stats_showPointsEarned.drawio +++ b/docs/diagrams/Stats_showPointsEarned.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/Stats_showPointsEarned.png b/docs/images/Stats_showPointsEarned.png index 6dcda6a7a0f5236a9701a0af0ab530b8740ad753..682c2c2387fcdd164030b782e4646add1232ad2b 100644 GIT binary patch literal 58318 zcmafacRbZ^|G&1DqMcG1ZQ~5*5aFEToP*;y=2=3=S6wO-w7?v zEPx5Nk~l(!NGSzAx_JXHAPb-wf&@MR9WdxWA46c!Z9oe`Eao#w%s?CmSRG>tftx{K zK=W3dlQ-Vg1dIYc^Eo^w@P=j5c_Pgts33_*0JLDNU}hF(P%zZO3~mXud(l`l3FrUJ zqB#sxMq~eT5FfGy)RXFnv7)+5NJLLD2!#py=Ku<(M9L8f{}~2?m|2;D{^^jZ#LRzM z8B7I-4y*|_fuI3e{!27qe$KyS;<3dziigbGiE5!j;6iXXcbMXzNrW_Dvs2`D2PkDa zH8lhcCx!&_ETvG40t%AIMOHF|)I+Ioq{ysPe5ODqbg=}U^I_3~u@+#gBab4pR=@$m zAnDF7XapILg*if~Jf35S1vd!gO#lu}R>CMES2;1*3iv{0Vl;!jtY|!vH;3frBtg1? z+@0`Duq$v47@&)yg21IxGKh)Cb2ut@W-tj3#kd0n4ks8FuGTay<54M#z!-e4~0O$+G5QD8DE?6ft8sZ@q0^b!Bx`aU^ zp#!}Xcq>OH1ZVgh2ff#HMj)`^>18Y${`OZYLj|C6z;mrcJ1E#vT zImz5D@C-PQO!Ndsa9ylj(7{Z+1y=4A5{TgOq*z9fqh>5oLT6Ce9wN^mILaBs2MN8r zgP1{hpa&D^Mze6iX&(0u3=9FJ2g75)oy7z?l?L;s3h~w;B2(Z)l{<1UcRViVIY#-3TD1z|BVqfk}WPSW10pRs;()L?y+GKmuS|F+xrY;t9N|Br6UD z%Jh+Wx{?_*Duu{avn=Rr2@#FpNK|yDlZy%%t#Sn6AyA3{;_Qy1Isx0lklc_|nWl@# z^PzHiK_oF1O>}lqNmV?ukCdiz2NuCtQ{3bvf+b#nW@YIsQ+EaEBHZ~-4Fpz&R3a%VZ-Qh;WHWK@QX2Rs1rz)|2R zm>1cVB_c@V5SX0n$)vbCAuOft9#BVbiYLmOZt1A-P?E7yK-plOCU1qr-ZY#c05u0~MJPO1WX)Or!5HMIO0gXZcBn3m4 zyLph^)kK;XA7CCbjw1#mhzyL(jl*C7-C~bGu%jA}3HEYj!(dc)2oD)7LRs>_6cC=` z0Sq9CQF4J7ABL98C2TYv?-K|`uq?zuG&l(_gSgSuN{Lz^MFS)8L_Eup?#fhKNhxrd zH5N*ux;QJKN^1fJPYpx|GAST+h$2Kn14{sNgK?FxfmgK`A_y%fBglck7vPUibVk7y z6gL%=Mv|&AIF^Xw0(PY$tb*OaAU7*G7V1htgZ^PVuFy;DrQm>FiH<1mAQhJ!EaLmP zQyoQKF2E(R+`t|_QV%Jf!e$|9DmtA`goQ|9Op+x@fby~AiR8{80Z%NT5x7v2V<3@^ z;j`eDVjlsZt6i+9D3ThO1S*zuz$7kI8t81PmZ&`_o@9zQ-wLS!_#Pvq3*}O0PgRJM zB~?WOMhm2X8A9^aSSSpxbn&3$IWVM#>8LCi3Be-=5_m{D#s{OOB=t=Z(vUU<;F<3T&?F2&#Aq0dY97`0c@G2aR<|#wb@m^9ZtQFjatC`p%{Xg&hiQ*O2KL(N9L&JQGzXl+}vF$M0Yg@&~-=)juP$~D0Q}0S~)pm`3RA> zBh1?w>cN+5SP0~#vFRv_KnMdZ7tkGXWM_gkgWwIdlpx>&CR-}Bz~G&bo@ka6N`Qrt ztxyQ6%H7q`TVvX+Wu90s1dhjJ(wTu2XC98_%@7B9sW5Vx8yKq*7`&$vAEJW0^1MY> zA}rGt>m(E5-5eDdYpw__3K9B1m;x@B2x3BoAp{x*BSyFp$#8)S$emy%g>czO4h-eQ z;HxM>a%&6|4s2Me_Oj*&hY&ryQE(TeQVx@c5Q4C72#F8?4L)on3x)K80w@h>MWnE$ zo>KQ9v0D%z%SbOYmJ#SvZaL{r&N8jXY2C=V8&=S>A6h|V|{8AcAU4iYcKI^lU7k-G~Rhf-Nnsg__@ zHw%~~&`M$rfLSC$;U!l}Xzm^qytju+XL`0VU?+Ky(%naa3l7A1VXXl~VByRO0gx;POQcf3c#b4kpujPm)IJ)kP4^DLOMEP> zxt=26n;0)pdP7_lnhnV$NGG*54lGrYl}-|@HQ$jcrm^HwI9LkzafFB9tXU$l8bOi- z%9KnmmMdHt5=a-&6iy5#3yqPf!9;=rPoY|XJos#(2BG?JDR97sV;qr0G)U;<OxF-Pk0I2{VK?q5}$DmQ55UCiC6;Q<*TOnmS0W60RFf^||C`T@Z>F(`m z$zqTZY6SyrA(Xg#SjbRvCYCAi;0Jn3RA9h}VJtv&0G%p=6g>Apqz3@{`FK~EGgRgk z#N=?mf!+cJ!CA>9x>2k{)EY*`(y1O+9JVXSO6ksaM8cI6M-f|wP+E$-FfxrDut1T3 zS7(&BRWQkoL~z&0iQ1Ztr@ImqFa}THsnI$hXNH@U09LA4e5FPKig93)h%XV+MCuS9 zCyB}u5{$44M9?WniaQ2`6stVE*>sA6%SEVhJTY0qqtK+5xFDDhO6~*z22VI14RLgp zQ(-~u5Hy}gfqNtHV0T9p7VSvHxViJG8k|q(PynS!P=`o0C`m@fsD$1GrKbm-1AJ9O zoH-=VK&A^QNa08ZkRRa4V7$o!3%-w&6V?ddrwHl$)oJp+SSdT+CpuyPO)V zW@3d-U^$ARU|>)nZ>W+i0P~oRP&SyxA~}M5U{V>wk<0fYAOWsZs{o{h5fhvNIXOa<8gEwfr*SW) zJ>e<082J8glmUW1PS|RwrL|GZ*%9F#;y)O+`0L8o@;@h2%I1{KN=O0eAupf$r0OMm=HE7>il@;!%l@ZhMwC{y?Xt-K9S&VSBYynI z+!*2ij*X0|`u*|6<$BbT-HzXYskhFEe0XqP>WUr2BtqCHFO#6_F8^6`TjIrc3Wr7OrR3i+Cq^HUbOt7E4N6FqBX=<|C zVsFHoYDI6!f`!`r&eHa_@QKf?<{T!gGG=|>D=&iOmh-as`vX};bSgS#9D;HA*28yTm@387uf`YuJ8<>U;71rmBzn)~xv4QYZH>%OF( z9Y?CJSDW((J4#xAonqU6ZZ%2V6IiCV_uGasLJG9{!N!1v24UY`^sLK%+T${wqh-Bn z-$SRbc3sDe;tPA;f2f%M+4|daRQ)x4>YzP`oszu}7WCoissKLIFS>Ep@b?eJqt9}$ zd#DYqUv0NLx*@!flEZM`P-50GGIM)=FHUdd`Q*#4zM}wnL!Z0d+s0$qnJ?*O!gqXW zlzKXS+*g#q8aVzhOW#8Rgjv$<84nh;Kz(BlplbLqVO!Et^3qIeX1+w=SJ%Y;9V(*OJ(Kf6a~omF;2;@qVVKBVn4;~YIji>_NZ z?so9p=241O@z+NSCv^n-IRFRBS$5VF6xf}TH#gXaRWs=^Sx}S_VRgb{m;KBWbXA_z8 z`;5O0R!tLNY2?n?E?Y)Dy9du&^u&!9FYS#}37kehJ@GxSJbstA|4o+P{28L7bsyeu zWHdaT{p7Vtnb|g3fEHDkr#x*RRad)e)~0(x{I6rWM!!zE3(l9|&b=@grad||e|_Be zx5TL8Rf)3Dk-($oj!8BVKbZB+VyW!;1;oVbk5QA~CR;o&%8nB|qV{%hJ&eD#Y)O-7 z)Qm>8sOLq#tS&zF)D|2&KU=sBMYP7I>>TgWE&bNBr(oUF#dmyD3@_jBf2m!C>pzUU zcDSw~#gbR%xoI2QIiYXoBkkz4upiBg)AqYBzATx?gir$3ykzQswaz%V#jmUDnY79% zy z=CQt}lP<_koAVG~mw(lw!$Akrs?e3m64J72Bb;j4%0>nmg=wE(^cCyEd3m|B<;81R zGQJ6S^0XH1(8_sEhQvS41tbVK-OObBE^s<&W%rI;gbkx3GWykZY+qyV4%H6*ytT=q z6&sX{j{3uHm_Ex4P;c*b*pf!oU~6UMA^*lak0bwTS_jd_=W?+5?1g#nQ&LnXi*c72 z2TUJrTZT5dXZC(hazjS4l2>43npvwKZXU1o~vm9R+u7MTPxG&A~f zBV%4#2W)OteDQ7r#oSBcY#On;6{Y_O)B(-%2J_&b$0$#+1cnw=ftlPoF%(=a$BJ)kl+yqE&u1)3)c>Lclx~c2U$kcfA8~e;UGuq*q%% zJ#n}br%HUjf55jB%swwCZpj`t_>b+oa8dhI9ULl_+4#@K#2N?;)E_VA>;H^g5?Y>h z;>mwa^T+kGo%;4|Y2tHwwC{PPEwf(EH<;G@X^03$DH~aTq#{PEI&@H%H8E{32V)(K zszcS2!{Ax^Idg49UYmyliV}iu{CI$q9(hTbx4U278r6r(D7^A!>+fVMB+rG8KVX;>WO0H?Q+;<}6c& z$&@9^haIm?ta|zhl{@aV-~PStbKaXeW!Z!uVEmpjJ}Z^o#&5-C%kNR=b+n&Z@%i+5 z=|!WGd>acy+mhYi+z(p*95xq~gk;jw^P0lc4F8tnZ_|P+*7Ut51>j-EwU7N^GZQA4 z@7Zv|?uo=6+lSiZynC9jQw}<80xya09>RQz@jMV+>vk?@fUTw*m-l>H4GlVF^3HHx zm{m4?iz58#&^e?(bF8j-V$;AUz4&=yZ!@+3;8S7sdVAO1Ziz$pjbirCTVlYk&O7xe zbG;KbdNobC<_tdB*zZuezpD3)f^OV4(I#!6>~B9G&}emEQeJs-)=)w_>8?@cK1SS! zGdoBr#NiqqyybL9uTR&iXi#tf}C0F+6$eE+a?-|njgWN55IZp*TblM`%Sv+R?)`fC5Mf_Pibj@n}T#^ z9oYl3Q9QSg^}?+>0k&Csqs)0wNCe!BA>_vqWIj5CT_TSubHb||A` z{ar%Bc&6gfl2goa&p76WaK;&VA;Ydc%{DOg%@A>nJ$}@x>X>DC#jlUxt~4{%fxn(v zhwkWwJS_Uz6(tyt_6;-&DY%ua9Mu~6sqQhL^zJoVsSg*rVmjLsw{IHFAl(_dY@Ttb zTF?L>&V%3A8IL}^aK&(1Tbx8(Sei_T?Z{vILTCv#H#R$&a@r%}Yw=jgm%OX1tX?wg z2L3=*B6J_9WgrH*YE3dBp+$l1^Nky~J-5g9xLN*A8ThtR~&d-)MNQ2e9gAkz}+)C z-sl_;I_tM*7Uzs43EmO%xHKZ7{9-#A)7PG&dg$<}KX-HdwJU)>pI+Eq)lIFA;Um%b|)q915eB-{Sjuo-uPd@?arIM0Dvwvn{LocN1xeze)3Ev z2=1t|eI8u9{mPTMy^DsNWDj1=Fxf)MXs((>)>tz9H=n-bIFq^ZcFTJVg!g^rreJd3 z>{8cc@YB!_Hl26Pt&k6V@e%d<$%*kg+ZG1n;&QlM?IYKV&v-rgt03i8`{rGH&4sBL z{*tY`tpOvp+3#1^#IKESHiZAA;gURJy7wiQ7e^PbNE{*NBFr|j(^P$HQXyb#8(yAq z!MR0a7Z#cFmX|q+9)eR1KMwm(^F+NPz!M@?LchFG_l8<}``SA+xbw8r3&Qk(_e%j$ zK5Am=6A=;pr#5`8<_JvIC#-Ro4RS9d_ zSKzV_z5CYR_*v&-|JC22y!h*=*IC7|SLpB866vp64)1ARhV;FS?Tkss#|iRAJYT?; z*C!BvIQKaW2$YNyec<)L!QN9*COi_?g=smyF)LFTO3Yel?M-O5aiVd{^nl);>B zOS5XLY+*)^cD)bWQu4x0UC@*%f9v-V?GHQi=vQCA{9)rjK3kA==*N9tNl|#YL3UhT z<7iWW@=bqPPdu(Jx4|xTP;a{(yMMhU_jLOqCrpod*>8!o5f4v}-T%A0@5GL*x1y47 z#DTK1A1%DTqRz>zldD3@)j!GR?Rn-&fxFfGuEUGZ>Dd1k7Y)Zn%@_)PQ=shrQgPvR zOrC0>yJ+Cq_28oc4fcPF#}n+w6DEI)tdAi$kE)YB%@*EDbD`h@YYi67saIbJnj#_C7miE;-!)8mAt}CJs^<4il@3^b^{bRcOJ|6U6_jAqa zF6InDbFnHnuAKz9LN2ZTq&r1Y{@JjPTErm8v5z%pc6^S>8;Uc_)wO5N^X3qCWvPCR zRN3+$6xL>y&6=k(n0t`B7G9kzn@{}3!y0r@KA&1#dv91eI{T+H|D}z=_3Gle`voKv z_zwESe;kf3#73*+M2~LbRgl@mZBca}4sXTx<^Glj*nQ0{=0|*eU~XXcB4L$QG?{*y zcEA1KBl+k;Ut|x&B-S?uLDXpwZm)$vW5byIzOSc<5yPtjHW^Ryy$J4#EH2 zo{1bI)4>RFev6MKz7KJtcgKl6kE53RTg)bWtZzw%g>~c&#E*Y_Gvm!Q8?2Vi;-WWg zg|p^;4ioA(+Sf+0um8Ln7Qbp`bRF;O8wK2WlzL?=_Ft^E(O~w01l6YN9PpR31TDL5 z{o3e0gxf`2&AJ>H%wG7^A-0TO`i91E8hf4#E}v#!SoblRod$a2r#x>;ngKco<#?t? zBa*8~r6Vh({Z|t=GcE1FrVHi**uy~8qYF`g3mQEs3VpmMbol9y_=)&9;BtSwU*$jd z$f7lY0k)w({1zRGc9{_4t881o7;KGnj&&>8o*O(I4?ZtDzVcfU6O?7o>Dp-mk=T7H zB{KXEZunN47?GI+x|?p0{N~-A&qAlZJSUHsX{W|k+Z)-3khSZ+1Y`Od^Ey-ss{tkJ z66xR>y!V^_)n)xY^c+kd^NFt$HEjcDr0s<3<7Y<}>t~t+82YU0+Y4;{z@4(RV(68C zV=o#0$3k`qeB-#Jd_c$c$EoVMn5_2V<7Fwj`^I{AuK%mJlV>=(_V>%TefVRWlVh)s zGH}xv`PGcbn(8S#W<6JD4StCS#GYBRT>5x1e6=fg9S|W}uUq*(Be`KBe&ez&v39>c zUb*6UjGd7(E=&Dt*nPIVP~Iw>zlb}O%LO*ODsKc}<`aSqvPW)e!_0fTCv#4-H!uxS z;%JMLD?b+bdLEkpvfMvglCb-ZqJ46~Ou#pUEU{UAvhwfN+-m(~LfO`P56oi$pu`WU zmWC;Zar=+IY?|VSKrh88YH=X zt-}W30)B3oZ3S*{-T1FUdcF^EhQ|Esn!B8IHzvnIv-vBhvD-?Z2eSK^gE8=q)pLSP zdqxiWKtsWdmFVLR=YePLNM#@Or=O7kmd|`1iEA?RjFAI4z`6(O^sh8s7|?{Nv-l=sckSr-I1Zn?)vC|N%c$*!hJP54g^T|R?XE|x08)XH|T^%B1z<%9EYO=KO# zs^jaM*VS%0D*xUte{*#=nc&|PYYzm{c0RKLB6w#rQRaVWliwiEtR82*Ny}TtO|?c0 zA2D3 zd=jQatv@GIYMr+Wd+^ZhZeV5mq_@KA@cKCE{)#@N%I48EoRnd7Ro4iUbbQ&C6u<-7 zoVtcKYnzHAZauzgZgHU|N~IU}bF)3KH>c&`zW1|W#7DJJQLSma_x%_p@b4$BtXkaB zVgb-of2GBPX?Jp?*35@MFvv5}n0{!T7LRJ2)!%B?=tH{00buH)> z0&*_vq#z1cIvgL_&VK<@tq~vJeJtcb{m@WGmPoiy?C?*cap zGtqXrF;2C?`Az&dq`|iF>~lum^%cn z>L3Og*?Cxeu#Ww@j@?fMBBq|H=9Z%z!*e7^Y@EE{^qk8>R-0Xup69SicY>GLU)_DX z%69X{TAbGA=B}sn=4~neF?0|Q?ku{?uKfo{T~O+7b?jq)`~Cjt23SrCo|wECQ{5h) zSgfc2V#|&Kr{t5oc~`9gy%^+qViqOZ^KsTG>d%C;QqoQ5qc*(PYh4Wmc`5j<;3deR zvn%g^ei()GPsX>{w~f_78j^s}`ZMuNzR2#m@o32!Wq!)PVL|;!Byh-!^nv3JB^og# z*?wF+E!EpK4KtZ78)vTA2;At5Dkx%F1X+MCc(Ze(?5MWv1b|JiR}I@u)4d)I#7OSn zz5K!P!V&<-x@u2%lpF;{etCM%G)9xiaGF)i(w*^7Ul0I&Z5t12J01W=7)LT7(-z}i zqyv@_{_W$7zKcfJr`TP2gX+-_c zEEm{-w))ciJoo+owBxbBHv4t2{QaNS-9X|cwBbnF;{V2_fLVfe0SCdyZk+s|){hiG ztZ<7aOU62QrN4X4QyblE>UWZ}FF4}7@&DNtppBnL0n|!dEk89beP&%5uQKbU7(V~M zLm~|{G<#BB2E=UoZd{JZS^490E9sKSt<5t_4r;+FyFAQi*L>_;{b8u0urUcNtdCA@ z;#H8Mysagw29xSg>yRx}g55YnlZhxwUIP369=Iq6(CorS0q8ff(~oFd^HTr8B@i{JY;%bynoMlIwmtjKBg~m3%j%WYp{p*-2W}UnG=%@iWwjLs&$aw!3(#!q z5v{*T%O9J6YiB;aytCwD>xRpvhHqEhhhuhT@V!>NCDAUs)TJ<@7^P7!knOgA78}?W zM)^O7>K>a1EPRu+b86Xv!~VNVwrO@fa2z8ozBO}VJ0Ci4n7i8~`OZoa6>x(tIL`iA zdBss|<34rFR>ZP>LuWM$6?}-$X?r)d(Y@qL9$4@O{MP2B0K);p{jJ?KH1Re6_NgDQ zI~djGOMs?y`%LZ1`WR_oTXkq&NaI>S5KIiq?KhhoXpQ`o)8%otLnq~}v|#ze(yEf( z^JMSlk~CDD`B?AduK4jFBqei`(`*C4O>DGGPi<~#@*j_$5A@KDal1M? zRGSyCEqL${SiT?`eC9-=X8GI8&mCDi#mV{$NP@O34Ntt9`#i-O2@XhzaBBa3*3@@V zc-F6XD6(Z2Z4e|h9;JbAt}|u!vMK6X#3r-bQ+&K21WGvxG* zI~c^cuucNR*>V*XG3$Asbyiz!eDn8nYe8zOsH}abZ+_jkfj5M9xB9T`l6_-Cc1ihQ zcVhV2tE9z57mM=?CFAipGtLg3l-06N^cxc=_6GEH?EIS^{)+mR!pt1r6p7decz) z@RRG(;7^`@_G)K~Cx3lkU+GJ?zp|)0)CsDenZa2?J9ts&)2{BORc@rtx4hpVOPH~4(cEBevTA~f^Uuyw&vIGO|Xjo z6jgUQ)-EM_B+7i>k3nb5?Dn{jVyi{#te$`S(%D%G&Gav6`E+(dG59tvx(;fD=Qbli-1z~-5t{lV+};KpnCtFE8!;5ueig6I{- zmv2!Rc1w(+H<$hTlmQEmXAdo0(Y00ORdGyuef=H{^DW#TX%aKsUCA!BsFj|Gli4aM zsTG|PQ61kiUQv5Q#0YIYsnQ>@W`8~|Sqt4d{_3+H_4m&7^4=w;PIpd!EZqOI-Tq#`hjJ-&{E%6C z9lJi|%&9or0EZ)p6Qh_l`+*Ekb4A(T$uDq@-Yn13kl{cGK+K+nk*B{$oSvw%{qrs| zVlSh{Bng*jmIw2A&=bRbzfSy6^>gt=&<_7yHROvKS*mm(OJXsz`Ejj*h2Eg?--vEa zLVNhM`R>~;pj(3{G*aMSa8g)mMCcW#@5ZMUHCT0R?1dt08qMc;vbyccj-4+qcWJwl zE}q!9A-Pg&WWGSvuqV#y=%dmzOMKpLJ%IS--&ti_%ST?q`<>bN{NB-QJ@>VH4+RfI z*L5$+J~dqIp?WbG^Zb3R{6W5t3xDGh$!7C;!ugB;1QlM+(T1bERw#ev-V(sM0VShJ6yuOU5P+scc( znqAIc13fP61%mCz>HW^v&DLO&wPP~pr;Rx8j;f2Acd6BM#;Np82Xz%|`kfP0dk7QY zz$eG*!1{?l-_Mz`|L1V8L)Dy`g(u=wrxd?0&N@=0`0P?6a_aL{?gF9%@#DWgI|-XJ*1^}#k8Jh~;mS+u^wG=1k4tY4e+ zt&L?sC=3LI#Byern^b{sK3h-2Zi_yRtU8u@I=*VdjGO6-E#(W6E1fQ$t31>MB$Cep zh^AvUIgxSshu80w;B+6>ta|`zKlSQ&w=#NeV3(QB&E$EUM4$c7vw&iRXQk0WwR|h^ zU;B)NAeXp^qHA^6UNic)Pu!fkphm&${P@wM>md?@HjUx*`ODv&htTp5T%W_g>WK4r956mti?XKYMwGb+blWJ{%a1y zIGkXPzb|ax<*P7C@b#E`uwis#2QnI6ao%{~S658a<0D1Tt2PI;4G&hI?mwO>Dju!~ zPx#h$JQqk6r_EV=QW`ucEQeY>(#knXE$PMrU_pB=qyZ|it%lKFsJ1U_+DSJt=A1B$a< zi@RxTs#BlM3S8Zr5+)YmtsSO4zo;0Duk))+Af3k<5R3E7V*ADl@nNnTlKGr3>`$R$LD% za_WmRT>UfrRc*SYW?TM~xmRI6>+x#s!&OB)qTa<`KD}ED5a=P+6GHacv zMuUxO5w!icjYoYp;cX5$tY~mu0bBio5BLVWq&38^bd_-ksF zsJwjmkeO!J`)0L|P$_eM09tCvMHX*!@*Uc5ckV2`*k6FWP0s3R(q+Haeb5W(XU=SQ z_SiTMKJevF^wo-&dC8Wp%Lepp8cO3f8GNsKHHB!^7fA%s6lPFgda>@#6fx=%#Z-cG zU&hm-{HBzjOCKy-JtK4J1TpXHP#%#{njh(6-SnjJ%yHAV#)Q#+h{^5?x%b(O0cW2mpL90h&|<))k!CmVNFw|AQ0&c6L#=4Tyoh#|JI8x1y|@DXNjiYao&o;_C-?3fo9)Ie?TZt~}yz%7gIT7Bfz zlzXC|^ZD+l?Nct>)7)E%e_Xal85{+`T5Cc4&(Zal0Y8yF1UR5COL|b`T~DsA-rM%; zk&CU1b8gI;vzmKRv^_U?aChp|n~vc)+^H=t7aIbV+i;Ub1%d;?ZP^P4&BKQmj{fY9O-&%! z-S;MpFFm_J#HrDM{g?4OBD$u){*07$B`2o9zIrcCxOZw7jHI<0X^hf}i$y?5SG^`} zlnZ#DQUHS|e%iL-k>`6;ymdDQ96*)Kao?lCyKsku%OsE46NY1$CH(5e|FFd(FZ%0* zx;Iv`f(~`Y_#oS!S8-CGq;9v}@M!H8^3n}B2vmLwWlvSNmy#C-`+0F1N z$0g;&{^sz6y2O*>8IuIt;X~HFr@a={2*Ur2rmuS5Q+8&_#SNEtxmW;BguD(nd~=E- z=kI1liKd(gzm`sK`ze{hKP}^z0eLY@;e|g(4b)ZV!hiM8$@?k#fcjW@BStS;zdCgN zXgs6zna4IDO>B3)s^n>LU%SuVfWwP1V0|E~$2x+JSVDs=i_}0?I3#{peX>`M+EBI6 zpdEEVkt=Xwu3%~s)`p(LmlAe*SiL5Xtw)ET&ciuehQ_B@v)Wt$t8+Yj;y*+#P z;I#5KZ@&YS{|r?B9v|g(>9#-LSYF6+=VrOq4Vxs3g#P)Tt*cS3r(So>t+>6Crad&f zd+oZHEnB0Lp|9rl=&hr*xoG8Kw$o$Gt3yxf-R6^=3~Dfi>n5XptqT>tJN{&gd-7X7 zwpQBpA>Q8zH1oDL{fNIE?b{X{Yh7wQYFXnqs2#PR+c)XPJzP#p8>_dZ^A$sFoP2(>XU&ssSxbD~+HO6kHZAmDQQC-s0p}QIVd}1I z>bSAyap6;-%ma8b;BuR${-!>$>^HOM(bEHS7IJ$ilYW~(xAsSWqy@|-vzCc4Pkvk5 zcic$6^5jg$(x+>BlhScO#cl7PCY>&a1r|=C}hr6O_4Av%t!nSH3HO6EZiohLwO4 zjtpJ)O`8|(t9sjnkWP(69eHu|k@l(8D~_C6upJX&eqqHd|BLsN>_3pS>AlzfcTQPF zT1eOY(ULD=4bl4WXNwGM$x5$STwL8)$jt2V=`fsH6C7MS_YWj}Jo^5Z(uq3Lg0?_2 zpz3q2nrxp4?5Qm2xzRsN1hB`2P{7XCRu&2tzO`7;^DU>=3<7VLd9{v>&IQJNiq#5m z7}#*xZFlszH2iuJ^gX~W^F2PbRZd;6%Kx-ti=I#uUhGLAz+&zHgm4r$k^qhy+Eo5B zdx#d0-Tomh?)`%{D3BU>2{z5fRl^3A654-5l@b- zc?q5Ub7srEWBrpS$EBqPhx?p?C|?xC#-MUtK>WA@d=c3U;GNgD6N9;mnLA1MhG!AL zUn-C3O;hcdLnshq1ngKEUl(h=4?M_+PD@XkCeZo8D?&@d7mGE^EPj=7cg^UB-`u5x zF)J!=+Z2+RmQ#Xq27M2u30#Vo0?bj|zjV~GDCBa*{A^I=N+ZSUFDllacn{K*TedpB1*yGuD@Ie?7koygK_3Hi;fKFQ2 zpWR_0qzz}L=4&o5Jx+k^!=7Aw=G03~pycqvRcn{F14T8mbC;h-8pVD+X!U;r5%=ge zXrZjyHk9Jl)NdG5^68K38Vdi_?zDwf)c$_3p` z>)SGN)=ES5v3>1v0|{=ss@vpm{8;bGBhSj{-r+#92=naVqS_miKw)*=+q-nrHJy39 z#QT#!S{FNg05ULx$3{-9*ul4>9U4#JWr5(Gp}E1;#Wuedl{|-VUK;O-Ye3s9r=~5j)VqzS+t86j(M}bUqbrCM@aNWU(nvY|d zl-!-~mwW1r-}Wt_#-HGMuFO%5vLLLw)f1i(($&Y0!~oE%cv02X-7|NZ*ljG?nmZ%8 z(t4@i?=LYGwGGIhG!amvJRfvq355ys?3#r%z3TWfoU^5>cv9B>caEe_R_HQ&(hEwfc+_+j*5` zw;QSRXs1zy8D(B`cuyR5uy%&dQqIzSn<`b7K*f?o^)NyQ@V6&}1E4+ZP-myua}zcE zwin|-X4`I<CPSa-TgHzk z(WCO8{@w!vE@BzAaoOJ7DrwVfaLzbh;6l&X$G7tuT*RHT$;z9qO5=bb)M8tm zQjz6xN0=!^7{Cem(QH`+2l}${&cM>vjBd`anAZ( z#H_l!H~ze=!mb4?ZhqLxc7AxB`d{8_(qzAO*_M1*SM~e&mb9Sov7*jol#cb2VnFr< zalblH(Wb)f0J8|VJ-@>NBiz~fs}I1C^(W6)jB2#koocNb?;{bozNcHACT+eH)8V5p zV_uQ^EEelV>S!$U(Q?ao`GD=Q)cOg?@e5 zR}b%O`_gn!XIE9|AbkVG{^!Fbuef8MTd$wJx>5Ir9$-qhzsPDL)?K+sHO|PZDD;U^ zzHSPP5p83Xe$sm3Z>t@I>01I6L0#U|&pc&PH@{qRgZ%wQKv_8V-CeaF@lV|1x*XvX z7Zhbe>sV${iuiZ?#egx)>Y*eEh*^tb2nNMLXoyTPC+7|^UXC)In0mXa zcmj=pc|EQwd3#D4WTZ2g72ORmwyQ<(7^YD3t0y1~a{k?R!S}fFOmewSsbbx}!MlA} z`(JU^AI?eZfGmm-`@(PCrVm34H^GAazde}P{BGf_9+07VfPTanP^-hY)#U6PG{*bJ zG61m2Ps|OwtNpVn`Axj+E3&8*&&QC_}&P|zHbDc%6OvWO$egSn}frnO^ z167!16NcG<&dS|4Cd7Tpb&_5 z2uL>w2#5jFlF~@Ck#3}$O)DTMUDBa+x0HlZ(y=8r`K%l8j5Bk7bIy73y!*eJ`QW~5 z#W%0(T6O-wx>hQ%dt3N(ms@~aX~*KF72mw25o~QN%S#(^Ic{B} zPFz(oW?u%+M7Mi*wke@qc+1PP8V29SJ|ht}#;J8x4HT5S3gQ69iUTRqoW`kP^4#l9 zoOv}j6;hcM#)6;_bgrc9%lj4-vIpR?3fB7p&#(}7cFyDFHkr(R@TowqFz$<>>z*;j zG0gv5701p_2lX2EqLZ}HpoiLH?5)M*x!ba9{sL;T`?rlew(T(8z`nJ?>@muMnGH;S zWo9~#8C8|VE68Y)>4a~T@xfSAw_BNV?}`YGg`%i+$uUT#In+Of(<4Q_FSR6C4_`oF z_H-7E8tH1dM?8HTbS2uhrSbvwxs^wXw5(Da)RY)1CUXsM$zZIS++S0zYV=E&Jv72l zK@{@iJ2l~PXc!u2;CI1Wv}jnpeVCYj{P@bsH?v`Q-67U7Uz+tIhbPA`5YW@kP~Pkd zxpGOZjj1qnFSYV)O`Fq7GaqouHh8U2u``H1z0D+57sDY{w;}tRtx|PQ#BeE7YpE@V zF1dj2@croF9f?^5eUDeEk2`L`Td0w}id=-ijl4?Tmo(Z}*qDkED|1lRf86UaDr%&h z)6@Q({kV0#cx(bY&|3%2qg@8b3wU!`N z-j(oVJ`7$WK)PFEGOW!Ibny+}_E#&92d?5(B@gx^dR8CH^A9xk6f)Od)KA?9Cs( zY#*xd3tW3=*@Vr=(SdI_*0}qVoZZYJEB5AfD@Uo>xR_A>mBJ_t!x;xsInEkN^m%pv z3FkdiE5N{rWy&f2Olmu%RW^c1I_H+Vz6^4-8+95(9F5s`Jc|`UTp~4VoZw)c)9g#% zas`=w5kn2ex`o3%jR%m}t3zqL$ou?lCLes|>`Xv5TEpwBs1s?Cd4A4J*$+xq##(QU zEEA(KOZkxEQa?P04#*^VZ~*PyX1D1U#zX`=E$Pf+3hua#1OjO5dp*W~C8N5D+}-yu zMyQaq5`oy}Q>1{9pkw%0mc_`b!h*6#>%>sqybMOTH#zNl0bchN@@zF_=SSw|lp#5Y zu3Nc1vu_o1xI#?Lm~;-~C%$Iv@W1%FPt2iA4dp3Z-0ZLV?U=vyv~J!EFtMe?5Sk6< zUAbpfi-tKZ=Qsc^WeHh)^7slgoJqfZ4 zD@?Qr9^{Bxf9obrL5GPU@RSJr9(YIT{7a(`PmW6^Mv7Z`6DprmA{Vu84*z_O*A2ZJ zb&26SQ4DSHa#XZ|rGXa4Vlh0nFzD^<;t4DBRj~{%1S{sKE+>zT3k${htCWok2Qi<* zfhmB27VxyMvOW2c?d4R_9;)OH@oY8gGx@?N{;Hb|{D@4niKOD>UCRe>MwZDiipnw~ z7s;k$hkHSe&Bad5lY5o2Te-O8d_z#C`7|~)8y(Al zEAZBH_mX1}l(hKd&pvrB)sH5O0}{%upxh-A<=`iTiDe*FuGl#za+6BN4OY#`MPYTvVpzQQ3YG>R~oaqPfOYkHAB zwrI1NIcEFQy^>Q=rA(tXz!YRA$O_JSj}!G;Q35{N-~4@3Mpb0XQfEx%*o)WUHErzm(^kl zRgJ=@z9SPXkW~F9FbZhD9hAxV#Zo2H@u_fYB1Qh)I~rS(=+Ix54f5}@YwYmBYpJAo zvvNPA-44@Eh1vCZWjf|~_D&V{t=J@K{+3>Ig5;VVB;DO&?N}L>vefLo zC#@B<)BcgAX_1SM*bNl@&a`nv2n{?4us~v_wm2QH{_QyyIwNn_kL+NL#1csdcga-@ zIyt+wcO?lZLK#fg!#;z3MsV#dB|3~Qsz*L#ln)QDW_ zi$xGDNdcqCNm+rnvW6d&Zbs|;dpU$o)`0BBd?@}}OE|+^kn^62wWa!0w9Kq<2!mX_ z0aSnM7_(?1gK7^YwEX6}hoIeC1dHP|g$-)DR3Uinav}keu-BO)OeozzjfVE{NZSJs~jYF`~GX1bn+X-2tAxijQv+Y&|xK^0&C zE&rfX^t>LYKM^Zu;fpTL6p6rs!8^TzfW?l@uR)tkBfHNHTWx!wk;{Y*WiCv!RQuXr z_iyeVlJ9a@%OBe}JJwu-GEt181V6B+yyfL%+hsbqezsz9INM5=0m8hoWT{26oD-;9 zeU#Ww4VNqM9LiSi+Bjw-Y!{Cx@@BR-k|jjG{jyiiYm=X%+C8!W zvzMumT(g?6)aHN`v8|_Ro&`~E9&4(7&n1hO)OuJ~GY3DFqS&?%_LC(z>eq zBY?g0j*^;%c+Q?7443-cXOCzs&_Ai~Hw%MXXlS@j(_v1(ra@M>FYTA_6{msP1}7I( z7>V<^M@ybfFIQr$o=AY=>03FV29zeJ-QMjtfh=xB+N-ZZw}wA$#z=X*JCKdk`nn&A z{KxkdjjnKz(cmu+2+*D;PkB?|9-u!HLtK=aPReY;~>nR z>U-F>4W4JL!RISzHF+s3ZA!WNF+q1cI?^e(f{Eyxe;ZS7W!Q8C@An}16?=T^IpKio z?DSUdh0`q68O<_`D^`-VW8Ana2Gx7#?sp3A{z$RSIp^F|`8v+5oN=Aaocz3oiE!x{ zH%TmDpcl0-o*@r&$z!U?RV(YwnWPObe`5z~Y9F)3gMoJ-YIxVV&2D!1W9J{1R-`WZ z3Z{Zs)3>_C3;=2hEc5N;~Mi1Y5%+RMX{xaq|W;w@D<*Q(`@qwUBpL34&7 zeOXrSf!5wE|kE zt7$UnVr2p2Q`i@D^~BUcoT-c0Sq|GzlZhT7;;?fs-g`6|HC$R<`;iw{R0EHSMzfN# z??Zbd^L$vY&RWlb(Rs3YR>9gAo$=iIJ#WP$vq$=Eli_Faf56bIYkbsgb6<3Xw{M&L zh#P%r`r>UQlImL@!Q1xpx^>JoElhvi59vtzJXdyAifjA=^-nL&88SCNcg%%0bMiEqNy`AV+5DyzF74BhrRD^QNSGkxwH ztNWwX6&j?y?HbIDRbxft+={Qj{%9rK3WVwRjG`_xk*X{ohSaB5#FqDUQp7YPeFfWrj~)(I5q2 ztTfYRq)5e^A}xMd4zx2$a6L|Vc&s|_BY~-?^5>p4Ca_>4>5`vVtaoT60`5!vY@vW&TdDiGZ2x~{GOKbj&| zX@rQ|q$nZg##KR`YOjdl=6dDrb6OzXK3}}kJa4Tm7uyb4D)YL!8jcZ`*RRjpweXER z(nrXG$m4^H!-vA=QdIs*QSgQ_i{`PFi%t?O!XrKzjWQx>d3@M}96T_WzfyxAeT1~P zHBGg<6XO}eWU14`Rlx4;?ODFbXC-C{2imlH?Du?(VQ?OE^sI_YnR~?-IFkz#F68Y{ zN3s-Ja0zsn>Di=blOnA3xyKJcEdl88j@Z?QNy&lc}eBF$Gnxfd>BRCsgcGr?|DU7 zn2I9?3ucX2tPESBXpHN-bJuk)K?$nen>CS^w8wYi<`&JSqdo~(l%Rm6rMz<^R_ekJh$^S-G&qclk{Al zZNg9zo_=!Wr~YZ|p@XAsK~7=iJA(cNyI@YABFjx! zddsq^xk{+2eXp&5ENFEV-t`Kk{|Ne2asu-jz^NThFyX+Q&Wqv?cA&;XVzfN;HQp$U4nstx(R%~!;(*xRtBa8(;-GKdjhI_D@cMB(TzKIg^ zKX*FkywIFCg8?xJH42J{MzzBbj^wv#GwHrza)0xSs`+)3cN`FRsg1b=hzba{e>}$) zt>t-9A$%_bN^U7`)xA%LoqF&ckRk~qmkPUf>)q7_my7z^0pkv`wRjI0uGtWwnX(wo zl#j-a7qIA#)2&l(6fC9N7RfUWs{SY_mKAk%dcscwy5L=<-I;`^)4l{vyFI_g@mlmJ zdcRwIiD{UUg>sF>k4V0lR-H*n5aS0v{*EBVkmLY62_Vy4Cvp&nb&>jFp)FGgWvhvG z_g6Dc935_V0P=Hq=uT0cN?1;0CO;)UFR|5iiHtmsvf$&C;ted`;nr!49s~`2-QqfR zatBqmTIGF?Ts`P2V{-I$`*vcK&hWIrEhqu{TU_rmI3+F=C#q6rA8Mr0R)itUG{}eX zeLaS4qp9HkT0uCuP5!RX$gfimR7M$Ia97NMW7SVtwCfSSdE0;bB%juo3-2$Tm=JDq z5S;$yDv*?btGcH&M4(Yjk^SdUoGpGJ(_3uWA?ixLeFaJ&uA4#$gqKEWJ3A(|h|nJ9 zLnb2pyMgAfqf(7$Zs6YcAi+Bxth@hju>Rj*{nP&Z|8Zq8r4q8J89>C*PQj!7k7t1L zL@t8c>K%d)UT~e;Qg@{a65&GJvv>>f<08urcNaSVB7L-AhQK@U95!JLq!XrIVTI@#IzciE|MY;_j+CjCr6artfREk@J^2`CK`*0)-D=n?sQuF;9-nXpPt{D}!cUlE)7W(U7>Q2_PwROY90e%tXRg=lMk8w%P!Ge-4)-=9D4shYOH7bYN6ZuC!)Eex9i2C-t zIzVP0P)w8f1O#{_dt`V#^Y}XTBA~VH+XyK@mD3|AI8C03>{#SRls$;KL&ccxR-F}% z&RB?FgB&>v!~M>@EH(;Mv5dyrK{!0L?R336%o-SSc{EkRv*_S0iSK0SK+b~r+HU`q z6RY}(?02hr1LiV|c(Fy*{Rk7sohg+pWe`^2+`%yz1Ip>cVW<~LPPR3%mUb8d{y_Qy z{VRaCQoUSU`X(qbH*-#Vb78>AXmt!mM1`cBF4XUk)}ZfQ#t#dAmDV^eIr|2el`nfK zyuE2ptw3*?=3!B=(FFBsH{hM+3j4u|PbWJNDii(7otObO9=|{{|DoH`ZmWsVte%K5 zA-6X!B}E`H*Vo02VzYs}#$-Qd$>g5fJ5n z+p*qYAGr0)AnPMb+1}BV)`BqHE>Tymz8~(QMpnb(fbtZmmD`pS$ipaBtq^9{W!~)P zvy4chm?IeQp~6vH8;KFih0}oe`tReO9rD?C3skZz37%^@qx6_OXpGUb9=vO?p<3J- zPH2AZ_i^Vex67fU)k@ji2#lCfm3y@knPnC*k`m7Vf@EXKsIsfdKl(x273fy^DcuoO z9fMIPImx*OZkN#_%mqJE?PhFcdzX3W3S0{67r}5pEwQElJ|;O>kMvkImFr9B$1~}$ zRLbbJ@%+1>sOPo9HK!*xHTxVu#49=5)_P-s`SPhxzVZ84h=))kSl!1Dw~c^bX34Va zm%#W;{ZO3Z+Lx*EZVA`~iAB(d$diba0Ys!^8o?ko!ZDnwK3F!7gQN`C(Z3`|8A487 zST;SA-`DkH@Pe>G`G{^9D(AEORKn?7Q~dGP51Gnb4hCI{ix(lL=+VK%k*RTC%}xVr zBesgD$~(Gwl``+UywY4cEOl7d?wD#4wrbqxhZ-gVy6+w;(Vdnq=Klz{BBJVaJIo!Y zNNnFOKz&=F8*~l3*A0{0Alj@FC{0YA%MOeJfRwKN!|j@q(#cx6{2j8GZ$~LXJgopV zjhfqwrvR!&{6|1%2r+T6V&?}nkYnPHHgjDP;*X{o1QGE~wCX=xP(_gLYdztB(PR{cDCklvE~Z;>RYHX zJ_L({Sj%CLZ)5sR2_8-fE_q9d=+>-xvC_`vi_vyYO+;7!Oq<>ZDN;zYPT$QQ4|Q#E za!ris{j_L}*!UU%#ae>njbpQvQuY+;wM9+ugVtntGgPB!K?xr83CebQ5c?-WGKNvK z9?2>EmWOo|hk22LKzVR4-sNa-!dwq@(S8WbK{zX!m3(+)=8Jk?{PR2CCIEueU+f5g z`?C2uk9L{_}9-ZKub(Q0BGv)6{U#2N)Wv7p`9%|Ze2`K9F@|=Y94Mx zXJ3*?jAmBV?`ru`72o8rAflaHzHp1_C~jiEalfr*U&fMrvAPWf#H8rv@;NKxG2dL{ zhpe485yrDlz_glgf!{vMI48K<6HGssuMi$GHxEzR zNd0c03U!FM3RzAgwT?c_rlQS2y85vhmZJ_K*%5h@v zmO7g~cAArBWBu-x>_fHNK1c}N|CynXQZ7Bqv23e}K3O6&=`}Rv1!Gw0;BscT2fW-4Nv^bSBjfK+I+#an6Nz@=0cr6~gwvis2AX@J??PXxDpO z&XWUVwTiwqh)S`F;4qFNV-y4oyDS#cp-}sswQqc3?Upl%_AjT_6gHd)5C7qcjt2lC}^yt@dK@U-9RL1X3Bu9Y4(ESp;4Ip4f zvV?OfY&8)xRHMe(>Ct%)*-!Q4wucR!_1$hTVok*5`{faR$^4~6yKGljS<$-LfFl;5 zMB`9eu!qk%D8st7JP*1vTB~MMZ-ybGBH4e^%?=*G`^J;6rEClM7er|f8-O+ntf1H(l)AMCLW>$|nn?&mR0O)~Jt>*dl-eA0-0;DXS0_<_s9Mpp0N@^>BvVYFc z{S>69PL=r2OXZqmTRDom<|*QGtNg>ll`r|}k|Q&E$pjFbi!oi8Rtq!j-px3}7rNvd zmVyiWGjw9jeAWf+?|8eU!6q^jh}M$?By1DU_k#CM-N~IlZ==`D*lt3+1kcmFoyN*- z5P+k@SQvWc24k_5ysHf)v3U*ZDDY7G^i3~+dt z?%4EIT<0ndS0^<2wS4xUcRTK#E+3D-EgwRFg{2q!0d%GE2%K>F)`YA;+&g5m4uPj~ z7X#vmsQdnl@&{N5phFMtBcr(sxX?t^&&Q!welwNN(2?+h@P=xrLt_WU82z>a6oiZ? zRYYW5KbaI`jo-|0YlHt2QfBORZkLH_r}IZItv6g4wtchd$Kqxd2dlR@c;(N~Y6Jl( z;yAl;c#|WbGH@xW+eC5$9g{7Yk9ZdTG#*IRp40bjI-C|C5;!hO3t#xfxJ%gbD6{ z!|ec)lP{tx`$(1D67mXaK;*g{EUKZW)7@3J zO!%rgz;8q6J@%PxJpB#ebSoFswV8Cd>em(jHk1B{yLahCg88>%P(LIEV;6HcB~;4ZO+M=HI$jBYHDaKT zJZwG9RL=ezR|<-MO8Gv17n#L2;)F6!bOk(?m{((BW?vfg!BNrwVGfyU_%V8ANsX508Pu7E*j_#OmE3$f-NCNX_zg z7>o~coIGPN|6PR;=Dxr`BNQ6E^QYbFkSF_Zu z?hBZ8Qa>%kUWVWZ|H^{xLxEKx?Z|c^EoSR&9jIy0;ybo!x20z5rn!orfHVne-mBsM z?IK``z|@4I{xvoK@iCyO6ig!mhPE*uD%?WaBk9*W_R3EI0ynPw`CA&I@ZF5?x`TR+ zWhkqq|-^E`u)1VJfCPTT|zt$!ia2Yy6xg%mHHJ{l(;`@IE zlh6*pYct{b6&ix25ZhCkYkV3^QvGFOEQ$hB$~J>jI3-NZl0^K%0;rVjmfQ>QIS%r` zx5ezgi@JEav={$&gOg|!Xm$RYCV>6<=SSWK#>Ya;7Yy?~P7pSrK=QqMHwCUac(Qsl zMStJfIrI1V4}SLPe{w&k-|+gH{#0Y2K2S2!U-?=lYfgAzj)y*?ppvcT5v$QWpfR6v z(XHPr4n#p`cw`Ar*U9*wc70#yNVQXia_P%Akp2V|)%L}S9+CLE9#^xmge6(Fr6~sR z@2OY%=~nws_F2C;HGBTQZ-h*A#*k%z6hHs~SyyZv(5*Vqyl)S*Nq^UnxGXXHTc8?; zXVc^HD!1m)0fMU>Yx#pjYIp*048j7A86_7IBIH^_AKqjH@6^%zJN%C3bj zItJvLP%!osO?r6EqpRBeSKz10XXGWeUK5fxdcbyo3f8<=KRdN0fS;pgdK;iV0yi zJjr<=e8Mj|exX@~*EDnM>?>~7!XD>0;rTa7D3YA72vLZP)#N}XYmfOuqeuBqg@htb z$ne|!pY=W^&PS9ZK&c)~X&jzjeA^AgX<%BdrRxMx>x#~xU}k$&W8wQ)^f@XdalV}< zR%(v(d~cefPl)5!S0IxdRj^m9GjK|fnCUqLt<2#vrATMffFjGMs4-JsoB0%;PgMW$ z9TI?Qdw1;9v#U{E$zqL8j5kF9b%BPJ#9pfuq_9gF&Lt3*z>Z|};Z||I91~G%Zu#PS z8H#}mawj%c7h`q)*6E->`17DY(EtKglP^w-XX+svBtREWEX8@8ITTVFXZFVzq2<_8 z)*V;U4<`o{20;xTLS_|RhMw;)`X>h6+M~%R7FdIhm*?wO{g*C-FN$?jw9x?W)Q5xl z+^_oYpCZ6(_w{65$$;PpbJ?exrMzq(2LSgV>_fyzv+gjUqbu>Fab~vvI&`A=Wq)@6 zyVt}$5_2bR%}PGj=0(D8hCY>2P6;h?=DW-?-D&VeZ3AxRQ?5wwAL8ms1<_{ZoQ{D{ZeYR;)5QS*=xYG-Ww;e#o(y$ttuv(9; z;-L!p?(;rr!HX)|>5=~Dh%|YNoDlNzTsck9ezT)VF(?E^2x=i)(f^S$lvxf@UBfsW zf3?biNoE~Fx3;p5=yGfX1uyJCh#Es6mZa9f!fM zUdnYIZI#r>PUG?}baRmQ$n-v@z?$3ie$CNd4Z|Ej zf0j<~LlE_N!Ec@fVaQ;zOh1z|HLjR55MFIT z?XA`bat9OfhH93Wsaqa`9xZr2Qt-&i@{sjtgEbtfd9*tij&#{na*2#TT2QJ1g)l%? z4o430J=jOZ)u7_0_W^}9B0h=JRK@ae^>AesJb{ndS^FAwkJZ3aCAzt}uB4>+BM|C` z#6wcF;Yi9Mmo-e6=g3K9(vhR(p}*$7w&h{346AG>RG)ORBqvDI+Rkqxhv;chP9N`L z?tj+`_{d75H~`ULna7I=&z#nXe~Z?|a8g!}R*wz@k&Ptg)9x^{ulHnr0uh^3&!YV` zAHfIr+k8M+KD`eZ4dFpcGtAxwBG+%7=mlVMKSb!Pw7I5KgX534X9 zs@p*?Ye{bWxdzZ$wnkO~%|&1i4EWJ#nCDOUUGh0~e(1E228_8RP}&s3_2uaVwLBM8 z+cckVdHm6EmvdA+rb0AQ5Y-|Np0{8*-f&q=y|dz;M@Ad`_B`YAIq;9*&*YgK&2T&$ zZrryla|+UQbHe>I`@5Tq;OPsNhY(Go6I_5AHLGAg{>jmN(jnvV|0!jwL>@nZa^X9! zbj9&wp$9_OEoA1(b$S3)8=g&Q6HbjKITJZ3(kb1VGcWz-4Svb9aiIzHZ(@$G2a-tl zJ6%Ab5KICnj;8SA1_*A11_Qmz;bo(}0?vU)m6QOFdk$@Sd4T35q$d2$xi)KIkjn_V z|1ce|9457>$A?r(hH*(l%Jx<&y7oaxFMYp_;-H6uE>#bl|Iva1d_PWZToESS3jhX% ziVQC(!;Lr>ZJ4rHP`0}?(dJci3Ba%J>dA0?gGmBY^L5 zH`sN2+u(j0J|z4eKGaP=MBFE4HR>=`hA_b-*J|d#E6|uy%>1XqHdN4qLPN3S&SMaZ z^$DtB0R3b$xc#Y71r^W$O#k7FV*mutNnS&Zc!4A4>AHoRtjI!b@YX~cyg|yPp(D=M z{{&_E4N?Gw=7|PGlAZ;s0P2`B`d=sf_oxB*>wkT`f(bDqa6z@ zN(hV&Fh2Ld#O3S~*fU8`d&}Aw13>+7i&_e4ak?LxgkEfo<;KK(6g5et0D(y-Hb3o?kvQn_SVN*Vh0xvo}e(^mD>c0}eM~ zzF+AyWV4FV9rwY@-8+WYcfJT7tne2KNPR_WBu;2=KSf(`bONm z4+JneKyk;2rEK~NBp=ZSWK|DhFQ2rtPy442fbwVnDR(cXeBR=(BdL`0wY`P`TX&PL zYw)=Q)1y=felKp;_rM3Meuul}_^~!IpUX-(xN(mQzCRwMSNER!(YpK)R7V_FT$$C} zEN986F8LM_Xu^NVQ8xyt>q%^xlpJF#1*XA_#=ha3c+brw@Ebn|J}1BGop<#dARyFA zr|F&URZSgQBxMIgKa-^Z^fS6{*o|>O`&j|4CFD|7U%EUOaMJ9+yjD9Y)ZQ1cUIr&X z9R~GmL1M58yms`qLjCG{#{g(RY97cp?4$RXXbQL<4#Mj7Mv@ke^ zk$ezb*B_=zg=e{BSBvd@C*LUNBr3L~a!O&LP8N18doRrBe0^4!U+2MJ%Dh9(`~Ixe z25YN8=7S3$(u-4x={WAGL=KnI%&}Ikxzo)9nrJ&6lJW=T-pvHi*EbN^U;rvg5q-_r zXu8Rdf$TIZ;Ym2ndJ$BhWr6tg?0PTd+&U6ai?a?vEKO&cS)g{4DG6dYAZKpp61a6^ z{S+~4RP)BaMe%F)pLjo(*E^m4^`YjU0uBOS^o9f@l`*CTzF<0ao?${sp`+RyvW4{3Z@Zn~b&$zL6ZT0ODC+WR?aI z-MsDb!AU`+lakZErHv`YVbTq=eeGMFRc_l?+!80duNFQ|J#9Rc!FnploT)Th=m@i} z!=*0Rs$CL3zJVU=)s^O{!cLyHYK*}dgGXkzuR*JWmbZb{NfWrVzwH=uaE?K5G{6P- z0x@3=e%QnXMD&Gh<>|{}($dD$dep~%X`0r657%OgUYpMBBQ@HfXzkY35Z&sVCgr|+ z!bE!;G^@PR>|Ao+rex`3>(s-8_p8eDvzt(xOfBwo@BC@>Z-n}u?|k6E3u9ex^6!&kNYDlP zk}Rq)I-2j4Uo#c6VW5*#sHfbF-NM_RR_hkc-CUQGDYz`j1go)_YOFU$eW%#~=QF&c zI{<~&yo4GwlIBRT5{EkbT%GtRV8LQ5=Hefacgl_q_m=m=Gjpp)zS>PV5#o}%r|sE% zI)KrYPAv{d3T)sn0up~)`_BWLCa|C`w(x)q?IYbWA|v+NZ&iYPpdi$LBXxGI4!4B% zQhj^LT|K~PM*O_^{T%;`cnfdtrMx;7IaiwtDR?(f+Al%B{R5zyMGhyMptrsJo+0x- zkduf?X&|&XC4KKLrl623q*XRLW~>*~0AyI0dmKTaW!mZL+2;8IZdi{otEhVjG(yto zKJ2`v-hQ6r5%JA+DTNf9)iFePT$lmJFMAS$THxhmtuDFugFHg`4jPOV$#o}MWQ3BH z46Ia~ok^C_SeC-j=xaj&kWd;^%UW4ko~8-p^zxU>mI~T-D^0$0*Rlb{w$!SawdGEZ z_qQkL)9#C8TqJ$Y}ZW94w76Z2!@wY5PYld=$TDed((|!-_f*VGEjy{2s~iA<3xLs zPg$>lSw<@N3pL#t%5y75%+<0HLMnG)&JEX;bi?u=(hSfdtFz``sYAT1t*jR^bD{9- z_)Y4>7L8cj^3EFsGHdwTS)uS|_vao@rktm#nzL@pzqT4wvyy$JZ#8OKLPx;IL4)jd zue@Qm?JqLkT*NW(KXmR{u^5zfMLInu9rM$7NDogV-Bwi8Ei*Pn83bJ%!vvg6H z+}+Ey`p+OUh>n?EUIyxk*+7okx9q`_DA)(EUxs0^m9g;3%2s~+vU(>V;@UXrtJ!faMsJ#4<9F@!VU-L z#O30eT_+x)EB^Ui@TZp7O}tkV(WQ9sff4oJWwWs z#r>4N1A*OVII2IcJAmpl@T)|h7jKz*twr;c`wOv7%Rq?Gg7g;nG1*a6@7^XL)*n|q zNpXc|X9_DGELcUSw#A+Chk4Ni^YyZr4jQ4GFwAf~nx!G(MBTxIM_g!zMZihci+a-- ziCQZt?#*Oxe9P(funf2rjlQYnvk1}X(oCzNgG5#;RzGI88wAUl8g4#jVZn%DwP+~p z`*H`DM?B~29+0AGh#rwS;OjSjiOk_)eJCHy2C zb!X`s4EKr)pcuzO5Qy3BnxiVzyu6DM$Zc^mC@*a~W&|i?tYh8Lyg~7q^73r*3e9Cmbc$X535g67&zA6#|LRcGfd1R~(_992r{U$WI7mvV7&$%KcJa ztvgl74}0f6kM%Pg6pMVB^S-=8%d}RyXilR~z##X4^Gw)AiUt)@j+CeI{k1%!_#H3-^s-JCMr!Jwh6zL<%ImtP0<_(X$u^ zk7&DZS{+cE-e%rQgVd&|a0TM-1H0}?ddTF;Fk(Aha%0CA%!7W{9to|jhfS`qFp(TR ze;NUy%2w`SPmHN+=rACaX*IN^VYzUln|+MvZ+83SmX$0tfnyc@HVD!=i2wK}u<{^K zEN0FHij|CWEtzRuOobM9W%Vlw&*b{}dsC1sh^9s%qek2SQtcYosu~b|! zp1W6?rZ|$|@6?s7<^m>QY4AoR)@(M{YTwhXl@H>M7>D+ZjfVs(l}^i-ZPeq^-z?dP z%0oL~&BT)YI2C+&U5-EUr0pZnv?wv_A2Apq1tHJyZ30%N&b*hGpB#u9etwoJ>pQza zce3tgJYad`VXDdkx?G8Q66@u?EZ-?PNB$ql9y}iqT{KAX=2X=Uj04}2`hp+l?^F4j zjpGz(tVNjEY!v}cg|MLEXIMK?U9g=U+DUrG@kS0b zvEZ`lx*E3W5f}0v<*q~x16AX$FhkHsjvlJzjCxmJKLG5|V3@g`Wi~G(A;uc+(HibD z?P%78ycL|3m1c|F5V)UC=zz%x9TLu)*vD3(PERbNwBF<7;=AFbwBqGr# z{7g?$(N6M7i`!2k^yw=>QsMN&jxm4~f&xG*Q%&N+{m*5f_%pHVB}#8tk+Ko?Y6T}} z2+m=gK9uFSI8jsM)T37AP+W}PD*5Bq-lAJ>S6eyx2f^if&eiw0=wNb3W|eo#r?B1P#@TV(>|~+OBn|zNR-{KS?i??&)1?5cxx^0%cCd} z3&e4XnNmr^Ymv=-c@1hfx8bjCbCe4ktM3ctj*h<-Xsx%JJX5()RBr@UDUQ>FL|iCo z`&{+!3}r4h0#`v}%Gj7J$4+E6uF^1qQ@+?zTsuaIK8$`rq+H#dg_aA%p+NT+oB}%Q zj?I!M6VOVPf}GFgn`#P{UuaQ>tyT;9YIf7L6@~@ zK?;VBJGQ}r#frHSodMp@-%a&{B5fkoYBu$e$nL0LP7K3+TX)GX`~XPyHx7k;Vj`~d zn#V_z8vJS<8%#u%4`Ux>&)<@Oj~ZK=ei(%7czz6x74mh8)&%hrFKeq*z; z40Ehe;EBt~vTe6B8%7Lf!y40~Ss1DyByGI+)QzVcv((1`BeoLv%|gzLK!-uEcAsY> z1-EH|2hc-FRt-?r@@1T#v&{yDGJoQkil9?4lNfAO)OXMc2qf&`y4S!=73f!4Tk_S{d8Y_Nn&KEqJk*9-6O8=J&{A~ZX3nY5+J_u%8 zrRoHz8dUyD1%EH2XobNkL@HNAT|oinq1vF%emup0e*s?ZAer041H-XVsUsB{upC}^ z|E0YfcUsq>JpK+FNlGyA+qS)eU|42>at1-lmni|`qYQxce+jrlc;9VK!~f zKZQk$q+*vRK<(fjIEfr)vZgTk|KlQb)E&30QG)`7PZX(u zJ~H%p2gnyFkJWyX=>0jww+Ul=H^6_1%;uw2s{xnyh zuaBJs0!c2^#f3`tJp8h4*jly~Q&IpQEW_cOBVyCEP3zN~!N}62SFE7+!AFXF?o|4^ z_SBq>`-KH4Cd{@KpW57oGdO3&2yPAO6b|fwUbGhwtkWa90nW?(F%YSexVmoZ%)p`0 zmgigAFS;Yp$OgD0qk}_i^92T?d!10cC-y8gWoa1B#QQO8@JYV!{hA#Ep z1GgBKIKG8Q`{T1gSkI2oibm2rB^vfOX4>ii;E8?E`vC1(a0znpSzJOVK`?wVLO9eZ zVX@ZA8H_<>+guBNo-^Xv@@sTmy=q^)BqIF0FWS5n(VEWOYWCl}AVlazRny|9Jt6!~ z;~kuFRa+xWq~Pdz{=mf<-C*1iW#iIL?w??skqUD>Yw?=(j>D01E|CN$Hzk#5C&K@Z zq(=XuVxrGL?FH0 z-oBuzGBU8R(`J&p#urt9;rRh9f8-i>z`sU`c(j4qIlK7FMGD6?;US>2c1PI&bYTjsIQo4#+Ubeqi(9;C*$;HU9NWohp}dIo-V>6 zXf-%$h}Ek2YuoiJNP0mHuS!tZ%CsTzhr^@y0Ct%@4xD_+3l2o&*sCb&La;M5<34B^ z)%(5$#6dZXfmB1I@0O}r86B?@M&$@mL;YNxc&$oZow(l4+cccsc5ZEfj>^ev+KD$_ ziq-DoCXc8C8WtiiimSfa#o?!MTp-QQvlkksmK}{R<6_uLc{sGIN*QdJEvR88BK>1n zD|+X1Ez!TQ5@f1})@A)Ml|{x^H^IyI8al453-cOZP7ifksa%UGS-D>%konIOHq|Anei?#5RP?p?6cUYK&7QX=gA+5LGU6NmZ1&YV3Jf+mXS-11?a}J< zKb5%A7Nh+Ja+dMy`qt8flYHB zbd&4C6%o5*C6(pZjZ?@^SHSqV5F7RBjJGCU z_;(}oP4NKqzy*YBNMG+xT44d2+y^}O{u`JWk7)C@$6xt?lZ(@S+z{9d6;eLR+3J~j zLwu1<@T%d~wbbLSBbJ`!{JQa*RSiZKhi)-a=5;gW8MlZFYh;o7ws=Ux*>kxgcqf+N zdGvsM&ppSLXxC!zEL&$Oly5t7*^%P95&1bdQ>R%%P0F#6R;zeMD{*2AFXsOF-mQ|l zi4;Z1&^NORAtm3JzMyzpAsg0E>@Ti;vZLOvwJxL^kP2+e)T)Ro^46p}ip?tD-D$?t zt{&xsevhmaYqwMFiRZd=vZxg(^)?^h#Yx(ud!9{|nV|VdfEww@J0a;ED=9qwx=?j) z^(M5Ihz3~*{Z7r~XQs@gw-!5JS;5X$UfvI*hG7X&>Y+PIrXk4wvc3OuZ?W@eSg8+O zS2OMwdc?@Hv)X&bq@O3n&pSM8P;BMdsCP5be6Hfb(9t>Z|MJlr_=q{oWk=l%_|@s` zdlfc^K^u_$wOG~;B|cgBH~F0Bi-A#B#ahG8Ba|KzI)lzgkbz`HqnUl2bK8-G2VF7L zteAwy72~TNFwsRLoBU_aFZsI8jiSihG7xO=Oy$o!)`M2g%81oG;yV<4Xql7wBbNoJ z`PSrs)lvjqD_>l6Jl8WAOBi@aTg7MeBDJ^dvuyo5y-0#CJTvYwnj^mUM)(Z)iI5NY z1sQss;~GYmdy^5@j_+D6FWAm1%azCvuN=X*5At&@?=zSu7LvF_7TRerr|k#y)43~G zgz11)^H;1$b+1DVVA(r&cUqOV#LX>vL#_cnQM?G_fnKc4Q|zG>@Lz8SSl&;*JkPe8 zdY;dppMi0K@e(wR+fQ!9^I@SYe$pu>5xW$?t#<5XNmv{<{l6fW_jmQ`R@mT$g&$JV zpyw|>3l&`{e7g2**_)K%+qRo42-w@TC%`W;o%{l2rpwj6E7dg zQ95(00C2!QBs0wc)|CeR5Yg>tA-M)X_DYb{s+~;>$i!X(`c62|*(tt}+Ypclv|Ctc z6lZnVa@`#OOiyd~=e#h6`4q8siX9d>_c!!`qaYAfLr?(XsKz~j>?}MSP?~?y8o@X` zXX%SeJsvkE9J1aiu(t#qZ=#!t)MnRd3|Qh*FLv3TPcMu_VY61=frOW|z-fD(rbXuY z!Ch6~yh#e~-Qcc9&Bl4z@i=s-*L0SE1)rno%r0k#!8g&l8g!q(liGZ<`EiMc1GK0{ zKTKA-;U6!m>u&X#W1yX(P9I})PD82a>7-GGiIksGm3V6A&=*tAY{gj!hV@Rz_g=Js zZbh&!9RCZfTJ7GCgtLB1M=YEU7Rjo*{qpO=2gbUzpEV9gwS34d@pA;YUc=WJH3pJ+ z?aT!9E75a_C<+1%fI^nmLjU_=arp{U8NKNo3Ma@Q4B{qTPkDt7mh)nw^zMtWlAl)n z{yxxhUQL7Dv!gt=4oVVu`7sl^;j$7-Nzq+mYMPcUbi=Q$D?21GidOuCl{)>m+S^)P zDkU|WLIiY+)fy_z{QZ`7*jQZ#oz}}O$yY~-*eE8@zzHTyOT8?Tw`ZrYiN<7DNv*{- zhcy9@ko+q#^fDA`>TH(L7+KU~MuTZ2 zG;)hi+80~Pt*M!M%2me9^aRNB6qan6W^D#kS#Mcav;+80*@#DZeseT7VHwsvKrnD` z>^0G=j*KyP#425fpQ(4e{#1&>gL)EWdzc(!3tPc;*{N%HOi!>~m@euz9WN)#rJ1|4 zf)FY}EyE`TtX*SP&+2;LjCOsRs=C~|meXg-nSbVs(?&tf*ITnB4Y_7IhF|p`7r|In zRi{Jv7afG}fbO@6YLM^d4%*Ppn`ijQg53!NCZ}uJ?QLHEW=B2w4d%n6xrYVE-;9fO zi2@D(3s{`;ggc=6$V2!u;mYE+eZsEK!Am@$c3jCsb#cRM^NJO)$sdXl(6M7o%N^vd z13nUS?TGN@b3|0xxb=yS8!f{E>-II}I|DmsOqMb?(VlHemdyC#5v{XSFW7GgWs$BE z#x^cay&dEk)cYC##OSCI_M+Ie4 zcl+H5TV{dIVEhb(qe*}$1M$aU{kVNXlc$G0tQa>gSU)NR{ciN<9T)5gFWX4Ta=DL( zad|qb-+FE%$c)N1w)RDp>znx=tcVe3=QrLMmaZJPOt@#EZ4c!7ykp4U;JOPjaDbI4 z=G{ux2mF(z)YDPbboc6;=2$2rQ2 zj5J6@q@7oKHqTT08lU!{y-D7u^IE`s;WSaWIL3fd;a%^!7WDb$u$T zd(-a_qGU!r>oY_0`rc!j?#yJ#=JY6qeM4H;m~?t0$z%dHL2wx08aU<_w1Yd|+0NU3 zds&Fxrs$?DR)c*r$OH0)IfjK;yZUg^=0T3B%)Mo}2KDSg|9rPtuV2hjX3cIUrC`R- ztxN&I_bv`99gGP5_ymYEeUGA`ME=j*!O z?%(~r@6U03f5-3m{`u{XuERB6&wW16@i-qRsH%E>^h6a6jeYc}gp=P8^>!yq=P#u$ zTxcDVyaZ}dc$fs!d)FTa6W>?;Hc+a*4=GEc?!Q%y==nxVtM<@;>Ulg1P*S`%F@zGG zs&(!dOfAVp>il5lEQ98y@8<~B2tR00r{AM@Iens7O_?EsVeH=9^i_&QkQp^_=}&P@ zy$)+cnkBcrf#^3C>;-;Pl|Vt7L~C8OpqPw4!+=_*txP?ya~u)cv(Z$y-m81t2xVG)a61?< z{~=lSv6GW(RZQwx<-FQ@l~?B)72nu_t8pD8DfaqTauzv9U_hBBRaT=N5-lP9P$z`& zlU+Ca6y>^OhrQL9Bur0vXQJb|7%f6ww07L5`i{wWh=AD*lGNj&qE z3HoSv7kRkRgNZIjL0JAKOP#Q|^Tg<$yxbxrkD58rW zdq_wMJLNtJ={nN3+}*2!WM}w{YTunGYsD(-PAPSWep!9qr_fj8*{F%*W-uw=GDoT$ zWf*c-_!H2}UQ&XAH@|;(H2@mpIdQxGTnraHi-s+me8ep!E^tfg6ouSNRqSL=yDFh5 z@?qRIujU_4Z^@R4O}%AjiAc+n+tAyYLr&p>L6Y3>3S`u-KA)iov)y!zjz5$%kql*& z9O}{fE(%y$62Ra%ivWN)X~P+U+x{luqULoL0Ma&z2abOT!_@>jov}hR0;ol3GZeSY z540+FeYzHYS-D@?ONYG<_MV3dLJ`g04jLw&FH=!=kQ^wyr>`FAb<6|A?`ujS z`mp=G>5aR^kxE^0NqL?dGsw7hbX7vNj^QJF7BhM01uu&2nw|lk#9Euc1IWUjfS{Ar zLZaCsWG$D{yhalikm!njrOAiX{zoD}wJ;p)aOM|)wvU7N#q2?O&izvccO5up7}o3{ zPa^=}dQR@&zqg=D2G{x5x~2L-et&8Xz?#%>MF~H7@-|H9SX4-|(@-W=DTCMDc?26S z#Hf^rJBNva0XjA~y)3_hl{+q zxHIrqTl6bbl&OVIQP_eK8(O6Quq|0!ST7;&?$yf8lS;o@Dln`e&ByUc$il0^hbbV- zGv=&y%q8q5QH6V4(^KH$Tp536G4=YQcRbTj4FzqW z!Pl#5sZx>*2WLr09-K1@`NBmZ zrK=AYYZUhJW2L7f-33GPdh0bkEGSass)g|>*ZK3Z?!7?0V|!*;sYN3nLr zf_N;E3M(>;WD{*DDP_;(-CUS24R)a{UFl0`Kr^*#&;06jH=xm8aqCuL3!~E*`sJ}0 zW-K+D`1aY|`i~@9lxsOloLBV{bhuZJ6&pI#(XzA7I4--CyPgv`g`eZh>|iEk8(pwI zIRPTLl{*r60LSfq+z>XS<+1-{%(TPJv6HiSRoHcc*&}$Ya5b+|C24A6$SUvLW0p&3 z_H~}mS_k`x};`7*h%p7l$=COh7=>6v> zRwc)w+tX)hTvwfSZ_vKZ(o>|@sU;Vkid0h$-uwhxa(l43rQEtdh^fb>gnw+Fb&g0pWvF=sowCdZYyK2{&s!ZiN4P| z2EJdGMB}uka!N+XkIS%6QDJ+;!x0yW)P;o*JEv+>i(;n|-qqWw6BFB*aRyh1Q;7SXRC| zEHI|l79v9XO$y4I+JVVD(@EddQqH(iTf8E~`ryj!!mz{S0R3QNWogTcb#wPOAIJP~ij%)kS~mWD4vB&t_sG zEl5KE7chUwAJiLW}qldcmKdMV)@ojl2CFh=1FCAldyP zy{EYuQneYfDEM|Ya$SkZ<7LRUQ`NCot3nKe#_#gPVoY0()ERBH=+r<|P1`NzBZ;|( z)$Ly#*DZ;cnI9m-j$0*mEq^9+@Xav}2a!CINGuMz!G^vvP_p`k zeQaCOknJ&9P3f}xta!qo7#+*`*KhW-jP@)`Zu8`|SxaO)TBp!mq%UzD&|&%z`+Bk$ zMY9&h@pEOF7!Exx{<*3*cXW2Nz1mAq_DiPaD6I{sab;Poli9$rW}H>^h?!%4wd4ZjdSU&=B~7AF zm5iTOl)m4~X%lXs4cU4Vv(+#r*G1!1=dP}%OB?fUYsqq>LccRDc5Au0w0}%FfA*ch zzN{8LSGmLV-iNp0$KWoo*+g(Fi^7ys#p#G==j*b;U`y65M^&}&DK1-r<|``h5||#% zT3OtO7R1YlI6Ms9lr8AU{!gtpc`uB|iXYAPHie1s-^AwHlo+DK2^;^&Sy$sHI48@8S2)aJ9XSv5RsF|%5CynEN-N|?ANlL3_nvSfzgG; zC(n0#hHLp(InLJ>J^Y}__=kpo4=WNha{9x)wS4cQEs600tdy{>TYkLtC)xbFIhss} ztM>}|<}sgm?^&0i_>4aI2J+zIBi^-eIUpgLGkDvg+GqB=iLpk(RW>jq`7QtJTO4>y z9_zR6nuH0expSJ-SH*u^4o7H!GY?qbLV38OF2Z}DrY2Vq8;&ZC{ifVuBWG@Pn+5Rx z@FU?H=w4~ST~=)PQmd07IA6p+R||wxs%HY!5ldwKIv(E`hiu2PIDQBTWk$A>2e~(X zKseTc8-}M)=e3qJMg}yy2Xs@~tJ-=tT1}rHW^dAJy%*TJ*q^DHVJ>{o8JCxlHs5bx$h9km9T z(%HxIPeHjaT$?mXj&a_ADt(exWsvq=6hb08Rj~tz(KgSECB4VK=s%s~X>FlnZHVL4 z?e4MI5*%vSpH}zTW|OJ|NZ@hGPVym|{}{w^K8+KbI1@I8L&uyzOJNrXD3iZYP3$79 zT&MV?QKRK*zKsEarj%cE>dLcAG*To))e^5>(fbyAoPhE-_@6riD~)BdhpnC9QbCaT z{<=lxW?7iRRc?>wr}jRqZ|*h3RZbD4C3sC{>FcW{32`l`YIlcl%gDD0Z}8BPy3VEz z3Z*@LU#T18disQ?`NbDx;4FtbOxn74k=gJkQN@WvEC3Qt5S6(`5=0F?rh0YXbnA>4 zath`CJXM4oRm^4I6&a@G-)V@_A4mX=NFh_YrPHT-2`IK1v*R7Q7RfZZ;7Bf4HAs%r za@dN|7d188&#yhHcY`w|K7#0Lu$`z9H{&{itaUh8Na-9f-M>Co7~;+O`RMD{Ia4FO z^#bj!m}brOHH(y>I9PES?jI)@3GY$;k>H_RJLQQcxl0%kOzVkX;`H0`w_RDH)(aa_ z{dryO_fvn=HVGG)mpgARN{RDWzy@b*! zDh4FLVMZy_7N-#9xvdCCMYxCT4wVlpAL`3o=+0B%O{xX%mZIL@g8ljeO@=O_@@WXy z9jTsmfx?xPMpVf6lV;>!16QtSruzb_#1|m9JWWZqQ>UHEEesdyH(HJM?VWs9223K% z4CY$ON$dx&A!RK5QxA4$ZT_|iQ?GUFWR(trzQnY1dgtf$wk$9E$99lnJiD{TLXG+S zlz}>vj#;Q=5(m3$2_NFLW?-7n z@)_CtIBci5z}Almja_2y5+*<_`%08qoy@-`N+HdXFYhr@%;>?-&yV+xg*?7T0nTS- zF~a%lSTWmQ%pNd+s@tVtt4e?USGBGGRD^h`Lu7U0ido^c~=`t1Qyb6MQ}DDoliRhS34XiI4yaH>t&-({6; zBUeqA4oBRI6D=3MyRu?OD5*6cS@$fSDN0`a7&YJW-GYITW;p0^f0U7U&5J ztIkmfI6R5D{Ok-nZW2FSA5_W@bYXHin|>K4@gQAK+6q`j4m|^UM{$ugEyKOg6!ul}VF=*}yc@q_ECp`Xo}p2Ui~(d_{D> zIAxI&1V`9#^Ji!%(sc!2dq(`C|6UqQ263{_e)uwYX7-~@uadk}!Y)Ld4%>PU8!Wk$ zk9mAI3G z^1qpyg?1x27Z^qVA{Jf|+ydA+);Afz95|DP|2PT)M4ET~$eDqnhjjm&UE(M+$&~pn(qczQBpFiR|{E1dcHT#ssm;8|XW9L3Ce{J02=~C=QI+)t;D`dmCXZ>R(SD5=O?nk3<3| z{)t4+vzLkWfi7?s3dqLRO9Kl@x<~P9>pV*5_nD99!oN~VsvTIb>)GK1=No%Y1SU6 zvgRV>es+UqamAm-XyrA{i{OXoo40A_D`5@fHIvW$i!VfncC+(i!WfKFori5THdX*WJMPSb3H>6 zPMg2R^sXN{DZ;Fmsh@veRs@n-YoI<+3h5N$<}3Q1L#i6f*<8Xo*W%7O1H^dXp@OKf z&^ftnls@U0)38lZ4*8+e5Msl^g<5wom_duw_Px+jrKY>AQ;>AI&-v5g$BhR_6qU$V zpTrud3UoPHyQVe1cn?Cvuu#jL@__z{fR}@nGRH8aRozDWT>X~r)A91%&@NT zEI__)TnctP9vq0)HkL9>pcO}RFv|JnTmOAw!^NLV;e>7@)!g#nxg*Yrn`W5 zYaNnTTc9hjbAu3iEmSQ^M*leNM!8eS&oGQQ!Tu_lyd2OQZ1D@wcWA2ju@5l`E}ieO zAsRri4~AAH*=rZaG&9uOSJNHqgpwjsjUsF9o!@5bcaekqPr)7eZA6=f$bAJtV7>j@ zrk>tKh~7mEn7`#f7m6|Ey=pYB>`mFyHc>uX5FZy~Q=ysWw$0#I5&C_z>&-gPe#;lu z9<5J^syG3@tdq3*cCzu(UY^{m(>yC5zijk_b0QLD#=)_+{pX$ikN9wr$w11igKoo& zUKcB_k|H-y7HXkP5FOa>+4;TNdYF49Hl53+NnwFoP`Om%C$Pjx;O%(bf%_ou)1SGs z1T?r^MRWS3fsR}n*@HXj7RkX|8L6IPUJvai>w?l_wg$!u>&n;97~Q#QOWMtcF_tSG zTCChzdN5JrcfMq-=~&L@#e&~NDgu07P@KUu>unZni_lhNs-_CsNa1wj(;PYuv_JG;)@GjbwsOvZQ_5QR-xs0TD z*(TjsG|9@52phH@f@rD`gMnEbvHdS`67~iR=GjX9^H8pxeTDJX`J90|x8KvtJQeG= zOKL{1w=GoeC=S1|5nAbES-EohpkgL}el4f?zYvQ>7RO-cmtHq0*#=C<)f3qMRLkS> zp=x|@T_?=GR%_XBWxZW(l|_7C!FRqds+L?@V(bU^n?=YlAVF1Nv`eZC!nNII7(A@q zn@U!EG)JC{er~_Cp|#yZZ0u+iT27@|UlM+%O8W`ID}ly5Uy-XWv{4?_;Ld6)q){r} ztLr41iw`Rq1Nz+}7DNwPeD>fjlQ#{e*LMY4zgC_q3B4d%$~=gp8@Wu!Wb4lBhjWz- zu1b ztjUrRx{Bji@XF==9+@!%X@C8PmDfMa`(i#K3u9C z7laDc{cZ_Ru#N+kOa8~(2q}8t!|>q+vX#;{5=i6unlq?)D-scE! zi7rJtIgNe!)XANOeinKJg)VPQd&PMkHu7cV;kUvYoLsU(&#rDad`{IyBS~2N zZZ5~wta;GWQJa?Hn$%8XfV3Y+Bmk`J{FoE=X6GgktA&AMd?D*_W^A7E_zi?t)SwQs`Tw6 zk9PoOkD5T}3p61)!C zrvlH>LQ8q}!v;Mo;|M+QGzGJJ5T%tYq*`ScDE5tjqwgw#yh+*6LTyPQnoa6c#Y&9{ zc=6lXJ{j!1aE@qQLF^HE=`ge!JBU&r3(W|Y6D=c|cFXe`dnFdc@Yy=RJcuggI<6@pY1Z>35FBb0sl#20t zC4^_p5Ax7MP{iJ((8Lkdfdv|DPfkz2N=%?EaG0$iRS6BNEkN_#wcKn1#m2v&a z&!_t;4w~iC=f~RjkQjb!|5Fo|@hw?#)!hLZW(8~~r0RofGfJ>ARAO5avS)Z0QIh$+ zGe3$R&XLP1`p9hI^!+W&wFnwq)VhADTaqx5>V8t#SPh^G#!!8MZQ@vIuw3DKuE7FA z=;8r^B&7fJ*oOr`dSLIk9s7YqmQw~Oj$;oG*deuGWk~C9IZ@^yVO4z@mcSv(`$;#@ zx6Pfv2k0(9NX8OLhkbJD-GT{qK71q&MH3N7MA*V6;}P3=HHJ}A`eEELlU;9_3|v1m zdcF6m!QmX)YdelVQGJstO=>TFr0C(FBth0Sb?m&j|s_h z_&WDL8wp60j$%?9SfPO^uFNzrrFZy!u-;?aVgd3{mc#K-{L3Wzx2_^<24i)+R4tSw zWCQo<0C-WME6gC_tYd^3J5IgpHRv8Q>gP{FuBzPKxWu9 z1z^0@vMmL*nfOep?n$xcTUlpYWV#QaT1Rw*3%I&`L4JSD%!}mx0U5>hE3Uk>_5INcYT#cRvOoFBG%=?kLFd#A#B!{XySAq2I- z`*^Z0cgCCsBa`}^4c7PDEFL*?Bo=US?%^KQO-f-v8*(-wK*k+nL*I_)Nm$vbCMuBdtbmO z2+{@iCkR-Wb8Ht~-XqQ%+6K0qf)0f_WZma*=WGk{WIK%x!Ly7STziGQMd7 z<_@3SXN?}oj~mWB0A11gD}Np>b)wfwL4hY?rIl|?Ek)>Gz3w5nR*)PYp@YVBgimSO zzq2;wR?cafUAY^jDoSsqxpe9SN!(EHaneW8qO2ZuYrkUkY)Qq4djo(S$lQ@9Acg12 zn}p=-ec_IYhM||9lj3Fyw5py}m_Tbf(m!~Myyg`%e0m7vbVkIk>V(fz1?~OEw3K_Z zUi-5Nk+E8;l%)j^e{daPzit{5>N#qi6c#M<8-)b733Vkpz@HW!?8+BwU2DcK zE_&%OO)o>mZ`*i5EA5hbh6tX$5DMFwRKv4Zhs~*vOSFS8x8|nEJdw_=aQf1chf-6g z%dDv_Pfet5wOJI3Oi33@0#0JBjMyIkyT}Zs(%BciQ5%_LzExA&^`2#1mkS20wWSNl zYu+SBw3iId`7Ho=qtLxsA!!u<7CyJJq4XG7MXTaBZZELsC-s_h_DoA8pTEuEswCr1 z#TX^L;uUbtiH_yZwDHB$Ym=%R;?n~nrNAoT>&|^Vb@QagckQ#4A}r%Uc*dieLID>} zBXaNrX~}Ccfl7tEVXAPk`45OM(86tSIYf?6$@Ys^__BAMvbyzIkmD{JEP(T~q^NGr2yW8jVXI*MGXz)_9hl=#61l zT_^2_eCuNVy!yd-p23C-dq|DiFY&0j^A(@F=!SFJ8i&Q{b$reIjFuS#<56dyl#V#* z*+hKRw?jfnTd~n^VkS1%%rVqPbypiM(n=RZ%hQrH?H zwP6JgGh+Dtmkk>sMASn5uxqx_BE7nv7_=plZayipUw$i1FgG;hvgO5@UokG|qFd`% z7xJQGTy!6V5xv=<&1)03Eefi4|K8&MA|7>Gr~GSfs#V9-!7nMZ`ijS9m57bAGk57v_F!@#~f&mwZ{3 zqqwK}Vr&ur?hUi@IQ=2h;?l>R?gD&Fv&z~zm@v5&27`MQ?UxKs#Fhym5yTQ2j?tkX zBI%+11F54PT@}l#i#~OnC9bm6($-lVqfrN&2}g361}on@PIjHooB*=)7G4l8BWpB| z-PEHGZfTbFPnhj1R?y}%FRTs1^dSsT-S$H+6 zc3UE#FLI`Qt|M?_;Rv+_sQ4XJ*F`V@iUnw(>yPRkC&I)E(j&%B1PZA9g1=XP#+K{8 zKiJA}+Ubbn^qZMyWdFd@ELdEq^d@izudTopHu>> zQ4T&IS#68{nQ(UFIr05~3Ia>IDnt{q48)6L!Kn>$sxqf7ryO%2H=oRCcapY97z#^# zP--Jb-}!(VN6>0nJfsqN0{DYfS5Q_Hf53H#cJ~@&eIrH{IeU4^u?lQWb2>rGJEyO` z`0y8rY&d35viu!HR57{m=s(2r%+uTY#g^VdApOZSb9o5ATKK_w4{Cg#!oQ6%R zWojsFY;UH^((>Dc3IFq%oBi}uRe;_fT@*e6Jp1VKwqSWl^6HawOyd52G6DqJloy@6!gUki#JA1p0Xt?~EJUvQQ<{AQQJ08WIPY}-u*G_%!9$we2Q3Xz; zJ+d+IXhfSV`fF6}*>@l%b{^$|$t>SkPj(*F&5ci>D45@7m%04vuxXOrh#YoWqnY2i-zIvfu|19 z!-btHw%z@0Ea0lOiaqwz@jCOU`CAqQJM9i!jva>Q-9c$GYgb?$X|?G%nD0<2#IP_| zjr_^*+Rk_Y(9BNXvf!s-SXf|Yv}{{O3d^n>WR-H0{t;q`d({5S7_{o2RJvk>5PM7M zm6tG`Mu26&8 z-7@&QT^PW04G~2wT^v~XfSK3mojpI3bxG~uJq||t`(*dO)ZHUEn2`^W@mV^oDI$i2 zsKlw8J|*}^wUx=kp;oe_wNfME^AdUY;?%K&e=n{aK*37^Mg;!t8#e~bHGkAilrZ4* z-*aTfQW&y{F-z=kiH-lwDhZL9`_C~4#`DCnRbYI)5%}cxIKP}s+Cs?fuHFc5TA!QJ zt53;%B1rGfruA|=<_2!{2>5y#gfQ1h)JOA!;{Wbd@~FE>(hbxu1Xn6>sIR>JJ04QT zm6kQ@Mq=1Wh*@GjcMZvqftBaw#deY5E^~tqB`)lR9nNoge{3)e*&6HDv2RsuYhtzn zw?2~o@cNA%h|bsN4kY+TpjkTR-X32YA;BAGZOd@++MaLB*zJ>}i2W_Ie>F47&D7^< zqp5rqB)@bx9uo+e$lhFXZUI8Vua%dH{_isX-(~(k zewzP&BWA*aWs>n$2oFvATpXm!N@?4H)woh4?M%7^oQu(pCE(pN!@3ude2sk|eHPdS zYGXG#VOxC{^=@jyVmzO(q~?EL?{G}z>gW1;Ks5hG9*HB_LY1Kz8z)og$nJg)J!M>*9G4Ldo8@TK20AO1fMLSl!2bWg!aJ{pQ7g!i;PAdk(2;TsFrQhib z^X-H8H-=-1>I7Za=gRkHr4L+es{q|QjYc@3lT1Q}p@dp&X{%q{#sR`YjgFGD!ID6i zB9zN6Wj)Ur!NhDHHUh_cxd$MgTZWCGbV|7ggmw&b3?{dWjdqI5_rR;y{A(Lybbu+} zgS`8WVSwl)m8z;EAVSXNBT(a5_s-!|2$+?7 zKz>WpFv3?M1177bApXb7~p@;zbCU&5;!2m8wh z9m8Oy?vxvFk7G95!H3y9bdjeDqgNGE+Uo2(GfkbkDL=Xo12b~jff_`S#UV10UxA}L zx^Pz=>UEZSLG;Uh2f*SpXrzYD+6HhDM!S^#6zzHJwNvUPjxs7VRT`mJt^?Tw7JqnQ8_RKAC##fz-2ahZG)KcDKlyeoHeT(fNq~fSN(OXiYrC-j>`_BoR^Nl?r_<$kXlRV9r8N> zQ!TdiV7O{euVePF*TLU4r!D7e2y}YMrEJvfg{RccVCM`v%;} zBk^VF!8oyW(=YLqS5^?ogUn%DhSc7J^kgh_4h_Zr`P`4mp!1( zgs(vY2&!r!w`_F-7L*N@DvUB5l>&Pgp0ht~w7S9LK5^V-2l(^$%J<0k$H`YWAQ@Qz zh4g%F1BQMcH3m+QRmd2sl0+dx)3Ku62ljcH(fx{L51!dIU_lIkseT-1vavWQJCnKZ z1}9;X2QqxrU#N7ao}YNqLqDvM!x2oTN2XM>qPkp`7q)${0+bEHG~%=s5A<1l2d-Q z-Iemg?#;Z#juG2gWDNiQ*T0V+I~%LXFw}<_iq{-yR=fA?9+*$pK$y9$lYQ_R_Rar(Nke{D67t_KwkBm$ zw{TO?@$buU*eGs|{?#MK$FOEF6G)$t3E4qFe5IWbz(q*|iQejl=#!Z#wAZ?l*UM5w zn7Zu1HTA00>u=du`!E7)FW&=?QS&eWz`M!~2uruu8ohQKU3MTqT7IwW&q0TCWpwF5 zbLy^2$1Ko^v<_Z$qtAT)p`|+J!aU^{V{ecs@mVp>aY1$WS4))x9D`2 zE^MH~eiM|$JFpv7{PY^x@OCW08M#%Gt zsww6o7PqpX7bmyia>iK7pDpWeHybhGwo3KA#=Z5Rf)Uo$P1urft+`wARc@C^L(_&RNeu*=e2&{`% zl5D^<+A|MpD#yV;Mzi`KxFfdalfb~pfBe}LbX4F6XHof-!JC65g9V)^IGhMxeK4A9 zV^Fl;?;%NYM5ms8IEQ%Ixy{T2ASf*?S4}|>M2QWo1ko@62nL&Nu@ZP!Ce57yppI&q zzrO=CHj}r3oWubK+H$^kVu1V=R>eQcNO6+vBL4gj)R1Jz(JI~Z{L5I^fBD~eN4iwR z2sq2i`i>q%J{4&Au2q3F+8^RPC7pXTN zU@d*|wQ9OUr60lT++m-Aol(mRIJUZL4ar||eI9Wc_mU)qBDqNji|s=VlF%^b-J zA&Wu>J|2R7NQXJzZ{Te36fTz9Bjgek4Pgv%#)d1I={So(lkBs>6Bu$k^+1CMz<0LV z>0h`Y7^PV7ZsSWsMo>Ov><1uux?WOHXEe}dS>RnKHh7WSxg>Cwke{F@W9%B>+jb9E ztL*feG+Y)nAl(^qtM<3;p#5nADQ^E0LIcde89@C%JOh?oj|Apv=dgJvt{J#nPBFrL zmk-&yv0D-KyM217a|owr+XmFG#qt$xI1f#9J(6@-^((UM{ixnn;D@t~VILH;b``@B za2aG^LghR#tJL0d{>7Q~%J#Mj^Wh0_kV&)RV~Y5evUM`hZl7zv3XflEkj{hWK%O&i2Yt22q%|L=*w=0t`aQV=lKXM7eS#|_;m1haE?PCGIba)^> z&;kywV%4vd!rPmgK;K(T#Wb21aHW6$m(bHBI1r*PRQKgy_;EW}6N2d+L=?#~_W}0> z*^j$;$AVc}*{a#$5d1E<2M5e@>tvyG=bHzS`e(pG#YH14?i`)HB!~Clr5d|kowE1w zo992!C%ORWyw+iyAGQPnicDd31_`sw8b*jqiiLcPf7n4JZa}}&fe`E2KdY67Yo}Wr zM(C3cbAi#L`}fVjI#Z#;vjSPODpdEa?gF=H{S^d(Nf4;c%!`LRQ+P!6k<--oV~X6< z*Y9${G!(lN50+Vc=T*)PJ>g@BgTWiJKYtR<;>~;g5{-!Qg=(S?ly^?FBdMAX#O%%x zoWaKVG+vZ3d&fJ!P<)11+lUJ+O%7(^q|bwtOZeKNKiZBPV$*lw!<)EvexC#BE29bX zz0F1TpJFR+6NYqwG+&Uj`P0kEmq_9TzC0TR9UitZY42yoO{=8&ExJ;guGz7GFuYg! zd=Y|$bQg3Q{AGA>5k;PuZ(o`zWautNA3MuOHBQh&^3mTM=BJ7^!#g=;M!S75HV?2@VRC7PWuBFjAxOe=_n2pvD~Zb z4nv9}9H5Uy5{p|v7QV-OLrp^FjctrcMwZWXi}3C=XX+J6ZB@8OxW;5RmUOR@MRAzO zrO{%Sq%y8${HG}ib7+(bQ8*o`9lj-@mYe|M@rpmG?=Pc>y(2WIxB=E@@a_fkVejT5 zVHV`>$7iT`Yjq$TOoylS4z?X5*8rILu9tYUX`aVx;i&#E;`gEyL`PK!tWT)&bG;Wq z5?ycOeJ3S6`cHT~Esd_w9XT_dFB!7{mzo#5%}lbG;qF$ZIP9GR#KOl|c-wwlfTNS>@{I$D zxFR2Z#J0mzAqRgxybedD%5MV1^jJ1!f-`oWM%^$}OoYsl7w}8`FDAs^ezm%rW^l!O zj*#F8Ggbx=-@HktD+PP6)#7?YFT^5sTAd>+0LAirs$~Glr9u)c5MB-8GXx}WO>g_0 zSA@MtFWcJ%;pilo8~!aDd?IpGP!Av%W?9%uekK_^ zPk#+7>Og{DQ1Q-rppyRnR0bl!k1>n+RO8`f1pcX0az+P0mDR>n~rKZwQ=u)H}5=~O#}OL=-=T(Kt_P8 z_y6CKtA+?5rR|sL({ul9ZC7A6SSDp+L$>x@IP8P3zZ!J02ZA>W(Br{&vT&htcZ=MS z&F7cC^ZU|WWEe33E=IUDc98S!*=^2=yovniQ2Y5#4RT9kQ{>Fyto;L`{wx^NARB`gU9~!wIyEjl0gwQc9wq$ZzLTmkmR`-#W?ydVr=F)%H(qyJLZ zpfk)!J`>%cRD+H%-_(Q$CSE#Ode{>3CVc7W|CulSIlxcxmLJv5vwMOE|5Oyz<#Vsy HfA;?X$r!T& literal 58533 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 From 03c73119ccf859642806cf47bcd3ac665fc75095 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 18:30:31 +0800 Subject: [PATCH 223/447] Add stats to UG --- docs/README.md | 5 +- docs/UserGuide.md | 50 +++++++++++++++---- .../seedu/eduke8/stats/StatsCalculator.java | 2 + 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/docs/README.md b/docs/README.md index 8003553099..21ace21acb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,8 @@ # E-Duke-8 -E-Duke-8 helps CS2113/T students learn and understand software engineering and OOP principles through a gamified -platform and enhance their learning experience. It also consolidates key concepts for easy revision. +E-Duke-8 (pronounced "Educate") helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhances their learning experience. + +It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the Command Line Interface (CLI), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. Useful links: * [User Guide](UserGuide.md) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 84c537bfac..8f155eb11a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -13,8 +13,9 @@ Table of contents: - [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content-textbook) - [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz-quiz) - [3.8. Showing a hint: `hint`](#38-showing-a-hint-hint) - - [3.9. Exiting the program: `exit`](#39-exiting-the-program-exit) - - [3.10. Saving user data](#310-saving-user-data) + - [3.9. Displaying stats: `stats`](#39-displaying-stats-stats) + - [3.10. Exiting the program: `exit`](#310-exiting-the-program-exit) + - [3.11. Saving user data](#311-saving-user-data) - [4. FAQ](#4-faq) - [5. Command summary](#5-command-summary) - [6. Glossary](#6-glossary) @@ -28,6 +29,9 @@ platform and enhances their learning experience. It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#1-command-line-interface-cli), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. +On E-Duke-8, you can earn points for yourself as you attempt the quizzes! You can also view the statistics of your past quiz attempts to understand your current level of mastery of the various topics! + +Challenge your friends to see who can earn the most points on E-Duke-8! ## 2. Quick Start @@ -125,14 +129,18 @@ What you should see: ### 3.7. Starting a quiz: `quiz` -Starts a quiz with the number of questions and topic as specified by you. +By following a specific input format for your command (seen below), you can start a quiz with the number of questions and topic as specified by you. + +While on a question, you can choose to answer it, ask for a hint if you are unsure of the answer or bookmark it for future reference! + +A correct answer without requesting for a hint will earn you **2 points**! Whereas a correct answer with hint requested will earn you **1 point**. No point will be awarded for incorrect answers. You can view the points you have accumulated with the `stats` command, which will be further explained in a later section of this guide. Regardless of right or wrong answer, an explanation about the question will be displayed after you give an answer. You will then proceed to the next question. Note: - Each of the questions in the quiz will be related to the topic you have chosen. - You can choose any topic from the topic list. -- Refer to [topics](#3.5.-Listing-all-topics-:-`topics`) to see the number of questions you can choose from. +- Refer to [topics](#35-listing-all-topics-topics) to see the number of questions you can choose from. - The first question will be immediately displayed to you once the quiz starts. - The quiz will only end when you have attempted all of the questions in the it. @@ -152,7 +160,7 @@ From here on you can either: 1) Enter in your answer by typing '1', '2', '3' or '4' and pressing enter. -2) If you do not know the answer, you can request for a hint by typing 'hint' and pressing enter. Refer to [**the Hint section**](#3.8.-Showing-a-hint-:-`hint`) for more information. +2) If you do not know the answer, you can request for a hint by typing 'hint' and pressing enter. Refer to [**the Hint section**](#38-showing-a-hint-hint) for more information. If you have entered the correct answer, this is what you will see: ![quiz](./images/quiz_correct.png) @@ -163,15 +171,12 @@ If you have entered the wrong answer, this is what you will see: After attempting all of the questions, the quiz will automatically end: ![quiz](./images/quiz_end.png) -After the quiz ends, you will be prompted to enter in a new command. At this point, you can choose to start a new quiz again! +After the quiz ends, you will be prompted to enter in a new command. At this point, you are free to choose any feature of E-Duke-8 you want to access, or you can also start a new quiz! ### 3.8. Showing a hint: `hint` Shows a hint to the current question. -Note: -- Each question only contains exactly one hint. - Example of usage: ``` hint @@ -181,7 +186,29 @@ What you should see: ![hint](./images/hint.png) -### 3.9. Exiting the program: `exit` +### 3.9. Displaying stats: `stats` + +Displays the points you have earned, and the accumulated statistics of your quiz attempts on E-Duke-8. + +Both overall statistics of all your previous quiz attempts and topic-level statistics will be displayed. + +Example of usage: +``` +stats +``` + +If you are a new user, this is what you should see: + +![stats_no_progress](./images/stats_No_Progress.png) + +If you have attempted the quizzes on E-Duke-8, you would be able to see your own stats. + +This is an example of what you should see: + +![stats_with_progress](./images/stats_Some_Progress.png) + + +### 3.10. Exiting the program: `exit` Exits E-Duke-8. - You can only exit the application when you are not in a quiz. @@ -192,9 +219,10 @@ Example of usage: exit ``` + ![exit](./images/exit.png) -### 3.10. Saving user data +### 3.11. Saving user data User data is only saved upon successful exit of the application through the `exit` command. This is store in the `user.json` file in the `data` folder and can be transferred between machines to keep your quiz history. diff --git a/src/main/java/seedu/eduke8/stats/StatsCalculator.java b/src/main/java/seedu/eduke8/stats/StatsCalculator.java index d7704461b6..81282c815a 100644 --- a/src/main/java/seedu/eduke8/stats/StatsCalculator.java +++ b/src/main/java/seedu/eduke8/stats/StatsCalculator.java @@ -38,6 +38,8 @@ protected int calculatePointsEarnedForQuestion(Question question) { } protected int calculateProgressionPercentage(int userProgress, int total) { + assert total > 0; + double progressionLevel = (double) userProgress / total; int progressionLevelPercentage = (int) (progressionLevel * 100); From 8c3199f9c75d81b9fcd9358bfbb4d15b4853e904 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 18:31:40 +0800 Subject: [PATCH 224/447] Add stats images --- docs/images/stats_No_Progress.png | Bin 0 -> 83724 bytes docs/images/stats_Some_Progress.png | Bin 0 -> 85416 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/stats_No_Progress.png create mode 100644 docs/images/stats_Some_Progress.png diff --git a/docs/images/stats_No_Progress.png b/docs/images/stats_No_Progress.png new file mode 100644 index 0000000000000000000000000000000000000000..b9242822d46950467bccdfda2e6e26df00c38a05 GIT binary patch literal 83724 zcmd43cT`i|*YAs6K zVq&|^u3xnk6WdxWCbq?3=XTMRwA^}a(VtCWwx*ZGY6fLUq8D4ejjfEu#6G1-@Z7eE zUW-4xelJW+?6C62&n7clr6n;jVVT)g<6F@#6h6>K6OUcz%Yn(OA0inN`;zNl?|7)Y zHQCO>EVAxc%~mVb;8J3a&t;R%lf~`(%O(@VZ~UZgwrG5GgQD^_A>n8!@DX>@XUr$B z=cp}%|NQd~=_(FGi@)l~zu^D;-VT4+dKM84liVb#hv;~)CeIT7dwMBg=jDH|9*^8; z(8jSB@Z`q7XD?)pRsTKvo_hS?zh@6j_il88==h|#bE9EmVvi>FJ=^^E>=H%vxVyd@ zZ{BbSB?e7oTXSj)T;PNX1Z{lCeaDTvRC;Cfs$!SH{(hPUwi=bAJlwa>uW_z4U}(EV9^05xZE*&6xca%9JEM;L^SHfornb<00<9^3Qm77MBCK|{A~q`c=$D`b#gUiS zwQRoUF{;*!f(X6jI)B`_mXTeud%%2XFgE^a$>B%NOUpx;n5DS`yB}* zk6sno45Fc{W`#vH8uR_5tjS4WQc3UAAbL$QH?EH@BYOU&BQWbO(6DtGXZY;EJVz#Fk;fdax~`ay$L$Xc$mlr*h@Wy^NW6h0eg1U|%A>-Q_?_ zq4|1SPH(Tt@9WG=v-H6hCq!XBF{Y;sI@s+q@n&&s!1BxK+kO^dCf=U+HoFt+Pm*=c zSK&}0GPJQmA6A@58<16ldaK7zbnXJEnWp+fQwUs!}=*8P=(s4P=&m^ z4l&6oIaLy5dsCmAx#Bl70~@uh&sLtOVv;Zp8Y@9u`tB*rv&_m#y<>`Q1Ah z`so{aQQv++H-;*W{w59GTIyu*6yW?QGrx+JOMq}wh34A@-+7-WUN?tZ=QmFBZrWhH z30H|aNwv71-uRj{Puc8j(ttM(U~6F1)OQG=kQW*j`Tez;jVotiS%+ri`{=#G4*mxj zd8smh`E`B!7vb2rf`<;kwkq8K*ffJeAehyl3o#egZx|FwT=IQbnRi|mZ&nwDTCq`i z4%0yhq|XP#y`6-bl|sVorHq#H28+QzpM8y+Sv2!LZ$bL0?(|b|bVw64&&7II=qT}cOR3RQIePI-@+2aY@3_}a4sIA_8Phu);2aQ8`a3$-K|xU^ky)1V za8X5(K0+;an+nrc6HmEhEe=BNj%YtJgeHFNl@#^qFJiv-&6bZEw_v+k#5%u!drA` zH~eE_5k>LSdkP;7Br&zCh>=?pkPzUJeDE;ULD8-#SYI=%RHi@TtT2Di=~r3C6| zUh6TPLGNq(qRnt4^VwMn)*9F!%vc7zM9=G5k^w#$?4b~*Sq~`*2%fD5x-jRRo86B$ z>kfJwqWsADhx}rW8OWMN1)&V^dh<5c)bFa)Ni6OeDGua0%`rN6U?K{c=t2h6=crQ42 zBCqoIZVnmjqOS!j+oQ2k{_F~gJL5#Aji*}Xxu6|pCvYQApxZB^AQ#>)>;F7u%hH0I zPU42R$z1sT%WA%)e&8p(xwQrzk;>Z3>m_WvGjgnzOY9nH zEF`g4DY47-<8L2hz6)mW-3G#^Vj^HB2bZJ86~|XLRwdd{OEgYL-pxx6gUv11AEz!}?D5%JK?kgS-yYf^Z={>AT6d(0wR9=C zl_tNHqd-2N+N&v5(oe1jI3V2d`ss-)zIUi-VSMQ<~%)5sJ<+MS!$=g`H? zZ|4-sLmT}mEf?=)cXc(5S}6Ber<{$`42*|9vY+lsep&x-cc;BER!x_Rk<@$O88&PS zj?T@Kd!Lq=r}Wz~5|dL5i0BeO+|EwB^EJof&El{o^p82%7010@c_(d#cb&F*;yfU_ zoxWE#DJH_DAtp;HGc$B#^mdyXgYp2}q&jQlGOG?0b;BdNo9AA0$O#l~Shn%7@BSsT zjA?e)nlrD-1Yn!5*lj&Cbn0rbpyc*aV_{oV*?jfQta>f)x$%+dEHg^}3;-9EQj~Tf zZFoNKprmQlueSecwP+YR>0>zjoYp52ev(0$aHYd69Rm-;p|%ezkpBcyA`( zlYqWuP$sK}n(LF3H7=`fx%PCj-MnqCo`d;5d5@KPudNA@Neaj;{atX_o68fYs(geS z;1HawW(>62#t^p{_V}pPXIz^>eG)<$nidy?`?0*=o4sL8#A!T!a$_n<)dS~l;Z!gz zb7Dl6W|N^2taZHU%SlaZ3-#u>(?z>)skITZtvFQJvlt`#z~`r*1NEslvN6Kno#`@` z1H-Rc5zFgmxSKv$l64L>?pCXmcP5&E`91D!w_%R8WrP`Bcvj9c$dy$;hS#=0sQH9? z;JL2R|M>T6Y7nLhnfJ)(@siaZ6N_4}HtItE*q1WD1ZH>(lSPh0FaJp<}e0r|7XEe8)c z<}k;(V|gopDBQ@gfa^6vU!3Hrr4+L#?la^gL4>)n zvQzy5_iXP~HlEHnFN~xOGwiLiXWVE9a1H%eYZR1OS`9(g{)g&Oltc^Uon)DdlVzOg z=hd?GyeFd-Ez|r&r9#V{X)By|8~=-jk_D3|{ctB{iXrG(*92joeVq_S26<}EHHAq??C^(HhN$P&}jXYK%Yfqg! zyrP$P5TZJhO1i#4jwO)*F2gRSlyd)u=I_TbT}te z7}|U%2zs1KJToOcO)ivwB111?M-1d*gJgT|fmD-yWkSzfsLTb18@aJLB}eILH|<{% z1;obM_OK3Qs3tOoco>p0o9;_vzZPDKDAf`<(GCnLrB z=^%aUFU{vw*1CT z(Y62S8hp{sF)vekQ*D9B3Uw6~`V!Spfr+U6n6+4TH>i9+i}M)&g^4ncI7OOS-8c20 z*^$M--2`9LJQ`UV8=+z&U(n--E5 zdF;N_$7N*s6pxF4x~T)PUE?kvlp4*ghsEoAgKiE+&JBtTzEgS#)$2x?S6`X*pfOo7o=#LO+j2A^cHI_1btRq?7r1$J{P}8( z!hZ+smh6Et1zR6xeQMupH5Tn?f(75Sy6(`&$ zUPFX}6#1^s)OO{*;kfsK=WGSD0-#*09hvcwOCfRv*ki$<_5N@!=F)f3FVj!wwJW|f z$Uyb`5--#XDhX8+(l0#vKaFX2-8s$q#8?hjvnQI6Qm3UNzx!67ntye@BG#aOpeNLB z%2DPMgDs%;{v35y2vax(-pylzv26Kuaoe&c?N#n@6iOpCEqVByYdT2{;`))^?2Lbo zb>RSD!L9 z2GKL?W=h|$c$E`UaNcL;2$kOYpB=vXp28?FzY*i&40;%OIyLpt@4$&WGQx%IGjXfb z6olbNl9`R>LbAT}g2`*A=HR!9{?zXk~W^ijRwTa_N^kHvxiOb z4{%Gr&91c@$DzIkV{!1eL$txR0D~K)UE^=U-l)Avh8@_XXK=0pG1LZmC9Ki7GV*{W zY(+;snvv}MYW+rh=%LY8WFCrZkv0hcEw?!0rCdoWh4{k|3NpK|kDOA*`-1LdaWPZZ z_+j9QLi)q@t>%`3735@#QT|?yf*Iak|AA9CdiX_lx16w5>^NIT-u(F*X03XKTwy4q z2DDtbHSmU4h<>h>Hcg9ntFJUkDGEGy>wzoM4)qm0lu(FHnOVUO3fJ}V0$zLA{){sL zUJZPEZXl-FxY<5!H$Q$6Ff~tzw}-=Ysk-qf`U6mMn*g=Sc9TUJ%GLdK`JuXZL8=y^ zW}&zM{!pHaR!)16{;9ePN6nkV&R~p^l&FQm!h0TB5BDGP2N(7gtu7o?IW?J1QL*x; z6!wkvkt{RnhHB4@RTbntdQ?xFefj&kM&rp>;TsFIHk*(AUX0(AhaD_swBk zKqX&Dw}6Evd|F%|J^&w4pNDI=Tfm!*TsxpyI}g_B z;`#=L@&Xh-&3+SbJP;vS5GZvw7WX8Gt}`f%eMMr9kn@dc_V{R(>!79YF@^^iyu-xhBjKPoQC2Ol z@Qr3SfYfOC?f$0E^FuQ4#sulweRV$t9iu3fe$G<|B5&{7`pYT7(<3=}9)L!c-o48* zsQv!<!VG!&nX2?H`B4B1j?QmDO8Kf0Psx_I+Fd)lM=y#YNyJ`*$Z zreIFr?zN(>o|Aj-Yo{{hZ6u2^UUjBwP3`zv|3z#^xlECqmGkuXE7(qQ0rz{Zb*W)s zD}QS-!#}4nkQ)74Nv^^0YH`U+ZPtitbrQzWE8aTG)#iO;yPmy0U&DMfdi~GgP;K9s zU3o1}`wp%1ys+N?I?e*pwudHr`j<<@Bij~|y=DlW?I@2rRBG}9@Aaz9^f5=aVo>k| z^RO3)U?c=cNn4#NsQbf4JHm5(AfJpnVDLh!bG!f(_9Z3iz~=gtSWA|=3iczK%I+w9 zOO5IuP4N50arGB&=L%lh&C&6Xy86lo(J=9__GiH`w=~u|3IdBoB#322wp(j1gb`~D zJ6fddcxG$~O*3%N>F~F@IA65|4;~HE93r3gxEb>^EDMYrX|n9<2|ta{Bq{odne%fA zGg+o-QE&qX`!SYci#nm`2a<3sI!8>rOUAzl1@D{&E70)QExEyYOg!9rN_d=v7i^J7IdYKe=4YPX zINDO(xMsgSEEMy)y3b`TYoID6tll_t`>b+^b&g~D0kg%gkx?waqpz+{HGC2|->dV# z1M~&UdH<;i&ylRzua%RyoYwV=MxC9usVt@~~tX7`CU!%y!$ozVW?R3R`s{#IV z%mn_2bK#vq-kox8mEWS4vr9YIP2@x4ng_%CA5Y^h&V!3m^S=iaP*1q&e@;tFBbbh; z7{FCfB+qQ%)QPmmolSLn_!*}t1sX~)*O-om#P`@L*K*?Sk;s7_JNm=YK7(6(D1rid zfaQqNGp2u}_G_*;clbv?9lv9>%#eM^N1>l>h4r=p+*k+!)GFs3pptG4n84YN@j~!9 zZE|bMbovT2Cv{H&drZJ~SyLodg#NfEP{kf&@(x6T+`XR;DUt@E%`kf5ic-ZMrx}4N zvFa@mQUQj>vL@Q~M#$Q(n!$XtdmW>YEPmB2Pw-NqpA}q)(YpD}(B)eb`W)9D1{q^a z{7xXfHN$`tO&D&yu~8+mdz*Rox|wsta-QyOerj*en&lVR!}vD;F8669Ynhhit$(7v zDYL@gu4wRsoZq>S8lX7{SH{7tB=V6G@rLd-ooB+Z{y-MTQa{*8>g|aH0rDJjm3_jJ zn^XrW8D_dR@(awk%@{xb(TZ$(6%x|yd2(mtggE;8iWS7ey~{SNIZOSqyYgVaRzl@FCK!0el0xpujBftyufKXS*o*?68lM) z?W$ko# z>5Ucl+9~d^N%M%rn_d*AZ3~e61csRGUEoGJVzeG7%((8uRvem*#xF2(!H`>;gQH1S zvSjeQ?jgS|5v0mpd~r;3Tcp7cs-ryJ&Uo(bcLdn}C$l|_0aSZVmi7)u37Lx_txY@e zbUd3^J4VLtofUwm7g%(ifvv?00N=>Z6Z1-SAG8-+{a!RsRecZvT+Cwbq^m=Q=g>ZR zhOJqhU3#pnxe@+imf*6Xvt+F1uh??2+>>35Gfi9gmGUW;dN?Z+0&hEp-`Swl`n}-&HmHp{D zpXV%^y^)tHAOlme>@8>In-B?;xWJ$KBd){RX^&F()L^i~LBQUQj_|>B#xs2(wm|wK zibEDeX2j@6?HzFyPxD|7X8Fs~H({?7;$3fUV+&?F$$7P0|7xam2iwn?$yF4pkL}+6 zHhY-~ue{L)f%Gz{>T+oz+@`KJ!^go39JI|eS<;=D20v2cEua-pogN6-*q=>9~DT@@5Rbx5qf|$#jF&BVD`AGE@1oSC!02u3k)d8aF zdkUBvVVx2_($!&UYuX>1&dN1?=G#__*;%ljF{N?6s!jt+`$?hI(Vdo()~BBCVOXul znMHSaGB7WkTlNiGpyaWgo66(qt2Q5QmtJ*_!}K$8YUC>NyrupX06nrb0DE_frxO%lO##{jA~7h{1BIjF0zkQM<_E zZGwl|z62#-63-nv_Zs+ymPVc+&%^&nD%U-jv%Qg2Du|8qG)?yT*cGh4e${~bRpP_$ z9B2OIO_^j=f7}}wr)r7DMiS+TL5jXH{s-qN{nAMcZQV}y15b*C5qbj`-gb}}_BW)b z`w)A`HX?;bZygs0*`I_;yM@MZfDk_bN@jB3ArjOE2FM?)P zLASt)zZOM|%Rhtaw*LN(L8Sa zcGG<DXN$a589gvupDLW?3HT4*N#3e%1a5v$~S zi~i(TRemz_AiCm-0SbqEjmY2YC&FY#aHlGDP zD{7F)W2NA$12yKS=iMd^=Gm80i|z*|DvAN7$EEi)UR2Zg!F=nwp9B3IZq0nD^wJz4 z6DVswtNxeg1_jCd;J8; z21_y*OscKNF+^Or2IYE7jQ-$Tx1X z?|a*9 zqtdnu>1SRY*iI|!-*%S$X9W_vV`=fU_gm$-J3bB&tAMDl~HC2ul;y(S^8dkAryQRDO zWiIU#C?^jUT6gE^ZjeA%Duc6yyxu-%z~XLu2p|gg&I`$}1X<5WXE`orLDsM7_}ahL zW8bq$SFAs5S+DwyGMgDB2su6ZF*UT%z}ySOIODEZDXq1w(q^op8DbiFaB@_@--l@) zs!?hFO0RJ$STRhC@;>UOU@uMAXoLG5st1D}Zpebu#;-tpx9YICP7F#yeU0&I5;u4w zt*a;Eb8~=^?-aVQmZ~$wMBH|;#6Z5O9HR27Zrf9bqpr@eSI(O>ol{aR#RAeS3AYLGE*HFZI0wXC?($ z&oIr4Cr2;Lel6MIGO0HDH<}o$w|(tb`_BVSKVD>-)guVIb;$B@t>BcaQZDegz7ONh zke}4C7etd28ZAA0>UVt9eTC01xzJLQO3V46myp6Ln3U?`msIjgR$ucW2wuMqw&Sz} z*;S#pb*zpmlX7ikyt0=%Q!hk@V!ubb`qqBj8g9aJ}(hFkz(??QPjOW>u?5JiVacw#Yk2$>%pJ z2`|aayLy8X!snh;V>ue5Q7H~Y+H&oGAbv+ z&=R)7o6O*>6@TokO8Tyox9BC&DG`3ph$7PnA{%w33T@8a{T7#AZ3 zerv4jVbf%N88;5s?;nw^%8Mk9jV!LBqY%iHSR--8Kg&d&VLdwmrfm!eUD2$)S!I_f@8VF60XLjK!8ey|G>x z_663>-;P}0B(_eYupU&M;zE}mC!bpvbcXLeJ=pXd-nE=c|Gr%@?#YcWI)UWae#xk= z=B;$Gfu+`=T%`GxC@V3n$J0~3oq9N5W6ZxWK4MPyxeIF zkJvA6mLp#pF)9q_>=YA2J%(oAM@m)MThK>8$sr-X>qextD@xc=`k1V)E>2|T5k;^J zecdZOKNt6?%eu#Wu9W@rD3Q9U=@gUv$%evbuO`C&YOo?&;>@-GFM?twXM6E~Qw`S- zi^nO@2nmFJ6S6XNk+Qm;ggm>mtoe5J?bE{n*~&S%DA$=+2t*d5);hjJ!oNDlmU~l9 z9*bWI62IAt@&;TET-D`74dTZwPO+TdzwNRZWgZ|de>QKTQCCfghx_arEEypM=hB!g zgL3<%R#aqXl!mb8B{%w27{72s6t3;f*;Z_16dM{7d9o{|nA;n>mYu_hoiUhNS^Amf zG#pRB#)JsvC9$92-ZS1IJMFrs($bcoc+rlcL{jS0ri9^ZJ^W<3sfx>2kk; z=!1j?M6P%908mt}xaOp09`mi|;^DM;{A8m+Jg=c3Mo>eL{rWxL;722Pkhsz6e#u_( z2n{|MZ?L^?CTPto{;#y?(hlok*!?3*>)4W{WhB+at4JtRdcM1bV%P$IVSq1)zewq& zLb;naCnNaZJuRE> zG|}UXc8GLw=Egkf5*SoUy{>3{IX9Bjqd_c5{|7LZSIo!{UwijZiE9?tIH{LYm1DPR zprN-K<)=+CXDt3;+1v234rOO)@4P0T-{P7MpH0?Ig_kxLyP98^4AGl>Gur~u`}R{t zs_`4LI~t_XuQN9tcqA|IPc9YVScg~$?&>>QQXCFw4mG?DE4o#wHc)t{r4r(d8y!Gx zNPJnU4EjgxneXr12on?nWAT&^`^^l{mz9)uvsu*}lN@pInbl|R{i$5;^ug~<)d0P$ z`Tpr?MjIgsEs5^6}fBDeCF3`E5DXbGemm{+Wuf)dbc5xR`e9PB#c%J*{&s9rr zl%A0kX>}FzZGFASDD?^im=94IFtX_WQbU+5gsjo~A_)WdhynZnl<-Y1ZP43l>YFze zSVJ&eWE*rZ*ICDdPuhasBYVx}_{ScAuE@~k_->^cHh`{@^P2P2+!eXWc;tG#)U`iM z`C=XnDnG6VzWtiu31uE8vUiI;g8fK+7OGEM=yS5%L0-T6L)-+g#Vnh+|D_SC+h6FM z5nC4aR<=Pg-BCrH6!PgrFsV@6KRL;{L9_*0l-Y%68>*W#_}wnr)F#mR0>C8h$#vA? z=upTf#it(k@~b;fUDdfe)c>j(Q)!dl9~a+RRDXxzfYQ?s*}JW-Rl}+RFIC(pbrQm3-fe%ImDAt){!HYS8&fSSp_o79DfVeO^tQK~ zY49{$*{LY^6ZDBSj_wJ{^8RwcSdCm-RC9i*fg0Q9+LZ)DBN zd~@kJ4J2*GwOX$lP(*k9@g9N0nr)LZmI{{VdSDP?!EWsRLAO3 zuI@VXS{u?YJ5w`v3I%O0%qlQl;ElbeJv6dYURaJ)Ym?1vgL)9$LuXWrt%=luiKQV*`--xY8 zvZF_N=LbKw&qI6frfHKHFT zHz2Y-QN(DBdLJ3Y?+BK>*(*|&I$T}zn6Gu!!WY-;$SuS27Q>-yEbAH#xMEs(GM95> zn<4Nb<5(P|@?2N)hVGNh;B6QCB00CUm=;tv^rt(%+qL&Ow9{=24PRJM{GaHS_-7(xk>i1c{aRK&pawukqd zEC)aX{UO^9vzF@!T?FrvV&uyDY;@Yfe7wiYmb>P=_3r@SwE7p9!H`LP3;7g4QH80m zU83}IWV)V#7t6DofxbTHfr85}_kc%!p~KH9tSv`JE98B@zTIfsFkp!ENo&j?iWcok zjuy9tok$3h9NCgJ z@TVfYXv29Nu(y}XFeM`VHLH7c{jz`&CDGl}-o>r8yIflOSE?+oceI?JL^uo#(f z{*4ZWD_HrX2J0?dBH!&_lNu()jsp@%8l@wVA&}1ab_!?tv!C{;JzX^JK9uh79`{7M zw5`S)CBOwuN>3c?>{jmOpZa?k{0NLxa8@Y|sFD|Xxk0kB;i>+kg5t6psu;IEYqHAf+T^D zBC{{p^ok&pQ|cR#$pgY)$i!-buA!E=@MeglrEh+DJ1Z1^#cbF#G~~6@5xu$sd|K>C zf?38NcA~51!*vO)T;#9?9+wmd#D_mUW7R{KEWOFdvy~Zcnu3TTA`SdQ!sY##zw7)T zVCL`H%+j&~FX9qcDM=vyqvI>yh1yvZ^?1$-lSfnoYD!tR@yLrdZed1$IxAc5LSZi} z{vG|e972e}(bK>d#LvGoU@82iWjs=my{3fd(<=CEKg{ks3j8z2#H4rJ(UxZCe|;C&AXFtL zp5vaOG3Ec=mllC8xJT$eo!3txHTP`PmzOb;mt5VC{KDjL-Az+8~H&3`s37ZE5tn=5+R)V1V7wj+q zCciDS%iaqH<%u|4ofhlTJ135xPcW7$lYtv6bNum5V3cR+eE}S;VTuB|&}^9BzDF|MpHgUzhtk13ot1zV{&|FI3(a zcAK6ZdbGOT!gJTcH+6u(#4a*(4SMdUr1~y~kA8UL6JPW~y=7vFZCkFH z_0en7T^4^BFgY^^fI`xGsJ7J){ejSHR|cl0HhRcdyyt@BUnr(N#(z51W9twKr44_@ zh5_CUfQ*0&${fy936Q~}9<_YxkX`X`kspksI~nVEI<)N}a%!9f=TPF11zi@k%)OmD zO{{so)$^I>+DCVj!u2(ON@+>=p8YT1(L8DB#!;euXp}?dj@7vS@b3TVP?y(d_l}ok=#qye zrBh0=mH(4sk;TbAA_p{sZ&I;q%xq5xe3OKM{3}xjA(5Tm+)~>|EI3 zwnWW{32Lr{9BdxiE`fVee{E*=qW9NtkgcYg__P2Y)Bd+fVHax)4Ta z(s3V%pEre&&bGU-$2%L&i6ZKG5+g}{F%snEn~02@%j# zV zPY?jP%~J{eHS1a1_boD+-5?#}4?!ya!7;!~g6x;nkyFhj;W1tx@`mN_*D1?xYjM=u zNF_KT&PeL?1qlSA;(~yImTSmpd?4HOk_GV zS!B%S?+{x`q4MQLY6f?xUwOLXN9~D?d;u6}veh7Kgo*c?xF`ytByt0EeWV@P4NCnd zDG%6t(-4S{qYg1<g}A|j~YNveMd*!)oN zz4ggB#Hp*qIe5^?CLfa6QZzlz{_4Uq$WlfW`^$-DV=qMHe$0J7-(Vy93inG9P3g9& z$0DRAI`9lY9WbZJJ`=&pip1| zf3oWLEjK3WN=F_W_E|Ul5GtgoFU<0!`-1_H=TaX91bw*(1hMNkT%{QdK7#0)w%sK5 zB1cP>PP@~pnEqYh$_+PWWxH-&E`g3uyGo&LT}`Zp*O}jIPvjtaRC9>j$NwZcw;;k?Cp<$iL=AsfNK+z<3m`FK zjnXO-hO7#KTR4G4^y>$3h)6#<5U|%AwH~a0B|Y55ymHc2%|?PdjLPFq9#}UH*ETk) zR@@Zq{k)m%Q-u_K$TLzPW|5ba+$&D=4!3Ik09W_S?{iV{()oQQ{XNCpCt)EmO8k_5fQ=^^IkF|- zU8la;;pK?-)UR0bgIdNQ$)sn9#XgUhX+G8CWk;(YF!Qvqy_c`z)oh|Cq=?YSdy>fI zb1y%WR{_mv)!9JF;Mp+!wNAEHE`HpoD} zqOSCcQ3;E9b`P>7vW(<e`kH@Q`jg6m5WbV8td?T^Zdp5E zl*J-(mC#3MFsbkMiFh!o%Jq-Pn4K4QlIn$1z5XU`RQ544o3>ZNREeJBQ^Fcz%_x-xK=ppV(B{ z6-mpN4m)wDQ0Xf5g-36__|3r3Fxb^J+_doB$&#t8rxL!mQ%hYVG8*Khj%i+B5HUEJ z-&(qT@+G!~Z34v^+!j1mBK8Tx)regt1zP^ddVTA~Aobjr5}Q<2+yWL5?gtvxt6=ZH zeFXM1dsma&ncQLBwC3gcsbW&C{oGsEMse@9h0EumXD-^ErL531Mw7Megct0Dp@2$Z z^V$P`RV~Av{^b48$!3JF-Uqs=?NH2d|DVZr-r8RmT?IJ{7Ti%p?qc4kjj<&+yoogt zuyp)hwio$2|~xISzl`$0Xs$D&{^`OMoTunq7Q$Lss`1G zAgMPzzla9jY|{OBj@ukXYNyM9VvpwYQjEqWFC|y0lx1`9I9+pDl|G)spl(#u3^NqKosg=`X$2cvOk)B!IW^Nzw`-#hkJRv5<;+bWRQ1)$>i1O4nsYm$NK#W2zJT zN|7YtFo@4TOT#U$8QUbPj7ichw*Z4G~JH0`-z|qff zLxC7Z>punyW_z+e4gEPQJ3rsI(4RjLSS;0+!2dcMyT?W;^GMGZ;+C~R6P!ss+4ba5x4TOTlD9~;UZLtk71G=9bEBRA9GJJ&D{s3A#CUu@&* zqEWKff7*x91AafweyjL3E*Y=;h7m8Ujz+%!z1osEnW3BA6^ASeU4# z34IiawD6&doaZRPCb3^C4*y){XE=T-H;?emOMd;|IVN3tI@zD1IA+8y)Ml8Ray(=p zw6u)3bncB!M~s0%)&QVjZ;+_gx-KCYn{x!~SESR`t+WD^Nbec3?i-64S~#C>Y29m8 z566~Y>2ywu9Hv3#XBpV0s1Xt0Mnp${j~Be+a=bCA8a1MwbwbU^_&p5Wa=_xh1cMl< zqBtJjcP>vry6ir zB)`OLS~nz26xu=B{yCoIa)f=78%cT?4K=*rkTJ@uvU*Oo$#B{+zuOE`%#%`)j#;(R zFIN0OeYE&SG>nS<9Lyx{^RsH$1bM{z{Lo3n`lbp~PTO1tPvO`vS&i}>ue2OGIPTQI zAzK(()%VG7+`I_i2k`x4@8S{Q$ZB3&B=|)e7>s3JD;`N$%U;v6gButbD-Xg74iVX5 zP^SFcMt{Kva)@wB!C19corVYk6;<}>b;V+e39%0Ftnjc>vl3~RXR^4y*{!ND`32f% z($+{SHu8GwB-4o&$WCCW^w>oBtUDw*U#W&5s3|5BoIK99$oy=!0!r{J!iu>#N6{_MbevMO;pMBs#u{O=V5VIZImw3zieP`y*gSB||60QS1K z%^mX)xl?T~4nC`k@*yo&dpK(8?b0T>_u-DV=xbSmcoO+8rLC?tpvo+#(Oq>yojR!t z8%Z!L1D~Tk&nLjtK&Q_%-Z9Z!z*`UZph9P((wEF;Bg;@f7OP7{N`O89dH1ITGytJ? zsKxnw3O&qi9K~e*I4-gtbpBMssm^)Rfj>QM{11(QDL>4RcN}AXAO1dbyMuyh$a0iw zG8p9aWyrCkekk-DEH!FG;FdM(P{Y=N!QBM^g2MLWri9jUU+DzCJ23E-qxm|Ka|mx80^a^ZZpCKhe! zvctf1bc?iI1Ubo8SX9f%)P&vcDX3eVElKzFzul7lq+vzjskJN3)slOUF#8Z`;9xp- z28Ml-Sc-BPm+MvV;s%$UJX9Ub9rVT?71SOjnnirnpZ?IBHTQ zGtw{3-6LB*pwxP-X%Gkt48A3b+{uoe>+-luE|Ton>B3TRj34}ab&X8BOCRiuO71JBPaKhpS}2B{$!p&C+)>YG}ty#8% z)CEy6_mSsD^8Oqm)T~V9xKb5x3~FKHAy({m=k+y z9=Z9xowi;isOP$TJiLfM(={XV`Cg{fyy{1p(lrK?0X{b9%#BPQ)q=d zr>Ux^>HoCdZqddj!vdFS7T|aIbYBw3v^-_EekdqR#m0Y{B# zg=Av9B29F1Bk4r-hl~+EbE=ul{+6cO*-j6XW@cNQfblb|E?x}eZ;;e$A$pWhH8!1N zy=+bsjL(Uj@6Ir9=|F;1^^^9ZV0uuXbxi22tgW9EG7;M9(+l?2g^M@Lj5)-F6^-T- z_JDw$>QI}euT6x+x>DZ`u}8r)VC-^qhFR{OfGaP%xsijc%odPQ!eS@HK!u3#qy)4iqg`c%#X%0@ZGPlm)%tr!+N3) zhGh5jb1Kp*2QMkvWqVbfoV>8|KF+|oZ>$B>PkTM$VAm_1Zq11HD#)BKZ;<}PNT&X{ zE{)C8BJ!O=&k1nk>(=>_3(;}<4&_-z&Gvr@^m;&Lmi z+cBafpZ9M1jlQSs)xo2m%1ThZq+;#xXWgS3Bdr4tIY~|lTYsQNySg%+V7@n2C>Ew_ zh2zshTWRl4s)-2y?a2encMD|55LQK(45FK>dV)qjuXBkZ7(prRkyIiH!la@3u6m0W zjF%dg0hpRX8__>VxF{S-wv?WR7w#{0U1M#@<89`3^b@I8&vGkZJHdY|`5S~f>aYBcKSUp*-sa~~VN=5JKJB`L`J+IiCQ1m>|O zsU&ac1~?`){MijR$Z-~$CIQTn6<-kiFY?|qs>%NA8pH-7VngLdDJo66N)1&k^de29 zi}Wrv(t_9(r57myl@3xQ6d{CwARQu|5E2v!NC`*{A#JV%@Bi~W@2q!b)_j={bFJlC zteA3@UpZ%=z4r-EFI>_G!I#$}+1rc`{94ffm@4fwrvuXa);m@09Oz#iGJ?cEZKr*S zR7j{r1!-eNGn7KOwOBo@U-yCnU#_p{Ur!X&o4HqRZa!(~f+?nY2Z?^{kQrNwc$Xx4{Jd#n26WDgNH-6d zuk=1I@qYCF#FL=@KGOVylD>DnB0@jJYW^lq`_I!hA%_)(h6F z9HAAIf}`(Be!uODnRq=3AA99k!KUiiFB&r@7kIYGxK(QPHJP$J5Sbn2KmoWSKUGL^ zWV-t?={yTiB4k8&G1At%^Fn&koVgKa9OReh{y)9p9U^AIfJn=CuKwUpl+60Xs{WKJ zt{0zl^T35Opx>6*wgqm6Mp z4@XcTRYP$yqlih4-3I$!?zs8=clIs0DVq?h7q(EZ?&V}Yd=yqqxe;`;9qHY0V+?f) z5CQd9g*foZR4*uDG7Ymovtx%c9wA&t=P7zVD$hfQ_I+kuRg!5)qrr7d!};eZW)iPJ zbS1oo!ucyYi*82v@i$?rtZF#Bh6q?zax}cLylx{kDZmUB$GLEf?ExFkdx7#(GADt! zu&&6OXpm`CtkpdC%uZd>CoZE7-&_6bLjA`X@wgCQ=s<;EKkeSP^VB@jKJA6Zq*enI zTW+*RH1~t;#k7MTJ{=i?WJThK>#>#-E#RCbC$oJ;z!~$$H2?uyX@>_aOKrveH#(t@t1t`)!ZvRFUwHD6LgM^HDGUVw$?1Fu5T}zm~Ay;BhD0y z5)W(~0;RQ0(n>7WAa>aXUW0iki@<~gY2y{0JZ=GmJxbj-*sh&vG_lPs%v6`%g=`NN_-8sLz-{nd&dp@vzoI>Edx!uYVcF1EL{SrwrZE7JKx9A=$9Ze zmgC9MUFu|}v(W&fI$cbgYA1zePnkbpfD$!N?m&=-(Hz-rw(9Ty3Q)SHJ)=BEV<)OI zG!^VO#57=1Pc1re4G#$XlebXIOf!l@or>FIQ zJDpmyDEj%r7S90Xl@ijyQU2>SMDKdX7`Ci~)@?n&()WO+`^W(9lW#@H51Y_0$hM`! zT`NC^^U+}0+~m<&GRO7?!rfaGvHY0*2jpAbJo1yGiOupqO1jQTrJrK1LItV?7t?w= zSuKz+Wd@R@3egEBIQJ6IXmH z;afg4WQpEwEwMO0$NIQ_oK@JCopWPzb=^(uFs1vB&pw<7u@_LrfXyF%$DVHtV~x}s3|lcSU7&_lAm_BDGbw@>!TE_Yw?jXIy9 zUseI!#lT~gDqny5G&#p0%1)uGt^GqUtvWi^|AXbzc=k1(@yeSaOJtX^37g3fzi=dZ z%Tz9;UN|fr`RfcEz{| zbpz?i^|hQFwT$FQE=7Px`BTD2_%L3mebRdx@8MtWAak0MSQg%BM09^BP!Hn)Q$M%P z$>|7meeaq!SFL%si#}9rYS8u4hn9FoGxJ2j(zyN`yX|^2yut)#{aC$hu#~iYc+9!s zn89plzn*boTX0p8$<>;6Cr`a;%pt$;%p}I{_E8{ zbpu0!;c~mNJF2SaG_c}ojDv5co!(j1$fk*!)wFS<-zx$Z;BUSs0IIL^4k^S1*}|HF z*;6+?z7Dmi^)z9gN(&H~W6oVg@T0o!N__~M#@rUhsHaNoR^g$*kJCBH*DB-jV>Z~a z;IBl5m2PJ)wL;-E8}&0Xp449O{;mC(xz_QkVFUL%8&yaS3OdAG#7uvpn9b5~9N)_7 z(U*zOJwmVY%S^l;^jgmc>E9Ld=j>7Z;ex@0X(B2COQE?Sbb9Q7Z(Y7!g-X4;!d1kj zO&XwknoW#-o0;o;cN{-+)-P0UJ_aWwbu|hT7MP`SwdniFoNeAp4G`OS?7Y&Q54k+r z(|tc-(B9fW2yWYMJ~^-{Q8zY&Q(#rhXUxmTvX{^oTWdRMe_pa*#whj;m8>?qy)v<- zb;W(*33&_u zx~0(8hh;XI;0>poMpSz6*eW6BAEFDBH{w#9eD3c@QKIu>@yB#pVfAi?( z3D1Y;H-M}a$UV!6w~EERsqT;SR)hCrIlds07cMYBBvNr-KQbvPm9 zut_X2jks6Rl*=1h=)CUG>n!9jx)4gJQ4Sv1w)`fEJ2zis+R&I(*lk#(Cdim9b*eK7 zPka+2;J%0hsr+#ea5ErfiHjRraGo8~?M_i2Yl49^=4B`<1^!>638~o?BJ)eZv0wz~ zd0t#Q!Lm^3?6yN1g!>@(6m6>@L1xyy)S{O(;Y#{!=Szc>q3T6eaTrpj5+1|FlXYp&Kx-2wybzJOFl|Xv5`b zM72-FhH=Li920zh&6^hmIhonN@s#w0UzV>aDou@y0_+87VY5~{Hi6L*CY}2IkeHGL z#D|O~zIp^K6^HGKRCij0Q4U%m-|X^)oxImMpB2O6qAZDxt#2L=Af=?{n~olfyt+-{ z+|{@LwdLvRu*+_$!H@Xa@Pk9y&yhf}sF=m)38zq_gLW&{1HhuFm)r?UvagRuA_igkqLCBMb4JTba6Y2e|7ky7*rw{d*# zy%65Zgk{5=)>;#Od54@_NAN-eY^$MjWU}Zmrx2#L5ZtdU0G9J14_}Xezx^N;Lp zE=`o>MsUd|{?&;DX||%=54AN>@;@B9GO4+xiu0Iq&=gKb(>gRkvrvX8174S_@%t7L z_55UTxQ0ZWou7W;TXbPaj%EHe5KuLr{Td}VV&4nyT+8F^2&GwuVehQ<(|xH^0`J#d zSZ7u*$60F6R7sMWHfSQlq*<7g>q_JKkWgdW`FW3|z@FJ~e!vaNUF7id)mAtQcJ&rV z>_NQk6=)~*g)(b%1E9(9ucdw{cxnLIq*B5uEe}}6T@)V8axolXkUeKtV_zC7t4it2 z`5-*Bd)!5lzJA<|Zh?1}kx{F8(>ouZxITH8Ze(>Xzem>WYBK9XSiz8mk)H_LSq6?3 z0e<^z_r>xRBDKl9LZo#_QTJuan4CibscvozWOMcQ;qij+#iw9q22F1i&j=Mqf_Ji5*p5%l+7J{)_&oJ9bkFQ(9N?HZjQfmD)Vz=VLYPbI@&C?ZeK z$7Al)iarf6Ny-8&9#ORb@F&4tRyBJ{aN#Tpzq`;H=?354HZ9;aM6dGpxcCLSjQ5P< zKYDjqk^bp&A5T~ufvQGE^o7tB;Db2kSMPYxa$8c83~p#)U!0DM!|!~(Y{$1Q``_WT zVA_MF5U1IJUmlv*{NB9-nC-Du%IdzIcXA9y>eXXo_(Jtl^GSD-mig<8YM&`-!Vafmd0)4KkE##$#y#A!u@98Z;(0*sr4 zb3zuU{(09hSlrZYlJ7nGOK7DjA-G$%4yi6?JWf61N^&OQx31v}hG9cP?JN0o>BQk|YRmKCBbTU) zYf5X|*SY-aq|dG!s@dhB8&%!h=y{H?kcxtR(RX2zJPYFom-=_v5_{$I?W}o6rvJhK zz3U6rLUNy~1m&&==P9DjZ|4_AzhU@~5cB=`{ibhg9K(OINO%evF_g@S4=TSR8!59x z3;4a>7huY|vfhB}w=wGO6NJ&v4e}kE-9k(LQ=^Kbh2<<)q~O`>k>8{R8W4xdjBPYl zleQf|r|Qcl@Ns)qCb~^B%xjc6A$HhBdnI}3ns-(Yez+*E5SO2o$sf@$nP}R*@G44G ztqVwyFW(w0KtaNT1=YaTIU=~Gzcu!Ekgt3Qi!R*V2+g%FiJ=m0U)CzhR@?Ln^#lj!F2*qaA!Vx}h+|6KArAQ*|v{Eo#=B*^gONY1s! zqN)WI?0Z65@000FTE9uX4~ctb_l`lwmD>eoWEKja<+U6gz-I3i<}y$Dq?ax>|zjE1Q)d zg+IAe&zu2mNF#oXhcn<&yc~V&_>s+W88@xgM+}QjgH-(57b&Jgf?#xZm_wjwqY3z0 zO;2c6B*e1G#L}1g=wnFycFfp?aY*g`r%-*p6)ala0kC`uNGi57{AYg zygi$BXA0Y)ZCuV^(Z@T>jST=SdW`9Oxw}Gqzz~n#CCh|F8-a5Xpplc;_dPLa0qW)V z7b84p)71I-gLZ#?swBryIT&Bn>`SWAyqw>1wvQ_)v_SV$%-|y~-PFv%ayP6n*q!cv0a9%+w(#~#PA)g@ReoS13GgFuT%lF`=LC(-g zS!ESpxqH2>vmG|}ID0`hMQ?jP-R>&$+Zj5_fSu&ENc$X)TkiX}7`ctD)B?re)5@x3 zH*IiCT0As?mcse-?SY#aZzIIV%*=BL6`_tq%PcZ@h#3Ks<>}80&=_ae}0}V?(cPL4krL8f7phx~W_ZTelQ?DKdo}vml64O|%<&2W0Rfh0? z+2M7AA_cHA9bB0y;6K>J4o6O7ktYA%WUIUj$%xkXh!lvINQV(HH&PM7k->8-?oNP9 zp+0);@F_pi0E4{uJ6Fq_mh)onil<(4=@txL9WoYct&F=n_mju~^ka9gp}WfT#^S@LY{!+FA^5FU@xoggPM@N~>`_`t$u(Zo%ww$Dp8tj4hN@Y0Ik^>)QZT+29%oMsZh)UmPh|=a2OD zSCO|IOj(7F4FfiJfD>XF64c6s^o`FR!aCF%Fv8RBQGtBPez!6+eyjt7F)DIs-RC&) zjFPG6^AU%NQH371Wrte=#|DC4mK+FI8qcl^_j-5BV?MGk3-XzW60SdA+T zhg2ZDc7uaEI5J+Jb65oISWFsJWi5;r4(ECoOX1}}am=?|SNan7%=&%oW>=8xGOJ&S ztqAmehUdJ2+tMV?dsdpcC$Rh^j(7h{GN$-qps_&a4jhji{)>eCe`_4h{KWqY!ZC(i zL8s-!y$qO$Z0Oc$_#RkKvf)Z4wyu|cp?FFn&-GNa|6l%T9nrJOB-K*^(HY}7!SP>q zi2vRCaPNQrzoI`AsAKdsq=t20me3@(>pN$;Wu2`>qil8c$*~X&;Bfxm=)yz9%X^p7 zY`o0~T0k1odSK^l&hzW5Q^>X4abU4YV}@3^>FFwD2ITnUq+U&#KrF;CM7E$C zd$#lU$=fsvY2%}25+FMb@Z%(b(ScI|%Pva*X53Th54g6Y7kt8tKii&OPt=D;zuT*A zt*C)e^X@0|;!&?*JDs0l;+Eh`+%;VF$c8UnCD)*gpxh0_e9F2eutzmbes*-ZAsc@O@JSWJd`qtiE)57(gY#+DD%wQJE&aH3HXo*8 zl_R2y)F{>!PE*L?iKNb~XIAMmqBtWrnk!J99x2n0GgDkqj@%*G)TD{)mQ536T)NdF zl4ipl`pdbOnE4RP{qz*Uk3n*#rCF&1mA|+ii|dwJrS^tv1I1^fOB=B|1(Tb6EqP0x zsj`=#pX|1GzKT6NS@@|?su5{QxHzHqDMztI>@8m?3M8#CD+Nt*^-+jUGgCCG3bj!TWdEIZ=!13N z+eSE9U*LQD^+ZOv_GE9)pZMl|Lfj7UJ?>b`O*ihg$-V5hk((Q2ZYnG~D8Fh)Y|r(T zO9-t|xmKEv$joMy6AzIaskd#&4U;PxhN~y_W7bb9`&Z^*me3u9W_EWd5J-*$s!Z!l zAq9>aTKVPA`&y0@EMC{q9@#kHwgOoJK7kv3o3z!}w89R9NKFAG$=~M&c@p;AzLz$; zypyz=6WJsRC0PBff2^CkX*sF^63xc(lmXV!dNXsG4I43Ah2 zevuO$#`=I44)Ze6Y}p~==Gvb-3agY`{s19jq>%LzL;ZI=**U<}H>0WsV@m%9KgJ9r z9{JGOAiBYw|#*=VW5*^R*^-fWtyk`uzov&fi4qzEfK~>lVO8$gcu)Ncz$Q>Xy!n zcO|yllnw5MSJ`^fgox432%|!ABHI}cS5{M1WP1Hf2CJ&HXG&Lt_Dv7-{|SaE(lVJU zfBNNOfSLTmB_zD?D6rI5&8u5&qPHim)n!bdxv5bn?n-Xt?%jS?)UX1r`dggF4^dWMk0~7y{~~jAO6W z$bHe@SSx)(V&3-lBtRQx`IB^lfjGf`RbNPNQ3Lk?pwG@nCe=x%F!zJ>x-QS82E2l0 zZCoGlA@0^IwojDIT>%)R;-``husp6=PCrIv7{OErqA+{jrFR4~mhA#LDuB#B(7~Sx zcZd)Nq2Hmwxf2*!@@IfzGz}j4=nF1ONejAx8NPF_!*bARmXC$S<|d=t$t_ovEg;p7 zYXBZZf*UBALEBk)$VUMHX|}qUmU#1GX~3kCJ`(BJ9@99fCL4*WB!3hM0CBh3w8yG? z$w%3p=!T`0#dy>*qKWZqjOgNVr;(S7?$WEoK)2Z;fG0C)C*LapSnV2N^Y0Fs+zDNf zZBWtw(^p_jA9RDH&zNBCxJ#RmdqQR@F+U2ZtT1BG}!30UaUIL z(fpy#*u(=?*>M!Zh`V$bQ*^^HEGAkWiYs_sZsrjGTN&V`xOm_`abgx+5o6^rbU3yQ9&%urXb92BL6e|+0CR{ z6_;*M?uS8qF*0#B(3tio-t+VR1#( zl0!>=W3Z|ci*_X9*936SG=NSsz{tyBbvWkz!(~e+zm2wj;brU-ac9;lXA#`68*hKe zguIT)gh8R5wt{>Qz|S(FQOTkm9ZVX)NJ;O(6u=02POUFkzNe?meA%qbegVj)IXxG3|4=AqMd*rI`x3=%pt4oK+M61pF_0RSu zqiKDj-uwN4&KHo)UpBPAPOGcR;D;A$x)VBmMx>(vN{EfJs9_GTBTxuGB842KJJZkR z??QymK(!a0R50fo)qtrpv`ig~qN6%mCo95eS@6P1N*Q|(*^xAI4ht2 zultK;j4$En$B>YPJH(HJ%K2eIpn!14G}9- zXwjW)a&DO3C=GSH>NdJzsQp5>kC10}Oh3`ku)tkyD=gu_HAjyhcp;}nw{ap?TbXlh z#QXZCz^c2~ww3CLKl<@UQ^z6a|GiS?l>8V94H)uCwV=)=7>@?1l(fwWI?!vu@F@>t zebO&S@tl;6M~^ONg3m?*qP)dM_l--sBBJ;Ll1(OM*G;6H21puenfGmPf;TpLU0V^( zO`xq{RB90`t#jfKw(M!Jcm+}Td4E7AA)vGl@sDO z2d3@X@3PkK4|w9f7Fv7r``x(HnFXL1KpTg&xI)ndyX>yeFA|CU`W~JQ)>(2_f;6sd zC8_>_LJG(xZt!=k#DPGC?~Mq@#VFvmFfW9Q*;*=r5k9$HPV77*q%z_^_VWqX)Ag>3 zK)@xU&ghl%^i2=jzS~uAT{O$Dc%P6;NZ`u(@EEX@Ym4~dlV$9V!4hFUnPFORrkSF$cx-w5cNP`X%a7ln{w#2aFL4#UJJzW)h1TvLr_^GxCY zAPaN7d`s-EGVSVAzqOO!zM0%TI8&`EC1!}fRTUhTpct$i?{YO>Me5$JJ8#>M;L^K6MVW2lNntD$=#`WE+Ng8CY&b?Y(*xvSwE7OMw2xXO5cw8joFpHr@AcmRAVB_ z07Lh$b&A%EhwO$12;|47LV&_R6~deeKIcORuID;hmRKrs45cpn{08>Wxj+?~OV;CC zK)Zx$D8%jEi$TKsW8r?Xq`;tqdf#p6?#`ojDdeYbk@!~c4=^LXeUc*wm zb3%g`3@+x#;{6@|6w?`ChupQ_JPNZp@EpK2?!4UQ(eoXy7>!XJ?t^K8cS<7~*$@V% z|F`OzYn0)ksObrN;~(2VykdNdvA26aXVs0}otNcXw{v+augam`B zD8dM8AQzZ6UtgD#TU>pwZ5cCUxk;tKdU5{%BQjwe7eWj=_QF|a8#I>3&<|jJi5mSG zn=#yEKLX- zjbzgp$*w~#33px7JJZa{oYh`v7+-R&s=E4wHYVuq4dY@J)r4M~4x)6>c`FUqWkR~L zk5^=Ee)1>jlfA!gYl^452~8GG(>KQ6KBbY6E$ZnSrI_g&RY=5I?z^wHH=t{iKJg{b zUjNH`js@(_?r?0Ck~}U7KE3AcwZN zEuiU{J`5R$MzbiqVg>}u)pt{?kLLSBoB}}%doMsr(U_PTKp3|3tU;LTu1{+m@#I>f zpJB3nWe=BiEWx4xa3b9gF_XrQh5#YO8|L@4vBnKv%3UejEJ%F4R52e({iPat+P!*k z(B#f}Yq}r6igxroeJPj9!czNu?*mI;n-J0>T*$yrw*of1?h8X%gOYh)IjFB2evTUY z8`8)aj(>g~j=W@P0pN>z(h-L>xsJKP#E3kQ(jo#I%j3%o1fumHZ(!T8X6$pD0IIa{ zT+B}SP4P(Y>rk`)@|;Oa?tDETvBqqm9JUtV%(ZmSxz;lsyRaKFb-p%b(<$2N*EpFD zS(u4Hhrq@1`b&?l*crubD7wDOeI~SN{1U)LKvso0&)0X7r_k+!Xk(Gv%JTtR0m`sG z#*Fo~>*r`dm`DvH%aJxIJ;DT$;cbSOmV&7BeIk`f`+YD`Mq8T={3fj-6+vdNMVL&W z22K3Sgfsmrncz6@WR<}BWh%dzgz1l3{GuSTAo(zF=+$QZJpU# z&oqra;G@9!Sj830`R`w8E~fO3+c27~*+l+#ll#AF>trG~9-V)wA=hlms6~nVSdBfE z*ncKVEY~p&eA`Q-1z;?a*}Fxm6_y^xa)`3zx5O;W+Y=^8MzD7y zPpi0w*Nv+OXZrRB)6+#=GvzMh;90}P>UHyR55~}Q=`7~WRCw98(*#ml10?V_>f`2Q zIbTI&c08Qvr0Dg_oKcMOO46a}{jZScwrpyg3VL&PjIPTTIPpm6S%`Pq+iEL$<_vs0 zq}kJziF$QhrCSiB_@ISqVD{lTo=}wdR#w@usu9MS-ZJej<#xIo^R0Gaer}38tf_Nab;bRMN@&SFdTUD*`&XFvw`-&;F>wvh~ z3e-lBh-=DQp@!w{J`&5ct+p}9Xz&>c|{QVWYbgOLITK2f+su+6Yf4Acr1Ta z77GJMf-(c$umrx~$ifuqGxtfA1kv7Y-z40v`wh4tIF53JCvhby+e0veTX&;jZ`j2+ex3`w=hYvP^F8?PWKMn*S;2B{yG5iPfQv0b2jZLOXhXPR{Cr% zxZ6;%J)|L(2O;y~(X!6-MxA-rP(L^5)@o{XvH(9YvHa%%NGe-zLiJ;P5TlB=`j&}C zA$>BB{W*?^!2$}_Ki_I{pm{Cnw~USy+E=djDc(8z+(^?)O)fuiDvb!SC>e25)JTLk zXMC$cafb>B3k5zfx(5Ju34nQ(>+wY?Rr%jE$SRllyKp+~@%DkA9ec5BXy{mW_J%(F z34@WCpoq*F0TeRqSB{9U?}FbLiDn5IW=HiJ6HL!N4qvqE0eq+onLbpX@C;7l8jPVE z6^$UH<#l7ZPawO-k~eKs+r+g`u8m zn~Vy);F^7dg7J0Ngb9twL95JiR>##Bptb$8jpOoAbYpTs!GZ5xOLsE6iBQO#q2jsp z*pOkdKmh7<+p5UP30^%>`;NdV;Z0_TAuz6SE}ZS&?&8_9pY#fi6`a-A$OX4NazX^& z6C{_tjxM6rUgiTdLtg5c5c-Rnh3x|@nKzio$2!oN2>May0j>6D!Ny$Ms|YRC@q`o5 z=WTV6OJy1dF`5R>x7<*@Fw&>g_s8G7Q)$~+@g?{S5jJ@RlvCVmxyTHqXf(ItOZ|Vu z`W$Dt?yz?k3%H#dc{225_P>H{@7QeoR@5VZAvQA@Xl4o*|E)GB9z#wK#-QHLhx5Fp zJiR(VNjdZK_j~?KG353cooCw~L{00#uITZCX{q_NaOq9b#XQa$fwI;Z)g&T|_c3OU zj|QTSkcRFu4wWajR3r;)s`3Er%vNe!!I*=G=UL}Z-Vmyzl4kj{*^CbgY@Y(0&qg4FVx@im5mXOBwg7CY%Pv4ijV%gIQUF2gLpk=K9^CV?bC=(L zwXP;`ew*9yc<&qBygSvu&B|R%eTKz(_*dt6%p|yavBs+5zPN{sE;s2d*eOZ?4c$gP z{Lg(>wmS8UUBsI_+<0d$%CBPO6==SG>TrYm{L7!8ss*45>75qs7_YjTyI1EGZO{w@ zEsnSQ9)Dpp1KL8e17UAPjhixL&u`|(vpsz5xltNI>d`YB7@J*`x$>nCiTar<1y|4M z)|vfRAP6SJq?3IWSdn;FBxgIc>*iE~xOdb1f(~e4+q9ky-_ZkbXk0L6ZfP%iR zs7O!Ti>JnQRw}7@=D4 zg3RCD+RjM@dy#_c6fc+2t%WsUG{>=FdSZl9bnO`8JHpS<$OjJaz=xjH3K)+Qwhnq| zY>)%mMKK>ctbT2EuaFHZ_a(+WnMF8_{Rja6ZRB>0D=Z@0p$qHb<3%uw`|@px^hkx_ zr(6|PhlZHW-7B9p#4b#)kp5^L8SIWZ$}~NmuajbR+P9bRHQ#j?B^DtYWoz}lE89g6 zAG)9_`XTTV@%$0V{VYu~Of+vCt!i{F{)FrrVB4bb1q_!8HhclGj;9g{!oh4T%hG$< z!`VW_+dLc9DNpGOKSe8t_Gh{br2FPN3U12T0{AI2A7Nw?U!490QXl+pi>4}KDSEm< z*MUTw9fyjOF;QP!B0o&GDt!4oup9C+hJWQ*1jpTC98ieSCcBU6CtAxY0qC=S{$R4J zv=n*8%kekim%fjbv5lVCe&NhdTh^uKd1y&}X+9SequBqJ8BX`I3d>zc;MG~%xyR@- zmXIYU;OX@)k@VZHn-qHU#mdGX`$>Ao%{n-vcnATSuVmY1L%aM1ce8<{2+6%S4L!;v zJ%E;O6fK}wISX{3T`8A)l)RS=kgIve+~~7YNZESG?n4Lcht>nS4RoNaaQzB1H4y@s zQ?o^Sx4foFi{u3JAbt_xA?bwEx2EVDYgdS+nMh_Qzl}N($<>!kobg}CkqqtWNPHXq zhV`SgwPBa=i$SHPj4t;4WxEaj?!?jSeJ-d-`K&c%EjzJ>*C;h*@#1tI$wqZ4o2cX} zNjfEXl#Xu5{nPCv9(3_T&1Y5XSW37FGXdjO7&kvzY$UZxfc4(@4~5evF}+Q;HOJ+Z z@TY_Qr+}nelF|2Epqv*t)61BnH%NzEo*dMC!us*k=P1i3ceb~vv3?*^^yf}2R_HK3 zHsjpRK`|&XU|nGgZNw)O`80z$1Wz;5`b_Yn3;L%2I6h@o;5>axm=!o65L*NSvGm6& zNji|O%`PBd>-RoZaZ_a~U@Hiyfj_>&tXuq$vm7YZk`fXt4Ty`2fTcQ_F+8{#U0Xje zy0!v6N_?ueTwb>inL@7gJkssLcC_9^Hv$)MLS`>eNCO+DLQhOh&O{Lje6zTJw766_ z532)J%yomL67Kvpkwi&Fg5C1jg-u=2i}h1Z>Xra1-z>5Ro~ce9ztwtY$n2|Xp|*0l z>t(9SJV?PfP-kR*zoCG!@gQ6^Y2$&V5HxLYc(c(>CCF#1v&O?Q4L~S%jxr~37tn7v z=*6YifZK0)(*2jL+FAdY(=CO|j694Aio;%csuvaN{xrU(T<(nnTBEuhFm&>bEd)G` z2Kj*CY+ArVFJ%$7#GnYBO{>#g*f78WSN3b~+^}}?&PAawtho~>FtB}ZhODgyb3e+J zLsqU7!D)AdBIS-v{Kn#skSn|nVdaoX<)f@y?MsGTw;7!n1S4;X*TkgH&M5O;8}run z5NAuqvT=vPjS&kWe9+bq}T z1%sFHx4~%{Abtnsq%fhX^YYH!BT}(}{I~7sa-5UNieLM>W3K__hhUGplJ6E%8ndeN zsx;z_=oa=XE6ekbdRCU+7do2`virfc=TNNrJ+eq-5Xmvuvvxp3z`T3dLOACve0M;n z0a`NoUp(;wRkIceV0bYd0D$xUKY>qsuQA3i@ zHauAC@oVK{IbbdG?r9Vc({N56Jae!~o-y`VnqPQ`HUvMEa06WDB!C9<2d-;J0+$}> zfaU~TEsy!K-`F?B$1Ldm@mdBbv3f4~<}$h=eyGS`*z)C~2vb%-Pc1QisKLP$N0S-J zw?j3oe(tdG8~qGR=EN0Di=(6mo9~j>O!zScv8J%#ywwo~67x7Gma(ee>&YhksKcA6 z{4+P80419nK*?VLh|9;_i-h6e6Qb}oIxA!RRvq_-w?X&q=cY%q0!=Pb=AEIogstSB>XFdf9iT1s;_Rck!USstAv^L%n zQ0@K&-`V-yg-56JD!y2eSW}V$5aIB7^%x_S)qg$q}rV^hV1$8_3A#Cb;^Vw#iCNl|mpn_r67w0U!`FsY)_yc!;zl>`- z+#h@JA^lyBk6G@A|Jdz^#1@}X;{Rgkh{61h^sml{%@bcf{%qKzd37(Jm_BqDXU`pe z0&FC6E4FFiCx_uZ=(~#`Uj_~rdt%t{19UNWb}XnQY63Vn+YTAZb00r;zu!aEfHuBK z_RW#z)xA@iHu&<-Yt-?{OMs4>FJU%1ZAUQ6Upgzq21sS*>kU+kxT1avhGR8C~`wHH&ff5wyiFrLL zt^qFMNmX$eDvsTFw0Y3)cz(T$2zf|FI!im!wc6mvR`?Tsq{(xsxDJoNmWjZ7j+iLh zZ`E~a;K(_W1etw))%)n1^heDVe`5hC>_F!1Z^H=4VSx?mmP&m10y5Lc;9F1-pcub< z1)8$>g+eA81B`hdp`Jl+!q-IoYuDBJj`Zz0-+eiawQ2xS_4|KEVx-2S0)G zqWqzAX@w8MjO#4wRR8vH4D4X`a9nY8qSyk+&G+liLvS_)l+_`;-%+7-qs)dNZtJHo z8l%jqkWgtyPu%^Y`%=K5!(Q1mI4w9;5ufgW8;zTjUd%k}c+kWFXWy|V zHwNpUa0R`(lOt|GN~vYD!+9OIj@^qQ240|xZ>L8`+z!j!iR*Ys_ysg)=qIQv8Z*KH z(9>joZiTCjApSQUmNUh+A15*;{;ZwXOkTfNpjKxPzG8_YtWRXK=?-N_0v+3)`_TQ_ zF*ruCPH!Hn!VR?B3X{9yw!?9?=GKjXpWGAw5(VRBrvI;k6=;^F%0-};DMPqt5GO0)X!8R5=#%-oNyYZUu&<8cRTVRu(ba8j8@#XpJ z*iLs>R*s5rb(=cvv>qfk!!0H9yJKD5B~!a9+J(l*R36FlsZ7WdfMO zAJrsF-O5Un$n{&dy#2C2biAJ*no)BO6(Lx01*3c`VCB_EBl``rjeEGNs1>cL#3H(f z)wgOzHJSutEnF=kC#Cuv*u{=s3r@PSHCkrW&kYGOpJ*X0(^&pcnHys6KLEOODxd3A zYTdDoeKDHCs~b}VDxe;f2c^mnvr#J165X&o7=e94vldf1wPq)s()VT(d;9nebhDin zYarAUFEFg%wXon2nojOTEe@iOzfR%vJyWZGGc8K@gl1$d@>>;VP&tui`^PcK`}}VA z1@mXyKkMQMUNr~m5gFLnB0?Y6=06(;*>|6b#nqK{t*nRr2}f;sgx;v72e+MkmZ9Kr zpu+S~XAc}LLcXa_i}bkQ00bBiR%UY6r=og7#YRvhOybX&;zrzTG<5nC^b;UXasI7= zXthyK0HN>srYZsbC!OC9Pnu+C6bo5Fo2J7Sw^Bp;pFBLpE|abf$k%b{eLQ)=1z^|k z)SH>Mi1K=WIb#3Q5OwVHRGwf(btx%t(s4q>$C07u3Uhnq<7b3qPC$M(@f2KGy&3ev zv#gXzeqP&nH#|mjczs8B@oeZx!EOp zWQv>`)T&CRX23SSl7-Oi(v44j2ZYmsMheHHPhDh7OI?3zRhTwB9;y1f=n(j|hw}3R z7iH{!JmKLa=;WbVXuP4kOx)^>kA-IABG#m3T%pR(K2%0N;&u54PG-y>DE ze2*)C`yLTCH~Yire2;zySb2nT7IaS&OlEC#E_nWt|4OBzmz!4LzE_;gfb=zDCV_-> zDEzgl6O|^=9zyovi=6JQ4S?JpYwn{qC$~eh6;U=2xqDfx)e>^X|BZMCk_mCsO1ibS z-0NTq3TTl{$BmzmN!YREFoT>4AzjWgxznS)?QNFTF{4aq$xJLXbCfZ#9q6u%u30fb07>ZD|-z{b9Wq^CPv2QTD#2A3sf=e#d z&FrpeRlM)cD(f-7>sj{3xfcl)>WRWT>lQv5`j+glpfCxvz5sBnt%YjTn`I>WT~b6@ z?cEM)b$migfovstTy_hRCrFp`-&k1Rja_2i1hzsFXP$^>PL4M1=bIdKdRxLtuNaL|8I zs*ulI6KGXrBD|F&Jm%3@A;Y}s4ZS4@f zG^j`5&7nEUgxmY|N8f7cm%ZUCi)09`5%6BM0n)9$>f=;Nn>1Gyp!As%E$4HSt*$g} zUnQ9tdqU;-o>`CjA8P7$(>(JNeuV4Ugb2{23)Rdh##CZLgt=sXR)zXGU$A-qnl0j8 z5YQh(z>R;)d$YLI(c^+QZ6huA+<`x3S55(CgXOI69y&KYc*({aKxWcRWY!WGxyt_& z7z}vZ^<~#nNvru)rlqsOP#qqI9-SG&X#yxxZ06A`jN zKCkH%0cB`_v?Vm9Y^tiB3Vfx$6H z(*;4To4`E*4$2*c!@*&Bpv)K3TxQqoXCoPcGM#SDQ_t;avNF3suFg1izR+NGX=l!x zokR32JA(iUc2Z+gdX&($fPf;iwQo`aZBvnoUqE|rhUED_2nY?g3wx;$zdFCsRLL_d!-0V0Vq1Dp8#a>z|nmC3J-hD zp?@uBTtR|e{|9650o2smb`7H_7DPN)IG_S5y((2eh^R;h0R`z6Aks1Pj-n!>^j<|e zNN%xx zL7*4{$L|n|T85RX;ne_VUP8(N;iXkWASMHV)n)N1KQyr^cW|5jI)>j;I~@(F>Ab87 z)4k5JPrb)5d#C;zMS;TP8Uj|degKFZ!>F?#^k67!>r;g1VxWyiJI2!Pcu}%QE~XK> z8{>^F9~e__hmcpQ;pIJhpK->^jV%@pRK>h82rE(T3dP1wRKuu;bKWbNmll6Ct1T%k zHx^Dcq^`X>Mx*<6JD%kNy0AB`v;2x5vHst8LeWwdubSqN(!}jgcjZof{Rs$*BI5zS zRaU`+Cd#ycJh}9ONl`cLC~$FuV@56+)X4OQ3{PEQ|2({MkyciMBY2Fy41-5|x)IuQ zdoGw(-M)t9gb6+kJRV*Kp8X@k`lBK7*`E2<1fGTbMcWg9W86;-sVWPFkfFrWJX|0q zGsl1)Yi~1j9tcHiXhc|`Gay!@@qhHO?w^&pSsDzQ>W|2Lpk?tHfrUieZ&@UQt|hLT zR^2oIhG`|2gCIU-@Vh5&S$GtnEF3U=>3y;?G{foo-#&*JT1WP9!MHBvCZKOh|FNBp z#K9EI4?)aadfM=hF7w_i(o)$T2=cH>TDd6Uh15n%Ed>^YnIjIaBvf2Nn)X_;zgPt> zk4GtDwDYNbOUpmxsiZMN3LoYsIY{gDB9~=N)3m$B(5rCR{nTAc1ue!41ftgfZo{8T z@4)+Op@(AJcR5}x=kLi$I4*U83-r&&8=KKLwH|6p=g?UNausUd&ZU4;f>^{qBA1UX zx{p8D-Y(1u%3(}R@bJr8Fmx4}a4hJRE z-7SwE=;YVgeZUQ|^VaLqbJyh@l9mgr%b;k*t`ojS4xbTtga04V&ATBP1Y7w6*gFcl@T-(96nPFSpGeH#oD{%9Y+;^Oj&E{>v?>wtz%WIXF` zqGTXc(Q>UbEBpP?2ORMjm@ebM< zCNAG71;5^kB#YQs`IW%Z$e!s(50Io(DS0WI+Mu-~sjaBEj$-bBt%O~YswEjDlQ$sF zo2!?=cwuHWJ>2YPR}&B#g92*z!KB|CAma!!-lAIA%&nn{jouyuT{ai6Wb8=)OIv3^ zu**U~IPrNk@E^V!NM!E^)}Z13lU;c-*XJfJdUwUWXB+129$0ssN4ekC{jo7AcmKl@ zbm-`Ziq}MxS(T37riXxQTmpT59>PKY>b_@bjWQAJ-BC1a_QK=}@@y`~DRzA3CC0-n zCAn>KRrkCNQ#hu&2RnUcQ5Pb&+x)3f%t19rp@wQ#+gRCHO7Y*6E3O@dH<-inO5PFS ze)(S)VB5oyZ|a*=KH7)qlAweLcH-u3yS>u^LH$2c!R*5qmCh%+o6(?>A}#8A)!t1E zAs4@VpE78dShL@`Sb<7ad4W+mipEUoD>G(FiZcg~Z!CHF<3#E88i~o~=iwVAMcggH z-B^{h@%Qw-%}r(W<41fkQ-DtVxt{g(HFh%Gsw zd%l{pDcnl4SjUyEP9nK<3sg@g-;+1|2csVvxG65geTlI)j1@A~YqFdR*1pf_F5i{3 z&9NCkjMlyBFLO4kGwoyiTO|ZusoG6Ggs&F;?VmHH-;z%(^C#U?ZSJ-B%*EDBMhJs? zX0!!Awd^$k2z2kHZYbs&7gzUux+*RDQbA&(Q9Y(h18zqh;cuZPhZP5*HeWf>zqh>` zT!N7D*01YHP78T6!pSA@i?S|V7@(Oi=;OsrZg#K#5F0!}xRQBR-7fe~sWVp(CU8ev z!|e!*nbY9e1|fyqeu^tMJ*l?vjA+wmD9hmp7o= zJFy~Or8F4GLH#rEcPfT2wddJIWNn+zU}hIId=sHC%cVCtYX&JPrDp_Kj!m&@Q+QeZ z^D`F$hsK?=+XB|pbgsC#ByEGQW$#38?VSj>-sk|w8(!GKE?tjFnNKrc-}|rP&Sj|2 zmz=zqymg1u*ezQ0u}PH3v9q_dtmnQ82tHU-6}!UieinN&#S4@j`Zpv4xgX?cZoqkZ z0Fj?~z;ZH8cUS6276)2Nk;mNNXRrsf*^M$`M$I)7n4_W$ROe6(Y_ z<(y9Xach%fbGpn4%AAL;xC=i99eMnAp{H7mc%3awI=7O~F8Tar$GbNVoJZBqF~ zt(U>*%?ZzLpgcx}ZG)1xCGoOW#qV&UKqfvy`;krP+Q2%nslIlUh>s7yVF|N?O83#n z6!(6v=JPwd4HQA7$%r5h0UrG*e{rXLvnZ%} zgLir~R+ypx3QfiI6)_(c^Xx!c7+4&FxnD=qS_a~ZHs#5w+LTxt$u_qLu+JC+y_W#~ z-|M|z0eJMU`DZ{AKd?2j0iN43q2EGNuBK7nXEGZ4!9U%(L%Xm8aM_e{tm;pnt=&yP?*szpwbZ_1`dLe*# zkKz8_1)Yq~d2)#Fe@?%-L9q`s?d+V{LNHlcdpc`k)}fHpW8SetDviT z+y^;JssSW?HL`p5T!wWL=gZC~5Qbo3EQ9ez%ib>52yTJjiX?i+nCzKlC|2fRWH+mrV(@Vud=$6RItf`bt;Y(w zhtoS%@wb-C((How1}Axv9?p83TlyKd7#TWp2M)!5P;_!l;Wugloj9z2u!%E$<_vMC zrvznG?2XaS)BYl-(M;^E-JBdvt9K|p%%z<;IJ@)CWLEIP5z64hn^X(kkp*bhHD!!f z?TY$ltVT2fZr+rJa9jg-Y>`>w+H+@@yUZJ9ID!!drqOVurfD9nQPq2dV=Q1-G!$l9 zoa9*?bd8i&-lNBi4t(z961OSU%a!>P9q1@tcPL#G2ZRk8bml@OWBM?YAGSEai9UgJsqmvR~x5 z9fWp28N*ogPw15c|4rcY$|EJc3Td;Sk6gF={b<{}f9CdzcRE8HQ+>L!U29BWQHQdKSf&H|<6%&>W+oVpi0E zM%@6**y5+CqYXhyD>dA8f&Pd>T?;9;qph}d#pw&#<+0nx*v5%wY6B1=Vd!H6mFKzp zx~<|G0-6H3f7oD4+$F@EgJbJ}c*4QfCEq-SN}!mh$s@D{#!sr9czBPp<>6{PjI7jk z90KY!()VgYb>+u}a_*$#M~b$N0Ad7p(KvQPO&(IqYX) zCpF*6mJ)fs3g+<+3cSQ3W7j~0tf|LfLUA2iz7FLM)NfR$WH4C&|uGYc(%6rPm9J#-e zO68_X18tA;`Oc~z0~G5A^ZZDqQM1;0l3LD$^=Sj;1k1y z9vTb_NTUr{$&ZoMdm^4rBl;CD(TM(e7gQeO&P~E2BC1xd(G?FBuyf^)j{RK7zT~&Y z5~rGF*k{VBQ#eP&G+D*lZ;bUu&WV@jx#HJUr-A<|E$QUQk1*>Tk*Tcl5MO3JmiiVn z`M|x|=@!U)3d7dZJ?v^ZU6YU98EBayH2bK{^#U#F;B)K!Z=b(uq^5ruJR+bGi{)N3 zY=~o;$?zS8f#{l8T69h76F6w=Ywd`(IQe}!f)4b2#{>f+3xU70+mhvW`)wb}4-O2h zjtF*-Crb_B?3_8r`42c{)=yF%Si2;=&yKQol_2^a*8(A)DzGlN@G^x=L9qsBhSGIi zbEH5XPX5(YNtka=OO=E!3k=|Co!zCi8U478&>sijKi3>XVI^E$GCKK7Ls-RHJ>UEi zDM0k=KxHLz3m2|GT~!#$TMfw1^cj42J1_gZN4NPTiflr`VWCrsFPt9xeL0E>{Om}m z9e->Ra^-Bw8|>SHfrVI>WWAkcA^nN`sYAAk%w*0GUr*#iyDrQbwV;<%Ef1aQDGaT7 zd(6ilds9nQj)2TV{P+1agw8dTx!j+xqxpz)h z4+)dO91wWe?j~Lh_xmDpPKhCP&)n?kHC&!v3d4Pl;ORf!1GIVzV2Y@5cvJ7-joVBY zB(H{A1pTcWC2|37>y+ktf3&PF5-Gs0rm;}{p_%>ET7q8kaZ{Qa$Ch+U7szo|{1ocv z_XvM+n~qD4jmUz|61~g1J%cd=cM%*7y+EMT>)bIC${#fH*WZ@;286(SV?h=o>iHXn z!*+KuBihH$>Fl4X^mdj*Xyd}n z^w1&B(bn z_`1=9fEx<~qMxv?)$AWLgH9t6Hl$dERcFF7bSS+kw@EGJ@=Je2Tt`5gqg&l$h4MkK z#Hu>iOir;YX_NJ6_`N1dK4!`^a0<_&iEA|)_b02tsX-1}c^3U+tXJ1}$WzuKIqD;v{ zk3atQRh~wWuxm6kPiai|``S8|}rRr8&6ZbsSld;1}EMVw?)W2jY-LDIZhW{IZ`ezPGj@RgC z#MmGuh8`EN#6<>4eFx~;+K;M)=lAwT#wky1#N><|(*-1?L7{YRvQ|$s+4OH;zbyl^ zp1}lzH`lxJo-~aJpSF|jiP2IUm!eU-d&FLq$`KZIUZ4$9PMH0p4Vo~`wgxtFSm1P2 z7WrBueMBa{ls1|JJv*B%kO+msCSNxLaXWiqy_V%xi z`C|&#y3{|@bB&(=LH_%%xRfCg%!Xj@MBKT6sRx3o*A-KB;7C~k;O^&R*E=i>A_Aub z{vuCXcJuGIk{dk(KBMtook1folcF2RxmLbDa)j5stjE)_4g+)8jZJJ9(vZ(0PmDHN zT{_i3c^lU()uWMTS%({XuNO79h^XhzH9^qr`zx#4znQrX=7x=>d*n|UpOf9nL9O=1 zO~#Od6fTxH$CmrCR_WNHCir&K?yaG=$3_%Sh_jB!dq7Nr8ZzR0m+pbv6ScRM+PTiP zGN}TH%rkWV5gKy%RCn9UYGJj3G9wJSB?z`RMIlcQQMeb617?nX{GLvs#p8Hs@UwYR zWU2z;=^uB+nmz?Wr&6HZ7Q{Wu(QwoP#WpUnx zHp}LJaphO=&Srd2DWJt3h0(^t+QM!K`HeP$2{kfz+<@Ya1=<)vi?#jf78#*wPm`DE z_0S^0dLTjR8$q?pf{m+5M=cIN5fh0_xU_3YFThTRvdG@MRb<%XM;4X3Z$4d0SDYB* zZ?fpht6EGF!Tr-i*LaA40{%p|Y{;EJm1G{3sP`(MafpuRi3B9d2 z!y98I8L$cfn^fu-Tpyy&Txp68u>8mNG!DJ@){FF+HM)x?XD^{YV#eZVa&nN9&L!A2 zmow=frIzX#VDe!FSc$$%S{lHJ^mH3=0$;=TfC9!M)<)o~9B~UB;CBcv_o^QZZF#QO zBJ@O1mWbD5@w0=q)xey&u%%Qo9 z@QLUhJZG>0zdqP87`rZx1jd`w8rWQE870E_aSJmgn3E~JN2R>CkN&aBTr`ean&utL zYWquoX?XXZMzLW^tX&b;hZNRDJGQOZw-F+#wDD=<*9VhQXYIc2nbXs@)Z#%H-ctSY zwqzVA9t^f=HWr5K-t^CA4GiZT_8D0tFF{0#WAIPltzCa2_^vop@fb*LJEg(>E=1PX z3;vmkGgXo6CFB&>s5Gtk8p8BNI;kjibd)Ck5kKjZZs>PfXTE!%4Y5sidMV`Dq+ai< zAv-_0;nE~Xl&6pbF>wG>wNZO_&U0Se+cX2U-0AOV(-;WdHPZIcR_P5yj@naIF7NE3 z8iF#cGbk&&63QDM&inQ;GsE|_yt)ca@(Ibt*-UccLV~K?jyg(3D(j}tDr@-IShW1ELAoRxbPfr zs=F;tTMeYbPl_#lKXaGYFtKBG(lJ&4rf!+vW`{OK;|y9M7MHPR5@ukQV$x!AGtYAB zrzlo`Y!*4#s^b%h{kSBWZE7=;FyA^*Fx`ps(Gsr6a%XY@(^F8$mF{ou2*YdQT?Jm# zhHDOAYBo%oElmT53R2wGk%!_hJKgKzYv&47hEl~hd66u10m(Ge{THLO$(goQKbXB3fj45 zjd5n4vj?blw4a?JSZPqj9rw#}wGIeqTU*+gf(IDoo0j2a{;bKqW)aI^kKI+E|M8j8 z*Su^o>ee|xdCSlC)M`pXky)5M@yC~N^3i6-Ch;SL?Zib8E;;GtIeT92afC^?BRc>1 zy-b2SqZvM5z{fsSR#UV#y4e`X3;I=o3bb>3An=#sdzYTr7P~HX}vqzDMb45I--6$g9zbcKe z`Z7W{SKWAArMzvFrANWGf3DNE8Lxhfkx7o>wb-f%^;(#W$m{_}Ri=RbwXH66t>+8d zLmLY3BUy93ZJGXtsxGJ-r9{?*^h(OVH72%%X5sJdwpE>@o+c2K;0P?{;}w{d{M+yw zny-ifL=$fX@3K+cd_OS3@mzy8m*%j^225Du@dX}BW@rIDktdY zTD(g~1xenrOfva4pXbuGL55*#)_rCSyT|D(;wi;3-8b3|MCPFOk#T;;^H&50A^w}~ zn@idZMCgtqIptvPbY^DmC@#69#7)nsmGZjmRCSAvKylTuJO8~4vZoC4_wD6npLoN5 zpQEKDf@d26LTh*X=4irO`RlOBTY0?kq8AF#*AERZY@s>s?pBkp6x^I@`ORM4qS{ob zwDFq5-Vz#tIV(BYlo!%`bT(cku$<) zW-02xReyFcrOoa`&JmB^6>XB5j%eB@haiXU>J(|)KjZDF{AR3lj|ue5-O6hsWvogO znep4H+jeHvT7DB<4u#996Kb(cxY}Qy#>FN+P9g29Rh#|3Da6bPT|e&@h+<^Sn%~2T z!IL>u%^qZ3{${#s)2f?5%0u{?7t?TPBexQY7&>5(9En?)Vn<{*UpBKv&HB|g1%VNO z+>wLWS{zd4AbvNLEvKbPcRd+<|B*hH2z0mc|LATHyQWgsNa(Q<4tq!(Wc?+FOLJ+ zEj5<3E%%B|k6*{E{-x*4xfanvjShac+77EhW!Z(_*&Jh9YDLZ_`Hh80m=8)hrQyi~ z-xn-!4guJ3QD^^q`;%w9^7S=rnRWXv-0~~p*)X2qu5KLVuI3unFcq$kc!FFS_%L*b zdfPYk3p%oG`wMxk#C*cRIYYa_z}<~Ws7b={k+&P<6w=vN3%-9tZghm`a`@rm<7Dcj zB*o`WQ#Gar!aAD=A^Te$JYBuZt=UK2T)iA;Cy8A$_l{1ObAQtOqwH%n+mWtkR)VXU zyHoTZ4e1tJQHsO#%*tVT3Yb@;3q>FA>-Z{kwS`UU_wF|A>P@A)Q`6!BA>rf)Vl55xSH~;78_f92wj7dWZwj(WZ$! z6dl5@rmT=Y5nT|vmVjs6b}{Rz))}fctJ_`)_@M^PJwGL3$;z;s(Fq1Fd@R6Wf13~8injRqA>_l_-MiLvEsbA9 zxOLJAVsbqf8YexhPmS)0ZaFM~=yrKyJsBtv*q*XqT9uf2kX9Gv$!!R8M3S?&L67+ zZ0b^SEwN@ZJqL?-jmxWUI4ZA}z4j!Li^x~BgUS_ieMrG?!`;naIn=W5I8)wH2`-~l z+sAhT^li~a;CP$j$2(Xjod!|(51gFx%c4A13EQ$XDLE$ zz9lf^Rd_YkBGA1YU+1wIRyEO05~*i$=6aPUyS&^T1BgNe|`LfmPv+{ z(KWZ811*WmL&?!U)e^Y^{A;D2P~RROIjMNy+x{bWgC09GA+7<8!(xkrun8XMqOYCB-Jse}|inkLT_1&sB%p6oQQFf%D#x2H z=4p(7Lt?N)*5q?pd8HS1Qa%PWj*H}7VMj?uN1GO36k4l_wI;l8GCXn1>g}CH4GSh>F zAd_0DMHpO7sS-YTwTK7)adcU?Nf9Wv*G_WSqqPutPiNyDG0KDT!TMO#ZE995QfyY!zFU zF2gjF`B|GL7Q}xPzsadF`#mTbwD1|IEcAK!0!iqgMt#Koh;u>72Yz$#=Q0qaGgKl z*jkcSUG;9YPRYj;`ap?Tnmch?Bf%ktq=vXx*6&2UtE;z$>V2*t&zA18_YM7yPfNbT zez5Dd4F7Bk?=q%T*dnZ}g1lqp1&fc((a!Zlds&fwuU?iW@bY=ppp&i8?Oi_hwL^e2 z0mn@77|)QZf*sY1H)J^JZElqlmqJJ|b4#;8`i4iwn>X5_tG|CXUnO8vUKyGslj1vv z0umP%Rx~#TtkU`Nj!a7>zaTp{fdb(4JK4R^T>pyQ!CX68CYf}{W0Fcl<%AL+=?bqV z3a_5ta<)a{z^e!9ywN6t=u)Wlp#LQ?tD?F(WvXWcU*6NC6;wA#kmXa;yIxj(=zQXQ z!~oKHakWWacFP(8#xMw(WNtWZ2YwrB!Vgc4w1{n_;|S_;)fV4ZYL55j#SP-Hh4MBV z=PD7R1=gf&-T5or=2i09^V5F5MX21cX;NV0bb`T8^!>`i^i!uc@1|l7o1Tm_>Cjkm zs!BrTOj|x8+=VYd9(TsM$n;dLrmQzAXlU`({XMzzBv`8_pC4qF{J=%D)ReegY*%%w zXd#yBSe&g)6PfI3&mmPNjHek!>Il(5^;G&cD_^q%#R33#x9@niWJQ~Fg|W)|wG1)< z=xz;M6E9ZgWw4FPo?>YbbRmiIlS6TZUiSy%dp$c+b!)90v3#3cGUAwe;!^V>?`E^( zTV4}qvF|Y}-D+y@Ong}Ee?_<^rVk%}gQ$lWS*zBoW`6xK*u;Ar?cQ7#JKSo(!@gjG zC?vH`YoSdR+0kpdA)&uvqtVf4U#9}N$|0W4PX88Kp|&aoJZWF29boDkgj~gUnv4G8 zzE{}e#=E=VIUfu;wt1aa*+TOrCfS=W4KlsE-2uT4L2f{AvD^+H)raO|a=sh`s{uGp zjENpT{m!Y5n2s>03~N$jM5nJerfIH)HR(mT@0+|oU3;wis^X^-q1{#6>G1&B{=7A% zT8-?_gR;Lid{-|D$Z~jFxZU(2WmB^nXDDq?Ruocjl9nL;iT>_DCNGuMeA}QqGSV%q zJiTM~@p$7Jg%2$JO0u~z;a%2uK)dq$eA}wVg^hrXLy~W7b6tNNQe-d9=UeD@XVL=Ya|cJd^QeQ%_LM_; zDgBNrlFsKZg}pEzKAJ~0q?zWW`Utv^F z%IY%nV6?j;QT9+w=B+&OcyoiLANhucwf{xfIRstsiW$KcMa3?492#R7ZBBs8W6h`q zEu1oQ>-EqOZ32=zGkafou_-27eBS)*@L3-v7Y#nyIK+&OB{`2uAm|3;X~03=IKNtG zIvznuUypQ+`+mqHGH% z^(RAL)}_9@&PzY3>nE613eX7V13GF7@ph|ruJdxP&t0&q*J)`a;GEBoVZ2?}T{tBN zhCRAI9U}y}^zpHEsW(j}`0_t;^Ka+p)|lU889#63LvPrX=WO0j@F*TLdYAKbv*N&U z>XKx8-eBpV{>@b_t$lm1eEvxOkIUhB1O~|JX~)&8w8CP>tgrX7CO(Gu;$Otm;MpBs z8Wd9BXg1SEiUk#6eo>wg6Vh zr0xkw-JWTn2MOF*+0Q*&H*EbgK;S6ff*$|P1<6Wxe?i<@bYwgBcaY9S!$eJY5vxA zPdDeJXc(#4?nM4{U`)P1Ky_}0#>WHk(xFk!Xi)*YTcj8?kO=nVahcd!>8E~$)1Hwo zT=@Dp*#klDug28^CKZNp1L8K5Y{zvbmWPCJ-=AwHU<0vTa`)$Vbj>DAv9=)p{4p_o z!)S5VFbI1NmzP#+WsONgo!#$_%5b@Fnn;?h!*PrciLeGWw{6oj!F!?GNlaD|Aar|8 zJNJoWK-5j(9W%ITQpM)7ETwzq5S}wf5D)Dul}b&)#Hr^C=I7_bJdNVp^i@qux^LWB zX!3Fb(T~O;VO_Jm^wp%1-SzBYQ7!v{=%3@sl(&!6c<(uHBMT}qhLTTlk9+<@o|z-- zNG8dzj2wrOltw!|Tx80zJGz#ud5BFf<%cJ|Q@6eG*{ta8md0+>gNsk6JeGfH+Q(OS z1`H=aL}abgzH8FV1W{`&H*sb7-KPQJ2I)DuA8_hm+#Sgo4J4Rbb{BU^gxzWGL~0Qh zIj;1-(OZ>vEGOg}ib;g$awr)+#!C*Kj)NxhFYC1a4cz7@66e!0@HpKWL7_os{na{z z!$V*t`1tlLRK%lmC^P4rm*>u!t(_0nTGu?ecuy=6UJj z2XgNW**E~acn=8x({#;*8j%^o|V;fjnTBAG4ltY!# zmnpz_nfZ#g5r9t*YGPeI(a7Kq!{@E7d|w9$=2*3Spt_xN;IBcIIpy>sXInJWM6 z$)bP0^-}0H^vQ++5)98k*L0Ny+5TKadp4_(X_xojyLIDk#Xc=d ze&>F!O0o7GB`?7I6mLztsG!A%IlS^FVF0riw+*AmZSV0nT^{@J$FIATm$c1C!g}1jpj6b)YXIkbocYSn6ndG61;FDQCpw6!x z^R3r_x92|l+|kcW{U3zniARo(`RhA~9-6Wxy-3&tqTK|>x3>zLPg(oKYxwH`X%ok( zTQ}T9@iApxwR%QJm9Jb+?@f58TL&aQb?7yVe(of$$_c72kGsbTstqaU8U)r$EM2j1 z1BaIWejOr&8HrC<`M|gnp5koQ!tZ@oz3X>iLuY@F#qhC-*qCAq_0Q+ia4S-|wQ;c* zv%f8h+p1husV=ZitueXb=(po*23r|6F-U27GIMaMag`2E*v_V|_J6!6p{ftuT!|RLdf|0Ea=cxDJ->ljpQuyaM7qM8CM+Y zRYpiZl@ouG!;@+Cw|(iT`ETqUEN;9O@*f+4)r}C|g*MFR;GKrbHqK01Ly6%teOtbI z6@+cSs>Eml|1iVO_3yL+Ag<$lA-zi-1CV6RI&Y0quz3e7(YH|WlHd^fKLd{#j?;sJ zw$8ZMRU0%&qv~l$2SOhb`&$XzfHM9Moy0^b*)PhI-b909_%6^9vnHGMpGnH|wV87^gf znaI?RLh0Mf;ae5cXg`=!DUpNyY%3R?qsg)u>W+zvmKG;CisuuF&;@YAh-e6niccD( zsHfAKaQ&^sMc}?Potlpp9a~i0OjSIgsR!IX%Gx zD_L8ZOX!XjqF8jHmQoex*1(J2lutyLxgt$~W4f4FFFg7DL!1AH@)wuWwY#A5ygdiJ z_}|-rAnTdUqMm`SF6e@rn+)VuC7JeqOp@aZA}=-93+vl!{lFWP`W5ebS#x)wUmgF< z4FAZBzv?fXeH-li7maJ&d_Fx**mqmf!$(xWiKIX4Xk^t;Y*j4ec?^Qr?6;7;s&}&3 z>NG6IL%B8XtVW%iM4i&EFAhE|Y#9(&IQT?#rK>f~0U6M1*D(KTrp;eT2|-A@q?^q) zY;_(~3fr?ufq&4>AX|8cszM@c&9}l8F{lrsw#~#*oBm%+?Shm7Y1PTL&igePNJp={ zn$43kN_bkQYRRMR66$IP_J9~f!h3go8SJ*1KAY52yVS>SaHT~9Q=~d4RBk{HtJq*A zx=Z#m^WC*0W4^-!&kdxxbfgj3H;^w03<0D50v?Za+;kurR?Vkv(cC@glPGg^*)pW& z4cxN|WNjZG7!VC_dbL(%u#e}MEf6CFx4O@GSjTq0ZHIms(3bXGqE>4jDtb9|XW7{J zCmyqf>PrUZ&F*8`;V@rcVJP$-$GLks!$s}yx@!vJRZI~J#6xz4dKPZ zxb`>lGdJghLV9=e*IsuM5!3%3WAS4f>4`m?x9ivglD0csm-mvkNn~2mc9q4Sr0q0^ zVI^abv_0?NQXaG@KV`AFA*J_S-tJDL7o|UMdonQSR0Bd@;=udb#%8PGAno1JRcJx5mv&>5f0qZJMaGOV7^^V)eo%7)Tj1!q%N^T~vJcRmuO|%vLlxZhiZ7_`x){w6{sobrIjp8gt zjKFNO-WnrxAaZghVlFt-zX}oOgQoLLgm8N(E}7$u)h~xCho4fHzLy2u9b23F_K~$~ z)x(_VTfVm8jU74PackMdmLLFvwp$3j75=4^GnkOg%=cJD!U>9+yi-bSmqCNgqLX|* z8t-R6C1Wz`9J-vj`F924qmm;97CU|g1Z_Lp28jIH*f>|Z`w2h0mcCdmBbCLlbf^cA z8P^|FJ#*^hi4JIqPiV{CeQ!HD>+(4D+4Ro`(D4Dc2;!BKf3{O_slcweKiILG+S0IavJ5qQzBw zr36lZ24>t_N)*=b(WqO5^-R@dm6u;rk{fh%E!{I9F}}1$mGqt>&`Ap9o4WO&d1}4! zTVVV#^)e0Q`d_`_IX+X18z56u4-7?WbExZ!*uR0KwpIt4ug5$If+d_(Q#C&3z#u9X zj+S}Y%x!yoBuG{wh$%RLzW?oCW5U?}{rHdtPFtWDSO^R+2n@i@AQR)5EwmPmWwSj& zuKw-qFN)-IqP~Z_(~v9S?H+P2F5ShoZ5vq!g0`O+9c8yHcUd|s$b2*L zeGONtL07xAWPxUl@BF+PjCo1${;q#~m$Y!9+uBPHn7Ggam?c^I-uXwN3b89h@6JZw zDDlubHv?p^X$nBFnlHj?+xT1u5Qsc(ffQTOQE)+D$F7mP{13H(IZVgufOzh{PkRv9 z4hA4_MOXrA0g49fYakZDz>N8Q7^p843Ij)t5SrlxZZ&(B$2~GG<&URd4XcjGJyQ@>xbQjTF zFWs4Z@U+}4Eob{-1ow-Ra|&tfit!F>+ND1A*7?oX$^%ByYgb_=ODS!Rx|(i1&yIJU zy_5QlXc0IsCYO@(%yW#-4U{p+2`dO>cKO8SY3$j%ebke4{w*m@i86mz<>z`M-U?eN zk4Is?63A?MK@$!S5LG7z{~ih_pHGN$^z_&??!%oOY6hF{5*?|W=mr7|_uCiyF-~p0 zGreJdk-mGEOI=V933H*mPzYr34E|dutTe;Kc1^XU;@qiJme+|J1bpp+r%wc{g=Y2D z*8zWE_764yvuO^3T1<6h)m!^^Rh7#A1*5jF8=HR3A|Pjb10Mv7PsoN3r-ee$!Ou4{ zgR$gf3o`O~;vo)QO30NT=Xze5x!)%AzOdSz(0om`D^oFuS;-nJ{TaX3qr|>NzVKdY zgWKs#@wsp!!_uBJ(iD&=hb;a8^n`FzlbFG1X=fv~RQ8u~#~7_$kNfWMr12PoF6D&i zk8&<6;2>x>hH5NSes~5P1l<@HrJpbr76G4VfoMK8(Y~g^wBqDF#1MW zOsE%=R)O`8m%=U`cMN#43Qd3ZgGJbbSbSs2DW503R_|USh}mY|i`icOY&0dD^vUGY z+SIFF?BL}ui(;r<2ZWd3pH<~GRmw$n(6OVnqN9Pmx81bS=*W~u6|FHU9zOVBn3Tfv z-ShdTUN5r^RVvU8`duDLvF&?F4ji*gqGtE-XODL;`Qzau!t>-_+1fe#nkkxt;1+0d zR*_o(YdtgiCg~Y^ugfX(kj{oV+w|Gg9b~PLA=h@WYC#X&t<;d3l+H6;@GM$&y&G+7 zFWBDGj_g+%kLQT<@wgHneS71!CDP0wj3rmf+iXfQu#h^R=y?6H4@b1uQW7Hlbq5~@ zMG$hH1)>B!e?I|Ycge-i3o^L;b1!BaW@5-qJm`j)ir{EP5X7OtK#(eSWqYh1Jzg|T zed1%*L-1`z4Q!U(gE4n-d+3nMxd%Qt>Aae@5#UkDStd$lqk$KQY@^LCm%| zs~;_9n`%LCOdf)+UG2KF|KnH2->g+(O(>^A2g&vD=U@4)5<$$#?|>^Ofi|X3xxVn25n?^B{0D3l!O9;?HAF@hT6LX!AtEdu3IUv`xZ zlY%~fGPOcJL>FPm<`D$Yd8_B145ab;_bq(8&qG~w*bR+sg3hbTBh~ayVh~$$%-zb+ zBPx879))DyN0GPKWdGVKh1Y^VLj~zjK<6Ddo5b`ePjW@8WnJM4;q})@-88J?KmLJ} zd}4zMo@5QKR2`xG$SJQg@?Ar?%_PqCaejEc+me7?LKUq$=woEb9oUxbWOvaMJElPd z`gY|7_%&I+23txdLcJKpyEOeJEmpqHvkL+pUWF^ycpUn?(Wa1(heXi&mJnk=bMMH~ z8Qce)=j1C@qARwvU!;V6+X=b;3<&#*V-i$qglXiXkz?oOjCh)T0E=quWsFB=c7K~3 z2P!_vMX1xz^t1Rv)ap+ztCL7$0lUIq z3fiD<4gL?k2+RZEs?MD}Kl)-d@P9y03S#w;#y2IkkUPdDdDfssoi-&p_rkz)w6Ozd z=yRQD2n1BL5Z_Lo=cY-x09GGjyx$TjvTopC!|T;90zfg zAv$1kpScfRIETTnRL#D0fG=>`yLJ~YF4h1Rjey|!xHd34&i6Qfefe}WP19KcYuk8EL*AR=ekmWcOW~l zA>!@NKi&Zv0`ovNP2Xtk*5GZiCC$>+2%6o-#ubV-NSqAY@eyLLiTvp-5!&F!T@BM#_y$4WJYxlm5qIfKT2UHF!MWrcC0YO?2QRziM zkS@%dXH zBzX%}Vq%LD0bkokjKBffYQ>_O*U!pc^|~dh?X3XxyUq-je!f@N;qzu) zHv^JHftYou);UaAxrlY4BPuPX&|LN2Q~~l#!btzMH7_f+6!*#;nIz^`>xjbi8Wy#{ zWDC}UwoTe1-N=tK{9!GbJ0ndC4usiqDHV5y2Dm^fr4*4qp`v+^ytmleS(nSZ{Gg@x zFq)=$4Vi-O^}jT)Vrhov^-Ky1UeiuwP zsxs{YmVy>LXiLr_*OWo0R=yStn;l=LbDW%Ly_lL-72y&rwiOiM9PM4?pQ0w-Ot*y zHBY~pXIx);h!odXXu23($vrB}CR42vukkHi&0-N_&CUO7wrkOnF%&|U+s8)vVVsZV zYsKJAb1)*iRq1&*H0;r;8?Nl?~U2e{1^V|Jm(?vb8kq7Ch(|CC#-OQLNjGewpAA?4IHx8jT ziLWsh>H2ScpWD5Em7@(iucyz-u6~RQxf2j;p5zu-2H4sjI<74Fk#M2D%gxd=e3#4a zk3h5Sue1crE)oKztY?Sxd&Hm_W(F;5MfH&ND?mi^T*!CtmcTg+m*&=by71|qEJD9U zTNOLbRIr|C>l{&EbRLJfDB^xms7p#(DEt#=ef^jnQE?Sa=19Pojn>W#r>8S0kW}DX z3tM-?@M&o~KuYohY_3G_d~r*0kH!ygQdvcvLY4Hg&?PDd=ZU?BG}A8fMg|6P zNyKDwPvdWgFB>Y#4gRidi+m>J2eA}m5g7CN+mU;39kYFW1uMe2i;O#`*Vm0vFL=0r z0JL`K57d%u+70KQ zS5gwNhA5udAw8a@zsmy?=Hm(vJX3b`v5Oc+Eiiv#OqVp2^EKM> zt|U)EtwY9I9;9u?o#eFq_R;*GveS;~KW`VFRgd_fduKG`reKQr71d`)alkif;|%Ls zvxapA8PjWrx5^0ZmxgNFr{>++U@9z&?D)$Q%BXDY~{gs9` z-YQS$*cV64&pG^MNo;k&z-C&ivY zE6!Ho>v9ddqQg1Y$6)VxQ5Kc#bB*rey|TA@J;oNAiBI@468wD|A1E`CgU`~KZ4xxu z`!V<9eKR~?Lz-L+T1ezoGC!1Z)vcEaMcC%QuNFFRq*58p7K4-jrhuHGmr{I?KOC3? z&T~t!en@~BNS@*1YF?{dPsyst_2GGY>cHp)r(l+n-BkYYou#1t4xPC`sWV)$&2r=0 zNmG4)l=2yW5e4!J% zhoa?El6^kGoLY1TSk{iKicCQ7(!3NyjdAD73NN!=ui6VcmBu%z?jQM*?FGu{R&4C< z8e3_Ij32UURE%z2yJhL4?o7>r+xu?6SgaYeP`rYE8mIA~V=W~~j)1y{;&+!GOTpdH zbMxM)#s26XRg6~H@;zKEjav>iGw<5T8rry)mUI}`al?G_>vyX!$OPrlXxp8LDkF1m zh+0Ku|FmtcB)$*B#_twN=J0!2|03_kh=aU+7j@S(bN~am+LGfvO3L|+yFDz0Ki!S|qU z+mTw)nq(c8+XW__qhvjgN0MAcRGZHz8dtmV?8pqhaJl&+<@0hpc7|C>qQ{H7WEiqi zw;{LF*l0xpTogTYrn%)%oD6;f#m*F zTK+5`BdP6PfUT_NUy`Vu@2{n~l=#|CothNn*hPce(tdHir_zUADD9c0zCTG`Nz@7P zmfqZtrnBd{Nyd|P8&#CS**h}hpW1ZFOXoUOALBfQXD_8x6JK)vH2=mY@i2=%V*ZaC zRkrxKi5|2+Cin9(=#fuZxT?@ysjyog1I=#wygRKZ0$hV1YY~kWVLRgC`!gS7L(Kn3 zrj^S=UDMc*Va;9ZS|jMq7kpMh>#M`4>}_d&lOT29k|1?F^2Y1A~wmWG^)91SBrwyL6 z7IjeXXS+j=o7`ts;iK0yG*ygcNArADiQ~a9k}eL=w6(ODUWvrqLxz$Lj?(Eenjbyp zl`9a(AT06y96oU+(5nZb`c^{o{I~It@V&QMWI=ehu+hD@ za8!LSCdRjNh|#fD9?T3183R~tB4TsZu{8OIrCZzen*ghw)845EpRtp-kro-R0#S<~ zHe#O2bwq+$umS~fwyaE9zNOzqk#$rO6jIBI%yrSvor&cra__eeu0=G-fH;Msd}i7A zy5iJnxao^12pbn7z3+) z;3wS*hU$AX|6a5|7dQB|3t+X;br@~k3y%D=Vd1PI#TG*EB9PZ4L_PesY>cEQ`R`(p{YEjmhx%B)8qkS;{y?NyO zlI|Z8O9yK=%b8ngUUTa@#f{}rjOK2&uYa<)VE*v!nz-?(W(<-70|AoA$(!#&yJ48Nqh=KPAU{t3S%jV7IxZY|GHVX z-b5rM?VtBd39>rn^aeHu9j=s_?H0H8IFjScr%;QrWN9MO{ahj11l9L`%%&5b+hXtc zk_*H4y+LyP=VrS#j?@;iZgL=u|1?0}735tB5NKOlUoT&I5B(x(#j3?@+m_YnKk(N> z*dfrZVQQ*E)E;pbcrCr_00CQ)Ejjv56Fh4ATy~mf`Ul4W`pf?BBRvtaMy$p)y(LGj zX78}fL}NGpZO_UMG5U`*YEG-{Vs?W)FC#eoZ0^V;%)dX^pN3T0%^h>{Jv>@yV)m)K z0OS|EN%feZ(>q(hc9KXB0JIEmr0Jn+O12aeRveVRtv;wYVr&_U$xO&yj=<%g~B=sxQb~)AmK^^*fszg9yrLCPx)K} z{`{GqsEIf@^1e061;}OIX@l8!sQid{wotNK7q@{zuqZc==G5BFAdiL(%b=>j^Zxl9 zx*6J&p8MGJqpr{LF*b+oB&AE+i`RYO#$?HkqDRrd%==Ek3wJXJ(k5WD{Glfy`E*@p zV-N7{cl7AdUw$Qx!dW+U1B4^(IhGL=#r0Jp?ret4t|Co1KgOxjD!4^V3*dG^hPEotXcYLyb>q+HTlHVlCk?d&=FmF6*Fs{r?ywe|?^MERV9 zi?m#uB+#vsvfY7i`x3EYPM6?6hMU`YXO(r!8$e5zQe-YDYV9Xew&Ns|xMk13jsA`q zYg-NNG(`)Dmp!n|@i{M7%5~VC?n#+Shy5kX)n{i0_rX;ctM$VGLNFDth?q*tn!-xI zl`5ZIr8zVUHHO2YYCOh1SYpEZwB3zhDk(d0@lU=@)87VJ_Z0LRkO!R;;v9=GD}eQO zzW@YV)n7pM?k&+Bd|Jwc*q2UcR<{i&rnhA!p{YKtryH+uJv7|O#5#}2mX#Z2#p@{C zu;3Cd+cB7I$+>=cvP@uQ_3~fPC`m#yQQju-pYAf;Tu|KGredb^1uM5OqNfNKbGNOn zMkeg=iH8bzDH)Z%QO;=Z^Pef#FlEhrKbw?(AiAa_Eh{c~%e)_%UKn#Wh7W(aCPgk@ zWLz%D-0%FxpTzX_^%3gQTuHQE)XeZL1)mS_^YwUj)K(HzYb ztICPLA5}U#f^TdYBB$#_j@pd>#32ZZ_)g`TL8sBEja$7fn=f%lBZ~Xlx^*XH`Ps>o zWAdfPuYX9|92w4i{57^C-okOLc@rhvbBiCxA@1Rg8-*TGgeO>sH4a0({es=-Q z$;$-+(v`zPRhl*IZdA=yEeqG7vNv0&g+30p7{4v+Hy%~sEF1~+$$H}BogjVLCN81? z<_TTSL78$^MJp7x%~+5BKz^=P+Zou1b`+HDx;ofAtAw$ZT(A2`vp9hR^9=7@Pb6j@ z@ty4Hfr~^Vm`Co6lf%^|QDUhxpe1T2H2cl~c>nZy{WJIH(tEE!?xBy?Ywvg!xE$I( za7YUpnvwtZ?7K&JJzoW%<{u7*vx=P_hrUQoU}x(FV2&dRq{{~f`m0KT&j=httt06M z6jI6VtGpDNiH|E0KRCj_89mo0<>$r3zK$fI zUUVxN0GaTu6+Etz|@qmxffj zeMSBbK7R1GjVn%5kd%w?yA`vPDu8=7DVDHaBT*7p_~IK2pXT>ne+p;nJJ)AsW|(5& z*#yVc`==rd#@huo^SC%d7nkCH=K;=3r@eWLFqEQ;fD|dkI)TnRaZU>L?+f&_wS45W z%OPB~h!Ni^o~AiC;J;DM9HrPW^sW5WN%P zK*^}LnK!#?kYsh@o~NSKB7T7JF8Qm$jIPT&I1SfteAgg)HzK^zFSaV|8aTyT@ zD9aaM>cQ=wnzHkh%|4cW*s4L|yGQW#3GXuopTvNhNSbu3Fi>>kxxn-Xlh|Zb;0sza z?R}@OO#DJea}mFO%v7+<+^wGu9jjwpdFST+muLK!LuS!!jMxCIy)VmtwHWc*eTCZ{ z%&D!qk9=3+3~LOr{9)Q}Q|dWPiJ5<2*F`-UZ@%Q|gN3wp%5D(F2K_z@)1-26Y)S&* zJZt6FQTpGQ?jAms^qV5WL~7D`->4C=QK+2gF!rJBHcic6l1~B{CU7+UV(5nd$2uNz zxEA!otl-xLCXv8B_b}@*&0n|0D{%;Z67o~Jh8=u>VFEOTXX5{tng4qGLn_UcDCLr+ zPlvGVPwhUY8J~0eK^z(E*uTe$ROF`kMb){`n-U;F;}G7%6I5#M&~g)IdTJyi(gLLW zD)h@1L5jfUH60$&!M4EH22c0TeGn)t>3x=~A}>DfGs_m8W?~v~hPFSKius&I`Vwv$ zh->^9()n@ljgWW4v2Pa5C?(g+Fsq}joGpFdeJyD3BIFX?+(CzNEWCniL$SSdrS2p) zAt&CI%cG#f_k^*Yf-CcxxM#@qAmyxP={+KyEwSIm_^RFv&db6;lPAy-4*VgKbb!y} zdlBlIvChOWTiF(1_hmUpP?Ku7jmr4V5*dCwbtk5)74PSr3HN(>0-Q|bVTN2LxpFDY zLRV-!;H?3iYA+QpaZbDW*(V6!_MH&6-9Z7+4TG96yVln0a#{&fuf1KQAvY=l5d*#Z z#!_^?go3-neFo=8r1=tSh>pYBf|AY3fBIvt>6SCs6+Xk0@o6kx3pnAxpdNLLg_Lhv z2AV#9%#%92dmzLiZ)^Y`UmDy>+LdXu718{harAQXk@L#TPZlfLPU9Cp1`f!B^L^%W{AJNqEM&^wtE)uyMNb$DP61J1 zrWfh^;=debV*3)tg9ow79ex!*+lq~sTz_~)xM`Z*W%|!NLp5cv(xvRjAok&b1(`&E$F%62Ak!SeN ztY;PC7_^#=D#_{2zL^@=MD2j%?~4&_eH^_a3=&|i}fd-avuHJTJ2S7_zduiTD_pnDxQgn z0eaZSrmc%LGDcr>*Yr*SO2tO`3}PywvbVEC*Q5^GuS-1ar4))yjda@ zmmiUkW3QFYtv#(gTC}e}UA1oM*nPCj3X%P65xe15VgPjeNa#Yf1e0Sl=i*kS+1a>1 z=ZT>aQqTUl=I-))GQjuj=tIFs^vdDWf#e0BIRa}hAGpyt{|EaZyX+c3XEB&6t2Cfp zG5ozW;gBPNwU7dF@G;jFo=oa-;YP%d+ouhMqg1>T!H+845y@r4YG@RoK< z)Sbc>=nr@+7JkE?!-S&i@G4IFTHC8$5?KiZV2er%Flhj-1RBlZERE)nw{4Y1-hm30 zP=WcV{GVrgQ?Dn(O-vouXuecuhaU1AX$InoMSFOUpw{@Z-L8aH$(%s;X0X^Si{Z(M z;N`JaKkGP4uG~u}B9qemO{=oz0x~>Tz=GAJ&zPn$DHch{dhHuK5Xf_mTMQR6+aCU+ zZRHoi%%C>pJojrYsfOCNp&$H%iRt_!zv_ny?xjIr00f!ZMs8Ev|MU?{{54Mg74%o? zW+dOXgi7z?`@*rjug_NG)7V0gsw2CiC^;wE=Pyj>_FW5vArnv<0;yo+n#V-R=l#Mg zGjTSvG-8w9L;J~d&ZA;CKE3i&E#Y@NDxM1W$;y7%!Bz3YyURUM-^mOJC%x};$dD$D z_yuj%MAMXSgY>}wssdmzfCLx}K(f!J4F(u?8=mtmygM00QpOyoJeogKhy#NGOt~6) z$RW%`n&q9Be!ncI>V7@49tQ>k408)8G&R1TuiS7AR|i%heAUa-4WqX^vX#%*j64w- z{anMVVgv>QoR@MbTE2JUG3WJ{T9syLg5N5eOREIAK#Dnc`z4EYSBGep#?RZu{AFe5 z`8u?6{VxaWLkCB1*WH7F;lJ%}PhS(ckJk_n{%{U8H%x7dvUQg(6wXPe*xjsUn}!LZY^jWuH`0@ z@j0!2lk~C?(FdWqfu@2AsN-N#)&UXTD(ydcj0l(1FtQo>k6x__5AxIMoJF31?sALu z4$U0Zj91LUS90WeB&63MgB}of z{_WKX>evrs^FwC3(-SX@p+kZ)8gO1qi6cK7MH$dfVDeC+FUt{#z_<1y7A4<6z0<`0 zjYb_{O0tp~Y7Y~m#L*N2##{hq+E;>h{4YlBp{HtqwrGVmqIeN3wJQkv<&F6YF2Jt` z{NI5m-Fib;O&j%~s#Y_TQXvn#Z1${-&4s3F%$+-zYiKpH@ruM2_ThOz!=hlzMeXBF zy!59~j2zmdWs#Ygxdfev$x$>!#8jc?`77HEWc?mqWOT)O4)9K(WS zb+b>y)1wmbt;qG@w~i$N2cNG>9M>wYa?&wL%0j8DP z3B2{nxTAA~i}6gJr1x#bq-Up~+;?fvKkuGIzRM`bjf%RR ziqw0}E4?Mh#vCFDK)3+@IBkM?e4Q(nwrK`su zyzPTvDnOL{q|Aj|lztjOP$g;}%BXfO{Y&eZRRUgwh02*v?wxW)37dmc0fpWTd6<0) zHUyv1bRXlVn#yQfWRuYEByu-i<#_p@ z3-v)FNZ;2Q8>@1OS(P@Z^u^{g9ozox+hMnMEw|XZ0y+W=g$HB?*Qd5;ENnL^Wn|^D zjt$BJ)u=GpRZes~W`SS4zX6`y=zKMS9(Czf;sr@nNFO|mE$%BU?B>)GSh_G;WP zE=sqkBEqhX!44@X;sYPwycWie+>mtL<=WYewH)hD-B)$ zWwD!N8hA=apd_~Vov8G4-T$t%9?&W+N1P-d4rU_L+$o!DWuCGB#8Sussf*F8V&pe_ z5?`EV{UG}&3|Lw0D<{ObSY?&Nay=ASK?=QI~Tqr{{8t4Q24>=|x5 zQ>D9n%{og~(Iz^;<9F*a?5(jJg*1M;ZFa=-7Q|`yU=WhP)(wmA&67_NtFXu$Pkcuj zL*@@y#rfg<=cvxne=fFxRKOW`rf8k}|HM`5jfOxl1$q|JoQImiKGJmH zeX^&9p3-LmICER>u)FvxQ)Mf;=fv5t8J#kXA31VX#KBB}^V~c8BnH4t052@dCjz|- z*?3W7^Yq#09}7asEY)cv&@p~lP=S8kZqLDg`t*wXBVWoM5*eP8J-g@?Cb>Y8533aC zE8pFxj0t>p=vu+d)u`g&U%G31z)S$^xR)>O0<9L#Etd4ZAT`2c@qjPsz><9q8&OgC3Fud5mdn9ZA8#IujU!qf4l zJ-Yj_Xx&cNCDWFN>#6HHeBJdLse{GVp4xR3f#~Ry_5O!(A_lul>^h6hHzXrBg`x6Z z#=hS_vNZL4+Op!rl5DYeDNw>1lxgSyy*#?;Y2fknl7CkP%J;TxT%DLU`q3UW4g0N)B;;;W85v~VKx zq;Hne*1p^9p`oy=yL(oq=!+*Ph<$Tr$+@uaUhVbgq&7*29Y#fbD3t7ZBZ)IiK-W4< zOcG~!^5O4tScp~*)5il;3x*|vyzJ+Fcohs753pQkL>~`Ow(Ew-PIqwD%XlL2^*~@3{-eElNz|k(vXCt_beBS9{yQET82HzVr;+5u zSC%;&_@zSah;%apFKGx#>A^AV7RZ2>d<`r!s*&xSPR-Z$Uua`SL&uy&X~9_Tc5IGJ z)#srNftAt2R_)Yyo`36bjqlfK30qMq586L-VEIk`%>%L&;%rI18Q)l^9i;lo80;>qP zO*}wm4Oi@nJqV2X)u-|oC#uY?`UZ4;TxV;ewD|E{*5*k8L2kYmxC_?ujiWw~8u|8) z80~h;*0+{DU~i%_etF;^^zXXODAw=R09TYeXo@)cl?UF^Xt{WmWj4E+{mVh`8-nPf z4i2`(RX@^}Wr$y5yoBh<2dbA!L%tm8a@imGT6f#YV2hFLxCYSog2TYqtQ zWZDx&jQdasgjKp|{1c@S8&bvf`wlawLU5Gs@IP`oxIVbsvgo^OLYI}CC|pWq@zWJn zlZ?`XU)(@d9hNjemxFGOtqWCY4&;jvCB#Exw1uxY=o!n4rZk zvM|wuigml%pjZtne$KsR1;T{73PzlH?@Ek4mrYo#{4G|FS|B`w$sc`hUKLD}`KoJ2 zrw9KhpG!W?6K|EGnqtaj#O-YCIlWOYm@s6Z5K+}HK9#iKNsH$uCjA-M95p{0`M?t1 z9lh4uz0&J5@CZx?kX@?`AWGvTJe={}{5ofnE^m0*T$~*RP17avvbXt#VSUMA~ zk5a=UzMx+>Y?AIW3z+V22_%-h`MZtE{OnePilk=_>=x-0wSai%7tY&1v#m49-6yp1 z)2={!gJnxfW$)xN@z=isz(@@8;$MK!N3W8RkJ-F?BQ_$+@ZVTmL%@wL+-I-C?Apit zrn5{FnD5>o_Iv+6Z90Hp6NmusUQ8RR8%wMeQfm~^a9i`EO$Wem(b}3!mW6HBG=fN& zvjqQy@W-~jX%5{99=*5Dtw>pdiM#-bM%zt*-exoHIcdk~)3kQ{|Mh4^T#)0SX8eL- z&sfEZ`*mQVlrsE~B*6J=1jwg2y3nfFZS_%WqY|*xhSfnZ_*>NHNDTm*(K1RM&iOVv z7~X~ZrR`pj+p@snO<2G-oJ5We^TksL1&vYs3oAN3>5CfmEmjSH8c^I*=A?-$#r0N{#ALc?w4id zcKH+^*Ceu!iFnqckwpN%C0~)x2z6=;7j$#e=k^|^CQrJWyD#r^?736NxL`o}Z;LL4YNEaf%KRq&K=DahV9)#>bD;aE)3*5kHfVB&r5s}~C-3lhB$|FZ% zr(x-q%19r#4(S=*US>=NnJNGb-ylDYfE~%d3}HL;T>0FG{|GPw0=|Y+N8UdQjvM-g2l8AnJ*726Z`KvHYfY%&Iv(?b459hF4b#0 z^)z+y6O|AkPlYzKeJzZ3?n-z#P`l%#>>c-Z+7k@XJ1sk84C18;#1b>W4;kmBJLb|# z-mv7Se<-mI247!4xIF=cfb(1Nfq&9S8ud&}94DpRXrl=5HM06V2DW#O7_6*L^yjWnUJJ9vfZv=!QcvK>-I*-gVdide2~3NJG*5z|j7RBr zw4=aabmm-#bYCrK`P^eZ##Ql2ARlOX%4ZFMl+69^z5z9~Y+QC4HlXM0NcQ+r z^}(7C#|30F7fu-#Scwbp4bH?2JJMTpOP8x#Q(P~`Kdb4FsddBC7U{zP0<^SYXbv&* z)V{II<^Q>NXEY!mYbT1BQXH(hw_ta{r6jn-guosS&ezs+n$#TX2cX6O(!UfK`qyDa z#Qx&|B2lI!hj#3X>0QjETrz^ezgMBAYiC1DfIY!+z;hs`z_jX0Ti~(HErQH_qwy(u zQAJSYq*Ua}fBawlYtyIx)1?f;v1o0ng$!aJdE~x(Xkuv+&xt+P=;#*MadU z&JIL_!P<;#?4KLi=y2=Au`7>YC+REB-A>=5V+yrNWE_HYXvOp6p6vCjU~<8-C`OI8 zVG9m7Xli8OxVA2zjeIP?!F|488yQ|iEC5z^#hxY;(!6HoNZxCXm+m?Ee(8fm?uS`)AjXj9H?}$SS`PCOf>YY( z(8;S2B(=!v?egUnR9wOyjxe?c)Za<8OT>QWEAmNw)rdjvQzt)mH4Q_F1Nzl`5hI&a z<(dl`-z|5wz#limx66xlpPJoebKRo2b4+t$z z$wnFi?B)SG1}+1WH9#6TvQJ;1@T^77+gl*(8~ciy(}W20=_F}hon7j$Bkgw8w;xXB zgMcW z9qc#x;aPa@Ia2yi?7E7~_BBouC|k^FIoi6c{l|h_m#Uuv6@c$maA8Ll42Y6s@I<#f z7kcYomj7%@xv_tO$jCK#CEn5bKFdCOma$0x)F%JgF2a*n^<&O7LMVzl$`6wAtZ*d;Z4`tDM8W$3Pgk%X%`9)C#I=lx`_9uvSwl1ng zPeF63d0`_ba6Os+YvvzFd7IripKHZy$NF7NtkHMN$VH*$nOI7GWiRhIz7zFsnrxlC zxxTNUv1g5dD+m>~EG3UdI^J0(XQ*zR!K-&}Qr?ssW2b_Gh))RbCEF8+H@7lD+T>&S zK=agk4Q|KBK$W!nX5YMLDQ75FKJiZ9w(_Znd%zjDNdMkFnx9zuDI|aLWhdVkXvpqP zL&5=Wopyd97ZwF|Q$x|@&srNgdiwe^MMJT+^>N%#dh z_m6hN1ov@l?6%CM70^*kIn=RWbm?6_>4Qbq(^qk3&Jr`DUQxKd&wrN(o|g^YL=Y1T zcI}Z=MlF!&@rLJ0Gb8Bt7`HlD9<8fDc4FD=iTz+PaNctPVL4tIjg>f=%xkOW@#Am* z(c|xQ|4}%n?;qWn7XYAn^ME*h<3O=Gy>>V^B3)N5ayh;+b{xAxwEIY1p@xViZKkFP z)1=XKRW1DCw7v7 z<&8AvR%*MvBA0az*y5#nZi!whzJASng6jo&wsAKYCgw?CU!|jW6-y4zPz?S{C(8gj zS-RM5Zmgla@*?_|>|Y*%^iF_O8(c1T--Dge@2eWV6&M&#!fkKvG+Er_f`F zB^|On>VfXv4B|y&8h`<=_UUm%L|J($3B*`(I{&ZlaL|EF&lT$ z4MC#abLz*EjEZ6uUt$#Jr^dj_hGwO#ar~Y|LU-2XTg1t2g=VeRpR;u>1n1Dbo4Zy+ zJ9!7P1_U)=y`)CCu2vsKZsAwG1L+|ZJs{=Ic^NlQ92R1;)otdiPJB7Y+|)=O(anmcog?dRKU z*?iN;{rFHfAGxF~wAf#ODED&q&q~G{L+=X>?`u{Zd=L<-xYaPbT@Kkp+Ld7Y^KmM% z`@ne4N^)GJyfEom;;6klzYQpu!dMv43`Kd4I`gTkzM?BtW!q=M?31eJvgeeJALrhd z#ILlf8_fo{b$I_F8NkE+{c=D&R{w(L&7{)m%;1KK2!#8U$j5_XS%HDlcrome9@*ZE zVe9E{LZ+pz9;Z7R2=62GtGX0=m&cQG_ZRO*T1l1%)^v?q<_JP8M+KKGhQCt&%2Rou zm@7CdZR~2H%WJZ;rbodseHmz$yjAtH(8)Z+!yS<$J zex_%PEdX}EU;9UO+1J73%9$TQ3Qmpx} zo?Z7JB5enL`oxy^=Y`$lOGQW1qRFCft*FR_up_;EOM1@M5dNvNJW0P&amd7@Ri}>ZUsoK*&E!Ox(&m`(jBKfkW&Bg_ zCFisDWBu*{wISGZEo*CbVFfXWB8mTiYg2+K8x9xIgS%}&@Y!H>ROQ(TJ2J-S`}F1Z zdf#@Wm26^M6yEy-egHGKoAw0fIdY(fb2iM&f5>9p-O*>ymA~kV-m$u=*zHnG_OG+W zup~YnHQ{pxbe!Pq8sF2d$+b3jVIqzn^9~M4ems%lR92M z_({WIXrkm4*Z#C52N}86vWT~UQBtT#s+-BjoV_!l>4eIE@{m?8yYAKXKqY0Y1NgC@ zW6oB0t~y^9?ntW2yNHc%Y>&#W?(N4Ur#+JHJa`)CyxK!UcTuH-kt4SF=CPd!D>!ty z!_B{5=;-Fyj>Xo_7R)AB@VsK!?mpb^ffIR+^TAJszP0Re7-||>Vm~l~HL~3=w?bfS zDS#^Gn4J~xz37t2Pkw9SUwOXqpgiuL85p%<2%r_3ar+h%$Bh)Vf7!*ni+KB+6ZZ^m z3g$~uEABpu;}TXrC9nXGzqZsNEOIo#4FO1VJ80R4)=+^JR!!*3F-G^=2UpNMXqA7# zTg8>nbMu9B`}ay6`<#If8m;6d0W(M<;c~=e=wU-x?(BWf9W@z?l#2Xb6;X~;=(sq` z;>zA83ayYrN`E9hPxjYeY**184Jku5u=}YjkMg-)?YdLv)kItXqYI=jV@!`@@LA3Q zRrsuI%C6|XWlxW5Yr}4R+xF80&DK3+r&uuTI|Nq+((_xld>@9;t#vv)$x*eS)f%RJ zgi=@oz=;igIro6JD?IeDr`ADAVNP`V)1-;Ir~qJ4WN*g@tRc7b1Cvqi`O9weDssV& z>t!3&W9Fg1#CP3${Ic(icimKYSl7c8NweeWQlP?jTiJ;{c`n;Q#jg5_+4UDRBo-^` zjD8a*{O|Jgf5y(dUe_;KINe2?*wyT5f|i*OvND?sYrta#q%1X!ct2| zrhirNT^NiWJJGlzw0#*pg#W6g*Z~~Ue$^x|5_N*hsfU`yYq>Li3hZyI8eqz8p{}0| zgIS8BDaa3zqoef_)XaIGbG@^`DH5~u01P>}=+>ys9-;y>i=ieK3|2fkvGXh}(Ouhz z7oaD8Tut44^N!Tvz!U1RU+GHD6!%(t#J;PN#Bu# z$(b>mgV&vvOU!j?Hz9CLsN2eCE>b9FfNGaJlJVj?!m#>2X6v4LG@4wHo{2qp73?L! zd*X}W?}H~*m614Ue+7ogC;WYK$20|izrVVZ@lVvyH$K;#m*2iLzv12TzP%?zKVNFW zSQkiS@UGzhV&KM;g6PcPV)$`_sDx1% z&HsKEQZnr)Sz91*4=;J9LP7B3ex8KzY?dcasV*Oas9Yd%ozC_FAuVEgEce|KNQK;d)Y(9MOUs6)T`&nNHM6z2?(A%K?dT z4CpGf$4P|sr`0GlT-k`sLzzawe(o^NL5Ps$(GM`m*EiL9!9Z^G9J{@Mre-HjAz%8{ zp|W2KUSCeDJa#79nZ#sp_oZlj7>>{PcfKUT`4&?L3(wqU>qSD#FLV`lQ*+`RFh7Q2+5EfVzG+xY+VCT?5cIgBrwfmC|WWiIdI@ zvu5mc$gzd9;;St#O#amDKBg_5xv^Cau;>043`+=Vy_|n}NA^%c9Q+hhjYhLW zwPVn&Bf zF#PfQ?KA<^o;Ew9q!qRVuYaF|(sz5il#|6LUKLny2XxQ%OPE}EPlc(91PlUh?~^qNR6uPscDR(dg+=w z5O#b8UbmgXT#aMV>WOGem-!Y^ z6)LQaw=rmHUo}=fFrS=n33#b3m=cNozTu8FPo|=4Z`W8~IFA<**WYU#@mbXb1bJFlV8 zpY}x1856s_V-nnFW{Ey|2?4}+a7;+vNuwY-o)?Z_T>(gu(_^J9YT!CN zX3rlXM|`rsbZrD?yPauUs-`;~bpCl&R7T){3$>O%UKn2Ra=wzbX2G%7#q8d5V(+iHh`5?ec7*Y%Bs01S2ju=#)5l$^DH z+mw2{Uc5eunBA#fE@s(G$FyjV_YG4~!fty#|HrIUhvES<9N{NwN=Me9-|14$&h#IL zy^*#~lnRPUiRY~kaplIoJO$CE@)#W5@u&-uj}#1Ps>f!7EMJ%Ze`A=Q>B$!FISUQA zylb`MSci4KYu^#&t{|Gf;y-^%?AE5V%l_^=-=?YK>Ai^1v4f`t9Y(~pr~`rGM}+xf z61=9|a@lBkxhYf>Y+OtnpWc43G=9(r(4DnsGGw(_O&6Wppv|K0`B`acfc4{7{M>jp zN~LqabfBstt1}GRyRA^y_MK~IWGS^yQ4lrQ`Cvh#1Q zEW?z8%x6wz^8Q@y`1-MCs#UFJx8_wG@eYbLN2ZAgvVM#8LNyXvc48coa<~!?m2SKO zW`dqHpeJ;|NL7wml~eO)iwO!hrS6PuqX3-}%SJ-rz0MI^AdNzkFnQwn8Gx zcTLkhyXc=ky-ogj4XB10u^KY8;-$$d;;`P4R^dhzZI_(E)bdTer`qg=J@;a`rRosB zIhcbBQQea!>GFCe8!eXA^@-7;+75jfE7G47E=JFk)mO_$gljlO9^P!x`Yg=y z9x?nc0ObyIubK%ObMSGAM3~~%Hp?<_pplj6_e&>A+Eea1;oQ;MPtqE`4`H`@-4_S< zMbjuho?P-lHHE3F!C(x{Va@6YALX#TzC>?B`@TD4-^KnAetrUMpk=k6yGPr2YD*v$ zw6zFato7MxrjS@V%F50NlA54}bJ@&9mDCjae-C+BP8+g!3NL-Z8_)Twcc&cCtvFjM z=WnCR=M4tFU)?b;vkyA)tt)7ad00*3p*5vaSelsa4ZXbteb?QX2u6TG!dgSC(|s2;$Li(@3KD zu=^ayniGekU_8S7w_+@1os%$Ty}-}v*ffsTr=HGuWVjlol96g>I`ixO*^WMg7fCN? z-)z);xa~Om!SCNL61hMekqZVb2yK@fe)wa_{4IcuQ~K{K7|%6cCqi0cKKNloB`llr)1V&orGdXF#!;a zyP(e41$m#)jg{q%hJW(%9UG~Ksizl0l+phT5SY+*iV;w*w)`swW-5DUij&p{zWU&A zfaCQRgG$RtP^vxTd!9n8btLNSKc-Ob>#YJWUpj_BCQ`bRd;yIIx2d9>~rVd%1S73d5mzN5Ju?bk<9PyulUJ0+-eDN0jX zkg?DNR0O3Xh=5e7QUjtgSU^E~ReA?$#!yrQL`tLv2oMxPXbB~f5JJd%pP)0(^Iz|W z$F*FG<%a|?=iK{T*WSPFC+7IOwfY=Fsp(feOvn&s8KLTyADCq(Sx!QP6Y2jQRM#AY z7Ghni@JT!Np%bhLUNy9~l8o5zcdJ0lj>>Z8&YGA><{p;+ zWAt(DgIDx6G+DlPaNA}a5fF9t63}kL;(+RpIGZ*l_3xisDQi)?NA2br2c!KgT}?l2grFW zPr?mAd6TTS`s(Yk%8Xu^1bA|-`^OUFa|9!eKsD7@1DmNLKUv;0-SQuR2`2`hBcpjY zt!vK3f7L~)CHi~5mE`*l4uZ4YYVlu&Z@W2@yjZ!-T7r#-MxA*}ag4n0(dVM@BT3#w zWVwnPW^|u=Qh9zGP0;(Z^Yu6D#o3S3tPuiz=wE8b+-~`u4&j=+wcNq(003|uaO-e@ z+HFn}%i9)B@qq?SyL}p`3GY-01>D3M#7jP8fyw2j0h`UWv@ASf=b|Py9h|lb=<&=S zIE1Tgowk+UJTUbyTw0$FcBDSVBM=_?i<)jtX)2hQ^C@Iv5}EO46S*XqwV1M)V_4!` zHrqz-sQa`)x2FZ!rOwj_82P5BG47`I#|E^_QyeNWo}s2vY!5#|(TaUZd+VcJ|4arb z%j*DT89kP1I(x3>#nG>fIlcM@0R%rQgqIxdd==VwEtE(_WIw4kKhWMS+74_;sZ_;7 z1IOj+u2rh}+L-0A4<#IF$OSB_n^v0HLx1STr*0|~xzb);9$g<=VJ)@1%iND)$Znyg zteWFLc`uf`6@%v|EHn9^9Hf(_FW?1Q8tPQEBqI7Fd6rSrr$Dlk9Z=s>5u;e zSpj=EMd2$%$_W7;-z(^j|wd_g*9t@qhZs)E5I z)2~=FQAtO?Puc+lfoshJ!{*)6ua>_eX9?3{#dtTXlg9^;lW45sNr&_;6{pb53ilZV z-+4%@VTJ9IR*#uAM$cRG`ZWqIj=rBv`oid1U|cA4U#B*xB%o_>Z-N1W`e!gf@C{QU z-@sem>~7uV1{rNCD#WN1B{n}o{Kn`LIx(1B6Ip8GF0YmcFK_QE@c>rUjOJBXT}W`F zaeD0?vHf8Tmc@FPt8xX;5s|lxb-nWMe!}_}0yo@T6~0*rbgE@Khu#v^`ED`JfxIUF zbGKy)SJ?1mC(msHtNRCW>&1e~g?+b->1#ZmXKK*zwOj$E{xLaO7w6z`M8Q^5o}EGy z)zv~{CO546setis@!QXS;Ni87Z~+S{s8?kVPJlItvA|aS+Jjcb=c#DC{SYPD!Z586 zbI~0h4V$KG3Dz>#IL$FNyx<~$%zhP!OgCC6D|m=OougFbZrqcWl289qOb^DTeV%hk z;DZcC7k+4qcY9-?0-xefGA}XM0DfsSB$9^V(`C0cMac$TRkE+hraUiiyD^ zbGl%PiQSNLO@FziT-_AdHeaKL7`0>`*_%vSg5p`eF1_!cxG2v<*d1=o{8>F{Z!GmM z#Y)FLTyW=nX1RRwB~f4Z#tKmOBWg7p-Fcv2MqOzJ9M{*U}eo0^hNCGSOc(L#Z(oMwRh~49e zMt+_t;3+aZbtyu@o;iF+OQoZCi)!V6Cs0F9<^(p$nbl8x1XSXVs?qlASEZnX3 zYD>WuOz;gs@Ga39oFC9zNAAkXsr@{BG?^nvoq62wjYJNWs;nP(f++z@5}nHto)0V| z$#(f(ZW--LMu`jkiJZ0Q_kE_;vQMoPlDc%A-BrFF3t+$7x7OH!uE$?8R`|9Tb({2! zKsTe$6C6hcKQ)4uq&-`%|0?QR4tq-VesuEH+zxS2Bf1u1^XaEi5Km{oLA#?7f%lr4 zV`IC@x;OU(hD40`Gq;6>{Q9kJB{ARE%e*^MuX6f$<`G^$u?vo(%cYrD+IT3MrFNTighVu5ZS&0ZVgMpnpG}Lv!xZ`=0e0Nu{8T(&!^op4arOM zHWs^kG>J+&dh+o7Sd)6MP$XeHLUTuT{${q@{doIjp)khQHxHVa7P5-B1o{WB-z?cV zCo@tg!P|E#&p?2a}?HwFgIm|u_(^GbSoZ1R@D266N(Nevad2;U~*8uVh zB_APQE}JLcTQL4*K0sfp^0g0#N3lh#+yHJPmd8n2?!-#8U>}kX0@%Xv`Ptv|2_@_u zE8=cbZi^(x5v$SO@$BE3PTOuIXoec1jo}v#lDw-#0XB=OW-)+;$#}TXtkC`zBbzmP z?%&q{rGlwM^Q=|1@qZeGOGs1mHv$>9TB2qK2(%;>iql|Yh>ERu{S#q0TH#{P#hS>i4$9>__U{>A-P<|W<#fe9)qpp`vY@|y zZ&0@Jb8Z2Ffp25{8bqQ5Bltj!Rw_PEu}U`zS-$f%wmEUcJhS%IpF8v@7qK;_g*sJc z39j;;@!%zzjopFsUgMv1s9^>UhXw&-5Xm|>3EW|g)Fj|DP zxeGjM5x1251yBdIl?iP?>Q_1=)6#oEvo8THAbzmGIEoR#aG zRl6#o%WP=Bq8#og2H3$wBd~taqntWc02)_)GcPQ>)cGW~9jAl=fRYcmt-%5)raaeq zT`Y7q(OP_3@a0-h6ggNsWutz4Q=Jy@CdXl<*Il#SzDg4Rvy$F@Ts%2&OvpF_jupA# z|6i7}X1V*-G6tVX0&263KPo;+x`3<|n(=Uw8Xa#k&cPR@olRL&@(xBa&u*SY1_l#`QXIc(Pzp{5mBq|k zuZ~!mmO!2A4~FFia%6XYHa&?eZe#=L5 z+513)bN^pI-bzx}`p>wiQ1Bo<{V&D|hHn?Mut{`Mm&9uux9aPW;6kvDX+dxSH2)$Y zq&vM`C|H{o(u^J!oNB$Ct#X!U7o6&j2kW(gr@e=te(o?pJskt(EwdsbRDgDP0%jLO z;;aW}R*lTzyP>-i31C)t_mcdK8oCmZa=xf>zZ1l09`}W`#LL@IWenMRp}(d}0W-Z* z28_6tj%>ZazrBjbVITMMM4vrf@UdLaJpEhRWpCoXL9Z)DaUU}CeXNJyg2>k)b^`_X z==`0GpjktZ&!fgjiR!Jk*n@uT*nt&g$&lz4VA2<6wfG7Hro#D4DUJocqER}ZIV7Ma z2tzQxqapjU)+1i(0LH<{49N=&vkbM)bS>sY)@U^h-{bQ#IjQ5SK5!=I8p>P;Uea2l=bWMZ>N(07URF z^JwXByWVd}wJe>6?Eqt$r9YsV7kv&~f&Ve{^4*$w9rU}yB^6uPVISaL+Xc9P7!A5T z$caDoNN@K=(@HKB%5;_BN{$(qyWdM7ODrrCoG0??+q_NvfXb0~(f79fzcVi);l6{t zDnU{x@pix3Vj->O`^dVqjU1Q_T<=m@Cq(Ea)fP>~+VN_p>(v?mhZ|&|-%<8H_*ho3 zZg}964U$6tt9wF33|ci(I!V?;s)>;uWBvv^8hgKzUYGf*Jra6=5M*UJWKj3EGZmr# zdA1K3v%>FvedHj2#DNK%E&I9I@HA^+jckl$J*4e;9flBOz4?;M1&~Sl6+{9%J5pl$ z&iJQ*64DZ~6Blls_|TuB@9T_FAgQ62qf<|}Njuao8b=nP{d2-gDSdJ3H3s~m2eCT1 zVn-0kXVVmfjtr>8@LL^Tm-Fy+k8%Y4b2tYz^3SLwZzmT9_9VN=hCpDtOZ*eXREKsk zP*lk2=_Olu&#_!VS<&`&comvdn(3*@QA1<|fy$RB$jx~07Xln({2gMju6n})3OeNw zXuemOAp>eeiluucGuq9xMJ$jh@%OgZ9*=-;vzVycavxVk1PXp@1FQrE_GiCX2_qlx zBnz|xq+|0pzar*@*U<_>=YXTags3Ye$Fz6@3f6<;fjJvG)w08XDoS8sUnEju$#KJ}K!8%e zq;hN=Wj$g!L8*zZZ^hrmY(gQ@!t=eYvDeD1-sLuGmQqWP?8?ZP=8f~1n$m$s!6qWV zeYo1q-9qh)5xRZqa8jFRFa$%G*| zS*P|BL054AW1v53vYU5}3y)5Un}xyYc0qn(VRVJi+K{dX*A~&}-ucze$w6ek@YMGH-4dPVIb*cd|TQ|bj!Ut76P*Pv} z(T-+Dchcyh8@c6c)Z;SKwcBY8r--w=fsqYQz#7vH-&xa;d|efzG_{Di^W!lYMEZH> z!p^qUpCm5ARhuN4D&n#RcD(7<&eE8+S#RtrAq)7i&hPHUS&OfCdP`Rpkb{&tTJ+Q> zFsvt+?R_7IUmAER9?aByh+f-V4LZpypOmC^xu4qyqC=gEh@VSN%gFd@R(YcNzFA6X zj9`NL`vI!GLN4~y@Z0rMEutpwBerdCp&pnMWM{hxfILt*kTQ^OcgcuqQU_=8B`v=q zCk3#D5x?cZ_}#3(I2UD%neD-hEiE83_LrJxv`s>Pjy>OQ>}0t!EY)YNhkGISgh^eA z@p!)@vfd5WWuYo=Q|YW0VKRp(+ut#t$iwG3ZRb(yE1 zd3b8I@-o6bc~iZ>dSqoJGxAX( z>fzJ}x&16=!sgBKY1j`I<<;Mk?<@WF#+`rZSQNDmn5s(o-oJq5tNoI8ZxX*wVA?iI zv)H5ektAd}hk{ybudt~~L?zT}U1b}6WBj_4=m+}4yHWYQuNoN~TqL)&jD+SN`T6_(B}r|5E^vI8(qcAmz3%tZ;(XqQ6kZu*`^dRQAec6| zS=$%7zn6$#O>6j!>4b+p`TWKg*?T=&Jpocu@+&su-{WKQx~U1N_fT1uPhUnX`RVC*I~EMqrl^>P4v3cYE@La(Q$zSwB7NXaMkZ{6)Zy!No|-72{14^1CUL9D808n_+0BnRoP}GEN5ul<|QVz&IM6*x}cF?LZ}J3O_!(t zqC@0a!7#**t&^Z?vL{8W84whz+)de(d$x^xFPfH-Q~KXY@F)!RUHJ087)$b@b!x}r z@ogK|jyalHZP~>zURZ_I_4y9l+Hz(hQbK2rzw?3WPsZW*nls#o$g_oHK9sApxF8OH z9k9xKm}j`KxN6=U@ovVCg^IcvZ0GcL&r_^JPr|S51lguZs~OZG%4(_(QLw7?&t`7; zjRRKfXL!#W^ZN&k%a?EXynD|*gZic}`CmOovYlePCtJ*#-rbviK(G(6KVN_02g2gT zdT|!M+4GK8Y349Fes6##sTWo+8t{HUWlmkxK2tBaZnKuTF7UL~!Y?_Ba)6=ocLfyG z662$W-rH{Wbgg;kZ)f$4@`9kCWgwP>QcU{sOp8**s9m&amD{5%*Wu*;%AWILPsx5$ ze~N#HQPahW4{_hpjJUQ{0lAFXkusVlr#1^(k>)yemb3L^;Bf2_MZ_h}`6$8d_Tf8< znogf#cg)~BJJRX^A9YV-{6(kK;H(%daSoDK=85Jy|;AE${KgUN`LcQm_@AlO{! zC{lAMEUVIQGHh`G_X*>8x3OHR5eIq%-Eo>AV0B~HDAb=&HC#Y$|3Zj+#lF@9<$`G= z9w&j)&z@nUZB>`6o&xBk_tlKR!|OM^J%Xq~g}N==Q=>)|+j4z7Zu@+@@x`H~G};sb zo}D90E>49kXRe$|#~O|e_afXWoiq0H_fR$KpDZ@9IrHZ#>t8?jVe`-3_9v9_OkGDC zes~2Vo7vFbf}4iz2!@_-8XMhh=_*Sa_9{s-vn2 zwX0N-PDc~3yfX7(Ri%*EQvTOom>S+5I`XC2Me}+Y3?&l^5Hv2p!VwwomqO?(oAabj zQWziQzU449HQxPfI0K$s*x!BlE% z!&@@V8~{||f8 Bk=y_P literal 0 HcmV?d00001 diff --git a/docs/images/stats_Some_Progress.png b/docs/images/stats_Some_Progress.png new file mode 100644 index 0000000000000000000000000000000000000000..0da453d98bdc80f1f59232c626cf885d54aff109 GIT binary patch literal 85416 zcmd43cT|&2_cn?R3o0rKD$RnRC{2(^&7-J*GzAr@0qGKm^pcR+5EUg#kPfj>M0z(s zh>8%YL0W(SQ36B=AwWnV{R=+t`~A-O=X~p|b^bW_T3Jj&GWX2vnYs6M?Q74oYqsXQ zb{yUzAtABL(&Cc6gv91935iV?w@HdW$t=2dS^Q^1n7#Q$iLxGrS@E0Aeiv*mNJvy7 zrTCs(#P7G?vv3NNkdQsG{@P$^ud*m1AC;q@;S_-;v27DC8E!wP5&0Px213Rx1_Y*gTI&bM&Ex6_qT4) z{kQbx(fvdJmVRCMvh&~4;t`Ma-ioj2J=*`N&iMaW-D!G$l|2HMf{%2&T4b_1h^EyC zX{}e{u~&SvVu49=jSy{NRd(+#i2D;xVsBjkpRD)>`rcY^l5eP=&X2XMf&vTu`pg;j z&tI0k=puYrm7}&Euy>ZuZ%CP0vl{X6Yj&S>thJm=`Jep~*%5v7WTMIi1-L{Z( zD>^ql6~Q_=3gX{=v8!996426F75sN++Jmq6l%dB!0dK!GxyxWyRQe~Ze5T*uQ{lDe zSx{Ze+-kmTi?^TdDkke_2ppI)UO_>4Ke7J=6Fx3>#DJjLK>c* zt><&~$3M@hfaNm@q0Yq?BSN~xlkrckv2_|BL&mKOFW=kOK+a$V+Aq%fzRYtmPNNmh zM$YG7wJ)CXc7>6b{b*-%!@s&nQ}QU0f)8cms-^v(>xqHygg__AD|+{kvdy6g)bqX( zbgCn5L73+o{H5PFtAHUB$oy6T*DQ%B1P%im$CP1|*rz)IzN|W^~rrT!41*v8{qn3d(Z%MprEi9bbVT zyF2S=G&V;?dFR^r0r_ju$uwPR#IBV6Na{nM!`lLVyKK1O$F|^>p=xf6%VmfwT_hv@ zB1FcJC?w=ayQ{hv(tmqhg%*`scW3F0DYRlK6lGV0nRUX zY#-Lk2X~a=(5d(oa=qYjAfcm2vgox=6ts4tm|%Fxx5TkksfN;P>U^AH`q&}1R3tXp?2hBCabWsw!IsdT1cdg;OSqs zYv%lM3t^41t$&iq(obe`7a~iQfCPZzp{w@0XM!J!GPAH>>0s#t&`o#ef``weXLEFN z|2gUwYx+{3Lk1`L+H*k^DG>~D*r@*V`lwD})dC9v~f zp4adf-0+JfnXt;HoBTU)GaUV{rF}O`rq}nD`v6v_WT)xR- zz7w<>qmrPOZ27|bR~UYF>{Wr!Y+laHOcbvC0x|%j_v-g9<4f;My16Zny^Y7O)DSPZ z8|pIhcWW&dJT{x<*;GYE1w#4J#Ol=Zb*nWV2@iW1pk2*PyTjAR1YNZ2bx|wAN#TC$ zkJH^y{lhuE8xp_JM`S#nwm8$(3fRh*e{o%@(b8YbjVVX&#hO)1AdKBQGjf51GC6YK zuEQ#}^IEw#S%ObFj;l_W_9D}??`Qzmr^9!T=~vc;j)QE2mduH%L5AeQ$n36~8e+@G z(>kp>Q)R&HS-1RYSXSa)e@F)E#g!~>vq>zt*V0Qe3|n(7(Gw~yojd~)-M3+ILkrS= z4Alefhm@c0rsO|sr?Kj4NXX^IU)=_BISxRpQEKK;8Q~xa;W}hELDVZFaNHq{ZMlgk zpBNa}3VS2Dq!2%Y3ZT(8QzuQ`Z)E>F+UHAlrax=?0sWEtPZlb5xuvCR&-FOtE|p*8 zs>bG>OJt*BcxjoIUpKhe3Vt$uTtxjV>Z|<^&yQ$Nf_Z6!j;d#4%DwR1>FK4Y< zoi#WGuyLy;*%LHpWL_LwpqyA(UVj37DJb2U9zb|R)95a#w~(2)letC!HdV(2Cr+#c z*q%0mStY#2a#lBfBZm4eS#`R6IO*qSi~L-O@vI&`*BI5rIBcREI8olIn^W=j1@NAHsidyoAA4Yj=1-n}H- zHqVJ<;yb@_U@iYzG-yrFqrmd5OQyNMnTfVuNOK-i6<`h?XAmaXZ-x? znsK33;DUC$7YQ?}p$AT381Ev&oQu;1K4jPBTIZ=F1kFLJKA0X&*q^uHB>HS>UKcg! zJJ+A_<%@;4${nWjG0#th=K>%dbp|=tBlK=_ecJq}qzGi%5o(xu&A+qDafHVZ@yYl{ zm;ioPMF<$8zFHNL;WRM@7B=!D&~yPS(N!h-FoF&%Z5qm=x`Sk|mf-NY-oWrGY^#L4j_3}^KaHxGc6 ztL+GP>8^S?_ogYkCa((k%2ssKePLmWvv?Sn0G+u*$Lgsm2D0ig)tYgrpFhBXH-qzzls5f%+n>fuYpe~uuq6Np`YCjDqVo4l zMJs24h%YeoA*HI?gsSwmqxJTv=NvPtVrn_?Q@ikBM1J%F!d)s57CcOBzTH06wRHaQ z?$lf$-qeU}_@LMWpGZ#Id|?P@``1tSb$VXFVI~;8*^`}xlfh6`rPpMeHdGTHj;*f& ziH~0_MF`!jnuhVz2Gs_j#t$KnVEK7B|1e0W`0p2fxg7J5eLUf(wl7%|XhHjk3%59S zfBa6u)4RK`FvARqDR?~B^uzo^8Ft#ARwt@_rLpV#5 zGSwPlk;)(+zzp{ezRgiB%xqGsCvo1-6ron*9$4CBAX}4^3PM~7f?OaUOiD9AESN>q%oO3mk7BmDyG(OM8K z^-A6@_Z#;El2^$S(WDl?COYVm>IAzSdB@A&mKb1Q7?CO+=qt#j6b~PI>fKd2cou(4 zom5F{uqcc*uI_FRbr^M--@eKb(mQ$w+>V7EJJswXV8clq z<+bhh`E`0sUSAYYD+!s{r>*>YRs-Q)!l-v6KOwmb9+nTD>4f791v?iq1=)dDbCeFt zC@Y&_jEzuUVFHYE4OcB6Q6qzJk3a>uEov; zyzNwQ*&YVIsR_SPaRnD~sxYDNJT5uc4?U+J=(fHemF`s;%bSI-`**x!&E@1s;nrpY ztmUVvOAUjw)OdHfl`_I51~qDyIjM`IbM@!hxw4_j2lahpcbSrPre!5ZLM}!qNGQf9+%!mOcyE8@CHxfNX9(zuJO&@xmxnD2WS#;vT{idt=gGZmnGz zZU|l2mKVAd_WoSL)|ve#v8$qmsWL6I{yVFp213;Rap~5twr{royl1+(IRnSDLXH?g zmoP49Inb9}eNR&T^xzmXHn z&fN4NnP<{{yo^4`cPP?;e~@>C-cECnw#CE}vC+1}`uA(jtMsZatOQ1_DcNct$d88X*;9=9{%YbeWyt^JIxyp@ z1k@U+hx)$0{>^e@87Es4+M{KX{TN|hh1N5-{fqGY_DLlD-MhOsYh_1hK@MI|Ug9_n zyW3nj4?|5s$pcx{8kC0YfhkV#YnMOs zj$MR?5{DrkD$_usf2J=|pzGr09~bo z8!){G-b`}Bv+%giodq;B68=UJUw87;l%M8sZ5p>Y zPZ>lxZwZk03UMb~GQqXR7)y@3pKC5~ZDWk8d_+e!5!HQN#+LniNOwgRnLbYbBF{O* znJ(@lXYrF}W$pQ>@KJgSnXj00zwKV$%a~#GuGHBF z;{zoV{g*~tlV)^Q?Rr+j<9zY6xjBOBm{X~-@Yh6Pqe|@o#XqgxuYZ)HBo_aJSi?92 z*%3xQ6||u?swok#dN@HTTcaAwn4kykRLQUn^vm3yW$l3QtFEwn^ny~^!EJzFJAjk} zHa#iVO_$>n)=ikb@}`V`$wrx zXeRwxE((FEn+F$)6M;pPS@_UeO;-DWVXtMWbE3f|9FG+= zhWGkKKewWg&tTMOgrWR`@8f;?%m+L&xH|a8Q%EHSW!c~DCK;KRyo%en%R!_*&)t;B zjggyNd(L9Ul@c0%5p_qsN&@`89ws7gahu}%W_`$QxjbFt;Cg4)jP#*-+we|IrZ*J_3rC|4-zXR55z<7t+Gd8#Pjqz}7+6|j4C&%ZkS4LHJ zh*>h|Wn*%Ob< zQE{}L?TSC>FC7;AAdl62Nnq*iVYjJ?aqxE+YN4?zQpMGG_!G>Un&&Bwe@HXFJb+F3D77lxB&2-iT&f!BTao- z&A(m;nCGa?v)g(kd(8WCj37X=!L()UZr5?)Now(1Dxwgc6RTVuliNhoQ$7n31UR(} zAW{UylYIX3V_j58Hc|KbV-xppbp&mmBN{Qt8vY%R$w(;^>`a_%NntHqfuxQtgT~iq z$26{J&hLh8(}xR)Z!CJ5A~J+Gfp2tBf>ebCso4<=jB{>A^?&`25uT*Sq|JdkmDxGSL+bIyh=h0PLQohIP5K#52m#+5Q~#| zS$9Kq>-`H?k|A9B3ubBe@bAkLl0Uo7ao#t&$X9lQ-$H*>R1eFvN(SyD5s-NoK0LOY zaiZHe(3=_v1uI$Q!h3Z}E8jEHk^&YJxB3pV5<;VoWqh}gG~K&R?Vs1F9LpnA8Lfqf zpGhrzfIOT$#`=#lS1f#2;~q0bm%gy~ z(5Q}^Jxvky5hgOXhXn^JRxXQ}2VC_B+31CE|8c#gE+^XMBSc`+eP$2N_fy-Q}X)byO>yi^t*ubxtjo5%i5ma zO};j&`6#XbX>FfB`%~~TyWq;|?>gv)?_KamZ_XsL^NP~0CbM9h-nVR@k+1552(hfU zYPNzIvRw*m>vVPnSUZhvMR&v~Y$(T~g=KufP@7VPa2QGe|e2eyfWlUBH-_ z{{uKmO!Kn`@1)mr&|A9eE_eEcB17c3Cc~EI596m+PZ}{pla+V?pR3BI%qeJ5w6Y*YS&Ge;U zyI)xtAya0R+cM0doPI(RyJo)7wC=;W4cEovM&o$W+0~EGQER3fyOXz@?16?xxYtmc zPM}bs%nM4S8Sm=5ky6-7%k$%coK1pmpnC8nXT-^XQ^53y*w{UD6i-!8bzd>c?=qp+ zxDC@XY+!E}!0#j0MW;_+u}v_Vf*#M?GLERG!=J2Q8>aC z@2-WojJuzFz~tM*t12uP&S{dAImI51kt&!Bkfuodx;OIX6J4=-?IqEXQ$(&~&4WNY1W<bhcVx}ZU+xPL{^nc@&91MjGrXH&e3mkU>KN?_ zL_}FF3TjK)hX8&DMUk`Nsm>9#fWjthTD#R?vJe9i5rWLn^=1i z609KwIH90EFonr8l@uK z)9Ej>`W-GLNLb6LLYz~WxYFZd&!9JNXqA9+J%Jg!Q~vxja`iJ1H?%ZDWkdnp>wcQn ze?9cXK(URHk1OVNZEo655f}--&8fMP7nYX})}!G~=HfNovbG)XILsZh$gMi?EtP77 zR)$~XeO*0Jl#n5~=B!`Rp$cZ({j+w{-tY>E`fEqe*pymY_N6hMNvn~(Dk0#kLtqIR z|BVe#-lkLM(JTEAW@S)~JtOZ3R1WWx-UJQXf1e&o57%{3$UNi)?UmLO z@ZB@bJT5=9&j*+X(QPL*IU<4V{1~U3-Qm)V+pU!}^+mTVe6>Tl3L8H*K`4n5MnUhx zFCx2dOojPB7We-{O&)3iTt%7YKZ(S{h0>026UHE2r#YUGBZ0IW3fTk2=yc~ zPP5*(%{cJeNNUbPZG*OMcir$QcE34Fu^jL#UO?Ox-fe49HjO5dE|u!G^}-+*sHk+#Yws+eqacln{ zwXW7KTxYI8#|4ox0#YQn{&_KL`F>vZuHO7r)?IA&!PsM%UTL|PST&R{R81Z{1Y8Rj z9R97<uIIr%lq-o^(+d?*3Z;z##X>`8!JSjN;8f;$P)Ua=SJNtBVKh%-YXUjhWR+(7V) z9-UJiR(f_I>;lCAxUdvOQI^Gf(Cu_u##<`2cGT?) z<-`qMwy0@w*=T|ywBf%nv(O}=2vKeWZ-y{q zuaJCvU`dfQk?_kH$VXC&*l>N+C7qBM(IYL7YkvM&`e67`X&y4W|pH9(OCRJ^!Z;tRwhp&*^mIyczobZ@AIs^uDKkvMbY9I!CV zCI(gl0bDpgiC;>BTuIn5H+3uWw)-))?t~!~!u|@IN)S?TWM}*4e>qX(Kc4?jnh4Ng zZIV^K%A1a>MefJ;o?d+R87Y@!?h$pbX*~u5qIGWcH9QbrYX91|`V3~JnK$P&nLUl$1ycHst)$*fS~qtGn5l`Q;Y<&X;j$mby2~j_=f*s`Y3I^aXu!7HV~{k z09j{jtal4d8+2S$`;}^}$0sZKMvbY3NVI+tgJC$a*IL{N*Z($R zYU{LiV;UR>QQ9=Jpds>&gBiE8GA8`9+gT1fzdmT$^h`JPU>(0OK3nCGmhY>G7X;v~)}S-9(g*JpVph&R`|5KwxI6Mkp(xTjvSXQ82P(?uDs`~DO zXZPj{b0UyZmHxx$^?A|Q*d5MrpH;ijxJj=8jgAr49mOr4C?{aL{){PLOJxx4KeXMs zbv7P-=!&d2g6>0G{v|u%0*U2Y4*^GSkfh*EkBdZ=L5fK9&sf|V)N78@5+vVaDvuMn z5AlVqe0cB=P&(!G$)r_}_qFvHt`5sUq1kd73rSiXMDQ|>ph3F$kMF1%J@Bwl%|0r% zJidL2Zjxk%FwI1xe9fnp3d_LBFfn%ETol7EEa> z+NsbKC{tu|12nC&EZkLz6$36E!M?&|J0tuDowL*Q^kt=yxaPGOxhsFz%J2B-9OWSc z_{~=opB%ODqoaT}oO9@Cc7TYdJ(ZWKm_DRu?9O8(4-{8z!e$un z!$j=kE6K?(r}kJ@*QGzT*t9Ei=WWBwej}9kH^|8OEfc|wa@ClAy2jI$Vp~N;Iis@{ zsre($3RiqLo$l`PhURehw|5Z>X|vp}GhwQJej;xlrI~FkMhWTEBe(jAu?7OGa-q9= zhb!Dn2211JmGAY8j(tbduoDwFht-~I%{?FY$e7rc6s9pti~VrhI9Dol%NR%*Yvr)e zb}`qO!37+hU)on794u2pM%5c`_{Vt}y>eCx3fqETQo8hq?HjD>QUIU8vih~rS^;5? z%A*Pcw{bc7_&?p4u%4fWKbbFb6Wb#42=t{=)U`hb->@UQMVyZqJ>IhZb`AfE=5;X% zw8v^)Nm5d{E8avYhkM3q2J6-1W1DfSw*EYF^(2+~1#k78yYtvpXtcYRNRm9^Pju`K zwU^8lkYYM5F)`jfpk1@Ow=Q$%H5K}9l}T^PR(`L9Q(s)#7a?kkhKqMdQ0JlKm{{-N z>*jsf9J;|0EJ|xrSV*#Q`b5**<<9Z(VodrT%Pbm>#5|3GhiX0r=EjB=JL&7f;`_leWW5Jp9a zDU(h^VbYBNj#0CrR##6EE<10#J|_aiHqZXJmOL5IFa!!)GE5JohAfny6o>31Ine_! z^PV4F(||9PN+1PBWv};QUunC$LFYGS5m)bt4wfnBjR0g zD69T?`PDdEy*X!-deTCZsJG?~DL}g875)P~z~Lu%AlC(JnNfqiX#=%L3#{kGdfiTzz%XL=HD8PUVRU@VmUqkn_#l?Mmn5&%4 z-PMe{kxscxRL;k?#{M1Dj_v8=<5xfYe9e1B{%5yQq8kkj>dv>n0}?h6GzeRWQ8V?} z<#|`V0%So{Z-QJ*HP%dr2u`$iqXAMfP#6o_%@1fIxxQRq!Edk$t^P~QY`WCih#_f6 zxZ}(M#RreX6Jj&srk7fml)5{4KlX=JrW`&}8tFdnw>O^8uZl=D%^XufE9KiL`g%7d zcKz0A)G`z6i;k)B;&vUjUd@vH)bs$=i>Lg4=DqLup|$-Met834_UP zXne4=`-Tpg2^MzjDjqpTc6_2!l@mUsWP2N_Z&s6bJ4;o$- zT#0Ie9Si$bpQO_d$;GltbS38i1oy_zxOL+TqFo0&=Zjb6@KC)vykFHBBr@nP)w1## zdKPUW^`L!EO_Et0e4OPo#=EhKMtw9r8jCB&K1iB!YhoHdamNuqo<_G8eN#gAbQM~q zA|hi~qaUd>hBuYRHEsS#=)G8%a0s2^XGBf#c~I%|pyuAtUD1YkL*U~vkS8+jkho{r ze|uJ|TJ2qMH6kEG>h1r9U9h|lvD7LV{~gxzvXiu&yK(r`g|Lj@&|W3s-2f?Pe+!4{0Fc;*~dCq+Y39~(;T30I0_=Xr^P~`DK3521>SWf605WhCGN}PD<2E$ zB48m+kdDMAwX`w427|}%6W2IC$OmHhzez2F^I72o2X@nFjk9KX2c~EWa3C77IgKd1 z)i3rQ_c2oO1p|4Yx{=v#61}d57NM3lG-|f7zE}7mTlw33c?I6e|96MzCc02U;z*|G zeD(HBbl-FaOseR{t-Gbqy}JlK^FYM3cl#E+Uz-_4HWWOdUM2Ef*QAVQ%4sB-I4m5; z;)a}1wjbU^62)@ zJxSIUukefIq7{q2*#4BKT7|;(l)kiCb4EI#~vWm|ZBQ=AU!HOwi&zmCW)dD zy0bDHa2#6M2>$rceUDgqL!Gq9Fr1IB`MK(FM5QMk4?3svT>n z`v>Nb z?&j9SwJ|yJe_hCt8NbV~*cG-h8-pN^DdS3syqtVSkjVBu@#aUi@^7y89OvktB_r9X z=x0@kmQ-Nbx;^$t%WH=r+V)Mz|M8LY8n)?aoqsk4Ibw02{D7kPC2Gm(A8P~}u`23Y zM~%fJPG|S_YI@tW73%%EUhmMr7*WvSHTQRILjQ{1T0sdPW}S4)Jrw+LrSm=55}LMf zYqvPN;6CHAk}vwU!rUwnytC0P!F?dpaOy%rlHSyr$!q)hrV0#+=B%ZAE!Kv=583|N zxqaXriq@05UHsg0+55l6`UjK6AFN;hZv^~*fAIfZKEVG^sskSLNWGe`vMxqyq&7b! zd)Tc)|C4Jl50z;2gxC>m7C7xN{aTvSDnO!6ql^;LGy(oWBLw9ruf$yydk^3=mDY3n zBqUzX3veQV$TSo4m^W}xe~Row5PnW8?KCq8LfmR;t8`_Xj`=lS=p61SJmIPDDc6}0 zJx}+^AL_7jj%wPO9|AjpMY7m&>MqF_P5p*uo3#(OS2&ytnrn~y>PhCkJJWyM>!&!y zpqe&o3Dy;PJ~=q_VH72EeZl z6I2=0Img5gCV5wbGB8Q$zY)P1TKK%3x+3`?W>*9@Coe`-yzFO zKT)040VKCH?C(y76)yISSOtZmP~PiF9-9?QmGV;>Q)r9-tk^q377xE{8xybY5AVW* zb8~#6CK7oF+*X+&}furl+g7&{KhnVA>1D_Wn&Q9{$M{6N$1oZHwZ8tXm)~lu6OeG zdMD>%3CI=@B3QuJ7Ka1!H%csq8JL}A1m_#=vz!;z+R24OI5Yc!sS}rOg%)HumgiCH zm`J4BtQ&eHapY3jvHTRO>H?!#aAj?N**O+F(M7TCVo27LXR=(!dji9L3K?W4WBg}% zSN^$3Fw{=Uz%spVj(&mz1HSrQak@TgL8|f00+;VY*X?01!V&fNOv9Dzq_Azafx+cz zVTI-yxd{tpdW)}8L+Jx58OjR9dFi)G;juEu{ptjQj|m41JQFG~vgSg^4B7)6=Z_ zgIw9DIAI;TXwqLAvHB<>VnymX%o$okfLFf7KB3R*$6d0$N`!#X!+CNs${65AiTf4> zmLdlCtX`UL2Fh%83-ue@f-66(f$A8FOMngMH&bWMjRsxsacr!^IuAX9jG3Ge4@VDO_qkXRm(?W6&-GB) z9LwZvqDnolQHVp^`ep-hw_RBxnLla2%ONuf^+d=U`8^W%-Ky5}P}&Rq>x3t#SM&@% z&O{huK)Dt-H{Gp$4zT22YshiIuy?L5+A93Ac`i9aKwik|Kj#*H)+^((7VDCDN*Bmq0 zG7b(mPBI|*$Q~-SHB|5s^(e_Drk*f&KZ&cW{+*>l=7mOL;TNYq_c&g!2b8?!5e<-y zb};ari_hOuQ783>;Hd-R_^w#M6p8pTgNkL?Lw^j>jyZnqiL;GKwb}d&HjxRsqK+z+ z=|Puu=Kv|q?mNWvKq&%vAqlTN{VY^4dq6A_V#fwp6VV8f5^B!|iHgJmldczyq%zF+ z(B|>M#QPV0D_)gEbxqvX*PS_5ao$F0Y;SvtA8IS<*(O->`=l_t{pVsv3lv-}ibGWd zpHRJPVmZ)-vufR#?2|oPZ2MjF(i5p(YVC~fYsmBHwd=lrJ{H!#QU(CZq&Oj!*E;B9L zz{EwSd#V`gS_bDujbPK~vWNUG6v*sN-*H%_vk&ZcX64?FSmUGs(qNMoT2(Qr0+I8t zoGI(jD#kQ*e7@G2L&i=+(%BidRu@0i2R>)Q4){P@c2pyvX+4Y_ubXx*{kWfa?$@e4 zRMfU(wdg%8nMgqh1hT(zP{}@+P-}K-khHwE_Q!P89-XD_(=b1$6kx?Hf(=rG&)wL z{VSFM@M1rFpRG?cq0USO#a0UPbZ=!Ar-fr`Ur7bY_szuCe=>pPW}l5SW=**RPR3|M zzuu|S&^SIj(F5=2!>C}yvWMZBn>L|M8K()H&NZ_z77(X|J@xtH3)~5Yjn+XM!Hw=W z-VIF?)*kPO%6FgDPe`3YaciwCO-Fa_zChU$TxBQl0%h2+Hu9=;wm($GFv?HRTK774e zZ(1I_ZWwM;QKV1Gk7rRU{@Hl16oGua>hZMTh#AsyVJ?QFo=JBL6Ewy)@3>3tP+sOA zsvo9N>w_TsXEulAp=E-#e@yfOCg$g}q^ft8FVANOzMtgJimB)xbO=a`KDuG8D{y9T8p?1zhXLXmpmm7^2e4UKlZKr}d$dSAjex)iztNF*b zGGGTgDWk4}OibhlVDG-|fO_f3eijc4Ic!6t#wg`&a>$bpJ&^v58sr~^iY4vkrfL_0 z?6w5aqIWhSj`u>o3S!^*BjfK<2jgVB%W}&fj$)R}!%UxDm}fCbbpRD?aCDqp3@%6V zQOZPbAhIjo=}G-#CRNS?8^4wVu~eZjzvmPc71e&C}ewHWbrl2?-% ziP**Lyf&*R*`LX8%fmJth!lvkdF~9nvB4L8O9kQH2*KM3sw2OpIZ;KD+fqj$h=|*N zQj_PBkXjBG*lXPF_z&xho3>MALdY8x8s_WJ@2cxGb|aCXnTjZ7wm%8_02gP9Uis;A zcJK2rGoVrD;?;z$cg(?U-mbuG;G@JoVT-F4y>BW1eJUO&m!@mwvvRa;31laJjt$Cg z^2K={p1V<`sS&o}MmwVuic=q)TT;Pyo{f|&4~H)Yab~ZFwrV%kq$n#Hb6m6WEoLKp zUzu;EVl%a!Uf@2v0!^(|H{8f#dSv+E1cSWNUFHW6hp=B847Em^jFQ_eF#)4jNMn2* z-iYlemTB1}Zfo%9+7tM`isZbK2D~yB_ZfKf>1V=!CR-~@>_i@9Zci7$dUjd`#02i2 zo}cfV5kxO@B4H2canzlJUU!R_*)@3aLa)=?g6&>n*#_bEewg5OJ>XUd(Jos5wrqvp z$aivF|FMegvAU%(QJMrj&(Q0KXWE=mXXllzB>41nceixmi@D9n>*)s z{Z9TqSZGcXz@uQWmkIabtCZ^j!CBlfn;ccff?MuL-r$7$4$rt%?nv!2W0a$^z~uyy zXvK=-qglw;pnDEj3QqBZM8lq7gq(jRd0)I z4{{a91n*BDV`*2*HFf$54Kyr*Eg$xAq^8j6H42Al5d6heO|_#>XW~S+kA{GWY3&dZH}>= zU-BuVn!MDSTM{caGQIp}W>zjwpsa%DhO*Du#j!Yd#ahsjQUQ-eMRB-e;exI*#A**( zjQXYXf9qydfW-2WpGIL)2YlHdauae|1X@BewEyfbw=a;=;s%mcXj|>*#Bi)Y#$EcLMNjhEVt)vyNatFnx(bc7NK)oKmNIV zt8OCo`B>S(4h}|aPAJrCkJzD+59h`ikun>1HOvQ;-Wf%XpBIY*th5dT!<9DqlW_@L0`VFerZOZL#|c^p^4XnVhc zGfGfAZ#r~nekl7vcowzz7fF7sfftqYxSv@UXDa4;X#)g58o8ZG-Cett1#>tDSc%+t)OryhpssVsuR0{7!N7e&He9~(Wmx}03wHHv9iC+7)RmQK^*i%MxM-LR zy9NA;G{&C5Gg`OF#R!MYwt zbP(jmh0b!opl8zWiXjuklLIxTE%TuABVu(jyGL1GSHD7fpsZ%=w4*tCP{ijT9Pm4+ zgm%gFX(A9&25k!DIJ#+Fc0%-Wm8HUrpJ*V1Am?5e7pINjbcrX;!d^}iC*F&LK;p?> zRU3Zie%bz(DPQs72{O9klL9~lXv?b8HCYMmR?d1tQr7ZmzxK_|TX5MYCGHbKgkoyt zOQtv)KmRKJsPXA1k2XpaoJWWc6YxO&&k+Ux6Sn`K&;Iu*2uO|^G)8h`+=-1rF*i^~@AvYIq?{sR=DtVmL9hitU(eS!j zwYMCx!mtVol0RWd|D%5=>L*-6V%Rim1t`va*G;qD zd^(4e^Uv&B4+MiklJK{}K!&ZSF+3Mk0>5!T0Wz;shW~!K_((Ywq#H=#Q^)-EQZ7)( z`Qchb5X|~+nAn-hS^>RZV-rfXM(_7Ytrs)&t>nWwcG1CN{Sieo!u|L z;1KNVdRi)M(I{~3k6Q;PrUm9I+S#+q)``u#Nnk(E3$rQef3$$_XTxCgHGaF!za)Lh z)6jb|!#2<`FYH@Fcgts^9lWr#Dy&$aikE^en#W}VA=#=RmFvWGJ5d!B}W!t0W< z&j9jm>^_6$TLq$GY}zRWS!olLX|-IsV!K-n zmm&Z#8?|<%4t7ypuNbn!+>!XZ=5`kh+7%7ZbkOX7k9z2-UrL;i6r(B@5^DOtn0pVP zrrNe^6f7u8@p(`YQ9+7`G$9DmRZxsHMWk10Qls=x0%Ac$1OkE(ASz8nic|vxP*ge* zkP<>u2%!a#Kmvr2b0<9S`@P>c|9{SzIcLtCJ>v`$1oqz9x$kwYYpr!Tv`woz| z8o*cbcFmHa~S@?`j5Poz`nYKVLsV>88LG$@UlrN3H3f8 zX^&3X{xy%2?!I@ALa_E(i+hxg1re!T5u6SENnB4ljck=Xzjn+;gg&MJ?7fhRc>@J@ zEX>-C<`e0L@f>gOiHcgA9lSAH}`DbwW8$KA^u8Gz-1qr;{+FO4R9S5oo!- zL7pe(QjFwYkNuu&$u$}?^DKELgLN{RWcjW5iko)&8f)UNL$2S#+2P6`D26%6pKr+7?Da}feVIe-my~t zTt544RSwH5`cy(m3PRXCKI@*lOZC@Me(OlNL)O}sk-hk?67NN*N6UKWGUttnmE92I zc)bl{`Es8!Z2PiDVq#=z*SeA+1z#=R-VsI$h2$Co`W6O9UzkCrV zRkJ9Ao}7*Iv_TIL?f{a<(LBdW39GDn4Lg#epLwW5b4W&>F92^EQS%}5viHKJW~=YE z;ji><2IjiBas*G{TgR#*+;{PmA#z*OS84qGM%{Dydc|rCVTxsnGgLuuPF=S<1g~%= zGQ;~t{2w|&f27OOO<}W+;9KS7#PvyZ)mdJ4HMkRV(r99p5b>M)cJWR099`zorC}!# zny|BKc7PnY`? z`*i8x(`dGfA)9qtVKYWI3FYC0I*b0ghH^eq2!3ka>CI-1eZ&|tk`G%{7P zgsmn89c`72m=m?A1$PZ?n0C5zk!x3Gr=M}kIczD>qD#dvzV+6Cjy(c^%qVGtpJ<5j)QUHa5o;Qp`YvQ4;&-hwW^se`+ze#|8x8W-QV`q*pb>x1GvA_OPb}q zXnlV!p? zNnvcZ=D7g&{aL|W^;Im}qBEdbog|!ab}s&Q#v~kscBCD1%urUd^EC>!A>Url4ym7c z72B9|tRsTR92ow<=ey{(ORI4q^`TNyFx9v)FVR!e@ zr>3SngB%LZlI4J(DDEpfTSna9IYCABR!xU4@q#bu)Q-J#O&MMbzRH7>8IisvzNhAZ z%G2o97({Bfs+$Nogl8bjCn8;#aiiLEpdbJnY!NE{G9|kq*e_yc<@ZzbtR>Q(%nm(G z;*Fr5M{f&6&=QMIsqr@RL`B}|t8(zKO#@8NzeWFS# zcepim-8M;dC(A?74bw|{N>3Ac!jbQu$H3$=AO5h_oTrtzg+gW?Rnoo$6|L^M89?<)_FpN>2@)cZjvV?>_!%N?;_>$X8&eI}L{XCZIbvmPU`807<# zc5dqvb8eg!Sk5z{iuFfi%P&<_zaw~sB}`s^-`re9x*U9Gwr9T9Xhr@AMT7Z@_duL( zZtC%~oI@sS)OnsTo4Tj>9urPkT)yP2u5(9WSA(s!%IjWuAlm4Wowo126#WN~l0~t_ zYU{<`(0-1n6BJ7Mr`bPdtvorQ<(5oD05cQQ{I!!(fSPBTc@FLTc;`jTi>tmd?%#O{ zTe>0&Rip(ZbZ`BIpSY6lMv}o%RViYdv-YW{Ur_wXd_Lj>_yehU&(52f&_|qUYAV7cYWwpSab_JOo%y= zT~&=Dz0sQcQpG&o9GiJLSeH~ASVUPTM%rqSc8on0xver=!>Os-QvD&-YLL=;N=HFk zONZ(Alb?g5)?J1ZqHo>C&kqrt-UtafjT-a5G&~ni;7b`B9aL-DnIRktlqA0*W&J4v z{(g2v7Gccup{k2jd5q|aGxVMrPyPqX%flMx;bfzjUdeFZ3(dM26&8IaN0Hg8YD0xh zRKuerF9?0rEUegDwo%wO(u2Rdkn*;ZE-BQR>$cT@DxHe!J`}Y6DIySlij#v-d+MZG z1T!r(*#EN8-%sfLpR4{Tl{0-3?)?3=|8<-4Y1*NR{48p;*BzV*nS9H(!~e;mN4T~% zzFl@@omuPP02HEnz$TY=Dj^t&+R*B6u#695+#_I@=ZxlxrcQVN;tZWwn_|jsn&hgU z82C6)+q>T*6mr~7Y+YU@e|$C9$hS_NW~WK^ImU5JKK29RS3<5O_7(YPeJf(LbAb9I zd2`FLlbf&Z%c6o$Lpp5^XlkwjO^w?ucDMraahmSk}qm|$uvi4eD$*8A4?5p0O?#9<8b;zM5Z3){vc)ky{(%Q zPHK#?F-sb}MhBN9V8i_iU*{%l?747=w6U7k2@`wp@m`c;Uj+mGv=-6t6mvQ^e)5Yu zP|;jr%txC^=jn~8pmEPQZtfjbKOvQ&K<}`ujiXj+9vSDcde)xPZ2y(RC7Jr6#LjG4 zj3FaDoHnfI`8E>m6zTM6#3B7_owlG^j|*_of+(2CdJ=SyIB_@_9`MA~UEttJ z=$2B96n%MNDq*=Cruzixr9 zSd}6no%|*t#nyNIZpXV-h=^Ht>}8aRTk|w;_({sbq{xuyNW8iRp-j_!?q~e*o+)6@ znTHBY{CTVTIyAEKgMKXJt54^|H==NIIoSux;W9|o9Gwcl3zhx!tW7}sU z1kUcMT-eYt_~GU5*8AouvEPs{)66^xmG3(E&bN9qGSeQ4yt=2J``NX2w}$%;$b(jo zibQy)R(#GBevwF{*|!bL_5s?;ZM1#3j%})`Z+JGs)!AG26c#=blt(|8TYgmqxN)Yw zj~KnssVdm$7Lu3Jg=n>ZkI)>oJCrM9>=(I6AFA;N8~@yK1p$`dg(y;8-Cg>zKjG!+ zW_mjv#Z$}cp?tJwCcx#jf}0XjVeWttbJP6dWr9O`aN)Vug1i8@R7pB29C3y9JUPI# zVDEd5=Sn(gy!^Sg)>9)}d3j=>>3bhZ7so&H=BGjEskkJD$qO&o+sMUT9M{luH681k zk-tQeEn`$ew0jYNA{f;3F297viDxh?X}y=a8mzx%j2WtR=G)Yp+swV<79S$js`0y@ zsc(-r&m22NSKoq)d`F8@upM8rOvEDXzXl-eV~kxSX0o9X)1@;&$z)w{3cRjgfR?KQ zh2!`jokGG*CaJml9!d8X{L%FNPe%+b3)3BWR%BKny@?2-3p@Hn$h^&iU&hk+uduu^ zQ~`&$`ES#%uyp2^uG0MSO$@N9jJBI3tQNjod?Tp*D7*{fcmwq4HKuOgYbRP*r(Cmo z!2fNK5;LvZ@@SwiEn-IMD&zUgH|itI#dPmNt{3kumi>B=ZCe-A85VF%Z4#*|wq;f5 z>!mRJ+x2pLh{1*h-FGBlneT^3wdh>G#RhQiWG<_6s4_=yyl8$m&$|RT47P=apnGIP zE{yy}_I4G?+;i&uk%neBoYX~7iINyyJ%M=2+w+T+FDWQO5VcalT*;$N#}1)d!(jQxRzRCAPJk*O;sf|6|0GiUcG1yPrR6~KvM`_uJ~MY_XYMjk7nTF zp^D9*$i4tteMi;Fa$enX-oh?)Z-f@X{;l<$c$qHd{${HdO5_s7WQpQ$=F}xcQEssa zs&-PI_ni;_dy-;3=AOBM4`3~qXyD%cMK2Y+!!o|S-R&3cC%?;N60uY8W#g$3*!kby z^o#JFw-GC}b=ula0>`leZ}YAC;m*ke0nrAbLwkQbIFLvlT89r@2Or6B1)B^>0aQSU zbwY=YrmpZxw69WZ1{}?xz2=U;FSp#zN!cCn3U|l%6RO9t9MS=U8;f(GaQRoN)4nfYvd{PJM2fpjIQo)wq` z;4=D2l+}UAc!?sWR1Z=nV~>+JsV>|p6{S1hhfk-F)z6tV5^AadAAE3%YBYk(uXh}rV%e#@;J}e8ag>hq#c~eXzy!(M1rMA zRR*6DJ8SU#Z{!cxa}5Le#MU+zt?O~$Ww1z|cdvZ1L#hbN`=a1JP&nq5q}&}2mbz9+ z0U4LMcvEA3mL4oPCf`js{_D?o1wAKQp}s%6ITDe8a}k-N6xi>ycyHo_j=rINmpRuNfLGNTd?6k=Pj zS3kGk+~dn4H0F=_`4^oaQtCX^)M5UKOPf)FJ63nkVlGo2`SbMG&yRlY6JvnxXaVCw z(onVh;pJ>CpoP*j1(uZ@C&=%Tyw9=b<+4IEgRT2BR{15;ysp(&4BE63!WsiLIm3dsO39h4ei^BG9eG2Z+ARijya2Y@OWpx-T(^ zKZqz|4$m+#5Sv+@k&M!JW1a)FM9W;c)mcyYclumJO@n!g)a2H_+VE-W;RP;|HTyKBpdn=qzB7mG8v_rBN~ZCxc++C^3@pQjsm$JcoHo|iMJ z)KDT?WgJqT-+JcHeC)}zh6R`OQX>(P15>X`8z5w+d4A4F;`YPJaSU81kgo`T1-Y6> z;UHJ@pli6>-XlTbkFziri&nai{#D)^J^6R++<@b^xeGC^a>kyo;h+DeM~=9Il*FPT zQ0Mwsh_Qm-np?B2x~?u4o%}XY2rc!v$hKvCF^nupIvBE3?H6sp0k68c?pB)s$3Drs zX>j7hE5^wS@X76}et|Sl(&;2B&fC^`E~b<&)5WN5r7|}++-AMUexBccOAfu+={BS> zEs@KSZNP;qRW6#;pfm8_g`S&cCx{_fE@y|!ORa0nL z)(LYHY)RT*{y#JM7X44Sqj6novu#BVg4;Dc#EugI$Jyg+@|xhfh@uKJmFyqhZmNbI1KXH5O( zba!6PA1Xg{;ezZdpad|?3=91^Gx6(U%xn35wGD#}>}wHy?;w2k=FuZPb>^w==}}k^ zgqi4qk!EEs{1yzGAqYv*C|zf}V`B0qX?uF!`FdW_&s^<=QWt4UC^_)P-e$6w!>H4s z%dWilUJ0~0h3C!BtgGsm{FE&_gs0r=>gupp_`VKmUPmUo7E~%j!}=lqZ?sEryNv?; zqDP5oM*9?IHVyyYT$F9w>KTwf15ey~$*W=%ZJ9njmV}ahkE0IMZNCpQR8U5PBgiD@ zgqw;Yy(~@6X9t4$aG}2ScQZFV0`hK8z(DGoH7RS07(so%rQg~g?I*P`5_f)2{n&th zSy15J=V2&g7xdV$is0ihFlQ`ZYQ*DVn|Q<__u48Z0)%vYtBuUAie&$hB`v*uukdMH zwc^lJ8;IH)Q#`Vw%|l4#J)~U1*kzxof~%C4|M&KImcR4zVw^MO);VR8`OTrMRWBIY z8!LARvnp+J$*;3tLO->Kn5k*Ea~=BU#cBE+kzw?B_MJc=bOgBF9QfboX;d10Q6;2v+lP+(hnYS>6K&m(`&0Oc$0< zGRVpN+Ho<9u+y=x0!M(_omg=`QmO3oBLlRRETc^+uN=BT{4`{cMk|;!f}h%rbQ<^& z>1)NCVGH~TB@uDR)-`N!nHi z10wNCX4K!-$&u^O_GqAhwh(pAvquY!^#u!O6*;MBdFW_G0>8+ zkFjq-G5`8nZ*~o?Oa)n%i+x;?smGiYT#7>+(Zc!v z^haqLR+Px_02dHonFAzrxnV25B3dIHr#KQ*=DbC55K}bm74fHH6P$vhqFg-<)2D zg-Nqo-`0wH0U(0bTZO1i(3W#PQyHdfc@vK`^LyCN{uvH)JgYd3;R=zrHfqJ5W69$g zFP#-^QbEf5V^;IKlkeUzD>yzO)pm&Y%k#%Q%?^xZOVVQK_0 z?=o8$eQ}wVj+=-!dRCIs?AVJMQ_bKM5rdaQJsoKdaV*HCEJ7HrI-TF4Uj{=MpGra| z+_xJjKh_2;*seC`Z&vxV!^q??CTttvcxwT zhQTYrI>#%l{kaT$`dO)U05{JY{`~_8V^Q^5O#ybDephmCRa8FAP+t-^&gWQD0;VP9F4h^LBUihTRT z#KdHGhZM2sMsoSOz55WM5GgQ|K4wQdg-r`UMtKIim_sxQ^SB(&RHY7KY-_N&${hW* z+DTo&eQ0v8bdj)~o?f2`FlC=VA<2NP3oRSHh8rm^B^3S*W3*O*1avw`K%eT`B2(s2 z5fLEPureH^wZHYc>aOR@&T22}l`1znS_F{Cv9hCIJubH2%$yma{;W-*+_tzPYzazX za5NUD^S;7p#edhTyYgUGVj42>4?sbW2F?3ek@qIN>Gqj|KBG#llR3l6u3pu-TaU`)w-;~krsW(aj`mi%zGppFa{c||p1VoC zbgix_x2Vl6)=w9jbf)IP+vRZqm+rq+9@Rq<^D00XJzFC!`+g$4Ad1QaR-e4`2{X;en`{Q zN94oFef|?{kHxjCZraGHYcFRZoQF`KMx~bWyb-!f+M@91*Bf%;-H`QOi{)Uyml#M6lGYF^E8r|*!-mYX zKvQ?~c^(0`KSM5BAVsM4+o(GviSK!;N$%uZ^8|(}c{L^J8u@mf;k|veSf_7TM2SX` zWw}oC=TfX0bRWH>$L8wq5_+Meq)C^O9B$^aeNXoNHN)xc+p;A7U#qr9Ls4QtEGdbj z)4occ-&Kmd`OYSzHMcUgja~1ptd;01d4t?x5*lU@cI}p*2MK#+Dnk7hM(5pC2qfY6 zdS^#R?9mL&yIXm4CwOyj{C7Fo$Rvyv;_JVK#nln}IlAYmq5r}WD|qUVQgynL{NsAq ztqy9O!`V5V1rej!-d3BSbKK^;3rrTbN;O@(`bAu+7R^&I(oUxuTY@a9j&1yT89B1( zR2m*szMZtEyoC$e67*=eVp_P@r!jLUpD_Ak%ariw##sb~M46V2Y^f}*>6Y&}yYDyvELtS2&@mo;U^Q8nYR1mu%@zc=e8 zHP%bx?H-F|vEim%G~9yB1x>1{G!#sXd7mm_00Zk!=`JXfljDL*fvHV8W+r2xJQ^3} zs+K=qqjF}k1Au2 zx-npT=n_3H%uQ~27Dcs}jk#6nv;gSpzzNoUEq$yCw-YyM;FHw6#^(YrX0G-(cx-Q~dVkcv-biZ6uNQq9 z4(woUJ({p~k7YV*Zv_xAN>CSIvK2nvkoCzsqI#XA*CHkPcqP}P|4nmT|fPOC{gRJQ0{x(4A8=W@X z#xs=?9Ex`3iX{ewhGOMb?)K0+8x-VW?bd%4Y^*rmtg2gv!xT$!TW)<+b*%*?#K)&D zd?-IZ(}D5s9YOeOj;1ztI%63}JsTSqmR-RdWp)cQRvXnLQakc zojj|ku)MKztrmSi2-_Y@5AV%LlSwtSUfT3Th$A)62V~W5^8+JJ`I4=9c}*)>q1cws z*`>-C0+5QUka_xo`0-~Oo+_e=YF1uvADpkI{dhs*Rq^<$Ql)w=3@ktnF|3;ANt^>m zBelOZHo&(Zz2!&S$pbjn=&Nx73kWk;lVZ;$XBG9>uJV?<{WKmUr){v5G# z%vlizd$lq4o%+~^{b^(`UtUM9P0V&N;Ik`N_q^iG)nOJk3AEM)hEtI1`!QPwyiZgB z1!VY+BPtE}zbQ=@q}EHOK!iwea>Da5;Ufj65%QudVvDVk7sXVYZyk~Dvu?S~(6~tW#+mRD2AgJI_}}acZ>1RBs>!aH^vXy2 z!B);4NtCP1%{VNia@bv1Q_jWZuCQ#|Ay|hPSg6J+)XbJ*HVvnzfq1Dko z8MvAU)HPBxbE~j!c%*a7=!}fuqs{Cj7YQ8&@PLVQ_A z?`s2mM0|JYTy6OKpDAv>b)#0rx4z9Qn7lqyOg_GU=mY?%17eO` z92`}bcB<<$C~4!Li_7jyqS;&lVh^kCjvDlcrilw(ZR~ypp7O@jx2&Bqs+~{RXDY8r zhgIgQVRFHD5JD_8z&fJ#ur@mO!ET~BN=<)wni~W)4GUY40WUWWY$J>&kBdqV!rXFM z((hDp)>+hNP~~e|q+IVZ=j(Sk4ou%mzcwQ-lWS_n8Vx7BX%;rYuv37hj5dJ3hTPi8 z5mlMf5$7+Nn$;nzwk^%a9)K7O;idPN_yw^f((JBEp1*n5ZLaorRBD-D_Zb8Ei^s*z zhkbBoO@@zu@Z5r^Ze2~Z^{2ydM5~_1*2}&TwWRcUSc0f$7*hyz;w1?sAe1RoC zL-mK%UpWNK%em1cO8AR@hyMX>!f*U1v>AsI1luNVBHV@JU3C8G=gf4d%;_DtRV`22 zJu>?4@T|kYSWz1>uyMno5<5l8!B0KpnXivz_hxdunIRk6PN}qgV~A)UK;%tSo{358 zd`i83nDpd^v2l||IW}qHo3%nr)`>{#NO*Zs@2zw)`4xG@l%AosXBt*}d1hXTXnrcO~2iw(@b8(7xsVxr0`Z^hP(2#{$kIj zv445zQPK{Xpg^8kF)ZFUO{23TO#fMPGgXT{M{Z{9W~V$lF}PYYX#M*IB7PAf(pA>x?d)JIcfM^$uOTQIidHw7Xk9 zOPWgCYu{F)9SOp@j9sgs)HVRR;!m%PIeu%|D<8P2X)k4&cM+49+*xHl;?t-9(YY!( zmVC2%X3Ca^hTpE5ncskhruM4$k*J$D=G6(B0Jd{PrDxGm>x>lw~* z!J%y$a#A?{Wd&Qh(_d+8KQ-edZ zT-X4PRwuVISX%y~{vQAr+P`?n_4}7?@J82A>+L^kkUnshl5T4>WIo8yIP5^bH>bZd-=F@oz$+B2H4*H!M&%0ScIM%L zCka7HHV9pBSeLbakB&pc&XjYi_xI3xQC}2Ek727};ip=RX1vFp;1|9H!-W&tTN?A9 zw?_vCX=R~&OMnO7k0kQsx%l|U_lQm3?-qTyGT{Y)LmyJIJjUKUs!Gj*qvH}l= z)@o?t1AQltAHO7=XWa*BBl_w*-1&o|& z`EKeYk5q8ijiVnlka&NiWJ;5sH`%@Vloe-G$rYBM!aHMBA~uJ3M^P>Tn^xDt0<;Yf zn^0X0q{kEya@W7aNCafBKb*dqPM?{ryF-zHo{}Qw0U(R9V!kQ2+NvV+D%jHT(4$wc zP3AZPi@xJ>r|LVwM|`^8TFSY|u~Zu3*84tZRdi}?WBQj$90-Syl<>dZ1qD+86N>{n zJ(LLtK0?#G)*eBJvl#rX7*U|&W~7L&deWBzm*v_d3gjVDl%&=YH1dd<3BS9Uho zLq3B-2Mo2VkL>6D?&}QF00@XL-iuZElRuB1ANq0EFh4(??~PB(X3jp;-?m zr6qsL+=Hh>to<;s)>FiVs#I8)(mlrFR}%z-{J6D5KUzg86kZB|uCYj~qveCdPE zt}qCy<;jcJ>FyvmTXD?G*N>vT2#hfkC#|&u&g18KX>2a->2QXwQ;sqT>9E)km9cT} zagW@2xvT$$&l{(bt?ikt{@*zC%pp**AFN_LWF>+V5N;q?z;ROK{IjW&59jryRt62% zD@!hjRhZQB_aKe=zN)NtR7(`u_X5Xa1w-JUiUgu5A07X)z4GYO z|D>;s+b9)WvYc@4p8tT4c-eywmO(1&%>B5^`yo@7`^avAstC^$5Xu;#kRZ?vUl@QW z4y~X3begOm({&1z3e+JVAm3Q;G_O(<9O&Qwo3l}s?KoZ4sRZD)M7jP=TfV?le~;o( z-rSp5J;UGMIw4$M%c|kkYOuzX8%$UCV@3XD*Sf9lmJhXOXka>v z8<(kOLmH;LZ`t-0xigJi35o_c8wX=+Q@qI4eC8R2;NbE|XW!on`_^a1T3WaqrectB z1K5%XQzTU5Sf8R243aS0=WR7LV|4eQqMt(c`=vysrP zybFXvA50pm3aWssihpD`Dg(ycuom}=L%7ZQj6bbG)A!6nuw`_Fz-AY(^};{-*P`y1 z;&C9;Q=`bIC}LL89AtNSlQt>vi_}FGf=S!4_Lp@98g|24|0&U%+N`=F%Fj_Rz(%q% zD~~tdHEe#rmpa&pG->3y5MsPEqqm@XaMx}QM`8Aka66y7BHl%mQ{Q>V+LU+C<{#PW zd=Te8Hu?~7z1};tIzXji8>@@H(j%7zI~ROtNnr5Jo6fT7JI&pte|er(0iyJ%f44+G z|BDCxU-mV(%N5fzV4ih>ykw>;zlO634Gd&tkG7r{1{fHqy8t2L)s0`;=EH{cYweLg z)9)u^z3tAt%v1LFzy~|*cZT7T3yO#y2GW0UllM!B};X3w)qs>S|{Q`RT6+9Jt`{ zJ=*+WkJla@G00~H#+MWv*)@_wHgA2&Lezs^vQY5o$a$}|`BJcqpzr@Ve zUT^~FZ92t8;TAI7+T|zq0E5W#t^4;#EP@OE$Agm{MrHw!oUCPG3C&(h#>o= zPyS+Vek*~Q9o~K$>{en1Ybdp?=C3ldD)~S(l#fa^RcYO-!TbUzd4Ok|Fc<@Qp>dNV z3U-6-wd-+Lm&bp=>rZ7`z8>8QzkS~fn(DzGHqx1w9KTfq2mwR0>(z5VIc_C9-JcPt zbFDnXKQuMBJ&CybOK^JMH7T{b{h2`y_XaPd`L^rc^fUM#4`T6z`MyGyv|{T|l4N025EW-AVw%JTK3B=tPxyCyxzsbfMM)&Z4f))AxM1r1mMn zoOpGk?>!rO$MOnE`1h=|CQ`xFEJ{jdCL`%3dOFjHmW+{<+IemJj7i6g*rLI{r3o?Kl*)7=_~Jn+;&!{vXry*O{Cs<= zBxUqtlJX#NoBVXQsq#$~3}&bo=&mxZo>4yxrk9WJA#4NOrs3+eE!N}R-Z_?DS|{?~ zI_#jAE@JRDjGyxVe=s z)mVT$CReMit+@}(@<4q>`S^k#kH!gQ%Xie47cZ;TBK*J&ZnV6dGi!yY!zn%ZMkH_e z!yt6OKJA|u(r^C!76D4jB?0zy%R+N(=~*WmFF?S}NRj;Rcd3TIynehlb!uNAPN!4Ku?{=zGk64Hgs8}Z@p zyBhPt!&fF*$SH+|oTeUV4n5^bk^Ey~u>M&VV!XDfed0vh6bPH;IKrkQ#NhA&y%p|1 zopa3Ku`Y@AE3}+JkEP{;V7XLxb*GCrj>5!R{d&9HFjr%KsJCu0PEatN;D-@1?8gZS zMl|1P>Cku%n_sy~m*LHgBxyEJd32R;*j}HXm;u#{yPy61vmA=)GEaASmE8^t+TN9Y zwVGft?!c$4&kloqI$BqaP(brw*WK zfWE`O9(;&O^8P+j6rj)Dnz5$eXqvk*U$d~Glnmadhx~A^yMWC>$FWzL`GxldNh-+W~#AK%C2b$qUe)tFvH{V_hYxDbg0z=UclE1v2c9x}1UCMZF|rZxtHO_I$AX zpZpu1CZteX648o;LZ!YFw3H%MEUmNF8M&a%a;rRUYrWkxulUS*#b96jl^(Jg@yfoQ zwpcK11k6z&{@FFedW(0k-eT7AKgq7`*I17*>-f*@q=zMGa%`HH%_|bX=r}}D%^XpO z-Tn%aLn(#`uBF1+PJc+OLevx1!^^=ToTs`}^uUJwspG8QBOI$Q>dt7+UBQ|P8LGoJf*>T-l1!1wqCtGn3~0v z0rK<=T_z{*E*pR;G7aJiqET{eq#y?LET+Z{(23194CV%|q>DM$(%hV6i$e8-UH5lu zuz!ds`m6eq?wte~1=OrvkOBiSrpa|bT9LJFcOrR%-*Wm41X~ePmWT zP(R~zr(YLntjL?B48#;S<1Vcmtyjno;F8zoV3yH zmp-ObmAP?*$#BuQ)-`sy0Qd1M(W0iVTDy|`y!WKf&>J`L#qdsEEabV5g!XZNJ^Rs4 zm>zP^oDY17dOh97twyK0`4QzEZsp9rnyrton_*^7?U1Poj3Zg?1MsBDJK>m4L!|av zZDG0$otw1iUH2TY=2cHvOYUAHm;}Ej6f-aDF(LdZZdi2GfH^XJL9)ZBpC!|ty5fN} zs}X0U00nBry62Bc0wqi<>@_|ZIa{*-0FqWKXNn=`ICZd0^57< zB5iTRCw~3p_5FQTJLM{P`H%iPmM<(=pBqZrXB;JQDdIi2RYNBN*6)S=@MCjr z&P^&Ee1h#flQKOrM)A#koIGRp8k~POtkgJ*Efs^aaqWAgN)>V-%_ULdUES(6EwqLTCO;tFsb3X5ZyMMn)ZdEz@ z%H-jG#Y%NZh5*O!D%u!xy&*ovFCq3ZOTFPosXisU81vtRh4jq!=FBx~SQJaJCJE$d zrzFc^zGq4n=8Zo3-%L&VIvnR`*~ROHAC{FXcHcY!i<^Lsd(_p1*bA56ukiD89RW)I zsi{vVLGbc|Ou6|>{jeHk$b(!09beNNfY}VY(N&Bdwm23PCL`8YIopeOPy76P!)M(e zmN%=(`CKxv%2UhJR&b;`A`y^zV<6dGx^6T*Vq(*1aD&Hg>(9oy>uMH@T~!`8)8rfE z<#d0o4yzuh;jZG9WW-A^{+X^eDx4L2cbe>ErR8OpIgBfkx*aCGKlFKAL}*=%EUrS! z%ao2M2ll^Ad4t1v%=a!o^k#xoWv$sr>l83@a&h@0AwNsu45mV27*|10O7VegSPd!# zrk!0KE;7a`AS!~#Ka=OTc1E40f)MH^A<%w#sD$NIGD+c*Fdq{|xP=S2E|ebL={P}) zq>MVsHF($tma9?MdFP%j50dRpM1hDhSoP=O@C~`tHn+m*^vd`9yB~)__xd`~^-3MWS&%vL?KO zs^$YJF%4;HuPxX~mo(iPp@pzuo1-1OEA4ew^@4@A^N)p%DOL49R+?7d&lRl9q1I2r z9b>kpdGXNi!&qKM%sfyQxfu7KID9CdO%0~c8B!u%N)+lMZB4MFJ;F_*894-l$6$^x z3u1oiQSTKx3PMATZLbg58mG(5e#YLgcl|lC_Ty_QQK!PWF`8s)-Oi#W%gdSM%r6`9-Y{Yio|G|^H%8hry)I)f?1Z(Qy$?M2Jt-T82-!WRu36!1LmCNQLY^#k;KU{LewOu{>l9hCK$;7_k06-xh14rmL+CC|0T zsO(l?_5%e``A%$mM%wPwT?e)nP-C)ljDv=gRL3x3z()Gri2-Je2@O5pfgxdXB<3`U z`Hp;((9vD%9}dzhx`q%X>KqN++xs0^t!$p_>ejPS!UsaOs}LBn`TUcAsPHuJFr#re z0i&x-ic1yYJscBF-q+cC6TSag1bgnFVOQ)(n!WlBO@hX-qw1&Llf}G3QZr0Xr?!$W z@*Z~yu0hoF=YoFe_TxU#x4)ty24 zr84Ay1T6hG2&7-F^>ww)sR9A0O5+1ZIJDV5IXy_%&7=lP9#fBEA^)(7rx&7O{L#J9 zo#M(X!%leNGCkvc2oL}HWt227FGpD)Z-@nBD*d3>J34Pvq}1BXyvWGXMg*+kSFoAF zqqsYcCo8WUP)NQ`RMpf%)n$kdJmxAr4$xO;L-Wt72+&^F-+2@B#Sm2d9|Yo;aEpQ+ zq2$k879Ahc+OcxnL*V_5wLih6^l^2?fE9Q6QWi72!h~Vx#2jh0avOa8YtrDa5qrDh!S_j)=l4Pf!gI)4{ zZ>IOxM=a~6%97#?q1hN=Y>VlOM;S~5z`)RWMGIQIRhcmehx-D(q5T?b@;URCzJw~@SU zMR4O?Q8>02A$51w()6F`JUQzhm z7;(h80pXt@7rbqv-qH7a&2fLoOnF^WeoKQ)E07yb?iy65|5y?&z_FL<=0yWXXBvO>F)`r`3}N5t$NM&OMW17GWl^{XB*H-&vj zT-@Ad(VC=Bqupmav>v`>7xOB$dpHKzezdA|0S>job*c`Gx=rr`e;kqG#dE@^e?mNSp z+SaW>6dR};R5l`@ND-tcRcgdWCkhJEJ0a4fh8`3Z5v4cuY)InVECU@s2TG`Y2`S&fNjQwN3sEPYb!}c{#Vh z#jOvb-hS({RM;h8P<6_kM$xqFaQM3f3T=jgDxujx9r%)OzB+W+4WB_=I*l=9KU~$r zKl;ge|FIy zcg^hr(sr+s-$Qba+r(tBZ%udAS5gF6_U~0!eNIQd19r2Ep#G!4Mrug@|9Z1_C2ozp?E!Kg2(6gf)VD}R679jv{!Z>Vk zK$ja&84(`9xAvS9@IV>_1*@-1=Z)~|)T!}(KT^LlG)wzR>sVRoPyFb^nV*+usp@C5 zr|xHIis}2ZSb47YX?rOgk{zT@@O8U(3GOx9WdGDE?Ad>DQf_)H+WH6ODt~+ai<>SB zp283jcqvhBp1`uev?YOQ!ZbwnV4mFl?G2Wr^*daNETg3|>du`2$Y6XJ4>k6zfHpR?+#FDf z0nT;l=Iel}!2F{mlvj766BZ)Id>c#Y{XPL_i@0`$sg)J4RhJaGgb-JN5Pdo3wDXE4HeW}*sMOK=hBhE!A5Py56o3H24-1t_?%!`j(O*HTk|tZRW>S#E)krHq z@xnMZHFo8YKfG;rjA8&w?c}w@l-EE<@I~YSxuM^B+7_6-Pbxr#OcN^4BIhdt;kQ&@ zy=JE*zD=}4{Ju3!M}b9y!L|s^?R@=wx$8@G1M+LR&%~VcY5%~z?-|c1WtHQ14)hs| zvl9|a9+?w9lmayHNaN;JbcU31FvuRpv24YhTDXR>I}UrIA?$AN9e}l%Q{Ot+{6v!B zeo7-7?z2r%7JUO~Qh*~IFVFpVV~8+SF@`9Ic|6yd~T2*B+_UpuiX1??=}4z+nYed zX$0CW?CS@_ZU_vRuSdDd6aa zb);?DcEEf`PvDK`35?ACrVZYDfjLRekp==mr(}>EsP=~>pQ>71F4f@#Fz~%YH^93z z)tpFR6ov0eoBjvMji4yUS};JFi{7vY?sBQd9w`WzmkSloU>|TT0#!&Z0g;2{YJ>EQ zhNbUnEPEp2b8n7$^$V|R?t7Y%(wUN5E|0-^r|)QF7}PQd{_$JK81j+3ijU!PVxA29 zO>tBA_uSoQgXFv}rv<w_?fv9sIJgm@1>l*JuhaV=d zI?^sw^!(V3mq$!qj)n(+sbYv!6@ai$78XU(DR#bGiygpt-q>{{?eVDe+?)K?_iU;{ z}@w_d)vZ`7^gTW!lrEB=VO_QL`x z0FTa?g+pWQwS^Mifs!;WdsPwPk6Ect|P{%9sE zLA;$i-RRTYig#Q(Zj@McfRCm#jWRl|HTJK`WJQuO&_ram(K~be8612SNvrr< zNStr7MygHb?Uo{~X>@U%?wVU$3$mE~=?LKuwXqyasS+|;pKHx`3!Ea4*;{ARdOi^S zHelZQ#jg=y>RKiFqu?o^6~ZvQRAA$R9wB__zY}{T|DT9G!e{>>_BgrzpTr(~ZrB&@Zhv1rW0O(p1q(HZ z12Wsb${QMbA{(@4oN041Fi=Ze%IcR0F?u?gnPw%q4e*XX0(+-d67+#6K5{i+NQTe4 zr7%PfD8_L2V?yb6-=R#;*bD@$SAMgJwRlfy+-LXDk54UXEMjhfGw-J;j1t^EQ*Jbp zF~=-4q+e?Se96YKd-k4xBRKBax+hIVvtNW$MC^8hGx*@sfB>R%e3v}tr1De>sjWRy zk};C79=Wo*1gegDv-iRL( zu${10KJ%(QWyC+F+s?rY)ynj5w7#>%DBYin!6uZXt=B((iWw0626!)hza?@9{EO}w z`Ve*V(`74-Jq)(EYdalj{`jhw!#0L7jUmN~ zg%vf`O6E)%x)TYL4GNJ3RIS?ISYL#w*hOl8=ykb>oKIex_SjYU7tyida_+e;%b@bG zD+?rlkEy!qv=Hz}MS-j}-NkXhDw!JbQeKWtJd4oH(c1Sv=?M}URwodRk9T;yYszw~ zZDDM%>3&Bpf6V-!Y1OA3aX}9s8JB{w$)yf|= zD43)R^U|51W#|a!?Adh;(OsqC91sKH_X;rt%w2Wi) zBnF_EOabb+n@)R`6W~RG|CkjWj(k%gnlb`pIumP4fR|ZpnBZcFv*17n$5L7{!-Z|b zbVzS{kJK*;Wdmyc3hI$?tDH8dL|$xB640Iz@Z)+e8xvnsU<~*}-?!pCSuTy%q;wb6+cXkiKa1CZ^pgtwQkYZWe1@`6J4+A-PRVDA7THLC73 z{$Y5Omv?lm7L%`7wVQ3|>9+7Th}uv?XKTe_`quL@k;t?*5R?PYv*Hj6)I70^BnN-R zaGRG*NOd##*;Jp9C#_y*tnA;2j<3rU7!=b@ud1COQn>pWm5V*Sz^v8t?|>pKoWRsg zJkZ;A(Rj2jM7lt>Sv~jt6{0H$@fxtY5XP5<<#@}FJiP@(B-#GKBx*WnmoRx5UjE_+T-7JEq|8h;>o0Z-YHl9_DjnN!X*O_!E8Ow7aaA2E;r)mg^yoT{`6 zn+>#4t%rORR~)-Mue&m8Hs<=f(1_-nEjsW|*K&1<2`@q`O_q}&yfucXSb#q9E3Th@ zc`dT~H~4uX=5BK_7QBUYS4*Hd8s+*hIuXg?inta2c2AkVhg-p`B@lzG3-BKsj2_4t z+_I(AU9)3Tl_v4!w23+DQ$S1;LOqNEtTcdRkVi5aPA%*BCD{4v?3GTPKj9D*%)8;i zf`Q80w(J3$F}DTZWanU2=iuso4G5Zb8|QIXg=$a%F2G=HjwX`Zb^?Xkck%wz!u#D# z8IogrZKu!Afx>Mf8NU@<2cxB)yxOC?@~L@BKNt?J8@}g`R{VBoT~X@21u=R&@efF) zGrzV6si40h)rC53Pn5;9p&S6J-l=+NmR(2?SE2=f7@m?_T}o+_Cj6-_i%fYsCKaq^ zm2Hqxrd+GAIi)ceX+ygT=T?K(|65a*-9|6dlvTp5(2&Q_RVec~2j`^rH|sCZYg`7h znOQXT(xV$2d7c8EiFaPJM@V>oFG)ukB`sY9;$~XYGKCgbKe-UahBj_PL7KykE6)6A zuPaEa-rxq8bNK-chNb!u-Ui|s?)=~*?_%xS+(@T!1s;7pwM!uKUv7QF>p-*50>2L! z;#SU(A1YAv!RbeIkB_v}jgl@fCX(q2yOpT3uSKSEuk6sFBydTYz=Gc?HfTO?7WE&h z4nVR&*tb=j;p7tWu>ugc6eMQ=TuJJf)7=3&?~F4R@Uaoq6EhbM|Jq2u0;3=8!i}l$ z77Vue1{TcdINzyM>ajK?WmP{D;M;E6qI{ilH@hTsAG6(Pvc6$9UD0e-)rj8JMpstp zln7;K`G>9NF#K4FSs>YFK}4f~M{wIW+(0Ofr?wH;E8PE(u@UMzFjYZflN1CLfOzYY zt0S@A^YStzpY;?*@z}qS++QAAUNrX0Bio;!iqr`mTAd<@E%eVQ)TUP!mr`MpO&b#f zvFwI38->P$YnR!UsZ4{Y+pFoXDpIp2&J*{ecAgK7Wmd)H!UdMtfj*BBhrEqd_yQgX z+*z?2W1p0jT^64yw?$gT&gA1RCHK4>-8y(=;!r@*2f^lymHX=zi_cZ(H`sqRKt^CL zcBp%Zh{0hys9iOzd#nB_iMn~XE@Wr}=#t#{>qu(h)|*7B;Gg%=*BcOmc(H;4_>|M9 z*OE9>uWHPe-_W)WxVeSd9;;hK6?&LR9E|crRv5Um1B!&WrLo6VGaw{ z!r!?O9l?AS!(;A1!UtsDpn9RFB<}p2#$1}>yTAtd<93Z>DgHo<5P|%yzXncy2pwBD zAd20BMWMv%Rl5a7=^rr_-oh0#=@(}rqlQK>2~(`&2qqV=Xy}=63+r8(db)i~-+JNi4m)KTm@X?@gP$Wa zfWL$*L0P%qCD}3el9f-o?t+eP^SOX#%3+qaMmYQ$l{H*uPd1wWB_Skuw4ot-tYUj3 z4p6F!+LFq(7YO3%%OUA;A-h*V4PYoHZO>PCeHHN4b^E7eU_U|dB4H^6RO8R5o}l{M z5r)8!iU)%-qVgUIiSj$ua645F|aM2*Whv!TI&;fe}; z0+2UaW@9P++S8evxA%{G zWTx#txXQp|Y=&XuQ@hy}c}y&$@n;w#Tl8FfhR?-UNz<0A3rLjEY1Rq@o)Hjutq7ypSF&gOpI>C_`0O!8|qCS>6UjZJ675tG9`wPBLu`Q+>inTdZV*Cbvq1a{{@QZXk^bEqaiuVf@Hum z+F;c}!G{}jod5tgNVjctf;bdCKN7MXjcU{!+A)6pc37%)96k*M={fq+lI5_VH2m1vJsbFY9qPJB+`+4$c zv)_S^lCs0r^~F^$m79k)NR1i<1TL3m5o8 z(gbxCttm|#Iy#~v$W&?2nPa&@3Kl7WLEM(Vp*v|Z^h^nC;Jw9K4>XrG=XX5lA=z&$X)MOS)m*WQ59#}(w+{ykKH z*?v|2(Y^m(4%~8PDUU$PXtRAiJ}~`H^Pv8xY>iPSkGBM;`pC`lAs9SWbO#Y8dExc^GYebifQ*X3F7I07;Z(%#)cvs_ zhp1aQ8=LoiLTa=5;YknFn|$1QqNfFd?__HXw)rWAe3HjcjxW0TC9=uzSiF_`^z=DTA>`-0QCjhlDcYSdxlYg9TRj(>d8d@9$f@HAv%73_ zBNa*Z{Nk2l9m}B<(jfBUN3e*FzDaChMdO){-EXAw_4v9>YZ%`2G|_t}HirMXsbFDt z@qWU<53PlGejZ_%sxMOrY?do)Y7O~lrNEc4SdvoRhI!R(O3;RxkGTtSa!4Z!*s+-( z(4D}j*b$BgCdFmCH}DYA$4*@)A3f*JT{^62dwP14AY$um1A0guxR7NSt)|w!&w0tM zvI%_cN1)7woLZ9q$hm30a1mQz2!^SoFyhR1a;%p|WM4p~t5W)3-qLA=gk!G zq{6tE)JE`$!L#=9X5kV=TWa>YfISm@8xJ8{JDs)Qcxh0p+;LiMR1dTjLl5S6Nc+94+pASJ8n#@fEHS*1T+I7^5Qc*Ah<5}hUd8iZ38y_x-Q4vS@#0| z3krg10*dJ!;6#enFR$7U(^D?;y-K;3jpo{mp4LhFIpSYyGo8+SudC_QwZ|gbYM;{T ze951%e~?+Br~0^H5y9pfR<1f`OFaHx`nN}6qSLNjeG@nb)2@7t{C5d)ZdLPwrN9H; zY`et}6IqV~)s-aeI#F<*Ld9!#Kjp@yI`9)S<)zUwY!$>TWI_K^J(`Y;;<3QCZ}xoS zO7lI^ch<@-76gva&wEO?O4QVnP=Xz;H+pUd@x0%a;1%n7Ome;Rbwid?UPwQ}pJZSy zD6mKgaEkSnHj@;MdJh}pCYSAwY`Z)nOJpNMBgH}QO}mx1XJn!?P!bSs`{STA?E{BgL@dmYq`doBIw$F{^N;5S4IG0fOF=|7_E~9X_{Z@gIqO3!kW+ z&Ei(B9V_aL1+0wu-Oaa!1rPyhQeVyQV&h*>=fj4ForY7_1Z_r5m-%P?qJjsTA0(Pc z5t}ObNHtKOZu=mrhTr?`o&9GjUDZKdK3$d2kTQeyMst-V4Yu$v%!>N;Xda8zqKGpD zEmx;EWUE_3&MhO`)$^~$*HlcqoS^c$2|8zMO9WavYK66kjcB*t@t5pdzXbPh2`T=0 zm1>1TZFV<%;0UCS`_`S)+la2|Z3q{apA8{d-6Q9`h)?&q#`!zzTatE5ble(7yWwI_ zf_D8QQHXoI{?~9Aa@Rc5L0#MzG}={Bw_kno?L0Z~37%d}%odx`i8>a9 z{Si*S0cP*b&CJ#(B;~{h#x{hrXs`m0fTc8XWg^12-YUCoIa|kncUL3HLe529y@y|v z(9=;Ca$=$7_*>0SMT@Tf!#P09E%L1AsaLh{Q-tkw2k@`iD{VldF6YF~=K+hr{EYG@ ziO2OoE!`6bq6_q3s)CbOgeA1#NXQv|KGOL=IazQ_iSTu5@XbG6`24>;rNVaHsOeVu zW05zMHXmJTJkHeRo=Edu;&CR-7O7B&Z_YkHscDT_t3 z)zr3V2gG9eGFb2RbCd&>=X52uyw0@DtgKG6w^FnRI%j%@(aF9Pp(AHSnL0l`z$F1Pl#!$reTCK*X z`j48YIOXLHXl>;65{gKQwzlu_3>B3&86EFYluk8qWw0{V;5)59E}=5-SBhU}#3&?whH`-8bv+Ul|(>RM`bP zBces9tEc9YotwY*$c2SKh;HKA@BqQF&b-Fy>5kkB2b3VmSi&>BZ|jc05r|UXRN&+7 z4A%vM=OMd!hqT>Md0MS$ZRJ!Ih~khBqK=k4IWj^&F5b={uVG))>fA!a(%AvXs z)3+wBPEdo%$Q#rkHLJwug$udHaihg#^FPtyRgUa>(QF=59B1WZKV%!Qfvp46f_og; zpm{^zP&$KIJ>xaf1%pGij5)mdJnHWtRE&zMc*4Z3+LMiVgeEY z!T?B4)<6VeH`t*I0 zz0`cE_{J^~3utnWqmF+y!RZFNCq^9$!9a~I+%DLOlD&B+71sB)Ns4s)C70O z*ajd2*$RcUUt20|y6r79W0PB@8mv^hv|Ffg<7;>5Ld6t~@G&@Uw~!L;EqeYgr5PGK zV}OIKH9s@(*?AA0F?8~WujEv)#gceR1X=d~u|=La4m$xDsB}j-9>xfo9+X0}7@DwW zXa+=Fl>2PX86L=1+PlNzN_*qgXWK_!3HQ4Zx)>f1%HoV`ZBUQQL3!2&s7S3YpU|*% zj(DXrN44apvp8BxO9M9y3k&N{LHoV%;5hdF4UxBIcjHe$nj8Dc^v;H5y7-*b0o{#` zjkhHnsn2GQhYb!jnW(2wGrp1!;r1>UxBvZ<{x;RYR1D~(TM&k97rJkQZso>(*%&uQ zZ&W;r13^Nk4OYQsycrWC@SB}6gS!`=0RYL?RI&ruWxVzCED1e$!C&X~O{d6HwtS7v z$EVyKcezwiU75bu{Ig!YhmU+3oE+N z=^VlJba+1q??{&!Th(`uh|J=6r=v_CHD+J#VnT?6|_-fi`+w)+xju0;9(Razblb{D_6p>bB1q9TTPhW;#x zylkDRP{aob2yoW3T=*pdh;udPOP-`0|B_~f3j5X%@lI*oI(S0bNQLfV3z>UbrUze6 zahms@z2t-WbL-x(`t@qs;7o~25d^^-mff2jaVUs>90vlUV;vWFn=;?v-rb-n{k~zP z5s&*lO|+EjkA0unLZ7Q?$EjV9sFf*YD|flQsxhHdurq0~Us27g=Pv5RXmGNZn*mdq zn;029r=OVyD08=l7weI%yIS(4CkW?X@Myo;=JS!um{!*Oq%LKvs*IRyhXZFEEI6iX z!DgJcbG;c*=8}EZFr;cEemlY{1sax-*6q@x{u4Os<@J?jn>^w3s$=jc8+33PuuSXI z`zfnh4q}iryNKs~@RPl+^6~tpylgE@w(#0T8Q3Yga6N5Q&=r39c@|kKKwirc&c3cr z{4=#%uQ)XeeYS7^r~&x^w<^`aKZHN-z6!TaQuecD-8F z^3))5Co?w%+pZbbmQIk4PdBh;0kGtlRGGK|%is}L6UJtsfH=`}MD}&y$mOv z^k&t=-Sp0_bk?0F#_KHgX* z$0#w=rpS{NnNi0fkGW6oM8*0viS)sC*!XZGwVdJC=3U;~6arItMl4+FL!SL51&1WXMQ8tB9kc2ae`wo^|ru~hGoq}=9Q zWzV>KTb{m3{hRH3T!qlNmDJp{`0Wq+u+H|zvzJ6;-Sf-~)yBVL@HW+!Qwora{xVu@$V{UW`gYvzIM2zx-Rya*?OnxtsS}=5>bfMQ_<$afw^Cyx?Eb0R+CZzF%sC&n zzL}kENZfV+Fs?4UHS4X1G{duO_|k5V1kjITL48%}inG_@*t%hq(hOeQ(u0HRVYX@$ z!IGUtk-42{%G(MbuG3UpzOQkFg_Zunoz0oR4@@}q_Bx`#{%@>FFU7URi7c&SqhY5Y zx~#w@5*QX{9S}0ZAFt3}ZAqxAps?8Lbu%=J1oXU7<>P+L4k8HH53^92;U|opSn8Jq zpj^W^Y>zSKvj6lK8Zmu2`mYIZA^4OUT+&ks)~pimDQrLT*<+vc$b_0mM^4t{?n-ec z<3m|kc5fYJmE#<-w44&j(9!M>b(iIBcM+Cd!neD_;H*;knEH`!U7-(zH3e0hTfc4< zrpVeiExD^@At93%H7Otnr}goWWWXy?Tb^4>(G@*}Hw6)6hn` zHxC*$XZDl^!3A|Giek^uH{W&mL;>hN&i9bw)d#vmW|p2tJBhWuBM^LUP&OaWZe{Vu-w@b)oNdg;xVQWEyK8Un*5;@O3 zHwvmL>26Tl=uth~VNHbH#>2e4vofWt_w>ds5`35IwMDw=$8xLBfXaPO_c_$_JX#@8 zax3Q0iFf05Yy@mZd1e~bbm2mm>k^%K&01y$L;3dR=#X8DA%S83g2m}4mG*lGt*l+&GLe$XnD&Bh*%w!> zuT+ywW8|IXgDjK<^IBW0Yn<wKC`X*>y|r@Pe}0%26MQ*1vfNPk9;LpFL^ipM~B)p+hfJH;n83WMxkEqhbm!s zK}!4^{k7A_y%W{kA;=f}NN2&S7-B=}Z-g79l0SEBCN2)) zVY@59`3<@?S<@Jo1jnybqx_DQq|Ry_B;j3+2kRtfep0+6p<&fdidrMaH*~QnFD+mN zyP;7;bNJx0A|$33FUo3YR&WeewA3;O(1z=yO9lRN?BsMG>k7Qy3}$Pu8$ccMwx^#a%EJxN6^zyJU4mM6bY=H}IFz@ybjR$?Z4I4o4Y@moM=8%p?UkC1 zV;h+Gjo9yL&W)|V{QAw{W>C2bfIkC{9hbgvvo)7`^~-)62!nLc?AFrzxha+ma5~(( zDEge%D$0qaW4Oc1U<;u{MlV%VDk4cX8IzJ~?hziW}l@(Eir=@}2}l(K7?w zSwRAbwg_P5=dpg{Tj?)$pZN*l*}v$MUpqdElugX(3xQUAgJv4+T3tSGnSI`w(pvIQ zQI(3@A|r8A#<0bH@?c9G@&u3V?NM2La(TSYKS0(E-rb0e6Ot(Vm4`%i*C z0w^Ci#>KWko`>^pCdy{}yJaD*l2lF`B$iAGBD>d{SQTZ)<>x?#++Ui9WF8otYc~A8 zs@a|GS(}+urV6MxFX?RQHZPY9ol0{}$qaKuIr^bmTbsM5U+LvezMM+k`+P*Ho~+=K zs%-pwM_(c`Ht}Qm+4Uu7*2|plYV_7kEGI=OGD~d`8)*|VZu@Or9?eNCRJ33{C&HEM zM!mv#&~F;ZuXPEc)08LS=_L#HU)T?H1@`5)mL2eDA+l``ZyuW|1+Un9(H1pTFUXuv z%$=1YMmu*J`F1Uo$$W59KEv5v@zn9-59kSfwg&(h(at|#{0<)hT(RfK_Nd^{nExp}_s}O3jfJSWPR998Z<;xwpfvy1-D&W{0ya^DSa<8AmPQxE&w+5E6D>L&+ieFW+P0fjs&G-54y_%nq@yyqJ?@Ki6?%Ewy>G4_3?J*5; z#)`XjujFgCB?JqYmvr{HZM+dg_9Ec*W{1)N{v0@V?j2>VAfS($8?dX~a@(;xH>dPy z-?N!jZ42hh;WnS8JDyJb%$H`fvP*lRL*J#azYvPA>^GMx%)6i{hVKnPJ>I)NEno^5 zbGfg@aJ^7?!9@1c8Eu*yii2x+(dftXzE6poR^EDDntKa!m@JdNXMBUtgTG_RyZ6Aw z0lZ88kc6%pm)E~o5|-70aXAdhVK^E>)EU&xc-P!w`A0YX?O2(mOD%Rce|bf<^%)hN z66tZf4J?!FjIi+*L&nN2cQ~pJBNh=;Nh0N{j_%U!Z~nRkohF$0JI64{=Kw8h#dyP? zMjmV-$IsUFZQidCPMak?yixxpNbXY9`wek_FreC9V6tm(^IS0r$#wTU1Qv}twbi6d zojCv6fAlsmj+L8iI7eMBOUtOwHP*^V1|$zg@}xXEqj=)psaoqJS3fyG))e@frERC9 za$Q&NF?oMmDaK6*zvFB2K=HinymG7Ty2fHB-pPtRAcAag=AyS4aurUs41IhhHXS>(Vxnqo4M6N> z_@iv8?ckHbfB^xSDORAzG$5!lxvwP3&*FRYeuX86{oQXMxbp2o&9WEZ!kz>d!SH}O z(WMD-M&oKweKeT`pZ$Z7nb)iQ!CTxjvi+pYZ14t*3rNo zZy?J&G3KN+a+U06T@4^*G|%j(Ls%%G%N;hWX7i3{DiyqbH{UQK{;zN99eA{NlKa>R zyRs~S8M)~fiSL0R^9Ap1&9RE)?ah9Ia$C~bul7Pjz1qOW2Uj8ZL+^f}rpnzhN|MDE zRhH=jaC>wuR!_&l;8?|%Y|qkN;Py4K%Q3_jV}IdoBYcktvUmCVn`sOqs0!Tu@_+id znL1`^mklJ$%s?o;3FclPxg6hb4|0-DLU|_F*6yLv5?EDfy$Z9G?$L+eDN9v>V4n)9 zRqw~ARO;CMlDX9+0b(!Z^Kcq11^{_x4>vLQDu6@|{{@GxK`NJ?uyD}iX>Wi*?348? zPGxT%o!MS?h0n+-cciJ{Fd;4MM+`z6HhLpHX#lxctdx>^`)5pvzMyv0sHxjl#dWLO zQLp4fyhjcw6E0Woj_g(}Sj2T+6>&0XnwjuH!>G*5Gn@p`X@q);On!!P{Y5;j*pU9r z?_X+xd%PSZiN1Jqi7Zztimbc06!@f=E^%$u&g_4lZkbI;K^?m6~{cC7wh;y&LAIU%5kF@=ldJJUH~(((TAlDFk9gEN$#frgS6%gB6Kffw ztx2Cj>En5>Zw8+{mG)}tM`)8L8lCK_C>0PWN1DC;P7IKZby-=kmnGCMR$iRjETTQf zd(4jCy>sTA3OId(cP*qOUiwz3oY)D2EK+4}>v;_2uTL|0kG>a}tAxumV73h5XZ%=g zNdiIX=PsQu{2_0Mc0(3vQ#~j|nPzzS`SW=N1+_b_=!v;P$1$_NOPUiRjFRSbMR7`h z*sMoNGchD$_tP?D{rTd&7D)6Zt1~I$`xl0W1fh6EP zP|1MqQAcqy+M$jkW&LqL?I~r`ENpO#odjr}$6cAs*V~~?a9#q*BYc&j{cbw87rQM7 z@izk|XF-f~pNLzO%RR2JzW#x;pcjK>baV=J^_}acuqe)u5qVyfcP_sAul4fpf9N>o zU9EOpiIab^KBPqCR^8xyG4I!ZDmHP~Ve_oRK@Gw=BA}q;s{{e2tCCxcD40dZ@4=7g ziazn!1I}z_feVwC2|51ZH)(8zg#A~;SQL+&1LaT+Rt})a`0FV%pS~T_E`g;yfI7#L zj=l;gL!CSk#GrBF+IzfC-L&+1LQJsfMu7pcXGIq&k{V@*Iui1!nn1Q%`7WpKSVcp= zAkI42MXa2B$vs(s38h@y=b!Q~!w7&2ybAol8?Kg$-HMEQ6!JDm;7N$N4A$6{o z1Lc3ExaHoJ2!Mpw#o;n-cQ>n2934JZVB`rY`OeYKs}-v&HJ10u-tw|jIlSVgCHbVe zqP%)tt!^Iek5?_~=0mm2mO}SMnrG*qobe8TZbg4A5*7_L<0&aqo&Zow%PmC3bnKYF zN472m*zWn9FLXr`XC(VCLK+p8ZK6cW7naM)5ttj!u_jzkRu zL*J4)^hH)@FoL^Xz^%Q$vhT$3&3@_ldx;&_Mw0pFq&XSZ1Auy1s#|DUy&@KnfN&GN zqTZA`0UM!sdwfBIfje0|HDCr+uim6ZI^!EH)^k9WM^U9gdgUyp?zU!<@^E^37NamE> zVwAyHmQ|Tm;j@{d0bm^)l;vwi2bmCYXGSzr&0=})ZD-Vuu_#dRO|Ss?rf~!l#sF_& z>1NJbjK3~3gOoN;`wsqP|MB9A_Ftiljq~OiW|@uhC?4TRkGB#BK5u!7scw=fsOb7s zeq|2SR8zvT>9Gbo6T5Ih>Z`qhc~vF#SlEXbutwKgI&xH=78z!pdhwZ+5tRM@+mw4* znR?#+8~E3Q7E4*GZsR> zePv(X>%*cNki^gzg&tPT#lEpHF@Ye42f2lE#=gjx3{y)l!4Q6AtHa{=Wfom88^(xe z7p>AlFILwYE35Zxq36HIaF^17TgJCH12rCx#1j2`CQO3PUvOSeXhWlfNU#bnRWdK>X1&pvdeYn`sqkgVG%z0TQMi8&1(%uTW8#1fO5-L+PH?{=n* z|2$?ejWle-LpF;)Zvg*2td2o1rbYtOpMU<=H{CJ-yO8qrE`qpZP{MS7@j*P1PI@8z z!%a~Zs9hb{9#uJWxg8>xPN_`G#AA z-7ol3e1Q3Mpk7U0P^*T7Ao>*6+>^?YjVm7s; zpl$1w@-JbDyR_LiKvAs1VcV=Q7ED9>=y%+e6vZ|rWei3?^U2~+G4jHB52I%I26U+l zE2^hzoABi{C1lA~aCfH9z3q*W=JqJddtFB5f?1*9@2lh|lx!keNuQnufs=j_;BMuc z1qoN1|5S+E9)7KsN=EKl7cq)_ZxII;NMM|dE85Rr+o#FhrzyK1#IwY@?NM-!nDe|g zzhVaAxiv>~*wQHLS*I=T8cSukDoI%*bY(i>;M#ddh7$aqiOVD z>b29bgC)*MjRm%5JskTJoljUjQap9_qc*8Vvd1~ljxAyjY8Cv3TDN_ZkD)T0bJGBU z)VPP`9hW_U)I(H=(KnA!x2+%>`>3Zk5sHO;W7GLgZiXJ5VYQg`pMx4`2nsyn!S*a) z!&tiPgM_bFKN=T4(!9IG`&SKbuJ*+2sn5Fp+6XQ|WY}6FJcMr@idHQY02=m?j zSIHLu^FTQ}ro!IGRlZ2JFP3ldS|=J>Nx&*zvwZeuPu!LJv4j4aq2O?verby6hRl^) za4;E53rtw#S$q?iC07rrly$h#tfXo!<+)&fy08d}GpGn1*qW8gKo8amls#)wMBbm2 z>qD1>-Www0zxhtbO4_vfl^j&HiG_I}0fz^zXN?w6=Dba5R8GNE5#EJ--{oEdSmAf{ ziv3l&*xO`1y7*Wlib8^f4)baau<;xgaPX* z!m8pqL{bx2eel4-qSrJ#p8RXBvONO+X88nbtO0RC=}$tx#sd4O9R|jShKYtCPUlA} zD2G{Crkq|2QAf|bYa&cQaI2bB@OLs2_F{LU*PE;nA{hF5Ns6X;ek*26~-3T zn?x>UceRxg6H{qyw;B7PG=5MwO_Lu*-#qwiunJIl`!Wlm*(4#6vfa?}Rs=qotRl9q zc~AEB{O8r2H@gD2ZizYo9eqg|736X4u@FW1IDqwv@mLG|r3Pypt#UeXse|mJ_wehx z+=&V@pMU+^2rW$@!(0tI0{KpEyj{mZ?8&?)AK27)`(UIRA<@CgST!ySlR#J^uG`1F zx5B`%hbt=sG8k7AN2ci?Z*09@KNt9VM}jxbnj8PtlpFvR_-tM*Qan(hrrxs}MU=Qh z51CCHh>f!5B7!%(Q!fRqnPwM=h(uG;FH<55Bi6GO{$WSZNJg?IoPrXb38u}RvlIrv zYvm1s{&ih2*tvz)upAJS4t}ALQ=84GmVy%))zVZ9s@s+pxdgQ2K`YhR(q=5M*No&Z z1d=WM_9b2*ys`eXj-%{fi8>Drnd+99C+iqfUNFEpf_hz&h4U`(`()_O8tBp=+wRPA zvuLcX(^zSL=a(Hv-?kd*dAXH}f#qlxP|<%KJ_|huodiY8T!cXFuisvOGU<)x zsQZaE`W!lhfBQO@R*K(I1aFAD_K7xLm7OiF(_Gde{~52zGeh>8%6% zn3*_Q>aeP?=dw(h10g)GdeRL`$xx_3-pD3t5laZ!{;(rEugIJdF7(6RP1(e$G8t~p zvqY$JzMQcE;`@M8pz*WN!+jv4!sVGX5H?^q+Gi{wPT$$j#OnJ3Uw;$zA1;KMGCBQ` zOFDT(DN;YAH#LC8Q>ixh-r=J{R%?*Bi5wVjV{u_rz8W71iSNV3Y#7W>Ic`hGP+?BWRg zbOTT?_$7Gt$V`dbW|ZNar`*zDGm7gSe8e>_?q-n;>SMsvj<*PV6KH>B!ETOwK(Z67 zSU7co~+U&TLmD{kD?7?-szZ;_- zi^Hk4@LwI77&K3KU5wV~%X3OskxK8tbhh=_mZu|f;>87fv}=PDLctIz{CySsrfcS3 zhp|Q^)lP2`_tpMw`Mj%$3p!mkK)K|K*Fhkq+_3uQLlu?*t7V{+s#*=cg}^2QmDUXT z)}X$nZx0Ti++5>X3aPdugMS>HE_WN;&Gu=+9UXx`$s#q}Sj!IV;|+0Dynm>ZDwQ5x z6;RwA`kqNuS|M&fv?YcZw795hQVXW9$iZKYji$Xo`!uIT{aiYZJK6{LopX~n&dMrL zAAC4GN^o<~Lz&~HUL0hhr!r8BKfUBMfIO3h=F-)mYn>PdV6dV@iMz7@>;Y!5X=~~W zCEG61ch0l(sru~LPovr}aO+Vd^e$RBa{?@ih5jqDXR|8CBo~6e^|#6T6=u}^2WjSM zkOTXQ>DJ<+oNQSuVk*xOFqrxp>HTg^x z{|{V$d1e%v(YmoCo!CXQT^cEH#VEGS@%Cf7Ynw?SO*rgENlL}hHbGx~YDov7^2gRg z8xP0)Q14cwW>d{B3=TyPc#>5D$=Iz3k>Uw?B(Sa8)r=oX`Ug+f1ArJIcbWeX=Zz`(DeMFBZHSCZIJ)8NYmny`KoPU?m>1aVvwZrI2WFHOL3>%{d2e4Q%sy=E zcq8B8;mXXN3h;0L`LCAhld)|gfXL}CZ1_v{AH54)V7)Sv zB;Tj50BIX0%H$Tr>iDep2rjD2kC$A8D{)*pgSnO-+7}YzE>Nn@3H@PQkTOsp^7X1F zGPKvfIHe2gk|dmX$cK@^v&+f&>T52F;qO`#AJ`m$0I@qJaVW>!m3w&TMsG01Tv}#9 z_EGjh%KUENpFv|)<|CmS!41u@DHTLwMbPFY;5?RP_N0*YfRyq)TcHggMyFYg5h7O~ zH%!$}evI0;0-4F{8>$nLNz7q-L!%^6BkEKvem{P{Rc-RSmB!lD5+6 z_f;BW56)Tl%Su73vZe}q z`6jZ>3>~JNisVe1t5s7Fu5jjjk6!yY%z3OKQd!K$qxc;>rfSM3)ML&tcY!V15Qm8& ze8_VGnVtgnnN+6Kd|%%+bQ$OPtG^&mhVQMlgKST=uO!QNiO=1a@D2)+fIO>PbKr$; zPHF?V*KMraa_OGpbRIk~xq9q@eeZkqupeh_mLP3{A||n#NDE%cfT{dsq7F+*i0~Q1v70O@DD6?%VKqt8BQHAl&9&uM;6fIIY8| zd*ZMP7S^K^3;D;Ay>vV4_HxRjcV?RD!Ep2KL47#0YQE%o{~{@JHRGQMb(kaxkGo0n zk+=2#;ifIB0_-w+t{;;E7MDgp{BA|fn7uuzmx zq(&_CqNpGpsnV4mAO!4)g7jXLCQ>!@&{U9`P^Cjq2pu9dkU;W%5?pJ!_Fnt!bIzQ9 ze)HS!j5C=y18-j5ywCmI_jP?P^UQ`=_w-TcGou~-rZ24!xK$W+Cu+4t!2j+}=t@2N zvD9O=!^f&&SJN=-u>LWrb9#rfTcZg11|Mn+M~*`whGo$S`LC&tgnUx~9SBI_qcuIu zz!-n`ID~??rn6O0D@$=eQTTT6~>08F{+ zbW`LaI~f(4l@$&HjXk>K+b#Xx_kwRipSze+YE(RhnhtbDuxdYy`Mi*4Jn8=V0Vrlp zyx0A_U{kIhvrQ>)`IS;03Hq6L8y)?*QYKGiEJrbR`rb>nq)1E}{Hn+bQ9W_CzWijo zn5X*a1XtklgJ|&E*VVSagCkE%JC8rR0)eTi*aUL1j9*y%0ML`Wd4avbZGL}`E1jBR-heKD}BLZ`yOSu)T3~E86#b1i{!HQ_g zAThmV_3vTNSTc=oYJ|t`OZQ)P%ZgE0VLTDkEm50}(xi63_U^Y=6j#V)xu_k=9g|~k z8lubrzuf#a=W!jmLO`nPuKImZ+qf!5eFHZZ;?jlE6M8YuBVavOXoAVVIM_^#TW0F}@axJ!VEJxY-OG)9P~> z70Rad{VqM6SEUsFR&cGY*lprVTYh@OxtEcZX8@>U8UpCl<@<#_Ue_JP!}KGNeyv!HBkeNvEuT zuYQ2PSfDY4BG<=9u8>Q-XCZ+0UfKZ-U)6jD`Wuw=LL{b2Pv3_HUEBL2*>CM6{>O+H*M7mW7 zSGqpWJH?dKQ(K4xGFK31h5@@BCuTfXB>c3QR?CHtcf&>)KHjB!O7j;zIxJR_9;Og( ziqoX}!{&1NR;yLtfd2WS+1~i73dHdztWyrH$2VN@c$0DrZai1c_tQ{9ksPa(Y$3*#4}?gcqyO#^LtRp@i9z~4b(@juoKT_=c>u2~=2 zL{l58V8ZZu93>+Y&1S)~{@aRISQH#B>Pu_g zZRI^U&-pc6K(na=)e*2Z`;?nyTp;~s)jf?Zc_zx1#no66rDSUv-?3?oqVCaLS9)QY zABz@`16FwYeL0=EZrxs2quvp_e;y> zVEm=Rh~JQ{KeBg>P#&(eHFq=cK$X$7-YlmfV*mOMg(Afko>EWzlbI79MnxoqhOoW(a1H z>V9l8TWTd|Th( z-e+Uh;uEN2>7m41>IhEHu3gK%rxJ%X@dy4JJ_)Bm5~7{FvD6o%c4Bt?BI*~Pgxsd| zF1iOl>!CAF%ZQ`Y(LwVt_T9A+Hk>qV7W;x)7a_3*u1qoNlW^jaoX_QEZ8b}gKih>NzuVsT_@PsUJriVBQBUxbCB*DnZB{i*myIlHv_-GgZgd*$jhu^^r!vZ!J9szq0i)bUm>?ZId7z{QR`p`-%d$R0Nhy{A-xl{t(UfG0WW@ zyiqvEkH=qzamUrvh0Kc!@w{>}WSof#6>K9!YfSCmwz}p+(1cr&MWSl1AoAE`;Hz3i zm5o|=O9IUHd_z=8+(P^M2_et12k{fGoyOO7WPf-t=Rv0D;C2@6L^)Wblo(*Ox6q>(+OCk=^Kgy#~$@Kx193>pYGC+Y2Y7;1- zL@JfM-Y7ZS=|_8n5}2);c{S7d)6=$*ww^X0Lo^t_?fiTDgU_DN!wnIbg?k#UUDnsp zSx+L7D&h;b(sgCrmcz<-DVh`#5sY%afJ{z#(U=Go;}d3&&^jLx1jyv`;Lh@7x*`V1 z`%ZO8PwHb|=BU9*%xtnErojfcPNC91jI_a?aC92#G?Z z`=`DPsCSFFhs?@Xn69#7)VlMQ6J>Sd?9thN>nB*-mC4ixL%^!h7O~9Fg{lz~nku;) z!*`C(?-A9hy1QP`LXsfC8@e1Bx>L6rvRiaXDzx3)`H?k~RmY3*$m}wbbwrl7{3mD)*3)yA&C?)r!^uWGO;QPk?*XF! z28w@F_@g;*%ANrVoAA`XcS3-Yq)yp#Ifhv+tBX0*LMsN+7a44nMI8c`vH*Vmfc)QP<9qzlgbRi>?!7vFP2K8Cyx~qJWx@*WM%buz! zYsQ3|JWWUbSUAIT-i$A=e64$I*4fp%Jf$R5`fQ`bgoV);G+(*FVaP#G4ge}&mSk9m zGlQjP@}3LvGHA<{WI46i8-ysYjSCp%EgZBe10sPM{4k5(6-`u@yK;u0OwDcV2%EGA z*WKiti6|%DNk5HDJlN@QR42<3n7At?dYqdVtB6MHM9tQ%cXPg!ICoDJW#>HQ>EQ`7 zZyBPZiJXP(o#5DNa{;9`6FabvwM`Bi(9_k1rZObuOsJrG?W%bw{Y-;}kR!?J7OWOe z9^5*epp>=j!NI+0Sb9^P>FtK2GP~(;t9fph)I+tDCGF%Bl!#cG4I(~kvdNFqO=}vG zdV$vPFjm%R_c+Y`nvv^SNiO$vS7h0Xrjl$%H>xSyW(KN2f1|oaS5X+u_HoGYILTKo zz5^fUZkc}IDi}`kDaGT*zqx#6q<`qpiwZ!Y+3QI`nt#6A{ls*TtW)Y0pp}!n$~L~FN(Qg}&DHYNHPX=H)`U1+AuV#?hX|UfwTI!_UiEmox55@KPf#?a4VGSP*uqX?c11Q(81@jo(JQ#NYTJBq%tl zn6LIX+B_S)`nPs;R>-Dmn5wb%T&6t&xA}+b;XPO$!Oxj|wmC^5A@FEru&IFeMe?wv0Eywx+--T)O~*=s^`NN5&dt;An-s9Fu7!Uh-c zFCT-7;IxqCgv<3H`!S%fP^T(yz~T6f0(ShaFuhlpI{B{DPt(&Y*WZR-VLxdnf9oVq z(1nzB_kx9#r>;|DyiXX3@6bPu5mlzP6S5_w^J)U@;qoP2If_X=IaGr~HHNy8DNlqY zssjf&h#>?=;p3Mwtxtv>%8NRlJW3Z$>{T2jk*+zr9j$HQv0CeW9g5g3i`2BOKlz5* zHdO7+D^1q;(+z>R`f7Rnw!0~a$^%Dj&CFOjrNFYI$@aZi{QI4}oUo=V9+yU6y2GQJ ztA}o-^Q$cN!pU(!DBuuH_^FQNCI^{_^DmaAcikuSlX-~iB+oGQSPG9S{v)hf(>7kA z#5bk7Pa;`V-GCoP`!#fwb102WWL?2;aUJ#+D>MSaqkS{Bu2qp&6xnrJZYiFPd&Dge zx9|7SzBACH8uZ;X?+p8dOB%kyXX>bCdDNT>sAr`tn_)T;eJ&|QCN(*Rm}mMt!$s!j zj;J{fMGVb2d{_^`6=)MHhT(&?^x#v*N>zNvF9(^<+X?hWj zwVaT9(^)#XctXhax`;-Te`vXL(sN^A!^tSgu1NvkX!T1pv;nyENiQL-pb;veu_tcd zjN(UemPb(nGS0xRq9$ub8?R?)*p?#?OC7qscWIxCn`@>_XX_%f+eh&Xyq)QLr-%}{ zRkh|alR}UCQX*3t!eOu8D%(cyRIFxXMK4;D*A*wv{xWOV70IH`+BXeei>6&sKKhl1 z{S!>)ld{Xl2i8ovHC@q|^G-&hPRHN3d(AESc0xisBwqOZEc8LOgAq6rr0IVrEhujm zh%&%Ym{uQP@J67mt*uLipF84u6<;~dz*d$&5A1Ve3C<`a-ED&5nWP|@*6;c86<2=b zE9`%1EHe33RwhJklKk7X9}R6+O=oWy#5zgLjWk=o=8x!G)ZX)BK37z(WkENeGX(GW z{M9MRj3Ztl1wgU+Ly&)&a7A~Vyrk^>6k|K`)TF$(@mt91^@znaX3?4(Tk~Ib4(G#% z2$IjwxSFDaZ;H+rBU{u+3^#g7c65@eRG}X@Jd2NM>n?H()ZP zaZrUoVpRW)_4m@8iOX%r+!j4p9*u_*zq`fOnl^9*9nZ@w@8xoiT1y}aCr0GtW^cqN z-eDtnD&Ji4^SJRy$=9Q4yk)Ra`kuEcwu0R8;@GOhDQOb08m(TcVK$=bpFkh7RRUP=z3UU(teet3C<~>`!+%%_;=Ghkn_Cf!B)m`vut@zd==P0lr(J{i_`Ul z)qR}5bQH=Z?Ba~XWXkC%Uu9Il@|^Zij(qvs$u_TK$-|G#?zOjhP9494;d9##>QaF>B%mKqV+X?pv4 z>DeTwbXZHiTYPFY-)fj@?oT-*{m|^v_2cioW#{GOwp|!>33)8BGEKcg6+K$fU6=di z_1GgaZpHA%i>_)Ww@?eKYPIYKUB-8d|G>Ox5uwl=k+*hoxqGfnhkqQ4o$wuO>+B5m z*4V$5AKV~nsmT-U%=}|`hPS)Mbo-M3z#Bk6w-&-a3Y>}C?5t>IW6x^{E-t1&gA#_s zhiTf3r_?D#>T@;p?5rP3v_}=ivAm>KqfPIqUXXPFUM>FsN&xsDHaU3Zg2&4b&S`P5WoThq?jK zRwvOs964>aJ=mrjG4YII9@9=#Z_MAa5eCo1YzY zbqzwcp)XUpiV;dcBZ%zROXh1J+zk*+LC21v#K7bdsK@7rHZY|zl5bn4J$lKKCce@2 zr5LG_k19o5Ik>q`8?3UKTU$#FTq(B@Rn;d68iEfomq-qDPVZ~baU@abU^f@aAanwpdNuHpax-vJ>G4 zY!R&d?4cU+$hr|fK~=?jvyZY>q_(%E=r*tUh%QkefSM#(tVi= zG0U)pZunPWH9;b3pnc)m2-Wroe?Hs*>O-IHIo_g$)>3E0NCN581AQ3WyWc*@x}qn1 zjP$h@T^&N{>c4pH*0|5<(Xx=Fj$X&jihwww@cgD5+XH}N+8Cf+BGrTJjl5B7Jv=8~ z96Cl}Oc>aoL;J7LSD!)Y@Mw*2YJx0M`FpSPD(M2*9g5YXfjY+ddFJ&2Z z9Kn6`UNcRJm-VX>51oV#n-Kn{(YN%F*k4qQG&ZLaG9GJWZB|lE9vit8t@r=<%xnJ48znf&*b1ax@oUo8n2PaPGOEjcTwlYZL)RF6o~UA4UR#nzKaCeb=; zxDkZp1f~J|1ariJ>NtHsMV0g$T=i+Nwv%cJk27K+j#NqEzgmwf5-I^&LCWjQV@w^~ zIt(q+bLxNWNnpMto6@9)>F)QRU;vQ_Gh@Y}ihi?{r86#7@9QM?dikCF>Z(3oZPAi) zXhs~U<*rxVV{Y5|S62cqmt)g-O=c1Wr#}76gqBh$Wc)CRvkRSQ61hOu%c6X$0BEv5 zTVTMWum)*HD2MyWq22)-f&~YGmgr}#ztE~ zy^1yAjK1$L&Z9UoB2JGWCiFhk+#HF6N6!`Xbj3|e8peG~$0qOqMwtg-g!tJMo;EVu z@Gj}A3{^x<`z3LC0U_H&l+Jo<(Xs>Yp*6qK^Le3d!m?T9U`Q(~y!s9i%&XUBw*eLz zKp3{xU*EZhu5n;AiA4&uicmwx_;&klIyvsuU1yT-VY=zpfz#}J;#GG_xn;c%MlwFbL}bFjBJGf_ zaUI*b=Ssw+oRj;##$|=~v#`=ZiSG~~`=tGiXu9PKM{4K-lJX*elxx0v3rAo(Cy>6f zA`yc?!{imBTIF)6;3hYNLRh6hT$t`>zml)v18l?SB_Nk-r|INrBN{-X;LqtFRj%cd z=7gy^pGOI=EY?H?b`Os)_=n<*_0(-4ET~e~q^_MypqX~XBI5~|0hQLZEuk>d-n5gU zf!cRpjfp+^=DJ$Co)-fc#*nU?tQ+Jk>I;%l7 zYP>;6LpruTTXt|^!5Ek`)D7^l1Ctr^xwn%5L&uh;cQx%iN3)9diZRb5lmsvW= zDfg?DNYp>IA#J$J%BWidyGK#nHX2Ne)Ob*5NQ2U1aWw%AY_$_g!GgFUp@2Kf33=}; z_qoSY?E61gxeH!bBf@i} zuK8AK2-}^TWN7iE9+~0Uq6(aW>#Gx>3Iy;JXOTrqd8ils6wQ5G0+;@UBAb99C-5k zPKNhb@gfL>St^C_Mq}nq`!=L#w!S~RG%WZQw|@pB66TS>%n2Xj^c#SJ#Vtblyu!nZ#EM=S6WuFvR9uCZ;Jf|D`#9#e(~%7_k9J_ZD3(U8P|mvNYFGU9Ps!C2wt5m zg~;^bByoyhIiS})=LdULe#juw^?=;%Cx?R4aqkSmH6x|!*5+IkxFCpN^_z%jaOp(1 zY!=<7;BNqB;Zu2^E)*3e3JIX!Jh5GIfZ4cJhG5l-+Y`IxM^n^;sN&iJ z8bD(IbIjfr!7IuNLbm}|&7>Ta+j5az_nm29ucAdL|9r7h!tcPhSLSh(pjR-`Rsw`a zt_gBcU0ugMitk*2g6fr#_6+zh{FQa*{JDiDo2J8W^PQq5L2Oq$*FbkfH@i2ZTClH} z#bj^v^HpnjJ|(OYo(89*DvUaFlrEZlf2;PsbkF_;P}@W<4amF9+KJ=c0lV+B%b^kq zkVbWdQA?(|D6LU!W8+(Y!QNpsMf!3CaS|)q8?Di6e?s~xIw6hzp`R509&Si1sL#U^ zn8I>q%H>CfWXk&;SyLW~Kx5?!3`EZ@TY(ls#tr{u^lWsS`j?Fz!-tfBTe*CmHEB|# zXzSfyN*aUex4)D$AK;y9|Fyj`H)^eS%2lv&_m0A!|NHa#B_FIykD5-ek}>qO8)4bl044<>MgFUx@De@PV0r*6{VX(y1B*U8yo%bqIA8X zw$@Wg=X*|_MDtbfWo2an6)P2dfFaht*yMXy5n*r?432-1ZL1w>j>G!xH@H z@iLLeNC=7Naf#}O?jI@HHZ4Ndb3F~w+hDhwDlKkLO3UryD)fE^OBL5F$0d$yCe7O_ zn*XikAd@Zq*EWcv3@Gbdj&!ZX7?4s9wJt(f>^4?jn@nBwor zIf{F!c8xyhYT|5O2rI?}ik9Til%sUZ+iAf3^M)7;TW8%-JQKFVSOSC)V zR?nZsx5|UTC9st)aOJi375-@}b!$lBv}yRXUBS)r7)?2J8C+F_%x?~;JXXLuY1)z- zmpqIKK84Gx-jh9CamhXi2pqfcgXrlJf^(ZMJ;e(|#|l{3(OAlDXsY2|m+6F^7y}zZkxH){xPCa1LqZ)Pr%d+A=d!(Bk1nMz zPhWx0l!@N94TVTgC3EUzT|K_Z5cYJpx1&98&Byi3H3R8UR^RHud)1I{sG|0@oYH!0 zJEgYXF+b56l7fGU$nPHj1SH^6Bl3L7TCVifEup3n!NE0472PU5COMZ0Z8*!mHMLeU zy(J6=izPjjb)+n^?JaQN1*s}D7yjA={B28^t1j=AlU;8`h1m@6g@xaykUxLaC#?Bc z|Hw2wP6E`3V_P0(yT9SD-?S2s)+cOK%gC|i_ZN-g(3NT2LCF`|OvJpLxa!mwK6FuC z32Xn>mB4{Y_Tp1WIayO;hTawGsfbmxo$s_TGm2yba_B_7t;Fgu`ET+Z*!9#a1>yFT#8B#^v!`^XH~ALCVW}ZGfh3^!lem2gwDww<&&9>SvRin~tnZ zOuBozrSro*ReNTj`(N}H8zE*KHohfh-z*Y*~?w;J=eY(KW7tq73=)9#U*pQKDhlBLG{w;ay? zM$D>W+@n@Uv_L)Ar$#1>k}hBLoq-NK(Kk5!M`Xe^$4ic=?^71CXH}T=r!86*!e!nT zEWGs$(@{sX%uP|jZleI~W*>rQol}(c-w!}4cD@N5t-Lio;f{_TYjL6?UEPiyn*Mr< z&WsUXfudY<TBs=S zYvoFu0NV)7P_c=1u#1?Rw>uq;DLVDfyN1C0p2_A!moJG0)-$@&lSH49$ffIM169(X z)pdLG1y`LJ4vB1QtYb8bjtPe~D0a%6ejjTRG7}qHFs*^Jc`w@HzTeoj#!`H0J=$wY z5!PTLF@4a_?WkStDbRT&f)KPK1dx6Ty|nNFKo^e!w~94KhQws0t=2>m2{VZjaiZAE zpzdudH55_eH?@qC3f6GSHa$X<=p>ZT-3{2_8ZWSwtvYrgq6=^j*f5t7wi~6~zVn2S z_>t5d~nLg+peXQZHUAmGv|xSe4&*Ql@iDk zTb??{&Cpv;PcI&)+ti>n;&fg!EZub3s$Gzv<=2YIo zg$r7#N#WIwf`RS_&wqQ8Nu4PAX)Jmh17OQRj~E3%?gLe#i$w>4%UPuim>x!LX^%+H zH>hui97F(4t|U}1@6;j>!)Z|PH{+g2i0_ecHDd-YXAgTjxS{R~j_!U=r(XMV;g`y4 z;z8&1fwy!Ndy)EU9@#LQIw~LZSAcYq4R4iK0dDDoC<6g@k2G7YK=Rek zcaxFHd0Hb5x>l4O)J24^DA-<&UHlahm$VOy#Q|3`oAl8sb=7R2Z_z|Q!_dK@?8M}W zanJRI>IxMavjsTA15#++l-(!U#nb`tWqL@106!cFGF=ps0wPtn`i|*S`P3B%AS(Wu zu<+>nu9wO#Vi;z(s7_=O2WWgI%4n7eC+Dl7Z6hA43OGm1;p4ff zD7wLI==X+ix>8!ui>=PbRUv391fOGaBgEY@&~SF_<*x5nMY_WEW(|^$vYgH!SKx(R zrOv$Vx3mwiPk70k_;0cjZd?|3=n0t7tcm|Oc?oN7w?IR;T8wth&asRi8>GXi`U%Er zT@Br2&-L7t;3p)Vfgryq#WG*A|&mxL;3Vkdp>mb%nUUucYP0a2=R@A19#I!MTq$X=fwd* zbEH$PaO+}?Mr~`gfA?CR3KewX9lNV_sQ)fJCE(q%sj{*gcD_idRhmwN`VIJLJ0*F! z3OndJ-wFL!84Brl(Ch?MKfc>oGoO5)J`<}drf6Q071cS{5KWUwaS%d-ZtC<~N71N~5nvPrY z*XRcp_|LE13*1}{rk)9W&`mUYvtg07(>eLT1+lweJ|B>>t#ZNv;n94cszgMLyVc>? zj*B52VzXQC9{sqF{!OZv^^OP=pU1<;%juY2qcvb-w7BNjj8-cd1@=Z@>~7oQH(#`H zTD;Asz}09ELw&m(y(^LWh~hT~Pnk=;W!Wtkmn|d<1da#wnKxf876@v(I3o@9^6CGF zNCvvs6Z~DD2k6FE%Kjmbp+Lg|@{&sVi0*f|7bV%7Di-Q?*1}_Y!X$%#f}!(F=KQMe z-=#6g^_Du$Se~)Z_boA8W$Od?^X3@!j=3Xt56o2zfhUp*BHd$qxZA2dtQkH0iS?z@ z)lNy+88q7B=pSs;mhVQkuEQSHXQ|ztF=_6W?wlL36H|MAH(^Ju&de_+MkQ6<644p# zJa&5~iW{cjqQ3D~YRUKYEwi1YXz}@b8B{3 z+UXWXu^9?67H|=TXihM2oBR_!gZkb!N8=w~rGq{RU2Sr|iDts& zl6N_2A-mSru>Wdbv2(*HzP1KKGaN;m_|ZS2m9unx5T07;Q2a@1b_qS1MQS~ArU{G) z;W%t$e)0HvGFT3O(Dp+CW`7RarUA6Wqh@aI!%yVcI_pYBUDd2vt{N!4vHdT-hKgit z&R4-xWN*U#cd!f;C#T@btp_Bk`!b29A^>nnU;B-=9LfdHj%HdjO3T)sr>$WOyZBju zqnZ_rC_T-i`=C!vCx2hI_z7PbE&yuq+p69;k)y^Pd{~v59I97=+>f<5GD!B<$zRfy z>a8)B>V-zUdP^ea&)w%{IUQ%oIDPBsyEbZ205%h$3~*=BR|XzKWE_I6n)SQHwa*!* z6E2=RTKjFgXzs8UV}S(N>0@X-tGzs2C&fGOVi;wx*c{U2ovDE8FLPmHgkRXDpQ*An z1Z7l_S%-nC*bpsmxU|y!O0yMi$-=$A+uS@?40J_gHe^>ea=Agx;zOTrvgE2+I@WD+Na1|6gSJ=8vnA6i`tjezcQD0x4HemiuvuT`nM4c9sN5tG;dPP2Z;Gz z19@rNU8f7>MkABXe zCrw&a$~v_BPhK}uW!XK7q}>YNjMD{v%6gU;$_8(9*)LACGwb-%Ym%Elv$)+%O zB`5Q(>Kpo3D-`3sr(dnjUqObI)`0K{VatSPZFR@Odf&rT1UxGT<6N-3&o!)Vdb>y_ z7eWU<<-TzW#rLlfxb@nJ-ieB(CJ0twUWZ1e5-5CI%O1IH@(A3i89&UImfIlGi-UIa z22NjG@)kWEGkg-wT{~|buzsrQJ=evnXujEX^>;AHwRpiOXAP*{lFk{YnZ<6^nKk>8 zTt&_Mz^N#84(Uh@Y6?}hmG14S!S4SAT-aOXc0{)VSGyJm#6rVn#3<9DA_}j1`!8mMIq!FnenI%M*`u@P z^C}7xIp|nLXmi-D>>@P9E|w|?^g`rZfxGWN8{Ya$vB<-4)(euMEa_1e+=GH9zETgzekMsd zy$i*-+X;{y+6ZZuzD34=ls|2y!n*z03P}!NSo?R84Ix(+TryK$ayo<~P}03$HZqp-j+j~t873H)xSvkgl&FNz&pg1&y;Gc6gS zfjxog8Sf(Fb(=@UN9mTU5fac^L+IThiM|y-dGq0GyuQ`54Ce+}C+1~hKW3THq8di` zseiu5_(5%2Y!_W5f=*nN1{9f=gW79M%3gt1uKgc66dLsCA2rMq z0<~8Anbsh8jvj(nD`~mO*yX0ASMj1bN3U+88lDm zTP^W?l-z=L%oQ|ytQd46CRj$}>~0T%t!sixqS9G~qhnS=Bv6>m(b;D@y zb1HMI3e#l$8hK7b=mn?Tr(x#+Iiv4}oMLJeeV}_kROELAGxuQ?lBpOmY|y?r&3Um* zb$T-`Fe!uMi|E!zqv-6G*9Dje@uloKkRm}UXj>qBZkuXT+F3<;O3iCh5%)xxX}3Fd zh$@-Wt?#DUDMDhh1bvH-rgs`cY`lv?FFwHUdk|cS=9h@&zSB={0B|uiMKUFu{xe81 zYEnbHGp)1tyj*HtKJAM$gF#Bt7=hpMJKn!wy}Xb==G=;%v)S5xmksDf2w%pl*Q^Qdn)-ODJ%| zOvVfnfGq{t*;2TnT^3An{$2DS_z;f|q(j$t)fZ8+d}69=SPo6BgGyeZ1@7=s*OxIbw94$( zRcB{YPH5>j|0C&&$*Eh=eS>&i1uWj|@CunX9g*oE>D2z1obG{ia>1Z(lnosb=vMUd zt0~_{=Lja>)JEDeJ<{W$<7kfGLAo8}TS_}@uv~vw&HiORLwD!57%|>>#*OG%l;_%U zI>#U?jbwDtz~s5qD`Ff)R}5^k%&~u(#c6va>Sk=4-25+J8K@F#D)_&?QQ88Tf0VW3 z^fWc+Tash{6~Tuk0H$oUeie0ZS_=1PsDfu>GWa0WBgJlBG!B3W<6pjb;eYX!V;p0~ zJDrn39(!rF#(LcN88I9%X;b;Z_-cW>nX6^?Qoo;~-+^eW3NX$WudIp&OiXsPD)|$9 zEW%E~*)7Y}C!YT{*sp`*$FAM6A}|wOg!R zeqOM>!H1x?nm49&1jX;_Yr=%YVwXZ7XCW#EYC86MNZchkoyAfVb5?s zn0F-kih!rz_v-KMSJu4d1MgZ*6p-R4$1jw)CZ;y9osG9^1jRfQETO)D%qHYSj_G)^; z>CowCuPWm!FlKu7OcX?B*)=L}(VXAL;B>{u_~4tGM2Ac#;AS%QZaE478*ONDWBN=!8v<$gbDh9Ob$2 zwhaT%JC%LUMubyKHEW;>rEZh2XScs{KO!E*-dWQRDQV=-49qOk+5bhf<%Nwv1lPvI z=)mf_oSY2j%h0B}!54gB01tvuIUf1IIOGCBYzJg@GtoF>eElojf~V}~DMD4jDN1W- zvS&Qr)L#TkEc$~08k;nHgwkAYcCmrc_XX%PC;|1)LtQXK%gBHF`(@Uly6i$-#6{8P zdmOE-ZbBnw7c344wNv@Hzm1ING^O%yW2T~Pnkp56v1jRv^r=jxq?>qGTv@V7XpI`s ztWJzMXtoko<_YeTJG7N%({KeK?Vz*V=zXlfn=YOHF@5Jm^C5X5op{R4616P8^1-jT zRP6vU>MSYiM6ZVR=RY15&o?Kb6nKG@M))i6P_zx?5DI{V6AgZ(9^C!|{wQ#bwi4BH ze4Z7oi@9QbP3Y%iFaTRG+Vmpb0rTM!p}xtAZ@wA*=|de})eDiUI6YV9#1eac`}+~_ zvS)%C-a|e7(`r%FBwp$Pr7kjbKSZYTG4*=a0jPxprXF-ZBxw^T{5MdilE>T|oWXme zIkf(V*?(Kq?oDzOOQ4z6jOHqM{z=m=;s1xGz3_KUdl&tGH0}S$*_dag7G~8O4Mx4mt2}4 z+N%-$u<_Qa@o|@hxeq!lyA{h@w3t?rcJTRyWS?qcKhRFZXm7y&9)%zCRh^9Z6u4y3Tyj%1=0 z<`lkV3m|t5Xn$It-nv69Mmfp8u7Nt$`W?1*2X{bD1ucPCY?*0gj+(zG%3ceIE zbXcNJEMIwE94!xpqC&w=k`%|40r_$?BRw0Tw2hNHQ8o5KBEh<;HIEUFH%%bS*!0yj zw(Qcojby#WG^hpX)C?J<(&Dh!|DJ{KQ6z8cosbayUZz}f9jDm))U5FHM(di|pi^pl zcY^~je7%Q)yEWot8Dw{GVZC`@*^Lu~Lq_D>YcbbP@V^8R_uhj4fWwd0;oa+5tuP(e zaQEoD4)bf&pz<#Ly`6DaPKGsU7~1kMis1M5{=B9}QU;YWPnJ=!^Z6Gjz8x1ezd6R3 z$1&oL>WWVq-fz3b`JpG)!4_KNY@YUOa#E*}KK4qK;pZSz}c?e{UT-)@)SR=0A= zmc*LqlwmezT_EB~WJyk7r}KZXE#jH3@pc^FWNshE&diyqO1+`xkN=`h_gCI%Qy*SHdh-Dt_S7-0oI(uWepFm<;sSd-J|3aN! zbQSPLb!FX*kkTEUX(RN3Q%6lplAW^PlADq&L5U^24UH0fmb&Rv$l& zB~08_?DY@+6E>fgD1~nJ&K~Y8jy{IPd!`tAY4sEjz9wZUe7WvBaJBdH%fHkz<>TFS|f$GCf4@f?Lde=c54`Xucoo_oYs) zTwqY_KYgJLo$7x6N1EfO1( z+3?_O)W-xLkV$`qN*9Fx2BNC3hc(@P;B=!kx5>Zrz?X2f7DF4=(_4$lG=KxlHJ^x#a7InnKvy z_nlv5I~HnnB@fRliW|wLZc4H1`WQO$XC+N=ylK0;kVTzhMF@b*ry{tKO(FTR7jn~S zlH0hDyewkJcRD_7^D$@au?@!6Pwm#vwA|W$Ngn@4oq8uJ%{?7*PXC;>w(;Kr^!N9X ze(1S6v(IfbxEH>I-J5eL|H@^tZRymEVfi{Y+HI@c_OIpY>Nz8k66a||E*V?K;dWc8nf#LZ6vKu0(6FfvGdYw7F?8vI zl=SB->iHp-;!8;t9#gX*gr!=pmVJ`aiWBEIR9LW#c z=PPH-*8-@{P}CI%?h41868YV{Ga<(4!Jt4oWa#YOs zeoTmvK!ickEzT7pV=in)}Nw2~B4 z;lH66ALhDhPfW%bR^+(X`2`j|pSJV${#Ww!*Fj%BY=WifdT_ZQm@{cG>y5^=I{I;< zR=jzYotI_q&fR|b9REF@zI}e(Ha+%rj)V9s z?ZJI(Yefe&Yz-r;08W3R?+{F0RD-`irDr&8wOpK`QS(#Y%WRD*SN?)Yt<$`#8N#BQ4M#xehkwl4($BA%D0KT(l#ZHalS{^zY!fjSnRvR$4olKb9@PUe+;IjeiPByR zRMVc*AVMCvjgVRtgX(Bz#S3g(NjR+YTrrlZ#`j^*??bXiuCLfhFeEd+3C%;yxCm1` zWfaJ69o15 zE{~*6TCQ?_vtnhGO=)J&#pB@_@fu zU(XU~zTMz?N!#;Hm7S!*N66SBwqg$@ncM#qO>2`KsFntBdKL65C^+pDBm+Rn&n(!B z73gm0aQ0<~zOF2*k{O(%2h|#9_44rScFPmuM&;*PH&;^sHK1SHYGR$U7I>V`E%tMw ztLgSieCNONT;Jy%B2Mtu4N86p0W|=RihljFfQHJ@y;_w_Xpby8CUADw#d#g>7Hg;2 zkxC=2UWpv}tk&_i(Pil`hHcxlF42Iyug^?bWyQOkPgNk)I={67DJuCH?O+-E8(y|t z`&AX*%H>bfCb2FrGHS@ar}h$n($e&__}G2|8YdSq1GcJHb@ubO0!WsmJrFE7mBWoYttu{(gB~*UGcENR0)&3faepyyzg^G zCto`4Gl_>{St+$0{n1BCCkxyQ|A0R&E*TXD_oT#w9qPCH%v7)^u!q`+V=0{TH#e+%P$`tjsU<_?mA{qabNJ!qXbMXk>e}{c81k063fL7gGy&g zSNStU{oV85^FzayCQ?Vlg>cd(g6M_=t%}Zx_Z0P9>?V5EqEx007c$5MJrtDNKMk4- z*l{_+^YwzCjzo49G%^kYF~UEt*pjgKaw zqh|?$k3&Y@D$bLG`nE&y7WS9fRSX-SZI&E*)uDKQ%vvp?S`a(Tb)+v*)y|Vt673ju zpz;^=SbZLM_Bi6_Hldf)R0Bl(#SK!OMCkJXIoxl)0{%cs ziY+RvUn04UXxf8Kq?Onx=!(I&fH6I=46<~0Vp$f(05Wh|+5dnVoP!TyL&24!T#ZwS z^QClmaFs@RW_S6GQcDBM#bcr=x6YWB89HR-N-eBTyT%n&b@-T}H_WQlJ@kC+i_B49 z)*B@!bDOGyJ-=?R*f)1b1?Ty6-8hTT#(&F6i(Mam>r4%DrCz|_=o{1wvv^;1O(l~z zc&kfWb@AbQgl&dJd}xD2Y*~SZ&mW-r2#do)ClPwcu~cKwvlc<j7kclS>Ux_uyQe_#H-H3WYbbGgXc9OzV=Y(5w4+SsGE8eZMb^qTZAWRf6o>QXczY zS}Xy%d6L6SAplb__-n5mp~5U!XpD}!4A|CuSp6hV^ry`cdPQZ=cUj~IwSoCVo26mp zr=A1PinH>B7jY`>_1Xqz&Ul@=AMP?56q+)f;!51QkvSJ!4OVhEVE0)D$%q1W4I!}_ zOQd~n_%XE>SGrGlx=#DS>x(K?W*p92Dr>6dJx;E0-2{YSeVK3zpweAg#P{7Aq=3B0 zCy~9>lS;pgWiW)TtU{*jY8RI`K`g_`hu#BzApLgPa<_2pU|fODsj=6r*o}HB8G=d54~SInxHVM30ijyn(h43q=n5L;jiG7odMZxGK9*_ z)8;%s>()YjED;WJghmCP-GiNtS8TOlyO#!_(!5SO1TiSju^$@+?L{hbjh~RjOea|a zqI11s_*)|Jy~Ee>EWsYma_${ofiKLK(K0^C2*;JA=ij?rPg z+69#N{GoK&6h)qKCl7*_s_pO>;#5GvPU5LWLn;q5OMB$oI`y1awa#icv=kb)g z-wLIBPruvP%JB$mcG&kkwqw?ZybfT>8_bLQgP1%+nsy!Az2D6Le9||4t1)^c4W_}G z?(ufh2D+{(Ad>P1Zy9pNt3E10UYbj`*~1w-bS#tY>hQseKg;qml-b3V%hxO(OViUr zr*BQeW2Z&}-CT~$y|O;!28z`j*cE!90m$Y|TOJu;Gm)p^&y7gY@0X-d7#44W8!e| z<38SwWmKfaAtu*u;s zY_6|i(C_gUXr#>c8xV29$$D0{G#^dmc4a^PbRh^*#sNlk_=eH3XuX@+f-Xv1ZJAZ$#b}%>Mc)TQy5t?)J;*@ny;*xYY4akL@b@ac1^*OgZ~JI`)zS9A%EI9xn93RF z7Rw3+zLePMgMtdc%WA-GWE+?sOmJj(%^!PHgBZ;re5l*q6}Xf+m#bhS(8YN7jWIJO zES)OEF9sD0d5wJo%rLZzxlolY7-Iduh163EF~>en@_$UO7rqeMon}Edg&^1lV9`SK=dEa zv=pZck+u4Iy6&>zi)oLE!gr7p$Gf9nn6cYWz;1odt0M>Kt60B_m<4PA28JZJHlDwq zTjR-!tFQ3BG{`>gXtJ%x2AdSYM)$maZ5L>>-52|AsGfT;rj?Da>OA`>MYv5BO6tbz`1BPl)!EJ&`Zrqc7`F zM++Dt385kbU!E!cXM3i6ZOhXGX3Tzj=l(HkChn*7Z`1o&MV(0bRYF}8UXI?ngq@kp zm6tI&J6lG&ywYgy?eGt|%F1KK7di_Uc*FN%d3K9(T;sGlWWxQd zQf8YOnVK3tZ`zC=|Nmn6?U(ocj>y4{Ss*N2X)^IN6g`H~Y@0?48)Fn&jC|C4$c#>tM^40(!_7aKx2( z9?yIa^H-Dn+sPa^vI8Q*LYo&C-ij<#=>Kb^{j~Ug(kkOHs30;1=QWK{v^*L6#;{Mm zjf3kc^VcV%E+^GWp>dYXf|5cz&o_O2`_@0lOIqwN4@g*^Cb!H4uHUM=nHXQJw9fX`NgdR=>5TK;qEx!9Dl`an=?$qNGJ%yGlF! z7-aqC=bC`KaG3-bTzKzMnTfkjgpoJ%%)~gkXXh0g|{Cs`af{e^yu()5*Ev99NPU!!Es1 zmW%}eeC7xZ%(;G*Vm^TW<=2klD`vL3Ft+89 z;{BBuue>_gQp4&uxXC9Ly}5otQ^W(4%t4)DW6Z+cgB;-lJ<_+DLINr9E@eAPe&r_2 z{t}Bc#_8-O`Oa8fBB%(0%)f9K>jl5S0}K0`XpIfL);>gxwjMw5>FxO341M!cZZ!)@ z|KdT!QEY&ON_oQ%`IRQma>%iV7XNw+8*%i7Xp#P9`Sd&R_xFA_=}J$B&nf3mt+y*L z)5DBD^Elpwb90#s1gj$?lZUPwee&pj>31N}v!)gm%*so5C2sF5(tZv3@!HRZ1$#ct ztbScIL{!XHQ6&R6qfQmhW#hi)&+Ak+H`)Xh+dNI;<7yj-YDOQ+h-*++Q(7LXIb)jk zB@;s%mwEQi7Wzh7@|Ypg&wqYSKhgAnQi9OH@!;Jij6=F~QCFlA;pHEeZY%w8`-jW9 zP4FHkuU>kB_S5NWDztfgn)=W*B40igyGydJlR5ami4-^f&uE{{ze`MhE}^ literal 0 HcmV?d00001 From 8d3566d25e1e1c6bc6db606ae3bf0f683023c1d1 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 18:34:08 +0800 Subject: [PATCH 225/447] Update README --- docs/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 21ace21acb..a5d518c02a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,13 @@ # E-Duke-8 -E-Duke-8 (pronounced "Educate") helps CS2113/T students learn and understand software engineering and OOP principles through a gamified platform and enhances their learning experience. +E-Duke-8 (pronounced "Educate") helps CS2113/T students **learn and understand software engineering and [OOP](#2-object-oriented-programming-oop) principles** through a gamified +platform and enhances their learning experience. -It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the Command Line Interface (CLI), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. +It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#1-command-line-interface-cli), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. + +On E-Duke-8, you can earn points for yourself as you attempt the quizzes! You can also view the statistics of your past quiz attempts to understand your current level of mastery of the various topics! + +Challenge your friends to see who can earn the most points on E-Duke-8! Useful links: * [User Guide](UserGuide.md) From bfd9be00429df2c2c63fdca9e21279985caadb95 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Wed, 28 Oct 2020 18:39:30 +0800 Subject: [PATCH 226/447] Update UG introduction --- docs/README.md | 2 ++ docs/UserGuide.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/README.md b/docs/README.md index a5d518c02a..d6ba576be6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,6 +5,8 @@ platform and enhances their learning experience. It is a desktop application where CS2113/T students can attempt bite-sized quizzes, through the [**Command Line Interface (CLI)**](#1-command-line-interface-cli), to test their understanding of the concepts taught, and serves to consolidate key concepts for easy revision. +If you are a CS2113/T student yourself, do give E-Duke-8 a try! + On E-Duke-8, you can earn points for yourself as you attempt the quizzes! You can also view the statistics of your past quiz attempts to understand your current level of mastery of the various topics! Challenge your friends to see who can earn the most points on E-Duke-8! diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8f155eb11a..07989f4afa 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -33,6 +33,8 @@ On E-Duke-8, you can earn points for yourself as you attempt the quizzes! You ca Challenge your friends to see who can earn the most points on E-Duke-8! +Understand more about E-Duke-8, and how you can use it to aid your learning, through this User Guide. + ## 2. Quick Start 1. Ensure that you have Java 11 or above installed. From dd332ed7197f1242f8ca86839fd65b9c2964a9e4 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 28 Oct 2020 19:26:17 +0800 Subject: [PATCH 227/447] Add junit tests and javadocs for UserStorage --- data/test/missing_key.json | 5 + data/test/save.json | 1 + data/test/{example.json => topics.json} | 2 +- data/test/user.json | 25 +++++ data/test/wrong_format.json | 3 + src/main/java/seedu/eduke8/Eduke8.java | 2 +- .../seedu/eduke8/storage/LocalStorage.java | 15 ++- .../seedu/eduke8/storage/TopicsStorage.java | 12 +-- .../seedu/eduke8/storage/UserStorage.java | 22 ++++- src/test/java/seedu/eduke8/Eduke8Test.java | 5 + .../eduke8/storage/TopicsStorageTest.java | 39 +++++--- .../seedu/eduke8/storage/UserStorageTest.java | 98 +++++++++++++++++++ 12 files changed, 198 insertions(+), 31 deletions(-) create mode 100644 data/test/missing_key.json create mode 100644 data/test/save.json rename data/test/{example.json => topics.json} (98%) create mode 100644 data/test/user.json create mode 100644 data/test/wrong_format.json create mode 100644 src/test/java/seedu/eduke8/storage/UserStorageTest.java diff --git a/data/test/missing_key.json b/data/test/missing_key.json new file mode 100644 index 0000000000..38f3705a18 --- /dev/null +++ b/data/test/missing_key.json @@ -0,0 +1,5 @@ +[ + { + "missing": "keys" + } +] \ No newline at end of file diff --git a/data/test/save.json b/data/test/save.json new file mode 100644 index 0000000000..2943403bcb --- /dev/null +++ b/data/test/save.json @@ -0,0 +1 @@ +[{"notes":[],"questions":[],"topic":"First Topic"},{"notes":[],"questions":[],"topic":"Second Topic"}] \ No newline at end of file diff --git a/data/test/example.json b/data/test/topics.json similarity index 98% rename from data/test/example.json rename to data/test/topics.json index 37d5b33a8a..926cd731f0 100644 --- a/data/test/example.json +++ b/data/test/topics.json @@ -1,6 +1,6 @@ [ { - "topic": "OOP", + "topic": "First Topic", "questions": [ { "description": "What is encapsulation?", diff --git a/data/test/user.json b/data/test/user.json new file mode 100644 index 0000000000..ce9ecdf100 --- /dev/null +++ b/data/test/user.json @@ -0,0 +1,25 @@ +[ + { + "notes":[], + "questions": [ + { + "correct":true, + "bookmarked":true, + "hint":true, + "description":"First question description." + }, + { + "correct":false, + "bookmarked":false, + "hint":false, + "description":"Second question description." + } + ], + "topic":"First Topic" + }, + { + "notes":[], + "questions":[], + "topic":"Second Topic" + } +] \ No newline at end of file diff --git a/data/test/wrong_format.json b/data/test/wrong_format.json new file mode 100644 index 0000000000..4435010b3e --- /dev/null +++ b/data/test/wrong_format.json @@ -0,0 +1,3 @@ +{ + "wrong": "format" +} \ No newline at end of file diff --git a/src/main/java/seedu/eduke8/Eduke8.java b/src/main/java/seedu/eduke8/Eduke8.java index ee4d1c312f..501e22ace0 100644 --- a/src/main/java/seedu/eduke8/Eduke8.java +++ b/src/main/java/seedu/eduke8/Eduke8.java @@ -48,7 +48,7 @@ private Eduke8(String dataPath, String logPath, String userPath) { userStorage = new UserStorage(userPath, topicList, bookmarkList); userStorage.load(); - } catch (ParseException | IOException e) { + } catch (ParseException | IOException | ClassCastException e) { ui.printError(ERROR_STORAGE_FAIL); LOGGER.log(Level.WARNING, ERROR_STORAGE_FAIL); System.exit(1); diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index b740e3a75b..06c67544f6 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -13,6 +13,14 @@ import java.util.logging.Logger; public abstract class LocalStorage implements Storage { + protected static final String KEY_TOPIC = "topic"; + protected static final String KEY_QUESTIONS = "questions"; + protected static final String KEY_DESCRIPTION = "description"; + protected static final String KEY_OPTIONS = "options"; + protected static final String KEY_HINT = "hint"; + protected static final String KEY_EXPLANATION = "explanation"; + protected static final String KEY_CORRECT_OPTION = "correct"; + protected static final String PATH_SEPARATOR = "/"; protected String filePath = new File("").getAbsolutePath(); protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); protected File file; @@ -31,8 +39,9 @@ public File save() throws IOException { } @Override - public ArrayList load() throws IOException, ParseException, Eduke8Exception { - return null; + public ArrayList load() + throws IOException, ParseException, Eduke8Exception, ClassCastException, NullPointerException { + return new ArrayList<>(); } protected JSONArray getJsonArrayFromFile() throws IOException, ParseException { @@ -47,7 +56,7 @@ protected JSONArray getJsonArrayFromFile() throws IOException, ParseException { private String appendRelativePath(String originalPath, String relativePath) { String fullPath = originalPath; - String[] relativePathSplit = relativePath.split("/"); + String[] relativePathSplit = relativePath.split(PATH_SEPARATOR); for (String path: relativePathSplit) { fullPath += File.separator + path; } diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index 1c840268ff..ed010d6ae0 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -20,14 +20,6 @@ public class TopicsStorage extends LocalStorage { - private static final String KEY_TOPIC = "topic"; - private static final String KEY_QUESTIONS = "questions"; - private static final String KEY_DESCRIPTION = "description"; - private static final String KEY_OPTIONS = "options"; - private static final String KEY_HINT = "hint"; - private static final String KEY_EXPLANATION = "explanation"; - private static final String KEY_CORRECT_OPTION = "correct"; - public TopicsStorage(String filePath) { super(filePath); } @@ -38,10 +30,12 @@ public TopicsStorage(String filePath) { * @return Topics loaded into an ArrayList. * @throws IOException If the file is not found or cannot be read. * @throws ParseException If the file contents cannot be parsed as a JSON. + * @throws ClassCastException If the the nesting of arrays and objects in the JSON is wrong + * @throws NullPointerException If the keys required are not present in the file. */ @Override @SuppressWarnings("unchecked") - public ArrayList load() throws IOException, ParseException { + public ArrayList load() throws IOException, ParseException, ClassCastException, NullPointerException { JSONArray topicsAsJsonArray = getJsonArrayFromFile(); //Iterate over topics array diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 907f185a43..41fe6fb0a8 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -29,6 +29,13 @@ public UserStorage(String filePath, TopicList topicList, BookmarkList bookmarkLi this.bookmarkList = bookmarkList; } + /** + * Saves user attributes to a local file in JSON format from the topicList and bookmarkList. + * Returns the file where data was written to. + * + * @return File where data was written to. + * @throws IOException If the file is not found or cannot be written to. + */ @Override @SuppressWarnings("unchecked") public File save() throws IOException { @@ -49,10 +56,21 @@ public File save() throws IOException { return file; } + /** + * Loads user attributes from a local file in JSON format into the topicList and bookmarkList. + * Returns the topics in the topicList. + * + * @return Topics from the topicList in an ArrayList. + * @throws IOException If the file is not found or cannot be read. + * @throws ParseException If the file contents cannot be parsed as a JSON. + * @throws ClassCastException If the the nesting of arrays and objects in the JSON is wrong + * @throws NullPointerException If the keys required are not present in the file. + */ @Override - public ArrayList load() throws IOException, ParseException, Eduke8Exception { + public ArrayList load() + throws IOException, ParseException, Eduke8Exception, ClassCastException, NullPointerException { if (!file.exists()) { - return new ArrayList<>(); + return super.load(); } JSONArray topicsAsJsonArray = getJsonArrayFromFile(); diff --git a/src/test/java/seedu/eduke8/Eduke8Test.java b/src/test/java/seedu/eduke8/Eduke8Test.java index 1705d76bd2..4cb2ec2c42 100644 --- a/src/test/java/seedu/eduke8/Eduke8Test.java +++ b/src/test/java/seedu/eduke8/Eduke8Test.java @@ -27,6 +27,11 @@ public abstract class Eduke8Test { "Option A gives the best explanation out of all."; protected static final String NONSENSE_DESCRIPTION = "Nonsense"; + protected static final String DATA_TEST_INVALID_PATH = "data/test/invalid.json"; + protected static final String DATA_TEST_EMPTY_JSON = "data/test/empty.json"; + protected static final String DATA_TEST_WRONG_FORMAT_JSON = "data/test/wrong_format.json"; + protected static final String DATA_TEST_MISSING_KEY_JSON = "data/test/missing_key.json"; + protected TopicList createTestTopicList() { Topic topic1 = createTestTopic(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); Topic topic2 = createTestTopic(PLACEHOLDER_TOPIC_TWO_DESCRIPTION); diff --git a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java index 59ec26da38..2bed34b7e5 100644 --- a/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java +++ b/src/test/java/seedu/eduke8/storage/TopicsStorageTest.java @@ -2,6 +2,7 @@ import org.json.simple.parser.ParseException; import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; import seedu.eduke8.common.Displayable; import seedu.eduke8.question.QuestionList; import seedu.eduke8.topic.Topic; @@ -12,36 +13,44 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -class TopicsStorageTest { +class TopicsStorageTest extends Eduke8Test { + public static final String DATA_TEST_TOPICS_JSON = "data/test/topics.json"; + @Test public void load_invalidPath_expectIoException() { - TopicsStorage topicsStorage = new TopicsStorage("data/test/invalid.json"); + TopicsStorage topicsStorage = new TopicsStorage(DATA_TEST_INVALID_PATH); assertThrows(IOException.class, topicsStorage::load); } @Test public void load_emptyJson_expectParseException() { - TopicsStorage topicsStorage = new TopicsStorage("data/test/empty.json"); + TopicsStorage topicsStorage = new TopicsStorage(DATA_TEST_EMPTY_JSON); assertThrows(ParseException.class, topicsStorage::load); } @Test - public void load_exampleJson_returnsTopicsFromJson() { - TopicsStorage topicsStorage = new TopicsStorage("data/test/example.json"); + public void load_wrongFormatJson_expectClassCastException() { + TopicsStorage topicsStorage = new TopicsStorage(DATA_TEST_WRONG_FORMAT_JSON); + assertThrows(ClassCastException.class, topicsStorage::load); + } - try { - ArrayList topics = topicsStorage.load(); - assertEquals(topics.size(), 2); + @Test + public void load_missingKeyJson_expectNullPointerException() { + TopicsStorage topicsStorage = new TopicsStorage(DATA_TEST_MISSING_KEY_JSON); + assertThrows(NullPointerException.class, topicsStorage::load); + } - Topic firstTopic = (Topic) topics.get(0); - assertEquals(firstTopic.getDescription(), "OOP"); + @Test + public void load_exampleJson_returnsTopicsFromJson() throws IOException, ParseException { + TopicsStorage topicsStorage = new TopicsStorage(DATA_TEST_TOPICS_JSON); - QuestionList firstQuestionList = firstTopic.getQuestionList(); - assertEquals(firstQuestionList.getCount(), 2); - } catch (ParseException | IOException e) { - e.printStackTrace(); - } + ArrayList topics = topicsStorage.load(); + assertEquals(topics.size(), 2); + Topic firstTopic = (Topic) topics.get(0); + assertEquals(firstTopic.getDescription(), PLACEHOLDER_TOPIC_ONE_DESCRIPTION); + QuestionList firstQuestionList = firstTopic.getQuestionList(); + assertEquals(firstQuestionList.getCount(), 2); } } diff --git a/src/test/java/seedu/eduke8/storage/UserStorageTest.java b/src/test/java/seedu/eduke8/storage/UserStorageTest.java new file mode 100644 index 0000000000..a612e6b0b1 --- /dev/null +++ b/src/test/java/seedu/eduke8/storage/UserStorageTest.java @@ -0,0 +1,98 @@ +package seedu.eduke8.storage; + +import org.json.simple.parser.ParseException; +import org.junit.jupiter.api.Test; +import seedu.eduke8.Eduke8Test; +import seedu.eduke8.bookmark.BookmarkList; +import seedu.eduke8.common.Displayable; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.question.Question; +import seedu.eduke8.topic.Topic; +import seedu.eduke8.topic.TopicList; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class UserStorageTest extends Eduke8Test { + public static final String DATA_TEST_USER_JSON = "data/test/user.json"; + public static final String DATA_TEST_SAVE_JSON = "data/test/save.json"; + private final TopicList topicList; + private final BookmarkList bookmarkList; + + public UserStorageTest() { + topicList = createTestTopicList(); + bookmarkList = new BookmarkList(new ArrayList<>()); + } + + @Test + public void save_newPath_returnsCreatedFile() throws IOException { + UserStorage userStorage = new UserStorage(DATA_TEST_SAVE_JSON, topicList, bookmarkList); + File returnedFile = userStorage.save(); + assertTrue(returnedFile.exists()); + + File correctFile = new File(getSaveTestPath()); + + assertEquals(returnedFile, correctFile); + } + + @Test + public void load_invalidPath_returnsEmptyArrayList() throws ParseException, Eduke8Exception, IOException { + UserStorage userStorage = new UserStorage(DATA_TEST_INVALID_PATH, topicList, bookmarkList); + ArrayList topics = userStorage.load(); + assertEquals(topics.size(), 0); + } + + @Test + public void load_emptyJson_expectParseException() { + UserStorage userStorage = new UserStorage(DATA_TEST_EMPTY_JSON, topicList, bookmarkList); + assertThrows(ParseException.class, userStorage::load); + } + + @Test + public void load_wrongFormatJson_expectClassCastException() { + UserStorage userStorage = new UserStorage(DATA_TEST_WRONG_FORMAT_JSON, topicList, bookmarkList); + assertThrows(ClassCastException.class, userStorage::load); + } + + @Test + public void load_missingKeyJson_expectNullPointerException() { + UserStorage userStorage = new UserStorage(DATA_TEST_MISSING_KEY_JSON, topicList, bookmarkList); + assertThrows(NullPointerException.class, userStorage::load); + } + + @Test + public void load_exampleJson_returnsUserAttributesFromJson() throws ParseException, Eduke8Exception, IOException { + UserStorage userStorage = new UserStorage(DATA_TEST_USER_JSON, topicList, bookmarkList); + + userStorage.load(); + Topic topic = (Topic) topicList.find(PLACEHOLDER_TOPIC_ONE_DESCRIPTION); + + Question questionOne = (Question) topic.getQuestionList().find(PLACEHOLDER_QUESTION_ONE_DESCRIPTION); + assertTrue(questionOne.wasAnsweredCorrectly()); + assertTrue(questionOne.wasHintShown()); + assertNotNull(bookmarkList.find(PLACEHOLDER_QUESTION_ONE_DESCRIPTION)); + + Question questionTwo = (Question) topic.getQuestionList().find(PLACEHOLDER_QUESTION_TWO_DESCRIPTION); + assertFalse(questionTwo.wasAnsweredCorrectly()); + assertFalse(questionTwo.wasHintShown()); + assertNull(bookmarkList.find(PLACEHOLDER_QUESTION_TWO_DESCRIPTION)); + } + + private String getSaveTestPath() { + String fullPath = new File("").getAbsolutePath(); + String[] relativePathSplit = UserStorageTest.DATA_TEST_SAVE_JSON.split("/"); + for (String path: relativePathSplit) { + fullPath += File.separator + path; + } + + return fullPath; + } +} From b624be9fbb2d511899057621230711ae9be38609 Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Wed, 28 Oct 2020 19:30:34 +0800 Subject: [PATCH 228/447] Refactor with constants, assertions, logging --- .../seedu/eduke8/storage/LocalStorage.java | 4 ++- .../seedu/eduke8/storage/TopicsStorage.java | 2 +- .../seedu/eduke8/storage/UserStorage.java | 36 +++++++++++-------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/main/java/seedu/eduke8/storage/LocalStorage.java b/src/main/java/seedu/eduke8/storage/LocalStorage.java index 06c67544f6..9da7851fd6 100644 --- a/src/main/java/seedu/eduke8/storage/LocalStorage.java +++ b/src/main/java/seedu/eduke8/storage/LocalStorage.java @@ -19,7 +19,9 @@ public abstract class LocalStorage implements Storage { protected static final String KEY_OPTIONS = "options"; protected static final String KEY_HINT = "hint"; protected static final String KEY_EXPLANATION = "explanation"; - protected static final String KEY_CORRECT_OPTION = "correct"; + protected static final String KEY_CORRECT = "correct"; + protected static final String KEY_NOTES = "notes"; + protected static final String KEY_BOOKMARKED = "bookmarked"; protected static final String PATH_SEPARATOR = "/"; protected String filePath = new File("").getAbsolutePath(); protected static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); diff --git a/src/main/java/seedu/eduke8/storage/TopicsStorage.java b/src/main/java/seedu/eduke8/storage/TopicsStorage.java index ed010d6ae0..862e15b0bf 100644 --- a/src/main/java/seedu/eduke8/storage/TopicsStorage.java +++ b/src/main/java/seedu/eduke8/storage/TopicsStorage.java @@ -91,7 +91,7 @@ private Question parseToQuestionObject(JSONObject question) { private Option parseToOptionObject(JSONObject option) { String optionDescription = (String) option.get(KEY_DESCRIPTION); - boolean isCorrectAnswer = (boolean) option.get(KEY_CORRECT_OPTION); + boolean isCorrectAnswer = (boolean) option.get(KEY_CORRECT); Option optionAsObject = new Option(optionDescription); diff --git a/src/main/java/seedu/eduke8/storage/UserStorage.java b/src/main/java/seedu/eduke8/storage/UserStorage.java index 41fe6fb0a8..02c5c3b06e 100644 --- a/src/main/java/seedu/eduke8/storage/UserStorage.java +++ b/src/main/java/seedu/eduke8/storage/UserStorage.java @@ -18,6 +18,7 @@ import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; +import java.util.logging.Level; public class UserStorage extends LocalStorage { private BookmarkList bookmarkList; @@ -41,6 +42,8 @@ public UserStorage(String filePath, TopicList topicList, BookmarkList bookmarkLi public File save() throws IOException { file = super.save(); + assert file.exists(); + // Get all the questions seen before JSONArray topics = new JSONArray(); @@ -53,6 +56,8 @@ public File save() throws IOException { writer.write(topics.toJSONString()); writer.flush(); + LOGGER.log(Level.INFO, "User data saved to file"); + return file; } @@ -72,6 +77,7 @@ public ArrayList load() if (!file.exists()) { return super.load(); } + assert file.exists(); JSONArray topicsAsJsonArray = getJsonArrayFromFile(); @@ -79,17 +85,19 @@ public ArrayList load() parseFromTopicJson((JSONObject) topic); } + LOGGER.log(Level.INFO, "User data loaded from file"); + return topicList.getInnerList(); } private void parseFromTopicJson(JSONObject topic) throws Eduke8Exception { - String topicDescription = (String) topic.get("topic"); + String topicDescription = (String) topic.get(KEY_TOPIC); Topic topicObject = (Topic) topicList.find(topicDescription); - JSONArray questions = (JSONArray) topic.get("questions"); + JSONArray questions = (JSONArray) topic.get(KEY_QUESTIONS); loadQuestionAttributes(questions, topicObject); - JSONArray notes = (JSONArray) topic.get("notes"); + JSONArray notes = (JSONArray) topic.get(KEY_NOTES); loadNotes(notes, topicObject); } @@ -108,16 +116,16 @@ private void loadQuestionAttributes(JSONArray questions, Topic topicObject) thro } private void parseFromQuestionJson(QuestionList questionList, JSONObject question) throws Eduke8Exception { - String questionDescription = (String) question.get("description"); + String questionDescription = (String) question.get(KEY_DESCRIPTION); Question questionObject = (Question) questionList.find(questionDescription); questionObject.markAsShown(); - if ((boolean) question.get("correct")) { + if ((boolean) question.get(KEY_CORRECT)) { questionObject.markAsAnsweredCorrectly(); } - if ((boolean) question.get("bookmarked")) { + if ((boolean) question.get(KEY_BOOKMARKED)) { bookmarkList.add(questionObject); } - if ((boolean) question.get("hint")) { + if ((boolean) question.get(KEY_HINT)) { questionObject.getHint().markAsShown(); } } @@ -125,13 +133,13 @@ private void parseFromQuestionJson(QuestionList questionList, JSONObject questio @SuppressWarnings("unchecked") private JSONObject parseToTopicJson(Displayable topicObject) { JSONObject topic = new JSONObject(); - topic.put("topic", topicObject.getDescription()); + topic.put(KEY_TOPIC, topicObject.getDescription()); JSONArray questions = getQuestionsJsonArray((Topic) topicObject); - topic.put("questions", questions); + topic.put(KEY_QUESTIONS, questions); JSONArray notes = getNotesJsonArray(((Topic) topicObject).getNoteList()); - topic.put("notes", notes); + topic.put(KEY_NOTES, notes); return topic; } @@ -160,10 +168,10 @@ private JSONArray getQuestionsJsonArray(Topic topicObject) { private JSONObject parseToQuestionJson(Question questionObject) { JSONObject question = new JSONObject(); - question.put("description", questionObject.getDescription()); - question.put("correct", questionObject.wasAnsweredCorrectly()); - question.put("bookmarked", bookmarkList.find(questionObject.getDescription()) != null); - question.put("hint", questionObject.wasHintShown()); + question.put(KEY_DESCRIPTION, questionObject.getDescription()); + question.put(KEY_CORRECT, questionObject.wasAnsweredCorrectly()); + question.put(KEY_BOOKMARKED, bookmarkList.find(questionObject.getDescription()) != null); + question.put(KEY_HINT, questionObject.wasHintShown()); return question; } From 7eada33c3eb98fa9958afa565cf75bf7722fee82 Mon Sep 17 00:00:00 2001 From: Zhi-You Date: Thu, 29 Oct 2020 00:01:46 +0800 Subject: [PATCH 229/447] Fix Stats class diagram. --- docs/diagrams/Stats.drawio | 2 +- docs/images/Stats.png | Bin 73706 -> 73238 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/diagrams/Stats.drawio b/docs/diagrams/Stats.drawio index b56c3ccba2..6e6b167917 100644 --- a/docs/diagrams/Stats.drawio +++ b/docs/diagrams/Stats.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/images/Stats.png b/docs/images/Stats.png index c0438e811cb889e8c8c428d4e224561aa6a32bd2..05c4de95f1ab7700802da43a9015382658e63c0e 100644 GIT binary patch literal 73238 zcmd3NcT`hbw=W_dBNnQP6$n+a1QL>bnj9fcSAxef@@LaBpmnKL>@xRA-;k!36FCsUlu!(848$4}Uyya2rp7D|kR8{Ju;f5+=bN zf0ZgpBoM{2q_8^88&8^sC&F!a7K6_Ya`6g)>m;d61pm-QaWW?I5&=Lg+F^X6!BaX)~u!XU~nn+!$ zJT;c7(&NJj@rl$(u{T|)r7#m1-agDoe}7?YKnfC{m`n&Dr?ACRu0k(T(^3PCkvct| zPom=mLQh&iDmjiAuaPDQ_;HB}Zak5x29DCa0|df&Z>f$?(F@qI6tT`bjFV`fhQK2u zIV?uR@$y0>OrI1NFA6J+DWS_#2`PzkR-giIh~ng)A_j|%Pte2(X(53MyigJ(^imPz z44niYqKpgT1ct|Qh1?(^Oh+L3Cj`;>UY<%Hy*J{e3n9g%CLwVOmVg+54^@SvL9XdI=*Fd=g~I{y3jRx<iS}9%-P7dKIiNSG7I*yEPIgTR_V=zNwJqg5^coM~16iP6X2|S&GoDdSo z(`!5l5_~*C?d{JbhS5_Pc$JFGRwa^XG?jo7%b+FWLHm#dP_-08tRNmHr1;B|Wr#vY zmgtix-r?S1vC7cEIHIRFLlq#wClQPkPf3tZ7)e9Z8a4i8N)k1YNe#tId1QE5MI*+f z2BjGET4ACjn8ib6Y%)Ebqxa@$jX|OqAB8T25gtYXYe17oxuIm0SRKy_f}a#G3PXvP z#s>-ntdO7p#7n60^w%Lw5lPC?^Ae2yN$4r^#T;#LjJGllr}9!z0ti7$9n%m>BzPNi z6gnqaDVNEahB$rz+kj|Qlw_$8Ct?}{7~0qbtt45(H)tqCHq}cMuH~qBT(OppGsGbR zjWzX-Gj4l3*jBM3TjDc?^w6 zr_%+{5>qq@1klzbmY8fz7BEur0@zNdEX;@NNfd=C$cc%e)F8PmP^HCba7rJQJ|q|h zM1VX{=rVku+<<4ZL%gYhp%EIPLBQgL3iVnhnHoa!)C(9X)Y#x8FG8G`mZ+5z!^H}o zzY<=gfvu#V5*0@YXXB+zBAuMdQ}g`e3=}Us1D=KB6`^8ch&)k12~R>frxql036UW( zFBRSgiId3m!o-L$N&-u-7n5*ePk(P+oL49kBS|Lf=vuikTt`h5i4{U6PY_BMdIp5C zm0o&|fSL#8GWBp%<(bS6k5eKFk~lUIPp88zf;V5SNR15E z#4*J1Qx?k5s1YO%6swg9iD7yHL9I!QPfCgmVfiOS;P_k$ml(+8duk1Q zB8eK}B~^0#)v6e}cepT2m#T}GMHoCIabhxC!|?Z~#rY(J#fmjPQhzBf5((F6G_ew1 zyn;v+>V@<;gD5;e$~B}a4f2Fkja2C=WyK^2V^Ts>V#xX+D&AkA1;kQhq3(c5Ss zk~wi|0iGxcVB&Bo1~Dy05@F;ayg2aM1&lw3ZjG)ql%K$66cQ3h*yp)^Wj7)~uGdm?NfV`Qi>Je(;JCTIg< z0#Vrkx(PAhogx_;MUXZik(R2BTOF{AfkIk82EURflWi? zNH8amLsh7_JOz^^$EO+yT1i3zm7k*V)RI}WL^TUZ(vrOr$cjiK8RWDRFZ;`_)w9EWzeJ$1&l}mEf&$s^`ay> zA@g98J3u`z0;I5^fo3BqBE0e@u+_cAQ-gCf>e=rB3CPy$N7*0BZ9oi()ggDU^Y=K50H?l zs<=P_Sw%JynE?vES2$k6qt0!or7EDlZ(>J_W@WW!H^g2z&M%Y-p- zt@95Lic5}D#)`s%dBLmzU5YSHO46zQ!{H%6n1+)wkYE~v9K@0(da=|B0Y1b#OoeAM zvSc)6>ZoK@ zkPlx);%EY5=*swbPk{{4;iv(T#6%i3Sg2Iclx%M<4vP}>y$)) zd4SSCS&Rr&DNIC3r^N=QD#NK^5mJeS6-uJ;1C?;pG-e=!lguU>NZ}$4K9b^%$NL*S z8A;?MF)<}PP8&&#Aj*|IBtASbA|jX)96(`2rpN+4xheQaX@Hohm(e4n{zghnfX<7J ziaA}TF?y-vDUsZyFb;#K3;^+ni||HNLV}!aFlfb83BXbB6af+*hEwo@B}67p=S3!Z zvqI%^B`HKilZvQGEGj1j0mDEG=E9tMUW7m%u2w}R@WMhpWeSnMQl?ez2m;Gn z6DLy1n2|a}FUEz2i6lv>Ts)sGN|L1LLevUT5T8$#C*kFRdWEMzAAxRKM2mn>ha%R} zG<3QkDA?PZh6XTt&qTgjsYUfo6ht#*^$qXZ;B!u7-f+Q-U zjKC1+V^X{gLV{k-(Q`r*lyV3$1Nbe?iIwb648Z9lbtGew zjLzi~yl7k(uM~&#S!yLKh#nH-70LxuPf66osBpoa zxMZ!K5gr?_BLu1#@sdPE3CA)X}>h!i?`1ks0P6iEqk)Mwze z{DcHVkcu-ZBaNxC@rq!7LIh1m1OCt%K?)j|#uMTb14B@9gj6Y_k@3|@5qvQjB54XE zLIDvNSV=M}LIIIDh9(%W8O@Uq7#j5!{$XhNiicR7_K&!?KM023ePC zOac*qeoFM4lA-Uz1iD|<7xoOgcy7|}G29jJOPNWuF_Vmhbko&KcOGMoy@dHnX?ky& zRU{nx@oUBnJIUd%1GB;t_WKRKvEbHglgnnY8619NQDsMZ+z=aT-U^OupyM;A@8Xh# zwu5y(uePMU_3e4|>1*qsL5o}Ku0N73xjVaW%a0SXLq95-)=!_WuXivRfblaiwM;iL z`%jmV)+uAK=1yk+ejgoDZsUgpijg7z&1()%EV*`O|29|uv<~SeSf+_{?tfhh9wW9F zey`47*HAPmwACqp7VrMgo1U2EmK$anD`sk*GZ@^)f4sVeVq%r)XxdM9vCI34^(U^V zG4n)itc#{YRQ6^|%j|ydz*({N1DhNKtBE>7xK( z!EVBUQTfIC=_Ny*8`3N>xv{@Dl3`++?LJ_Q`|lNBI5#{!vU%~@*Nb4W=S^!L^lxwL zBQs0x>#ilK7C_e4W;5Ze@CPT7r>!yR@po{~_5aOZQ;b8InO_;EpS+^ACMz#$dWY}( zS=g2tzlPiDX6<0TUD^#i*!^aV)d??d(-aUSEJH77yQE^t-cix_7 z7xU|KY}{&(#9gdCv9PDAJ7Q<CL|;RiIb zmV@$1Wpis(r>92O-Rk}H)|Jhid;4h0l@?i7t~+-1WsiMd3lDw%eBi*^J_lvY z(UZ|zU;W0noZkqY2l|=*A3PaoTq=dioZU~hFY>4=lX7+pX<-Nwcp!qN8T#`4!g(J z-Ff`5TABa4rDw+v>dH~)Y1Ngz`^`^YZO+oaTc*Hlig>eg%5NFmnhgxeZ6BGm6eT{? zv_dk}id)_~wYv4`#ME|2lJZggxh}`9X%m}PJvJXPIceA!FXz|1X0d)|eztqXXWH^y z^|K4qrI)g;oUk!Xw6aUytaVe=QB_H5C;IB7BDjdS<=uQRFTqkB@VcNUzH`mz<5R`* z2UYT@xVc}SGG_jmdUVOdBPUAwwnm*vnE6FJ{BOD#C|%EoCuN{?X-&6bneIFFqw=@u zMjx45S1{&eb}V&-N0QKr`e;sSx5PFLi_NP%p?$@vjyd~B^`dVdcgn*LR4s28Pd@qe zCbc4sRThn$JHnl$<}$VwkPeis&uwqv$X`F7jXB{Kka?BUcjoio%Cr~+yrX)s#J*od z#+p$^CvCelBVyKyDsH8w3rYBj&CPb4yt>kwo6K76wSg$#`0z*^-F6<(6P0z!n|`oZ zK6~isX-U?sO3p~`hzT=pFORIYJ$CDH*|+@ki#U6%o{~od^o9u-Un| z{};w}P0!K;ARvct4w_~+_RqgwAwx!TpK^G)O@cV8?VP19&el}xAx$0rKLdlhXpd~~ ziRO8t0{L!Xg~x<)-fxrVXEDT~tlN^v?$>KSnd#4^?4Q26*S96(=ri5wlPgm8uRZi2 z2RY)yMOrQAm&{pm@<@r>BStQt7wX#^J!=bJ+`TN0 z=zVZGEj_z1lOS?Lt@73ps8M+$>cyZxcA5c~?hc9Aon5x;^|_L3PEp3^pSA^LMXNQ1 zdB~B6+UFYw4INc8aPSC1$(v`TXPzksG=J%QzMX^4x~BT@{lGajqxzZd5Ml-@MSX8d z>^G@?0t}G+CfA>Do-y0<$?W!l$s3pV8>2>RFh=`j9ls6g;gtAcehofv2hs-o79xi^ zFwM6k<*xl~akm5OIY^6n*_{c7X#U|_?){_qMPT@;6Ij*#79xHAlQ9D=Elm#~MUTI~ zB)zr&`ImibSM}o&Q+~77#Oz;;r0v>O@QM2!0?c}?Di!-M0e0+Fswb}PR zzvXL{i$85DNWuPEa&hJ(E0>-ZgMJ@+y59^q^<-L6zf;RtYMt_K;p5Jq-%5YoPkX=2 ze$_eKZ>L7`ExA8i)L)SCosDr9S5q$zZR-5`;hEyqwUV2Yd;(SsyZl_eu=e`ln6qB< z9`04`OPzUyL>kEA6|@eX^XuF7Hp9tJB`Z{3(&q9DzMpzqPMvi2JstG7eEdS?Sj0!N z>gsIwuENf%I&9gZ?(O!vzMgl6>$Cfklw)^{#1v&Wc+CIC?0L{~^6rUmSC#teN2&W3 z{_1=DPEr5ig7s&UP)C!DXgIwNm#*BZ&sXr*YrtaHg3YM8IC0^XA73xd(O;kQYu3>9 zxxJed{#%Ec9X#2aNQ%2Ktmn?5#l^=jA!VTY-)k23C=A{0H{E-mKfk;-k74_5;nQRBiH}aU{j&hgI@TGj*?v9v+je-{iZn>J!y=(j3&X_JX;jJ+=y- z^CLO5eC6DuaTiCBaJVPaqU-JMXxndWYu|WG)-vNrSm%k3ots+c8QSjbmR;H4$u7Wa z^6piEcC@FCiwRxv;emYIGc5PqDJ;2h2~w8)aNzCv$)?j!el6>}e|_=GiA%nJXgBJw zZ}EM5K$*7h;o+ENb$_iGm#dil1yt16H9fmI?n#)8Gcozs$LYVkQZZ`}_kMVGv5vc) zCK@s5(Ad$v0|#KbSEtj;7>fs6nPnr#3)AL0=N45wy$BA&sUYCoN>S6gK3GTl!O0OIzAJKywt+l51PMQNXUTDAFoOMbok_2Qw)G1MAi z9Q-&%CXA_AE(Nib|JA&MRghg4n^iyE^m6;n?M?&cfsu2|#n_9lZ^<(oF=-AME%%M0 z&#&(&9@QHKmDjcQ0 znk%@oGvJ-Wjg9F@IfM6d@Wd1oKI(w5V6lcRzhV|&+CKW!S87lD_WXpC>xQDXsk_kc z?)kXs@=j4yAePzu#ctt@d|Kh9QTF3s^yVcOozNU&qc~l;Tt< zd48!NZ?1Rm@vqV6s>Ak$Q@>W8tT=q`TB`M$Y?<+=%l#zZAHjzlpMal?35s`h*w(t_ zi+IVX33-=>g7x+*7!n^bYt(W3k_V$SGx8^nsb6qF%5F|p`*8PX zmko(~VJEt;aGD zv0vzt7BXj_JNEj3Tf2hu7nPk1dwg&63^&f^8m#)rg!#Pct7}7TqwftEP}=bEMN?at zVBVceAIu!VIsJyezpkA4b?8^`q4tbGuMMC2Ay2Yt#OQqLyWqMndqVzF8jtL{w>uka znlnCg->%ND4~?`{b~m%JH#+5tkw>_}4+_?%#ot`?q#=Wma`V87MGs?!s&&=O)ZM)l`oSL|<;u&u`W+lClPMj3+ZdpyX{paV`4mbC5r? zAAjk3IQqqvf)87#kL#e=GV2V4md_g-0xW!ObDAvXd{-UXw9^+zPX{M!-d=>=)ZMe> zSI^r`kH04r?b$pUoL5Gf&86CuDXB|(rSqeQM0w}u&J*?=ov)M3>`c4CwxSxNV)C8# zbmGjL+AfxUfA047#_)P7thFD#n+T5z||p-De6$F3skK&1SY)d2Pur}&xc zzt4|eT=5jEK06BIKES7#SD0|>{h6VDD1h^ejkw@PG_5dvo2oRfjH;AytAqFcv4&>3_rKFrT(Qi_vgl%a}|rNBl5^c9#-FL zK6_*8(2V^(+=$-H5)e4ODN+_M4)63>{Htfl<2KdV;csR0`yvnc+%RHpXZqa_e*I)y z^)#pA#Z}lFd3_EY=iFuu$k=P$ej$w?7T!J7G|VkMo2RpQ)jB5-=T2!X{n=6aaxVT3 zSSzZ_8kfpb5;xuZ8&S8pne$FK!vqkvte;qZ0Bea(uzYdMKr@FmB>*Ax3CB)S&aEA% ztiPG|ac${-@4+)HGG*l-@oape&(HPGe&m(i-li`@J%&$)6!+47c2E4nSaU zN(KD~_(Chm#tgpWi+F=AP7E5$*w9RZ;4Lj6`0Pj^j_)XL9*Ie2z%B#Qb#>#db|@z9I%SD* z3c2mPc2@U_Z~44Ct_^7+@?Xt$j{u9k9xjf|@EZemzvwh;P=%G%4!>&+wiw%NKQ6VX z^I+Yzl9`5se&x79rYGERiMQQ*&e;TapNxrI?w1Mg@Gt$DJjiqciUTYcv`wQUdp2F{ zm~Pg{PS1Lz>9gqk>xEO+a&c`{p4Izd43gCN;+6sXdL zMXGOLGoGaTxxur92ah6UVoems!Kq?ngf1PT+tJ^JnJ6GW;H+aI0<53oqd6+@EJ6F}F)# zu+Dx!_k4`X9yh|_h7auT+8EwIv%Qcz*fDv_8}1xSZmQYF1fXm#=KYOLLur#I!JuV@ zGc7+2^#?hyR5V~Pw&2B>j;$dRoh-SH&pf7NnwV|g>Z04{P7PcGuCuR|-R5I!DqN9E1+-4Va%rHmuA?bd{FaXj|sRi@Xj@6}nC_^FN z!Y}v5sO1kkz-bSa2WV^4*r~;|0%*^WNc<4WE{-;Gm! zi@S*>;E9$49(e|P0$PVvQsJPcCd~yZ{I>GU-k$okxTpBgqVp5Ts;x&3qp`v`dB^b| zUmkkg5zGK&=m+^GPuP$UEFo^97wq@)@|9;$I59ameZJV^UF-~q&@6M#*ukw~z}Xc6 zuE32yRa`rii7!Ar`H#*gTmD}CZ%*mqZY67VXFv2PZFt*OSMuC5;V-CDx0F6kZ& zk@9p9y`LX<=`glAAod0IT+=8^F7t_V5E=|Vv08&E0=#_uY?cMRw47Qtw>J6m)OoeH zua?YgVQ;`~bGcrbdHzqlxV6xQ)w*tKl-Ejka=&bIG38fv)FU=C;cVZc!T;=M%wymZ zCK;N?0O1K{&SPB=q(D>Ms#&?PeOneP=aISg2S$yWd?D%a$+oMda~@wFwQa3ia4lq? zXnF~M6>W3SpI$DLN%}X!YQwu|66AK=C)3J=wAJIs44KJWzj#_y9^uS|y8?W5^E_B% zFo;*G$)BzcA=Yp%E^0pa3W7|^bvrx|Js&-q{aCm0)~HcLYwGJeyKP5O<7eLJ?zpvm zYJl};EZ580$0=(0^LG#eP_d0bLs<_$`~Gq5uBgKcGU{G!S=jpI$%6O_^J!A!+=}k} z3REzb`#qRD*aeoJ4NJd%);Tvd7oY%bGU}~wj5hr-io0cTuhi{n7RC`m&75=Afys5M zzs`X6FCT5iapqA!)?9kr_oYj_ou02~ydLW`uUT`Vdk{H~0+J4}f;UFcY=ub<0zr;j z{&_F_6a8~%b-%{)*$DUDCA~vVyiaobnwh|(#EI(@jm3{Z@J>MHuz6@><$w$gXu_nd zQu8<$EHh?qh9gR}m(6>s?YExWdqSOV`j=6j-+Ar4rRERdOGMQt1~y7M2hi8O*??t0 zV}7>(`e@Exv1!cs(J=2Zw>89;I}SG#CcTY@-nOr9$M}mkx`kMNz1v^ z;dj8gDL3Wg#+G_lru(?{!n?uPeO7MR8pu7mnKrK5@_Lm=s%b`<6=PFpZo>30@N%0I zQ0!Y(y#Jd`>DT3b%jSGt)?WEXG)gYW(<~5@N(T0RrBkuv2vkSx%|34E?2RGGfluE+ z*e;h!cgPTAPvydn@#qUz%svW*U^FgV8wAYCAM)I@<@3Gxjo^%G5nv)~!M@0;;LCkk zr%=7Dq%UYJn)LQkfm7GKD`DuGOw@lkuRarm=|&UU77l_vLy)4$#aeAGH?S1!mw}L2|#$am<9m=Vpb8KoZ4f!9kD8g}4!>zAmuW z(AF2qVOBf7&n_Q~F8I;8;S4r-<88=n*cO{;=W%_P&9iLx1yy~7pRQY(?Y={Ae*rbt zmr7vm)&ia*I1E2ndr-2utN+$uSi9HkJJvZ6cMdw>c3w$6mLle0XI0gKLK8|Dh8 zELkwztTzxgR@%+FN5nFRl&rXnu3gJW&!mq2i{}kf+QF2W>Om{~w!TBBe7jUL2BdJ> zl9;I|TNO47Vs6UMph-8|44~4gK7F_)q^psl*st3N;ecK)gxQ&+i@U+%-DdbaU{{)J z!`v3};2X2d%u(L^U2|VHDcfE2-kJ!MS+-9YFly9^I5rE;=@$mq@;TpkYQRlOi25f9t)4PXaYy3Yb)&(!S}{(&vCZL$}lW`FBrl-P#@D`8vROJQ5n-EaM2 z*60t!j$b@^RdKd^KSzLAcQYV1Q#FtVi_b&1C2HVXWLSfzm{f2ycfsClcQirM2WgjR zGwtC4V0D0uARwc3g5M|DU@*Etlq*|pVS~)Sc0RT9Q9hbQiaBG36g{mmWA%H9VmRTG zPj{(-GCKHze*6+*idr-kuOJ94S|RE1Ak?D$8glq>`zedVC>v)Fcv<@vzjF|#2t}z8 zv%)NAT5-*vVy*xQ4k4DNQ>Og=qn4R|{NTQnJ>yMx0Q}=kHhg|81c%UPG8A1Le8SL` zSmVGb^t7!O9PAtw@jBD*8wyOXi_?zTS?xIVRXQGB{4dPm!|t0|IH&=%o5JGL{B|%g zMQ9cJ~kk-?Uu|Q^xiV+6PlE8iH$iffiFj5@0`~FVXf%bfn|&L}bVU zl*%{bgFsC+P7QO{k7G_=>em4dwCGXhi7uE~X}mQS6@@a8LvFG~j6DPmgJJDi?!3Wf zd(i_MyZBASbkM^U8&{y)DOw6^^J<1T0mK~vYwIv;njAwMVeOHcgz2?Qe_KgZ24;Z_ z6kQYuL3%5LfkSEfxkEDc!pZL0NUv+PM~bEm+?k3Bor_b$nX>p1XXnC8Q$eicG0(6V zej!lj()Qp4$FVFqf2udCsqRi7ETZnQMEDT_Yl~cHMht&F4AiAPEZzbG2YD2uD&Rg9 z2JX;JSOEjafP{$BsaynTCoI0QyYo@gG@`WB0RzZR0paOZ_Im z+1x(eDLKbRJh7AVB0k*m^3P`9rthPeWu+bXMFruXy zz~0}u>zw6+nHFcUHZUlt#(fyNk&mDzlYiqb@~aJZ1_U>93p7malr zMgTJboWgqzDE=e=+ZZhK#k`=wAd$bzkg!WT33?iJ&ud1Y0_~0Bw_At0%}p&OpxYO- zf#XF0TUTZN3v5M2&p7&)|35M60uFg1hrHa|fdv z+Xx%m+aXAW<061#h(q86m?-F_{41mcX4kLmaDdp~xql)Yyk|G!PgwGwfEbOte-rdK zA5qBt05y%%d=7#tIfSr*EqA&-PQcl01VQw~qNj{b==iU^2BG6*Tbp7}iG#L3ivMG*+A6LP8*;%1S1`{4xgThVMxwieWjuDlR z{}xc&gS@rQeEf~mb2EQ2;g+s{yh%nPtg+|cOeRixLni$LdbyBXbpX$vE1&$f*=eW#u<8~Up|Y^123!Lu;y4M@*w z_^H|zhT;DSgNskF9*;dW>(m?3TS!QlpoqM`YvG@|W4qd9WyzW2X3HExQcbUT>@YZj zDQzHIq$5_C+Ym=G+2czDBs9-Ae`~kd1_AROWrn3+x_Tm7)ZaY>?A%83j6({r$JD}9 zha2{$v&_C^%{)Na+6aU9zM0p%)6DMGszG2bJniSY23T)*90>0WJM3`J)4rG#~M^t8Fz zuV*B;hwvX)N^iA7RNDp>w9SjEQa;31CtTg=I_~?5fTqj3#r=hLG|+|cM|!^$?Ja;* z)*r>6J*?L?XPrKMdiVUmL-qGxKHa)8{7gMB^kU2YhpRqq^x6EDvULy|V$=U=4>O$_ z0u~tNHV?I;4$6Z{1rZrz6@u(v^Q*}t*ve(k2?(Kf<~n7&w~Y}~4-^}B?A~(v;H)9I zYoE#k=UKX=4IrAnL$B^Sm35Ez8BTE!0JmS}9_2=4XJgNtIhSLzU6y2a8Cnclp_}b_a`)=LyCiD=I-5nJ9@syx z?k*IG_TOB$Zeef7uDCAimYtyJ1Dx4H*WO(ZJ+P8+f9md z;+|U#`5UBV?^Q^_OX{nkjbeA{-BEcP3S{La;w?tk*s`QLy!q=Wk5A0BwE4TX;IDN) zm-m`y+(oUg<9`-ti;OmP;KppPwBGKW?pAr@3(lXy4Eq=f=>})BDUp@#k?)&iclSpq zI`1ARSP*l59oe(N+zQHttIjQhP7SK*vSY#LM&=2RENLP-ACp~JHHO`Ck^8AHiMk&2 zm00!Z&Er##OMDj+UzaNG+^>{|-hM~0dI2Fc*Qc!_KH`4YEZ(6CUPi*XY^&in89 zG3v5FIt?{E*%8p&l`kyzXZXzlKij=_@sNi!WYV@*Daz|YmW$PxL<4N!I) z$^Cw5^tb9oC!x&S{%f*pX7@6$`$KSt;>8z6zHn+FPcOZG*v_;K#VJ!OMjjY#wWDnH zj;Ldf{ZdupS|%Z6BdpCcbd4SQwJS$YC(4g=JL6Y2La{j1X1^i5V@+jRp9kt`baJ^ej`a4Z952y<%U~{pybJpDtVrIf1UH^2&?mtQ;Tdr zG*5UJ>hZ}u4$A#@uXOLd(v|~=Ly7>zrGjTP4;Wzj!WE_E`{>bw%5IKVb1lbmk3h2E zT>Rmmlf1FH<7Y3bkw)d_*&YAc+qtQ#BU`ooDV67(>l?_pbdQl=v)P?TJGXLA=q{Q= zSNJ9lmb>51`Ew$tXxU&3;tP?KWKFFeuDjTGyRrU^-R^+{E*K}&2iZGX(!kcQve|+9 zam(FiVA|@Q(MIBv-VUF0DyMWx*pv_2vU{x)E4nU3KU4lF=#-E9Nu1zOmi_fGbga-#zJU zMcuA)^QDk8(t76e?ybHHzto^*T+@}~PfS^wTVKerZ|-9Ev>8hK z9`&3YokI&pxZ47IJ>=7chZ`Va=&)B{eYbIsuj8&y4rR&8R@T)k9&ImJUFX4LOkZJt z*wmB?ITxPU^rB0DAVtYz=iSIBn%@mKVNa4RmebH=bNKO{ZN?+;Um zd`Mu+>vMSXtzhDnXz!8V5}3F}!W&RJVP?1Ro zI-%fX1yVBx0}%QV_$@S8p*jOs$^?gpnEn7ZG~2)3As=bAqw?Tc6^fN1ADnT}a)J8( z$o>3C9Bg!{kD1ot1|2qY=H z#jG0Z-RS$_oXzn&bgHF07Bubu#81j2GrLfu&D8m6t1>=*8@BSO&4SHhFdUY$1%AX9HG+?(l_k9lu-&*_GD;tJ0&C$U>{v1h}7qfgObXU>GA`yC(h-cqReHS%Wa z1-{jZ=BQ0}15dnQ%YHaEkl$GtA~XH0z#Q7%^cYk%#A-*wwbKNQndO=+zy8eEM_06% zQopZ!HpVs=RAO6ehNoq_2M~1f>Gb)}vfW>N8Z#=O0ieK|4{%Nw_>Yh#fqmT8MYGR7 zeFH~(|4;QGv%P4!V(*qN-YH9Nt=YOn#~V&4&cGz+Z5(4~r`jhtbda0hu{Su~nCZzK z45u+8<f_#srf8g?f{oxdvz134w9?nZ#_^X+y1L`cG`oSdk#z7a-i98N<_su`TYtP zF5s)wB|2j_J{#{91B5w9gb7yYBd&OMjVt_9v&8 zDXwky$=kgN#UMiI7%2mr^r(9$={WQNy)k#p$!a(_TsL`zpB$Xw?Yp0ky(T}a4}ZJ! zsHFswftdpe|BlP_*Ia;SE3z%IrnJH}Ti>xNFaP|}H?F|ddS2{#>yeg(*XODx-5mEZ z_1U<`cJsDJr9Ah|LwwXv&yB3weHi;I_`$kQ%3oiU1skvhICa_@BHz#YFKX2YIkdo} z9x8@zfVKB}p~`gsK4zpx!*1dB&$};`>sQ*@RCi@(`6*Z!KL;hiX`{`KlUVBon@8XD zxM!B}6C&phi=O7H+-zQC%jc`_!F`mu6LOuVnNx?~mDpO%c=Kh#Lq{u1XG%aB6H)mX zKgQqEPuw(z+IbY4`@QR-b;SwV!J|H*NkuEO?ZVx83x7=Y2{bJ<#|3hyK=XsLv7^km zz`6HjXlXCsnR7m84yZ;~_|_NNCO z$f)uY@`qLP3eMeeJy3l8#n`K7pDLTA0)(5<@wV=rUcYcn9^#J-8Ix87VN0q%I1orl z(oUfcq-(%~EI&2sKrW8naTpwktzvRf0Wo8rovW37RJ9_njPTqgio@S<253z22mySX5 z{=w!+AA7!idbLTjiBSSgs#X19_nq}rYePx4dur_(45e`jG%sMe=DKkUhM7%f1C2Y{ zSg)e74P>!9n#=&v`e(?mKUi=pps?nV@l}bHP0k-&f4_Y95$q}Zc73=9sAboZb4M^1 z)sGj~Mb)TcoWAWv^t1Zj9A)Ro>3L)C6iLEg^P-+B^Eh1b1Elk zqH{~bz`?mkgdE#8w1Pz7uC3Z#7{?O=Hrs{)q#0hM}(+WYk zbXO_Z#vkRu4=vr%gjDRe?eFgbKOa%;Fd6H>NyeuG{YIMw(U&*5e;!!?s3bf3v@51N z3rymYn)Ov-NKtd`h_jBCsDH}%ANr@qi0!6Tg8XeGbo6zhg@pVd-ncJCuBXy`?+32l z_ho*C3oHMbLR9_o654FEAROun!fGgUDm~x)?diCf2V(Q@2@}p_@nIEnT6-wZtEL&*ep>0c`e)eg&UaAQx+Wq z%szrkDja=z<84T)+t6=aZM1H`7_fkg*mm+ay{{>@+_v(E9;jUJ${%JvCM5zXDvvuI z@Zj>%RnyBbOFTA1x7gFrU57$umsFko{ENQT{*(E4#~U*67|}Mnd@;6YE=`>l%4mW< zn~qVdmipl`Dzp3+Hgfmvw#unp^KAEvk?U=Rk6N+^&qoTDu%12+-No_AGeK4MnXO9> z?M8b(T6%Nyl$J%$xp`>fyaNUH8h+K>eY?g6j_cjh6}&k+wzEoq+3J4P9O9X?u7od6 z-0#m%ej&IuH9QbIai3T2g(BTG->*-W4G;f2L@*Ry5lvvZQ18Cz!P_TJilt*d73 zjL+_x`A-tFf;TcoE&3FKEAV?zZ#o0R&j8^tk1n^cyo3tJ?D4YDp;)GTE}QPbbm(%# zA<(ZI_5Il%H}=NcO9)qFt+}FcACrxuAcNnNjJtckybkWBLZ_JLBSAQ8I_6?6hMu?nt zMSc6S_eq7QY1FPNp`v-T?9^??McrhLM^cV&xG<+~P@0uXo`oq>=~_`~+(8PzVQyB- zN>@Lcck=d#3^d(2X>GOn0uLy-Y)&6y$#8g|r(AS4?a4rU)uEL09@b-Ae9d~TCPrrX zHb*=f+O{sXnlJ2+71^;lRnK0T214LA;b;r&;=y4Gy;YB$k9>Go9eWwt?`*VX!VH(G zZn+h!R$k$%8CVJQxtZp@c*I1GEGpEL-E*oxR)65}=zWn#9-LZo>S)x8MFjzfOIz7? zc)E3YQpbnR;AhLSn>Te7o);;}x0p*%%h^nS0D3o$_}kt0?^Ye$|ncdY$PeRT98o4`cOa%yHx*oMt*qdCj(O?7{; zBHR7$2-(VMd(&bX@?i^E&|qG8>vh$R%C1@K){ZppfAV~#`(%o9j(fBH=N#vXV^PbR zvD`Q7u*cYDqpY||h0*i7kDRo&5`ph#_iVoB@QqWRKlV@OL4{?jyPxWjBFovwN-R_F zeE{ZX?Yv=YR!alsdsp&@Wi+GAFKOzP;lLn$yOsLWY})*jtrgATr3TFb!h_4716zK6 ze>KPO>udh6_K7J^GTa51`yN9r_Y@TFX-k<80v2q{F0{>gy3(VBR@NSFv&n`!`f0_z zb#jLTK;qr44uF^cwMGp4JYUDkcJIni6-jv9yZI^tjmx<9T$ zE;qXU8nb+CCaM%J|68S)m$P~?v@YkHWiI))eu;X{*V7iQ(-(gj+B15|htW3=z4_u| zK?^(-UfS_=+wPW=U!Sgg+j8pXv4wZ`MZfs@{raz2jR6H01GZk>u`PBv61PA4#Ei!C zj#iVg(~??iZg#cRkBbyuU-hXwVe<93=#IP{m8KbAK*k=5FBV(w9*af{#>%E2 z{z!+{g1y%>8=mFQnOL&mv&Dd5J9BCF5`S|p&CKJu<=*h-g%`ZEpxHEHoX$a41@kmGm!!-a8eATT<^LwWVc`?n9? z`||!Q0JRgH^QLybbUf_QzNd1y=|%=|5}i3NOcPj&!5!)zGVAJ>A~4~*YNW$VGogQ+ zC+V@hP9Ab~y{fCm^25`Jl~kS6`-@AyUwm8gZjrbP8&dK0&#Z^gm^pkDKIrE}YrPv-*`Y$5D{=3+~L*{hb#uw1aY<#bcGm1zvb{%6QsbEwdTs7#fq zw>Gr`zMa>zf>gil$+{|HaQ=|HaS}*Bba7T?`Ax+fuGyctN%lDKg0U+LDjPQ-@o{Fs zB_y4JmhD;tOi%rIc&ZCp|Jza7?m2vC(WXL75gHB^PxMVKViYaY=YqEo3b7+oJHnE0=t0nqMn8`LP&H;TN|bM7BeT?o4sAsp&BX zz;dG$2h-ffygFuYYLf1^40348{!x_xD#B80K>z+~*ft6B=W(WC8<)&n;XkO@rGb2? z|5Fz)v~6V7{zs#seERSg^=(@5Lp9PzLmpy=k|E#+7tTC}5#T@?2_CgL1aw=rV@~Fa#ra;2pXiUp` zVR>m2K#fO;N3=a!AfEg5?FW_3%UR@1bs5lN$$E9s1dS zE8omDc*~pB<9&FOH?2&X0>nMa2!-4LKZCAJWKAZr(ihI64I3^42Btwk<@VHi7HkJ2R z=FritVA-8^qMts#n3M!Hi5FFhwg-hVk<`0Y>`g>!TJd7n6Oo^(5yxtyJ4gQfICjqB zdiVq_Yn+{3_UE<7oXUUhAAjrX?QfqJU-8hrWIyf;0QYPEw$eNU3#o`nklord%IvGx zwU(>zhdsM*!ErRD7k)P8x>pT9BK^B^vWJ4y!DnvMCVyZ4#p&G2h|#~W?(H6IjJb4v z<8t^sG28vA8;Yx~u_wzvyLeoz?0x;+IOk>Yj88k?{g(vMJ^oPBMPpudCZw$R5cJG> zXw%CioFP5!EQe=J$UxF_|S2&%X00SFQ6fC)g|~=vF)RmqP6D2nW)!? ze~gUrd%d;?DZ1%yF{y(xeGerFRekNkCd?7Mh_; zM+hAh=_&}Ql+cUR(0lWYxLoJ#wfB4PxgYMQRel6!#+-AE=lQp1Yu|~rWkS_#7k4)q zs{Eq2P^BhCRXIF!9VSm4s>turUTd_pW#*|bqmlJRa4S=>I3E;+CO4vcp+L0)HqYOxl_-i;t6@lkpzt%W1l(EyAz?qV zsUIA9&fytq)hb~mbF77Hz-}xA84JfJZLV@x#N7AO<`|q7o-f6IBu39BuH26e4ezEm> z#cY6FgdyTfykT~E<=#AY{_$Y|q5U_$4j9_^YgWlC9DhGzk6`M6 zg%K%oW5M7EmiAf<^KT;UZ5T0Fk0#C9Sa`!guK-<3HwMSvN!NYxHu@he00zf54&1K= zvqEu42Ro*m`YjGEH5*-0BNovzOb+iJ&9vPF4IZqw0S_9b$yi1d7N>BSS%!w2?Rd$l zgWG>pf)V2+!M@(3h&&py8KC&k1v|cX2Wc6LPfdVDq|p+iL5D-=A~`V{?pK8(+>yKj z)k4!*vG6k5%A83XW9(GZ&$lrSFuHjxH|{K(r07r-thhWGZXSUac-4j|dL+&l&WIw} z_-6KLNma7`O0EtBOV6W;SgXvmInOYYP0%m*7qo;cA&VCH&O~ikpwZ?>!ZSQDwZ*7U z(5YEOY4syZg06`K3XPzA4IL6nXshdWBp96uG6ARGPPiyhK7AJyAmJ++9Mng&p1<5q z`O`YxHE54bP-xYGqfeN&D!h0~{o(rAyX?tWt=pwJKiZp&uwI>$cbWDDaBA0nRNa1T zSsT`6QO2Wu?0dX7`x?QZx%-yy?b)+utNx~WKICq^O8Y36(l*u!RK4xKNRRmg7z1$a zmCSRe|1r}d6r*?zw=%9zO4IvD0;mCZiQRv*M=evgRB@;@hrWevVu|{uGudq{G%G-^ zwBU-iU~$gI+z-L6iZSuE{5pGfb~%iFZO#U8v%QMHC*dNgJ#dNco(k7=I?mkXMyF#Kanz*!{V%Y;hmej}#^5K7S$y13^{bbQlNdh> zZmoM7`+mAvoIg7+PF}y?U?pAiS#4 z?2%g77lQ*3^}B`aL8Z7njkYJ0&Mb{hBj%%SgB4E_l>X?|#1F_-KuA3XMfXGj+`t6jW$XLr zKat*CAY8$0=gHP?soWZ0^-RVm*<&DY#QTJ=$iYJNBr5=yVGrTMd1RZ<` zdt>sq4<4z9Y@fga-unNrfbshrv}#X8rsQ>kTE;K_MfHDK@Bcr4{O&aNcJ?jjXz6ve zSk30&NgOgfR{-AU3A~YlLkPrt9;?k+vR^=R(&eXm>VK?OxDlNk)1VZoWZn#x@2x|l zdug1$@{-@gitk)~|Ize=X1V`<{FH?;(1;~Admz2r zS4h`^b-MQ(171?9pXPiyWl$6C1rTfDJBi_=vd|tpH!&gdIruTv6asW993&;r&3sr= zbF}jIc|3Rok2rMTkWgd|ROyLWgbGODFpYkH{kgT=%@hgO)@04uQB`hEcD{O zZr*=S$S`?b5&0*}Lu}!XW7~t5FeFs>H{)g_9&ot(R}!F`hW>DLZ}WyshQ2!nPD@Sz zeT`P7_r^nU%l4ShcQL=h2YwYy3AnbUxYl~EL(_;}_ z6#lAtGX<&4zY@b1uTFT_ zy-8FWDA76n_~Rl^1bl9d=mkyF7D>xF*0xzBL(Qk1Y9DSH(=rXbRU-f`eFZQv z3c5!J`-{a+O|p1f``0 zK4M}9zgp(`Y3(0 zQH)q;Ict&fdTHkYHeuhN33fQ-J?JEocdQk%X>@)aAr^fIpe#(mcR&wL6{x{m32i zuQuoST>#RC-6OgF|`WfFg%`}!O@$IuUDQe8$kz2y|%X2y7 z+hO;HzS}VG8Jf5_$lB}4maq{#s>n0h^j^NzVhL$DsI<8O%5vIVtG5zK?Vjh z2$}#5XQYr2NyNn>(h2(_%vK9f^$fY=&FgvE`+Uzs(@eDp32O{|`uk1l!zsiF__~u| zIHglw8d2J81D181BtNusD*3I_`!sQ)XLx|qPk!7kBz-?4BH$NzoUQHe7V?GCqd?}6 z1G*=zfb?Xm7r1+q`oYO*RWBQd0IjI6rXKc|0E%8RC;aSM<+_N4q3lJ7H}nv(Vg*mk z0z1@gO&2OAp9!P=35MV8{r{Li`~Bw_IxWzL~+mkzLwtQ zQvcE;we?U6+wBR%)0qH27Q@gs{F-#Z+59S`ouKCFO{Kc?BYHatC5W9ra6V2{dz0xr zGrLhbQ!vLZwmWsNML96JWk#NIuosl;LxGDrAvaq3qeK1KqsvK<@8FABr?~J~Tih;Wi2Cd6x+8Y;6J8s5f zs@eoLM3x+o5Tw`0zNh$H*2aKSk!hAirZ);b83tX%pEpI6A}zA~E0l4RSi1BD+3w0D^GFp#d6^fKX_BS^g-Xj2-)WFNE_8vr$mBSOAi=`#>WW?bT2SML;jt23Zngo$WTlCOyh7MbY zilq+m{$UNb;n*iqpsj-kU1M_bp6(8{$f99dR24-4^825 zS`W%34DC0gN46)^y10(R=>_jAPofL)joX&o2PMVBlS4_}O9#jt)fQr3lHHB5Tf@6? z$2MMdY>hsa9!9mc+U&nu8=pq${ke?DkT$b-h;3c(&w_)7GvRfV<85^qrgsgQ=)Nj6 zawI#B$zVRM%cAAXky$fv{`GjJ9dG800KX@TTodS$dy(9B_qo+|MBeoVmD+Cy zA%`mIfu@MNefp`{wdJR%ySN9#Js%S0^n;{gaH#bK?SB`&qda#Jv1$z7KtYw| zaP_p@Pa@j_C~7;k0MN9=-hA8%A#K1(U<2k$Ch-SAw#5fzTU`Px*akFitCA}lJQwv! zz`7(q2%0r{NA*5|3{lOV|)#Xc%*vkL$tSV*gh!W%jk16(Y*`gWP7)w2W@BS zzPjj!#RDCgZG4^J@{ILtrPYuG8z(n)c_88?p1+N^=>Js1Ekkyn+N2v-+EblFPR2iCo_o~y14zQ8wc#tK~qY%=dn5ZMvdB0=5W{IX(c<_%_x*Z}A6_QA= zFts}IktF9*u;4@vQ`Fp4dZRV87Rn^^5Y=Tn``w@POaX`8-5CNII+fgXgxXpxRN6B&i+A&F%4__~}zbdi%?n_1^34#KCDGZg%(G zS#~E?83G{5>3Ob+MB1>4AQ6D9LqH4H9eMG3_M^+_LQ-#wlU=fIsCpx2H^TA~r`W0~ zKEmMtGS5Lb2@0}qoHqAk)Z$6WVm%_iK6^6i+;}bt_(NQbuT~t1FBVbTG8=lR@ej zc$1-WEJ%QARS6rQpoefxkGVwJJCrsB3-P6qByw-NsU(Q@?rSaQSS4K7r;(L_y;Wqy*ogVg1LTA`VZL1G27_ z8dA9qBC6b%flAT48tp@J%EhO?&qZYn(`!pRE6bU9NH}#!pSatr1>6CK7}nZeh=Xp{lJNq%-bIlSb>7s_dk@1X7bA1|3fQG#d3Wmq^OwHd=_3%2BcHW&FUAQ4FBFNEE4i+IlcMpM8#WhvsK0k%_Jh6wVv z+|Vl7(~KB%?b*^JI;kU~G#XxC`yD)aNjLt(R(27F%k_ehfxn`5EQgU^GyN~GZ5AC$ z@xcM)0t=DT(8Mw#x=~YAIUYRxDrp)BG{R%RWqZYB7V$d>sTOEQNQqocFfqe7R$~qR zkvl@-a!%pwJ4-te$#Bk$LMbayRR0IuW?gtt9YhFff6JEM_&hzLP1*-Z5m(NG+EfYj zJc1VhhEr5geOq*`pl&t|@$SI~GEWe1q|&4((a|Qtw>6JXGD+?NftdY>9I_4(@>eJN zQ@gmf2jYT3wo#3y>K@YZ1*x{i-J14)Eu~U?cLFIp>y}!OQM|D(?dH+-^~Z_sE2;m+ z3FUw|qq#J$7EO6mlUi)s{0W_)HXoynt*|L*$ zLN190Td2(r+6_#gk!W7NW8s}EA!4L93s8(f|z zyWAg)@XkuMtZ~{Rz3}h4WfvW5iTH5`DWu*++wwsKDdon6B)~~(EW!Wv8(!%64KMIJ zd{~O$6cbNSxz8=MOzc^9p?X=@%#KNp>1!9Y{rK}4_S&l{TR^1s6c-c+Y~_={1e`Rg zTYBRb_Z_vO96*J&{EX5)skEUwh>p2=aMV&u0b92#t`pT&0#+K;=NBdped5Tu4jPOa z!FKX2-JAe~$2RtIqIp#=2faxR)1YV3R;Fy@F{o)cRAZRoOQTj|^vGOs@|$8EAt_ej zd`Wd7q$8{teXE=x69+Rcrx71}S{Y#zn0!GBaz*2!O!ci6w$i)GERSvzlFD>fI^y_PWBImye4FbkoF|$> zf9uVq=#I=nF_{7FTh7Dx!I`75&=&$oU&aa$_DRkuF`_llI@3lqxSmHya%?=>Zs*%B zmsrafa+I)@fW#NP;H_&J`#~dl9;Ay5(w1z-%b0Nmwnbi-ITBt`OD~ZsV$bURnc$-X z4-{Fm*z;GT0ndRSC~JOa1An~=9z#i$fjcL`gUIV#h9blB`Yybz8xwe?Sgg?rPTR9? z3YW>ALY*H(JIgswhDiBt+bh9Qr3%W=Nye+EknQV3utEPiNN$~tfIIIs_BP*m)VHsB zD9{h57u2V;6I@p7Vk}iUv$PINSh}xHj82had zDn)8;WoY_A6f^jGLtfvM${MZODfB;{G?pU(hZr~px8I@REJ2)PsC=&ZgqJ03ashr^ z*OXvJpfTMwG%k2g$BeK#FV4HdUSRO>vjV)c)*rxrLq%42m1>>$6+XG zzZ?#DH@)1FJy}t?u<0LaWqpo}W!n*jZzMp24)zdl`*<`$%ciL>GeF;&Pn480>tbKJ zn&2Utq&Do4s^yBaIgfRmK|o?}wYC4j>{tnJ-3(bsJ*g9VqQy?Tpc;1cO+w?cJ#)>g6L{B;y zqkPL6pe_Q>2khfYhYAH*C@l`SXQtNU(O=V%cims#!qyWJfTh)Ha{Tc0^z!?lQz%Es zAeMm-*US^^Fzd!X7VVwdWwD6gqO$NtHXahS?Pn=pa}Du-pReoHdTkUZck=Ls+-+N6 zIqoFoTMr+9+^3==H5)l3wCANnUe$vQ>yWKix(1X3(`Ang>&kv;?kzyz8+E!ePUT}< zhXb-wMc~tKNogmq0QSw_qopiswNny@ZT4IDsOGDsS9% zie$+FNB&c$TafR*O4ClaFoJ^!(hoYumVU9<|0!EWoc*for*}oU-Z=l9A z^J9H+F7sTT;BscU-cgUmw7Z>6qHJiQL&8m2?xF6VGq&Hep&k5I-~?UVULIK#9lHMM z!Wx09^hP{JsQ>M#)>494<}yhmKu4^!fc9IGPTrJ@_vF*_$=7}K=ikQiyuFla*7fvX znj6MyOZI?ri9+s|6<@S@A`ZTWTG~hiYFG}a;c$OXGM zesM!xFx($UOcv*><{1{d%4jPFR2h{Wv23D-6vzQA;0({@*=Yn%FY20p39`Nr@b8W= zRwH}ws)Lrw5{C%^(R@)NZ`@SExa~wD^(uj8J_m*zz3Qup!Fw$;* z6V*IiCRj)3S9Ww0UzFl=Ik-La*OZjcFY?*t9||dUfpBJa|Tp>|&Z z+};-Np3ws18@14es;fk5R6{iO1^V1Jx5B5a_6_wx2PFi5?U~X>7xG?qJ%RoSVNZ%w zvnT(Z4SPAQ`s703Wzz}r-0wqExB}6Brl;<1!wC!KHS?TbPIk33T$5kJ83l*;w-!?d zfaUjh-mqv{4#;Q)psiRzw4t(bIZ(DV$21&D+W*Sbc9yL)tl)kHj|y^78Y-JY0NaBG z>l*i73pa}fA}#Zpk9rzgu-=2)P;5?t=XHLV`ig!Z9r;s`8h9~;zlv7+qt1taQMutp z*SomtmFA$`F-n0f7)x_{bOMn76 zxD+~`0im+c8-2D4&{yJ!q4m>(-rbIdm?<0j1Kzb*_?c=wrbR#)M#QLbYucC_)JAqX z8m}KD0vWPO+yGI`!|+A8?{Q)w_fL<-*nN{W{Y$49ui39pX9_(4ega3k-tB_!`^q>V zPYn30FceMqYA(6mDBQn%+PrkVZf%%S98!2OY9@A!Dn{q3n#v(f+fAjfBR8!ErhUxVc(Tm4kkXm1*g4*zQNTsv^T4`l*5 zs_Ro@h@32mh1cYM7eWS@#C!#(C1WfP9nZ3NEu*U7+uf(=Mn_sHk~E#7@uxM&W?#DB za&53NFc1KJ!g~&U5-7Ll0~P6w-vu0Nu_|BY5_toKF1EdAUIAZhpiGR8N0>^b-*x?E zR8G|%%#uxS+B@4G4-$3et_C*VuY4C7QH^|K?`({u7g`?@XO=9ruE>d^R~-7N9;Sr% zNcwpF^UOcQw7wZh#|Q$I|KX*dU>W$Y1xYuk9uZ+RbNFg`QMx8sLEGu4hw^;X_TbfH zKCWp|#LIGnXm;XWHD6`{_dz^&{(2c%*cazF{xR^gBkG*gE)e@>;B_V$!BJ0jy^+`M zgE--p3Q!3$e2u??!eTME?R>fy;F>Z2jh6iN!0fUqFdz(0pDhd#csy)njvI z*ca`%{-L6FS6zs`U;-MO?MAJ`8jx*fE*S%SgtG`@+*yK0<3l4}%e+s#ab@B!{CMLg zKafpaAvPmLpV?#UpZc0!L_X1Yux`H@KU}Olp6{Z(_1nNs*VI} z=MfLimBBc(={?s!1wzkLV;IvkN!^fM7CXM~RGXl5%+{Y;Cz5jjC_G@8P_~bvt1T+& z?jK?<)&584W8ga1Aza3zwEhg}O4VE#xUJ2`j3(Tqr7b?sD?)IyJ$59LV;Zn|;ba{b_pH0p;( z6MB_R3=y|p+(-$BD_g`^u`#KjL2R8mC(cGy5x+5T1%568yU3HN)y=b`OzxW;FH+L3 zho$kKQ$p!)0I2d?J3`3a7M^-~=?yI4y7hIcCRe!;hi-Z;z?WA^MlOhanM1^eu8iYRVWOix#JIYq2WQ6ZScL{l#UO`nm!3V%DI=^~8uP%3AT|sP5TE zc}g)vXr)PT9B0R zm3=yqJOqcv+c2p7sWF&&JHq~%jod44QNyapOk`Ob zb5j|G=-uiM0J`grBPI36^;MgAO@tl_Wbsmbd-CMaYqdY{s2}BG@aKs&(slaP=L?#n zzhG2a%QQibJU8AF^w`%x)wvfr@vnUC_5Ao(96G1SXk<2H2vyD*zN;V3*nKsu0V%BI zu=lQ%Q@=A7uajWT@$q9wyW#3w;*~x*MKhs|61rCY%=pXXE7h~?JHQAM#*lNCoMV;l zBr^M$l+XJmS%RJy+>S4lt46vTC*^m5`CE`gtit~gtFtixlC1^9DBi}_!W&=ZQT`6| zBc*yvCw=?ay$Lc;DL|o4*ACc~CDT`Vu zl6P;Dxv`QWf~1qK0N9HZRR)5*ASZ*Kl9-=i&i^`?!I>`yL)wJvw+fxyfpdj}jOP*; z59j04LBD``%k9@1^w)=Z>F4J_INO?069-rql5OMy2*aTC+kThkZo1pVJWLu21;W__ zYXN!rj}kf#r{OQ z5mKVN=VD=H%}(R5Bkow@X|EyDUpWyp1Q^D=$ozRYut%r?mx{a&L$JIE#o_oFxyOJ& zaR$`Jva)NIqY@%(Y`<_!z#R(m21s{~L&uHm5v;SueQ_A{!6N`T8zBWVzkmM(&_imf zBa(j`4srltUBPz_a<-|Z~CU-35Y^Pj9F!yi!F zuy3w^JPin`Oh8^eG%jtq)*KaeDfV&cfFF>#w9Ao3fw=zsT#cIs@ar&$OSpC;aK4wP z(rsS1k~A`dG@(g_vTJ7W=1TuR60B0#R#;S+o`+h>KT;r!oUVJ zR!?@?m64&ZnR0?;4|pb@IT>5t6ZQDTL&G_lSiR@~;jI~-7wRc*cFc4A>)~O4l5Wp} zSL@n)9JtAV+@0-C^ZXriy%rrfoUotA0O$~!psHCq<5hMLTNNI)G*qz|K6l=5R7HEY zv31dWkQrq!ijKc1?r79kJnx}!`L97W27?mY%n%i^WMJ)IOC7RvcqtbcU~!d|52t^S zDZ?uB#=nI69^?i0H5C(VqbAV{1U|9$P|#sY><7!TYrf%WAv{HCEM}b5Q`|VEg}B_L zf9%O9%LrnAq}N)8QGE2kaq3PT-;hgDEF6G*dParDO}s_yf&=Yfwv}QBbNbTF(y6Zv zE3SH`ON7c|$jkUeSY&;3S~X}9$&;*Wz$noEy`dm)1Vz(XS21_ z*em#U-tOLMrpYs0w4F)IbjCG>A<~ghEP~cIjl_d^3=gVhS5;@^UI*#Gq{P_@l7`%{ zzt5S1;o1A!+A@qX(;AZx|K7OEeS~9`u_|fYM^q~!C)_7M?#Jisx$w-Evdd*|wGqN9 zRtgW9pMrB5&8(|cIjXPFEPPm?b`>}v)Y>mxHAj?xjig5%`XIcR6cm{DBAA415o>ub zxIEf_oD)3p=tz&EB#;1yLJUELkA~jgx=oBzgYfgsWC`Wn!&5qp)OZ=cjy4i^Q|ngiWN6YJ`Ij~0jGvIdB69D+eAprGD7$Al|zQIBCTfT=8_@vFJ|1mqt?4yzM~^3H|W~}m6K#5da#>~AAH~Eb4<=%wOBdIJl+So zet$58W|!^bWU0~1kqPCG11MA3? zX^w+E0WSn5=vYP!0pF$Hh}2>;Z7zN8*TwR(XQ6B3 zbaBku#f2QumA3xuM}mgrG%wpu;i1JwF3C8(!ZkK_9~jHRTyI3Qoj>W~%>$zK?=(dM z%iZ5QA|+Xhw&LPXx#Dkq7q_$HUDXgMc9ezIyx`~LSRBg5?C=oWd;(j zf-+~ZUo*>)5h|ue^W1bT!sVxH9F1d4e-gfsOj~t!9I_FMYV20$%7WjJdx??x0!R70r2WR=-V4^gofYKnwduAHTSco zfEfvYf~V7y$w6UtdIuyChV*%N&dU}&lP@C2rfMvS^ps^OnK-wdKImbo(N9c-PtaO2=uT(wr1vOb1iS>?MzQ`1!(*Uls33+8;PS zI7+^VlpqZi3Y;ito5`L*l#(Ix1MqaHLnBt*oPh#EyjxJ3H82MOkaz$md9#XEEwAtG?6FBrO#QQwIa86v&l|FHStI4Z(Re59J(#9s$9IqsxRq~uH|O>y zIXI;v*dIm5lEQhiBaSWe(hizEMKcnc z2Kh^PG;G^#v2Irfl9fB#V)t`J^aG&&O9N;i56hzBV2P@~O^%dgTOf-0j$B%w1w}LD zf$#$(d5-7ubBU=XL*a%3z@6e;*xgp9Za-T(Ynbm+uz(Lq#=PYdsJL4>$>6MDyVE*2 zN40nBozo|jBN#TAASRTLEGSE6UP&_)8SExIwKUk2&NlMwXt%O1Sh>7q>U8;=Rg}Pb5=JmOAJNE_zIz5v{DB^T-o(-St-mS zTP?(hib`!Y?(npjx92;7%INzm%lUt%E`A0zH~+hx5;l+)`d3gV22Rx>=T!H7Z%r(t z67dvm!)YG8<4PJEd5$P}i7&_RE~U}wG8!0E|$f|v?cCu1}`j=Qu>)h{%a*(o$v zFBs1T$vRIZLL)fxVj-9Q@6Gr`kO#%8QSbR1MIa{V?X7eMSU97Q{SR~Z=Zp;4=Ci+^ zuVijCW@!zEufL)3Z)cNmX&!Ow)6@cLf+WPfa`h_-ZQg4ETJh4|5j)W*HeB0wlgm<> z8~;pxRGH*L#4q)op%MHYBgPRUcM@s7D;~HZzWmCrsH4$^M9-)zf$pTYib@HzPwWtQ zC=j)U{_IN zWvXts0H!WA+Y+XNNTvn}fo?ZF^&;5kvau^jFjl<~nMM+YB!C>7G zi6FB=Rzx-ejY}5gQ%~HOv?>AnTPgp&ST9GD|YnlFm5jxp2%MxIttc`zL51n^ru zCRX&TAO}r2f<22j?H}z)f!PU&xXctui^_v$hvHcL zBn&luq}3f!X>A3nWSRbr$s?i|>HJ7m?2e$3Nl^_P*>wFp_eiCwml<_4CG6!{aBtdo>vg6-&E|qS zxFIz@sR7`!kf0*Iz-r9-_1uRH)}~wcB*)CMqzl|g5$Ir5Nv9u}w$sf6rtQE$p9lj# zEikE8gJJ``@13?Juy0!Na^!6I9dD!o@jz{(;ZMg0QlPr#JejH?N!~sKE^~%NAa-TB zyK%a%FH`e@B1on1Qdu=pk$@$Ol-_ zPB7B;nf!N(I--M91YKn#Xdesj_s`LQ(}`pBFZ@ z4U>Ne7Rgejl{8)AHTn5VH^-OjcT9fUnry2`CQe`l7y%~h*RpZ+zQFr43(m*l@HE0J+?OhIr9;P2m^T`d~=_mEY3*Ylc zz;s5|m0v)r=Hle_k#!j4y&-QBu6heRk(Z#zlt}_33A;2?B)^}7$_^6;NhXfZe$=6n34#{rK16t@XRt zFuCK6xcCPu=$>@+RmR6;txp^Z6XDG#Y=hM)8F-$mz<-^Nd%{h}(W3V7@>j}lSH9~7 z-J#^tfp8_vBNT)b&faBsOG&w#L)qwE?C+T7D{Jl9y)5JFxiY%bb;VD1$94PATV^)Z zb-TXXy96oe-HOp{9bFrY6;=)9lDcw!OV3P641LK7${OU+TfmRD;W;ITXA;rdj&Zh=T#cZiTHOI`EPyC`krt)?gV9d(i1yl zvNdw{OH!W8OQ?(J0=#FKR&o8!)%3TOXF)b||9D~JQA|<2Ld-+JM?3@|#l!XK4wTPy zG%;*d{zH}ws+=#>OGkRWo$K5RRbFw?CjfV_;!bwrl^OEJfcNJMP(pqo4XJFuuGH@U zbXz_Cy}XA7pY%ab4-x(;N0$IQPl zI>ZNnlq4%C^OD!!s0aN3NRjde zx7n^_yy?Pp4H&J&T5lBq&_;r>Ork0ow+<{Q(;X9F2;KS1h}~RyHAZ|Eyiw8YW%r6r z*kp1S!rakRWhvG`%ogdux*kJWd^0|Y7dJjZKX17h$%L?XR#+e_y+AVpRxX0Q3w(1w zF(C5KF26#5oZS)&{8_4G)OaZcdHGZr8D~8jjy-=F@#F+pLw@Zcp~ETJqyHoZCin)_k1e?>+5(|}}4Xni3+@4qE$SiDXut=Ue;`7audu{1pXsRmZafDE}v zwBU_Mp)6ja12dn3s|9((y<(00)><@) z%n(Z4IqB==YE1n!_9vT}Xs`>6%=F4j_7NIGvby&m14}ONTA4}-`9xMlL`TyHYmI0o zRC&t%LQktRW$zg?&~z8z@3?~WC?3%Hf(ST!ldZS+lm`#N+?J^0w%H+n_PA$$Q3?l# zdmB9~a(f-xENN3hVSdMbX~*SjdjN>sZ=LnJ4cn_*b}zQOb3}^Vnc5I6t}BZ@CQTa! z|6WuD+rJdt4uH!~;75a>c8gSvKh5qIX*^tqe^F*O{dp|R9bR)HYQ-X=r(1qUh zA1%P{CHnF%sFUUD9#4`{@214)i*X-t1dnZk&h2;|enbtB($-nEFu(T~ouJ1++dotX zieH-+x4I;9$b9A%yF7w;ih{p3OyG8WjV2LsR0eN7+ekd9p!@@|u*k z0JR@k1O-FoWLn5+6S4ta&QUU#;$k$6X0NQCZ0FN9jUl2mI44}E#Bro1SN~p#);*bK z0^(_`xsydt#lZABqLi4vM`hu~ z@~DTm2s&U`^SIIewt9XNh>!df_3fMozTU_l(jx1x<+QVY?!KK13M#*X-XpkL(421NJ8GylrF?{ zUqzt}8z{)tei6ow@oN%VgE5=GHspTwwa4>z?H%OCTB;AxPSOXmvY?r>!6X< zJ7bBtZu~ULXNfVfW;~FBt;+57s#FNXs77;_ErJ95qkXoz+uw1s+L2y1Oea{QlCn{0 z;KLRGoLl8-73IG`0hIi6o8S~JJF84Kq6I3B3#zLs7XiOP4DwwEL-edx#kPT8bj1T< zFGuOd7E~2>dMv%Hft{kz3ujYIbwQ1t%5!O;huetT8`mr&S_|fI@u4@QA>A)8r^20S zI*@F_!te8mNUl^)@Fo?a;rJZd1$%-_9<({7*|M^m$+NujIa98m3<}%%WeP*5`#c@3 zOMH_EQ?DR?9CGJ8={U>ZJ!g72$;@ST=46{!th_kg`vyC&$_XOX*}Kr zi15o`jV<}Y{dJ3c@&}LP6CUaBkE^4onP@22cp=??c?k@I3{O-Y-P#2Ob~-Ku`(w`W z$)+P%;&=lv0#rgO$-RG%%$1?z!zGi1{ZMIyTLG=N*5@m)%8K+we zNAl2n&~L1UcUDWHeAI6-cp0fZFh255d;#}HFqGf(eM@117NE1aD}8-(KZxiMa;U?6 z7!Bmqr#{|2Q~D140%Ktl$)6aE?r8{*_O1Ast>wg%@9?m2I~{7XJ4v5jPUmMhEtW08 zyPUU5xUOkTJEV*$-nMQ2t6wdWH#}7Qw?}d9M`Qe5UcIZbsqncye3tCxTcvex8S{N%2QnB z&;!;MQ1@lTnXP^;gr>%ZB^NzSv#KxLFsiUkkN_V3=ss`6zz2TCfz;~`L!$2hhOd?z zv>GfVUDW5j*>TlC8l{t3U(xI?Ni#$}af*;=-$Oy*cb>P7s-lndldU{8*SQhu?_>f| z4&lPEauKqOQu&;7CYn<&$4_Hmew%oRw1iK%SUt(P2dTs(3N;p9c~LA@&Wn-QGR3(1O;2fcR z2|fgCevGORf+0y)a6#;;9gKsaOSj+Tk}wa$Up+;S_a`m|_RaQ8dHSxp@^`z0TqF}l zmcS$?&)V_}Cz(@=Un6Z-oO`K!#iukmAM^ula*xgeaf5&=(s+X>@LryhtxT|ByLl@O zx+1A<9Hp=!lP05yIBDTalUp2Na?w;*Sg$j^>l*S2x#&qW2F)K*nYnuFL*4rbaZ#QAfJBa0cr>>BjBfKqiACcm z#R%$<89LNbM*Gsn^vq=sh@;Ugf#9pMwMX1GQ66Ehl2%{kWm7wQveqcgPW;xepf9U( zX3uO}TT0Hdpc~K^`R!08-q3$ss>|e^s6ocfL1F_hrs#)SL_+;HQBOHf(#@HZ86~-u zt_`};ah&7}8Up#0>TKs&PiA1dqWdSCxuT`%Fl1iTVP^u3ZcZ{Lv1J(mM0U0bWJ}>Y zJ}Mi+icE&M5IM|S-(-0|Zy&}q5)PJ^)|XsAZ1q_Cn5HsmxcR%q+aFa63RID^(mPVX znLLFhMg#U$TDk;q>8Z-_Pj6Z;2d3gR%R>QS7BSvO&>%2F^CgHVr>6u>#yJWjU{URn47(>o z=?5Y(#Rt@Zt*NrI&guzFUFLwoP??N7CQV)y4L5kj>?vGT%twVMJkaPSogAq?3wd*1 zMF5siX-n05c`b|ogbuql!=O5MTOE%#NUa3w;P^UlN~qrFA@)R2KenU3yKf_jMha`k zSFOME!c}RJg%fzQK(Z>n@bXbU+oNjzM`va>ui1p9K5yr)AG>mz(v9k5K$=vG?%u*4 z0GFHJ*RqI^ttp=S^>{%qHNu~V=EkTJSb1wQHlSE(vmU&PqTL~1)7(52pnHn}eFh!+ zlqk4bBku=63(%q-Z@yw;UT;Q}f+Qwa;yWK4TKv3uq$LJ}Q$E|jN2L2i{=r+BqUS1V zQg$a2z%jzrU?(5(7+^_?nsqtcUCVx7_8g--%PC|;;Mni*q7&}#>cUXZcj2LS+GMXz zGbF+`335G8eYcoOF{3ko>I}@ zd_nA(<|U5(xjyg5cV<9ZCQHtS4dj$~Yf4hlhP>n;o_@zWvCrFR7MpQ)3?yy(ECxK; zCMdE7>@eDNUZAMb=MR?rw8{CtVO|OING<(3#p=QEMUPHHjk;aZXx$9vCsn_#q~@I< zsCta{w#jx`lDAcN!(=E11Iq0hw7d`^UbyVuC(Vk}xWwz1uLR?w=HI&L7>rMwXT8^I zDKPwB%)ND3R_nJm3P_{E3kV2OFR7#=AssJ`gdzgThNP|d8 zhlGGM(k*(%bgjL=wSRm6zVn^yI@fj1pKHlG=X`2BW8C8&_dwUzjgm`Fs^L6E*RMZ( z(TS?Lg4Ee|IXpfdZx_(L9WAk^$NF*_kIH1DK@5+>iOqPGtD&puG?+NiG%Wdqv%+@_ zcE1lWxz|j`F;#4|E(LOxPirOcQ^c`Rb1~b@_mD7{g@iV*{3a}RC>4&8_JJW7F&e%% z@UQ=+A$3x&UtyP0_B>kZmwUMny?;l(n0@1>u4AHKA>{o3vJ-4z%{DH1@WpI>M4 zlO+P9#A&kLX%n3Bs=fKcF+VdAG;aIY^Hf+%^<497aSid!z{5@}$@t`+p2xqom6RH! zE?AwtjHj5o67KVY?dFChSOQvdaBSpqN|n>E`-VTgHxlg%{~ejp4&mHoT#?puP46yM zBP!!sYBgd%s+#gul()JV2&b`Jvwv<2Ja4!ZxvY(O!z9aM8-I-F1L@Wo4GG>_`^C^puPs+T5 zuu4B3b~$tcG9xeuk`$SCAs2z8dj(N*Df3B}$rKH~A#6Wp?zrlTN|N;Jmel95^$UV5>xU#&6}^7b=udjz+Urp7;!2F%Wl-N5NE+D@#jY54WB2CQe5~tDf zZr1uI_EuwsboaXIMj5!|27HsTnO^{i8ELl6EID21xTp##y?J_$?1MQ~R7>!Us;fUG zgU$3Y>QJ95SUKUEdU&$_*rB-A62PS|d(TMtYI^gldVGF7R8XJUeBVG5aKOo>TXYrh zrYoRZ8}+Mpj*ah|E5mJHH3+$T1ranP^7Ux1Ix~ESAa_f@hv%4|PuW4;c@Ejd9xW1g z+v$)SA>0-FgpU{@zpOoqw7%hR+*uyvQsKyqJ}EBe+Qb=B7qSPM)Cp4`+#D9Byv4PczCuMk(ExXQ$vx1Q(c(Q;;icGM zM|LcnfE#ABr8eoxe|BsnvSSrABF5EO#_uAHjOlA(1}}j4WJ&rv_X~b*c)$9E zP5x`OaVfLXLa|0lGc}^d5`@gr@FEpGOywb07 ze2$2BE?j6oL3pV*HF6=N)mv`LbgC)3Cdar|)tO>$6Ep{*=bbwyixJNIF zhK$6rWxbnbBOvB6T zLR;0|)*jCp6Vvra`yaZ16yxpS^b!!}W3h*ez042SYxnmKj)6Esm%)Mb$41NSY<=d7 z=HV-Rd*^h6D+}Rs;1}^D_02U?2Gs_kJ*<-tW(uiwNiz#0#sYe}6>GLvdwkli=t_*A zCnd3|?|Z6OTUpa*8lmqI>YR=%Y8g59;Ik*t^fRBn28$8*4Y2$6CZi0TW8- zE~c;@mB;O);xZ1*9(cLs%m9OSuGf*!V#;pcyYTv>-NZGQW$if`e*&)Bt~R#pJ6e&# z{Rg*k8jeClB+FdMj3mh1-SomIW$0WJZ*eP8Ao?j;iK?*D+W6J@Np!3DhexWwDCBnWwh@Wv zuWnO5U#6Hd?u?(s+zR2)HFkOGwpUb#^Bij&+wI5KQ5MEw8&lC*!Vl#A%BF(MESp9U z4bm$T*#w=Xr?uCmbhrkpe4z1^#5PYpld_O&pMb7%&tEi!E5<-n~#v6&kU@k$l?rgdLxS~8S3i<|2z?!=iZirv;t z}qG8CS0`sa@#?BY3=A8LOAuG{_LHSUcV9PotRB;ZH9pw@N-vf$PC+LR5i2-F`zq zw}O`9#W~b>a6ivHCs;F6OW51t`at<8^Ygb1?Mn>i%(+HTUCyJ6n*mX6Cue4Vc(W@i{Qld-&`B~|rzCE>7t z3smE29tO6VhLA)2-N^7@JTIH>BK4ONw^qGp=PBn%N)$<~LbmZfEFRf5U@GF44&}p- zTqnvwGJaik`0{pAi10uZ9F(z?gfq*|I7TBnP5$EPd3p3B!sEljyROtV9&&f|YHFM5 z!B2$3_z4NdDw1!PyJ^2&86Mgk(c<>=8&jvY7%mzsrkl z_Z-R`nC-(&6w)2r6U5JJsUVjYT7^7cQmr||gIz(d<=%Zk}$UxQMY_I49ZF}BNn{%SH$`@kZ zj@;cB>Z;fHdf7D7$iFc&W|Bw7|!DlhfKBcT<3+5xUpb5v+{<>=KYy4s<|a`O073vC?LVY8HBa)%(SW^&i0l)xh~&{Zv?@EP50vS zBQlELna_{Q{ixaQUTn}4S8#mWOoJlD75AQPJoP?=t%}qT*TwrZZg-20w9yuSfjp&0 zZ}0-)R#xpexVx{;)KR=XLB5gsNOBOoz z?ru1Zm+jZi{1OrFjcMCG+h3#e`{aXr;8T>*m47e3%JUHS>A4P1 z)$lY&fQ^`3`w-ZOX)L5N_f#R8G_5&Dqrs0X8^MikQEK3mHW*+~cM0+cpBv$hPS*K& zu@1CT(dcun2-dAoQW;{L(z^pZM>o?~;~h0QnlGFeveWBVwmql`ao2NNi|Z-N=$;J= zW|NICk{UCU3SL|@JaTxDNx#4a`+1ktLo_^od?+zrU)xgVqX#YtJZ0GNMX zv+X`0&KH3$56{oVz0l7gxVW`(_y_peL%pM=7Cn1lO-fTZHojcrbL3xhy?6OB*FrxB zy_sdWvJIMeEN|k_h}U2K(XDE|i*ZGdC&7eqaP3|H{i`W~RnrChe%&6~Tkn)_t=y6z zDOIqbAp3^9>zF=t)AdB}kq;7I&Ui`(c{u)oc#5{iON2G{7MFaYN8GMKgBGQldLMUR zlL|Zi1k$Lmrk*0s3G^F;NUG>@K(}`^;n;L0GUwuV8iBQ!FHebwO8XyWJtB{}#Os*& znL<9VWhzf2b5ca;28K25n78eEN8JscvoemoUTPLS*;H<s(W3^E<)`EmhCIpE+5PTOz)_bt z)*fWPRj9km-A)TpiZcm<1euB)a~4)5QcSYsrvL20L#UYy> z8lJ?(qc(b(dAf7rKYqG~Xw`*1gnDe;E2!Zxh6@lXKP$fd3%-x?V@9JkYi|lfa<_W! z|F5}+oW+D}77K=wK2WKm)cVv?;k8m8yvM`i4tC#UrGAdfVvEz>f4{`O4McxByM}A7 zt9m&i*T#()3O1$0FR!-GZn^1Bb0&rOi@#J$>6^9YpEDyUlka5{JF0@&7AUPe^Pd5cuPfam^gMF~+Y`F+z$aRhUi`@7}_Vk2MSZwmnJZe0=f=S7m>S5pFnVWSmSx z%xg{#YUpK>Fmp)oEGB$ zb2XWI=9_O$d-0R`H~B?ZG$eMlDX)2fI3Wap0VhNx(=hj-u76mVPCI|PP_D_PPcnX!Ij{}CG{d9lUxPg&0!?T>p4zo;7O1Hk4sL>fO(dd<*t^;_c@oPMRJ;oXQ?%c-p6qgkr*4qU*AA_RdpBP@z38p#EdVn9f)U+neF%MVVS@$M zL(>?#7L9jrf3JHJ3E1A^h}QX_3e655yoq&hvR;qVxmG^=tJhyqt5JD?WCMIm&Y@9}O9T}ox2mF># zol05SU^x{rvVFUE) z^})q#ZBnVf9?k47jIGgz8 z(Lg~!bC~?N0WC0p-crs=7K25tg?+ao=G+>R(D>10sGPO+$Dm-!m3QqL5n~r4O$F#r zX|JgPIiZqo_$yz2!}c(U%ll;azZJ4-df;4`ePe|l%k>nx8wqo+#6;qE14Ef1m)U|* zGt|X#T8J8cS9{BzT4MpcnZdeGp0Uz|INolq>6HbVedeHFiCV67^yta&>6y z*VOOh$MZ{hnL^aY&RUh|J0Adqdq6ggBSmm^QWobNG6lP*<^FX&3eT#lqFyweZe5O( zmM3)dyN!}7rey^>+Q%MjCj4%HA)?a>qkqPeid@ARJHP*r ziK3dt`PlDyc|{dSBH)9VtY=++V?}`+e?aKS0HJ$A)gOmN1WrA58Ku^};n$-~IAJ*I#_nx9}_~>#7Cp2)s3{3tj&{I0}k|5O5Ebhw$;GdgZ7jl@i13HlzkZ5@O z0aRD;c&`qn`A$PkPw@}G(F)lmj~3qz(64cKx>=`uM%3*`S_(AESsH$uiPTs;wt;Zwn9E@VuZ`2hI2x}M{R0o?G zaqWavCkb5);(Ex2Yz$WvtSfIHTf#%oPDw>{cfNMt#POmUy@reIa7wZe3JPz}(v#xI zsdtWOf8s#gOjU;7SXV%W+0|<{KXLI~Z+C5b%7!M!Wky}Ew+1~vOX$`R+0(a7yYCjp z`DyN;KBLm=oExM4jSGhJYRKtWV}h+mpP+i_REcJHh6Jo3>o4v^T+ye}V>pbYE!*>5 zs^0a(lLVl=D+sVBrYRr8kVQ%_Y7PPl6hRA<1pmPWAfl;iHpI@H0HDbd3T3}YfbyAx zyXCZi5h$&N)?A&#eh(BXON5X!Wk(u}Vo|_k<}l3IltPKn_F_)-GXRQ`k!B~4HMTL; z&{8YMQ|Vfj185Lk-&HV#mhM*2(tU!A;3{82{QTX3_uqaQe{f9!uv_79*1yW%HB;Q9 z&j^ZOEdiLHj}rS~{WA(QPAj_9o?X4DA_daWuY9VSn+W_PijZFE{_hOKB@9^4i@Q4x z;PYf>sT@@+zYTpV(p*Nq&v`U@@q@Iwmg@gDra)nTcG7?AuwjN&>KP+VR&mUWU;*^wssGi>kXksI`e#uV7eFM`pVf@Jc5> z-w>S24S*PnTMNzmVPDHqC>c&4hj6;TYJNgsB|cE3SAzCTh8h}&{!@Z|=^{>Oa^bn> zgOlAXfY`{1iaUO8x+vLnY9Fq&Z11(7mfdMKI&V!TSevudMd>Tn5A1CHrX2yue0BX< z0|1TBDwwNr*-;A36fE7Au61KMEsr?ePNE+4QiTwi1^{-YIMV}cJxI6j%VeR(b3+v+ z*AzTT&k&*GsS1oTIITbKFDc2%+Tr6IVK;%bMPmJJx=uNT)%# z@G6wjhl-!y5bo;!HBrIZLHR{7=`CKm=30xZDZ4O+R+l|h`FUBY`zHo|tCsH0S#ax)j;q!TRraL&>~xn|Bcz!2PiSD9e_mY`bK!NafW)CX^X#qZm- z5D)$k&)_t`CD)*IY!cG0eW&U*G$K?6%6ztGMRG6qj(-lMv&)w-GN((}Q6_w3fQjWX z5pwg)c5c4fyQlJC(njn76_BE&ab&hg-g^I*w9hz^_0 z#fCOsBnM$c21;=R_q^F<&oUHkdxF15v2~r?8YnXN1NIup-X?zL`zRjv9G&+o@LnbT z&x)tXoJY>Ntn191YF{!qT_cjN;-epga43V5SP{*Wtu!@o5^-5e)LzK?w$HWo@@PTT zKldaWF7Au|_vE*lm&9)$j}2F)=b`uR2)>7q!#u(KkA5}3lo_a^>XHl(ZjEPr-HKYmr0G~<}+{Ap@be+NZwrp>9gZ=2ux{aFT zRGv=XhF|SD&z7&MsgzAmtKmwDk^TT5Y(u?7-f{QND0xqw!UfDFBSMDK1l zcy=fJZ$HF_NNrS&fD+kkAoDnc0*Z!O`*6Pq_kD=M8R8gKO7R${=g3|3Tyh=F;|!G! z%qnyeLK2s#$ z{pw5huT>?i+g|pW1Ma<;BF{u;Jafipla1Ci)$=w=l0y1#s7J zW`iZn@G_t`8^5WVD2qIml}ynWO?-?GE1*j;Z7Ng~(le7DwrV~w|FLv|bJT|jP9rSuRWa%RNl-T2Tm zZ|CIm$NwJh`&XAGzp3vAW{E$bozp||BIHxRJkumpL z!orN5u1RnC=9~dkjed$3>Am_oZGR^8dMnJkk$sjJ8ykD~*A%CvP8=TGy;3pRwf=P{$wnE(O(LL1y ziBq44Myl*+5ldSxeFwUu&oln|#@Km0xi4Afu{}=(*%f%9KG?EPDiKTY6s0T!c#igG z1{vFjNG2Y7i|)@~>+w+U^-ejDJSIkZf!uvQ#i|q9J^r+QRJE8L-WjhU`3Y+--Bx|5 z<`g_?Njj&b0~tpaobcC9ZuLvzNU;b2sUxj+1}os5X{?-1k+VY8>tr1N_|W6MojP?D zI$HCC*A!W?0~&c_&>+2u+n~JtH0@Q+n>pU=6O|6PwO<+mSNjUoJ9ld97?`>bU6Ak` z=!8abozRC~4HRonGfIlDRlNL|3C!a62xI^HZhTMtmeG6X*XKnX?`*hQ+{2>KeFg!G zN^0;^$bvEXX~VX-fx3(h!%8P|yliN-QfkkOGtzO2`4qYdp+|!mI^7%rmnS0P`D`#> z*NRHZTS@NgNR^XWxz8(bWMi#QVdLSn0i)EXbVKD7>Xa^*2grBYoNM>GZBX~qtCrAl z@^zBLC@sA12Mf55$9COR5Ds$U7qfflzt{A44OxxD zu346bGfZDV(~qCl9UyH9-BN(2&P$JgW9dd)?cB_k{Ul_=s)5N|FDwyZvDMQxaCL7M$0sup=q< zMx3u#ynev`ZJCGUu*{sizpBH+mqz)wCbii-B4ph6tG_3*lcF|R{jA!cpb(A1n`CrV zBU^Ja4d)~emJjC}qmZu=yQ-XkG-V0mAgs}BZfc>DWr~?5k8Qahy%(cQA?K_{IY;!C zdd;PAO?+@|{nnfF@(Gvp1AyKMn`RZh$lPk^vKyQ%nwurr$jRz;#o_ZB{hVFMiL|9B zq1GyIBWjLnV|*-rX&Zu3^@;9ND0y*pqZsp4r04=&Vm0yJMeE91=#9V-batejVB;Qp zb8?E9+x=+Ya(iK3l7g#Xa-Is2azTP#8s{~Hcz&ke1~;22G_FP&y5c21 zEfgTUlm9ukyw1-e9!R>A?Tq#(Gt?igq55Z%Q*Uj$As|QO(yOrV3ZO7*xH0Gx}FP_+#_fto5u_hDQ)uCDOk0 zUp=*4_B!^6}UGJ+G>B?@u#ft#yHDQIpg-e;2QxqhObQMuDG4Ex1rELm5vagB70W*JrtFGB=KbCyVoJ^@O4>LXNlcY&KJ`f8})5|OhclG%5Vt3W3C18j`fp(o!W{q03T zJ;b3|;ftTe5^yQt$U?BhDWvwRd*q!;-4TBx8eY3sVyTS$qb4pqNnVrZqQ*EK z9=ZdRkLd=3OgP!jKWX{niOUng)%g|Z-HkQhc^qC_pV8+bf5id6*)8Wn7>vCVU=Ie` zhbn}L)fYUD$EWVY*R!ycU2H(Uep)HzZZMfURE*q1YNim8U1mW`LFFt4=WM8NFjiycGRwbW_N;vOI=m$4rw>NOQuOQxqXl`o(JJCP@xKW-Xv4w~; zZUScGp0(Ge0@QgtGW`W?R1sp4@XE**CM5>P+8?!6!;aYFzhr*gvhWn;}H|7?M?*m)uTl{Y`Qt@Gw7a6g4D6^f0?4i69>3Z{$S4X$Wg<+HLr|=4P3%=Wb9?&Gh4&|Z0wfC`A#-nV{+Cl zQ3W}a&tWQvKSk_Lq@eYdl_TxyxSfkvF+#fiNGJHDHIF*mqL7 zieU3rgb6YoQhiRU)=jDh_w7Dn8wHB(T&_1i8%%(`_>4BO3kI`D3v>0pb->O#4-7}X z-ser{jK5w$13lxQn0C?>&W_H6N~tBQrW{V%u&uSWP$(=?KCtVU8H z#omZ(TmWq`(nMX}Y(C7C^tso!{KFcb+Hm5oRYe@&)6;yvxA?jcezc*i0rpq+#K9Xap8s1OetqzWhk&iI1w`3>5APAWEmJ?QrFD7;$Y-TS%ff*uq*@F z3`ny|XsPh4WTC4^h;gs5)BWF0ZfGPB1Da!^EFDX371)2O)T`^PeGdmjdswJIzZNX- z>q?(dQMizfkRwk)cN50Vd@;LxBF3n*g8mvw0ihpg2BjbpP=NEIyozZji27(+R}FBp{mN?zw-DCXDmHj|Li23qb=(d(m_& z=pBGRL;R~XnUjr%O*7WW4iD#(9gO`MEX3VlCcg);aruJ9RR2KGn(+OBX#EG0WNM(w zbN}xOR&#K#t)MNn1t^$O6LB3?nPm*zEG@Z0)zhM*a7PWG&HoGy{ibn6-V!KwAkeRs1G6q@U~BzgCZ2iYvMd9@$?r2iPIL090t6`ad{O zFIl*@coO*@zU75k8hm%gR>uKs?6Ups3WQSq3o%nut#)^V0T0O6I~C_p;+^8pz8q z2p60p9qHsw@HDbyrhzmQ?J;#csfc>wQ^R$m|a3OIAM3PI->yVoi^pV zsx=Q@DHd$K5mKeB3vfC>8v6T;=C60 zt=;I)dFF;m?LhZDP_B=MF=b>uV9$r|S{1$~hU)<12w{U~t1U3K@n1+GL2jx9c_tmq z#e7-rBv?ZZKj1@CsLJ3jzfUf-{Xo2o-?X|2jlTub`E!bz~Gc|MT!EK80Tn$SRVcfcuL`@T?`lh%!aLjV`S&y z-;q*Kl($_xHMdGu1Nk?mM69-_{OJJ~njFn}k;&1df?Z${YgNrU4NP1f4NbKnjPFSh zy+8czRqQCPyCHFAG*O*T5O=Ht4I7wy3%*|*uA1*eVV?jsAw|4Y72jH*SU($ZjllCU3w6hMz}$axJVOZptSPX!0wNCNwl3JI=M z=scDhO2P3gUCd445LorCc9S*NI;bC~UN%$E9?FslF#WuFJ^1wMmiPEahbhT2uy>sW znlJg@zEDkihU9L<-QNXcE#&a0efqbn{Zv5T_;Bc*@wKkBVm(d+J#RWD5YIK3{c@IfILDL*_A^S1PQ2GihyhoY*cV!b4yj-OT zQ=sBMVLgUft`n|2wco!^a=e+%cL19W&SH^mVh5P!+6eiz~wTu2tg)`#+8(7$E&QeO@AWa4kMlP{s?Q?tCQb zXSRD@zgJwp?w&kVd{=JgBNhD|^J6HfKhr}Tf+JZX%cLaj-isy{7jkUzc+A=&`sJ}I zxmMt_HK!T5n`Nl~Bzm7IVdZ^nEX5-_df7ZMoG077BwWKVx%Im5tV(i*Ow?VGE7X5H z<#2GfO54kf$Tz^sCvtGI=Y-slW>ng$kapA`ePiaOlXVH$KJA~+e@{Y%2Fn%MKEjkj~NiZ0uiOH)P3E_No zRf;jU9ZMi%v!WGeOuWc$9M1+v;^n`e5$$es@pKN3D&A_Iw;W+1=nb{aO{ikRO5z}n z0iJlijbRwQyN*M@j5sBVZ$?~e^`>`uUN97;6LNsMca*2^r2jw|N7#IXHye8xkLdSZ zOen?k_qlWgw(Rg?&i}KsSW$3UOOq^0S`w5c1=z!)p5kE3nPyJEG9jArgnT+@6p^?v zu(YqGD|)#|SAp&Dq`W#f`7%eIGK3Ta9~WcQNvK9dSuSfiI)GBu1KOAR(4|3vOj?Gq}RG2c|K;CPaX5csI(Pmj&a9az0NFc=N_Dv^R514kF6*;jWHz} zJRwa>#7x2QXLi_7N3&ZS6SHeKIrNQy-Cy=v#3`v_>c_c>>*lxXaM>^(cY-RPj6E4E z3ZAFcRb*t?tF7B#tPHabI7xhGeLp=$in_4H;B}Gr%2<)9mt4sIMz*L)u`6W&9mHJ5;m;)=srK1^g@^2Wu| z*Bd*oDN8(esg@@@kdoEgea=1@K;9>rH5M+*K1StKw$~8ncIy783EkXvDh4|%2_i>H zVl&+br<-E`noxb*2ceu~Wd9)>vf6%V9m37-bYT_*Mo)_?%w3PI8I%)ML%Tn80U0vk zNuzH^f)yeE!38)&#aq)ACv10QPrKFd>j5OUsEdn)ecGuVnl==O@AtUR4uY5PveImZ zm&f7MW=ynDd#XH<^#Tht?#%M-iS2>=1^Q1JnL+1w2c#V!!y1(zAx>Pv+gke_L-Dy_ zZ>`%^xA=^z_=)GOyqZT$EIv0`$5xc% zP)ojpXl>XFd?B55A8C~nH1c7tm)?ju>4Pk(tET8hxrLnlL^+JiGmxyn6g9U022GvF z+EoLrm|0FOHx!5C$4Q6#bo@&gf-1;HxQ1LnS5%D^o;to8U0bf&%s?o6<1tFBeq1-C z7ac|#ErQ)L_^6A&yQqSLm;p0`3nloh7D=C5bVjKbJGVw1ME_7&wNnt!VTk!3wv#Cy zIOIA?FV^%}kF;^br)T>}SH{AdskEGPe^+t-96Kc!5brZ|6o}<6(5^#GNYZ{=T+3Nv zM}myY2pzT;5fUD1y3UbwG@3^>!a-X##*?@0nff z1~hb5sNA;p-7ASe^G^q2@nl=0(8^b(9}$`atKzaiyJ1hdvp>%H$!8icp`-IB(Ai4- zk~SxcnqH_~m~a`$70Tx7%`fN4 z51A3YReyGmwhF7KO<0K^J%Ii?7iMvV~mK$tu_c~N8y$yd6^2&BxeUn^h9VU&?9JJxR z)irUEmbN-)U%juvH-j9{&yz`KhCGcwEjV9Wl=Qz zcYHloOWI^DhTk1Jnyef2mwf~0SrF)fFW7_Zl9>F~gf=euNx#(KBK9j$`o@7d>F5Xu zFEstM{RgUWLn3psX>ZEb#DDt8l<4e)K^iDXcR_-?5}m?7J7{FG{wu_1aj=7k`lbGT zX!5_D)y{En&T+^fJi*Go9Q40)%?1y_H&b$_L&A|}a_H(QzErLR!DBd<2b?7cQIO#A z6aJk|)))lU~oZPz8em^e!nV!#8rfd{lp46%}s}o{_A!khiLmEN-~@sn-RyT z{7ADS^W~r0^k?FHIxJHm`E*s^r3R_58voc4|JCDqmG)`bTa;AeOZ(_WWOjVxk#C~^ z|0qoQ|I@SpMyl?JM2=Z2e+=z|e;Qg9YOSaX*G!?)jyb4jnH}vcQGC9;)c3*?n8TLP zNdAwe7SQk{`Vjf5uP(#JFF_hg;urhAMw-awiU{b}C-0$wWS<$tN0`NzC*n$|${~BZ~qAl-(Mzm9>o6}|q z-&neKo*I2vs48>sa@7r$7hHOr*K~S03;yJ8%$X3U$xwGVncO*Z1ClunXDq;OZcb_Jzi~Q#GK&Iauj9bnI}A)X$}oy z;vzk=9WIJ&y_@M|6i5^D!)8jJkdw@JQwrl9akEM>`nV{AQg&J?|2CI}bnnPJ+oa0c z-d_@4d#uFYnCrBr#T+KZ%Rq#?IfFrRt;de-o&!b!wk9oJzdJLO0v zC`XmOwpnWhF<#LO614ARKKdC|Kd^}YnaFqhJ_z;Gd5{vVh&WIh+R4!KR?o$?vk?Av z{;->>o$7YO>-#shrANBIrPJfxU-$WawajR5zYM?D@6vB$;oTNCf1&**E1nTK9)C2#ls~des%zQd_7+Qm8pg^Z==1 zE|zmPTB2^b1k>7!1gRd2OP6nk%T%RD?jogbf>r~Vr4nf^D86n}ON;bHwL!uT$m zmb^x;WwfnHb$oAp(WA5N!+`pR5aL+s;DXGyP2-gbX zbYvVRS$=eKB-o69+?CFgy;zx8%H%c?Ezdy}vbCp0wFG75>XceL*&iIH>aMTFe7ws= zHfg>r{00=^9LgE@zpcCHUqXjH+I~Y_R;8immui>N&;yLd2&zwaR*o*%n5QOi*EM`? z!4oeh40P6OKCZi54zdyY-Yc4K39nbDL_ z_qbW$HKCgefdBLiD;>gx&^nKEZ{GrJ#}_y4)_qW~V5Xhgaepa~M>vjdT)uV(1{teK zUTNP)#TZwYcjdPArflW;?Z~>R9~NlJ&{sJNbP{zlRuUD;^aQ7AVlHKe(C|$r>>co# ziFDN0e4|~jzjYwD*flF-9nLu>r`W@IW&Opd?l`S%!hC$*qn0SFP6-mfawj%blZmv% z3m-<0>=3V#p3t0JYi6%~{5Wr|g+qFj;XTsp~9!;K}Wmi4%g zTMvMesr!gbVk?X@F4GdBH@wsneO5`8IBh?>OfdcW*dT7j`&n(hDkcFvS^A*l)~cqV zZk^NG7JZwb%UYiAf|{Omwi!zM1Scb4VpWHv2kgXl=YF zZ*;|-wRQAjxV!GEaAx%av*z&T71D5>AIxn!i<{uxLT)cpnjIzoCbfd_LCe`M=&)Lv zgsHU_>#^*9Dy`K@o1+H3aLx)Y(Xl5_JfCrd2_@Nnh%jkiZut(-R*oTChP2TKqusdo zpA3zME7+69%THW&`C|I3roZ9q8Wig##pF=;xJIPZpud~(kJ{qynwJwC&d26wY%fc1YtY+ZPPfN^(am)bg^*!_L(X+WAt!4|{c3lRw*Fu+JYyPVHJ z!=^5h*xG94?V^y!;7rxOb6VP2*kBE%$eR&&UOfgTYt2R81sa4^x04vj0=oOLrmCJjYpxDCUnR49S6l_J3PT6Ja``TrFq$i$US!XGE$FEBs zeTfzdl{hltLBa`Z2Zq}3ZF}h05-#|a#H0n$r4`z35I~y|$65-V**>$@dDUiC#j4`X z$vgJ8Jprpw1Oq0EljcRS72=e(D~ML@EhjU1ZeAQWk@d(vXvKU9cObeDBJa$FR^hs= zWv4;nk$=&JqK9mh9Jh{~LZ0O6(ZjB5JnSlIi?PD&D%L1@)0nL54<0BiCUc77`#vfw zI1Y{uX-wv{$vO3Vk{5@WddUDw`lR198%nu2j*41aFb#4-yxw`BlDGD5fmU}{h~BGU zpyVZMIu)+nbA`w2yG!CU57(-cl|CS}s#WURK?MgVl+H$CydGPTo*sHWEabsv3$-Ex zljr0P)J@4Jh+kF&>_)ka&vbI60@afvzH2+|7W6%r0`9xqB%LYBIlbG^asx&_A(N$v z!jmzk2J|zwT*IOMqBykW9W9N6W}Hq=tvWPc`NGXstJ^*iAlxY+$w#XT)?d7$C;eH@ zGwpLVS5T1TbLJn;4Bkv_dZV>To^hqsLdizv9}kCJSw`zjGwUf9h~ilZ7b}}w z)!@jJPrCqY8%dGmoJMo_{zZDX**GJ%xziiXd_++oz*!A{LTa`4*B;#=x5Hl9X+9%6 zi|0=z?2)VKNdixHZhCh=02+%|c~5EwW^p@$?%c`z!GaUnNp~1DV-Mp;L zOM+VYc-OVPYHQ=#a+vRHasd^uMz(bPpo-?m&{w1kOJRHAKg7R269W6^>PM zJ|E5dp+*rTeI5YOXS!U}4+;_`^ym-^)2;$RfR5?4zVQa4*{Jo-SeI{=lx(MciFoP5 zvo=~O^`v9{DIjY_Thxlab^he#VDPFb&xCO`b;-NpTgOydc|S_;9TxJK8D0E1_{~;2 z>RZYcMdZ2G9DcHx1Xm$ni&*Ii$YR_oc=BNvg0$CHkRVNz90}6i{QJPgw3HoZRd|&Q zHqUb+2+-sb{xL8Ann_WB>>QGs)Wm@qoc{Nb)881Y$fN><)h+;1Ke>GEpEvz~OEdkQ zKk$G^1*CW`=;BBhI7x5wJ176iGihf+aI-ufBDneh!Xc`0?B$NiqP0sE!u-e(S&=Yq zhxDIrJc!rHXMB(I<$#pDxXgF8)_#u%{MN3 zPHX-92VXu9az6+u4@8e7i35`U{mlKHLqH-i>0uPIBy<0MNstT|f}N&W&Lf|Ujl|7Z zv3c8pet+lbFp#HH3GB&Mt`EkdE|g5z%6t810zba+;D8t8Lkg{2WrKA8-;eT=)fG4k z6c>>2b5Rso&E&Ly|MmYbWzZ6MvoHLEuCTMz&ym>F_d>M`VB0Q8gmeOlp%b#?ULdRP z@&=*0ssXLC#^We4`ZRPcvIBvifp)L;$y!U$SDCc=anx6{ub zl(unY9tt_gue#bJkra22q57E5o_ENOYbK3=rP|dzjzY1%j?m)|`QF}8F^9w~SIX{B zh(bf}#ev-bjoV4@J^>I%vLg3BJuP}`FKqt!pC}2y^PBcnE8nO{BK{7#6dPq?si_Rf zu9$y$f`?+*DcRsLP`Y^IYKWOmPza7!5IL(+_=x67lgY>tp;Tc)SBnnUPTxA9F;~XE zANMYlswko47pA&B&_$I?ha|Ht&|nowzh!%a`P}*yIX&XG#P}< zF(g-NE>e+_omhT;Co<&F*erl|`0b39kKKx|f+lz!j$2|W&2=Q={iRiA!d`!H}6yf&5|dP0f! z*N@idwp=z_8zq%7PT$?&+TC{#FJQc2C(2#o7~Qkc?6^kc3TDU>yY~?OKl|^&u9K|OyIzO zzRY+MuWmaqLNUqcf%49YYh;h|TI0!>p;olSmF`G-v7u{8BiS_!)b>sn?~7MT@bC*O zd0a7BI;1kY)mLQ~osZsF{Ke#&RBGSQOywBY;kENcG3StBH;5_gaa*!&kJn7$t7G&k zDKmr3?m@KV47u9Xg^N}kDOLm%CFZv3)``d+hnpg zy69S7r14`;kI}G{4HkMr85|Ep3Fk{Td3=p~1eO3*4H@}#!(Be|Vw!r>^Zo>Zq#h6F zW<$~8Oml_nNi7~mJ{YL|Gcq*Ahal&um3UVS=qo$yC{m&=1@$p8tL`-G%?M{w$%8xP zdd(IOtG@-&WeZyvH20FygZ{RyUD>rqKivb^7=9SLB*|YjntS1G+#@pS1iG*#e235P zZwaY|Q@l@yLQ1!>bGtj|&~_-ikE&Afbr#zjC!VTO0U`c1F zHO;@}|7qV1I1iE#Emp;s&^EFieGuojjm63JX}vit_nJxzA=%GaylP`PIg#@iW6_Lm zDlLQ8v;)AER0zIq4&((h3ldPyrC*?Y_ck*d2_P1SLC?0~e2TE6*$;E4JQ@8bI z=f@jv$5!Y0jJFGIjpV(WT@O5fm1+rk=hq+Vr`<_!HEz{KmF=uooUD0%rs7|ETlw{Y zYV@I|-8b4Z<|g5(9MA$P^RVrE;o_{v(g(?G4waIJ7*zE`6F&b-+pNfyw1;YE%^q>U zfAMUu&T823;)&y%%IT4C+*-nSQwJedPZDhTqU@v3I1N7)zInuxQWVY2zxlH5oENLT zSmen|%}T~_%L$W-mm<%x!!=KYxxKacHj5qKok9nyLPBcoS;~p4`Y?|=ro=dFb~R7` z-Zuggb3@$NV3Mgq@x7B$kqSnktE5wJwT+|(E#5=KSGfcH3R{Vn{kStn*N2?Mc@#n= zqAch&W+8!MI8*nS#%d?+|7!0mqoVx!b`e2AK|n$fr9?tX8U#jSkOm3qP`Z(hp;0;{ zlpY#H1Zj{~8l;;cgrSEJ={|el|D5xldd_**IvM`QHUsyZ_wuDmr43`4E-7wObv?H9uJkQlOVV-RXgbF}Vosju#1z zFV-$er?E-c@05krlEn><5*LwkXc@hm*sEIZq$g@MJGT#6htTD29S76NE=QcDj0yFb ze&s|T5AhV1^`$-cnRyYzSDmMDUR1xqK7hH|vQI~AQ4#|TPzcWVlU2{2{{BKhmQnQj ziv=uCZ(DhOGMPSerS)|Ta2b_*cl#Tvhth2#%tfPNK6eA4FW=x5q4~>5vXCiIE;saGJ2$PoWs znT?TO>ufpZX#lditbEsWEM9gLfg=!3vGcJeb44ObNPnyVHpB4h%GGKp30vgEtO+dg zAeB*XujQEpOg!`;hwVjfVb)8j**zl3I7P}-il+@btZnx%X{X$N@^B^xtH}ksM!`}M z?sal{dpq{9ztE5Zr76m`>L6VE_WF%VL?-!zQfXPsZvZx;6cT_d=?q?8>wZ7%sFnML zurAu7$nYlFN3=|#C(7p(+0mmjU(kYGKSXfPT|^nGdwU~9oG3>qup0p2cGm~4BB!ft zJcYnq)GfVgXPoLDP@q`MTd}~IRQRctNOb7m_80&RQrzsKV4YV|^|-S-cbWRFj1|XV z%LF~Zi&nZLVqmppLHMmFFx5omxHqiC(*s)h!xoX=>uqoXr2f0$n{SfZb4@oNxqPo2 zo6OtJ_PPN4H`uuh@psg;2bvKFSlelraB^bb;<}sTXCogHaH7}>6|1KuZyAwlw~aRP zU)&%i(*f?z^ZPGR;G60}z)$3ljC%|AoXYgS+13cFQW?>Za#?B0g-YjT>GuvwORuT& zGs3Kc?MDrmWPOD#(0u>kd51B@6ZqkIY8ab=%F*D+N4sE`RiM$PYQBz9@|2$aW*df} z%?+~tZT?;L7oE2WV!0r)Q$)fK+C!M`mTO1NK7)jiQLk@HQ$aV_vLPj+Z@;lH$W96S z*-Hykm{`B4MGH&v+%wKxr|hL#lx|{=7}2-+gy@;HLkBiSW*!}1L)&$aRfkp^(ghpA z;}e(?I5_uf6_=x{O)Y?tE0knhtWRpc&J01#hvB%(xJ&GX8RPXVYMNkZ$#L4irj{Y( zuxJDBZkS2mGX^*ovxf$wdbDlJrE9$oXnvkARyea7^oPHsVzm8tGP8-^N9-+yDZNP5 zwCbVj#WwKy; zb&&_}WS3G%G|jVh%faOks2d^pR`WD6Gy z3Ii5KJVq>h>&@+>dy{31+hXkvMieHm-k@HE##ZLz{cBJLTW!T~Epr z=r?8PZc$DXq5j1M_&ccc(WxOR=ocGZUFYGq_aqZ{tPV&uAP$pBafK&VVEyTP{@EuO zjJqYPxvnAi)AqAc)j;yJZrkhKjOe$3Ed!{;$B=y}*88o;sXh6s(oPWKcjURVHtYnk zTl!mxPe6|I_GFI0N5GD(QtFxXFLqpk6Wz3v@%7d@xkvX#Dt{tJg*L3X>Y8=cLx!TGb2G*LqJT>`D=- zbh0j{b>!gKiDoxuy$Z7lQgzaS6fq6GK;32 zQ{XzGoBxJY>fd!Hd(8?RP^g}^>AwAeE$H}p$!48@r2Mv(Bqp$s1T|t5n||FmFh_bS zZ+gWsl}_Kl`d^e4Z@>OOmKA4cyt<_V0g4Ih0+>Sy=e~9LuwtUA! zqG_s`-yQqY#cmvIO_b%WQVA&t)l#noSOF@bX>%a{4T5ls9j>6N1v~;Fj(n{TMVo(Bl1Y)x+fSF3{MjKxapscz`)b*$s zgTu3rTjl`bI$9nG&y^~Z5w*6ry&_X?(z(q@_n97d0b=taiR(S>?6Xl3J#bJrop27K z%j4a_W3~1M#t@^07S;sl&7l*%pDx`kGA>}`5=MI0m{S<7?E<(R?Ot03R{a(H6jpOF z@>tH9m(xHP7tPoOc)eK{_H#Xd{vovf0yg`GXk%h8_M_isWAo$$8$j9|JQ!+r%RBI< zjILKXBi`Q>K!#N_LzGEUeVxm}_(opO6kgl6cLZd<$urffH{Ig4fyK*#uW z9(*rAd&&oOEOy=AYfF|J&jNlj_;y)nvmNj~QgzNcNa1*=hv=%dxrFY8`2AJxpJU#H zOpegsnHBQKi=WO8kx^1J*oOxoKa1yn`|-in)~oz-?^wP_Ioe}bk|d+&T9(}tMfn1N3{S{q2Y z6J>Q8lxlrV`+)mY57xgDnUXiX;pRTSXM)Ovg2KSPjE-qF&$O+&9mO3$`W11ds*6VN zM5NPoF#)*;U2mjXFX_wP;{YskzJC$jPX5jCPs@_Al%ntvD?x+(J zdnyfTtp|wP!g{&-IGG~H3OXq?7<1wr|Md5Ogq(#lY^P6qfdj z5`G&@7*Mq~e>dVpvSkGvxv#rWoqeD^GVG2)WxV)1Q)#2q?DfDfY@B2fM=4oVMdKbH zq4I|@v_H-9yyM)PuxAj1hqLDwY+xYHj(n~fp~+QTXFlrATN7{xCPQ;>M*aJGW^kG_e(pC0VGD(5Q1dSjTRwg zP4w6n-lPthy7(PH@Pe+AihHk`j9)2TubSHVeQ>}fgbgXPUA|@&e48t(OW?M$V7CiZ zcx#dSwLQ6cRv%)rgt7rD1XYcG(LGiO+^aHperU7zl+V?raH#ELudN=;l7NVWv)VY^ zTq&RRl5#IiL+>XKBEi~ZpJdic{7D48OGlZu8f08=UPkS(M>o9R|JL1SrEXnhDIy6{C)wTnTkCa^K;^+qO!TY^E}!LNkk6eOG5ppkx`GoRomNUD}NP zuSo*TyYURY4M}-+*3s4H8K}GB&=8aX2txIuXZs}A!C|DU56+R5D3F9R3qC6n)K40U z$z;(6wF88zzvr+y7l9A8>k|2xU1=oJf>US zvNf5pB~~e_@d~cGm*=!@ic%FFb?>td+mLL1sNUAFbG4KN4zdcF-GMLJ?K7QVEsFNY zMwT0)eV^dM8@6)=Ejo_ig%wAfQiE@$g;QY%9O||E!Ue(l1AgMf0Vk1;R~{CyI*BNv zjY05NsHB?H^!@c4YFvT8`zj8Z$YPZ+WEg^0}7NB>U*0@FuNzV@X`0`2O{% zYCB|4rng&vz0}O{kDVL${>p}iWa{-lrnV1@znRf^hG>kalX%UttzHtqH%}}2+}bx! z{~hDrpXzfWZRh~O^BNzJn`3gCFP}lqa=!NM{K?;S|2(M?4$m}`WP&w3&eoa95BtSn zF<^`UbN+61ryCVN{5X_pKY<0oQjzdvCTvpQgAyN7b%|khWb_cUoPiU_Br9E4>@w0f z*&jEA|Nc!UC6e^-tEp^lvk$z7$Bvt68>UyZZ2%LuEMbU3kE|~~N+`|7a{HV}n>!P^ zectW6(ISQ#XN1jwd!CC^}cGxmOc$>GYyX6 zllP~)^&Q#BCJ0zGgMoooX1ll7RKdMJrOr2DyNeym;0Q(E8exyUppY|Dx%h-2%#tl; zF#;XP^d4NjVR7&D1SpvucS_^ySuLl4tMelQ_Hb+tkAbjEpK7?OE!sv#HK zXYI})k}$W=U^`R;ns$MHe;?~s&We_Q6#jE@De68$i>`9}wo_w{S9b5>xdTndrK27? zKZd+@$8A|?*21=Sqf#12{8*ix?N67$wXIt%x9`%5M#(YBwL`nO&Rav6a9-jMr~^d2 z85$YlUn8m(T}@xjXeCb)(&`7>BTpM;7g6dUw~j&quzCoR$~I%ui#;BU`3F-W%B8Zx z%9P|uELhrn$~n~JNzz=Z2CLldAfV{-*Zu?~R~T(pBk!P9DNNGbAp8i8vjCm^bFlyK zYzL39l(pZ_>VKFCMOh14EILu89h(C@6xA(*<8e`ypv$3RKOgD!gm5Zx;}kkf_y!YU z`e!RY4{mu&lnLR!t4>+1l=Z;<`e&tvVx^p75!dx0o@{)>dwNPj9H$CU>UtB=TEAMw z5_53nZM8u=O_P$ynpt2Qr#ve@TT;cj0x?bNC0<^o-&kH1P8CUi|5YTC^P-Kv;f*)2 z9G4;p0yZtnS?k+;+vwC$5E=m|#?~OMvi6KD6m{!p(sw-*gkpG}*NoK{t?np+h%99Y zp}LcYo9CQkxYqoueRKlF6v(t0SPl-zejdc%g${Jae$&R+;Byr3!@1?wE~E`kpV*#o z>9<74J;PvGOE5Vdq6@{k5l?L1be*xXbJfPfb2x8jT*n=3tsrt=;vx7_X-~|;YWLkZ zkg+K=feppzysVD4(S$lb6Fo!!KYsl|a5PA7_9Lt;HzEH*{?9jg$55^vDeu^~GU(RxE5B zAm7Of8y*<@UTrfeE2QY-{wJ!mLgBqf>a%2TbboX|2(J9o(tL4jcEq}Q@gy5xOG=2t z?Fooc=LmndsZqc7Y6)$Ja8&mEgxhvDe@nxk4PCWU0proq)XkleSqe)d17z*o)f{dv zz!KLRv>#7xtoj}hHA#UV z>O5l>A`thd3cR2KoS&3%uhMRGR7~{U7%o;EdY0Zm zyw;u3T<6#7Z`Sll{3(qxnZJ|leA5SjOmNvBTI+Wg4 zXiMx^-4bufQQ0h(L|-^qxzFQ)QqTqa^268eJ`JS11-pi;285-Br2H>`j7Z>Jo2U$U zT|%ftn9jFh*oe+z0tb`EXiXvuXD<4*11K#Yfm?Gfe}YhB0fpkxu9U?40W|M%;HQ;U z^=x;Q^ufb{&GvaCBSLY(k_j|_y4yeyc?C);7(jbRmrRhrz9ww+nI@+XWy8tzRuX^1 zc0?lg>&DLTaDFgAvH>gkC;OFmmMG>_Z!-i)H5r>Etriv3I&YQEstvM!CBbzL&$ z;4A4HrtT6V43wgOUm``oh0wChVxOxC@&Ti22dE@P7jfSXXuA`?D)nFI|HyNjMH2HN znkFrk9QE<)ao|9G;Y@y_T$Fd2Lcw#Cj4pI-Sm)oXTvY+dwI*zdUeloy2An6HECvzcnyCswVyJw!4ZaC=_%=i$g$ z28Fe4vow!)n;nJ)(T}9~mPixL0`VzL`K-rZ194Q!vu{BQ#5EDlUEjj(a}-a<$*$(2 z2O+wK+{y$>Ie#KscL7tW2LvlT`jIiMp-$AA=Zyx(2v@P>QT5u?L$8@ScT-@C8e*ue z-QavGbg$64+;ZFI2{_s-;L_wA%5(SriH#$0HGl$Ej0k%^4;9R~lKExDdco)XF*Y0uhJ1UoEXgm%kg9V>t$ujj5CjSr4kJn*LMccc;G)RHU zoy(=;@Ma$bu<5qtgwKC>a+>~1=uq7PLCg`HI*=j#h=v_3Ve%`O{FmfMBP*!)7P(^@ zB?F2ijCCy@D=87!M3w(}sPRT3v2VR(6t1y*@MC`=`uiUM{XsAs>>MOPyEY4{^>G&+ zX$ni`7)-k%Bb2>;&X;|t_LyPtfisfT^1R$4M=FR(o#*PVJ)@28>h6BY`PF(s|6Agp zQf`D~kz062rY*XfF0REoZ#yw-_M?` zA4&w;`>J;{p98c=MD*ciB{i@L2ZY$@*TYqIv+@Y{KNz$+?>@}_e1E$KWS(apTW~x) zTT&+b`RBKoyJq!IvftKu&6p2_2OtJYL@>^<*}dk-1v8F736GjXr*lP_W=X3&%`e(} z@+f{#sU?##`Pz0}xJ`7zJ45mo;U5a6y~-EB1>T<7;&jkt#U}3a7+Pmt`FxTNR6}TY zegzOf#>vAT+YPtp=@q$)_ZgI?N`*1eNzZX7O3~1Vq|Hh|^>tK2>E zWj%y}Nu)%o(^-?)5>{g4_6Y#!9>W@a+$#4H``$S2UK8PWky6_+^z-cutbs^;(M4gQqYnEDAIK* zh>gi(AnMuLamPG4ouc-yyHhCbT@-(IrPhK??ywS+#2sgVy$vujWlCQ2Bm<*f-ud$C z$*hB1E5!yK_w`oRt|r5&nRDYXCJ2FZq3cm^w_n(3Z81Rm`{{d|-xszs{H3Y~DG6ukX-$wNq$IZLW4w z#`(ABu*|5T-qlhNO7{VjS!A-V9#n0N!mb8&=>X2mLY(8Zo!`Ev z^JLv%yY3b7-Mpv05V0kT;Iw5_J@UfoB~7Hi3aBVQH1)R z#Itm2ex=ikjZ~!$+o5~yeZvuW9Z(sDUvYROx2}h8`CfYw!>$sFdqf>uAkEZ?^WM;d zQ#4~!v`dsTI?m5it<>_D(jaCxF{#}i&Nec&~-yk5U=wq;i6JgNn= zv3dN8uyuAy$G82aa@%Bx3WF>j*-`q3DtyjhLx(%7uNpVH?C_tAK(}>5O`*z6j`( zS7wm)9Q@RcrS*jPF{9FEr-hS15SOy0;xYv>R3=s6154aWss$T#D?F+bDkI`fRW=ex z(^Y4Qk>{)r4;s|An2z&j`tF~{SzT(uAZrO*_;4O77N_#oHCCP^wvd7Nu^D3b8*KWuI=HO1)4UZi3X{WDmgQBJ{ktNQHfw2or#ywzQ20R!)OMiLXBdS@b{0Iq#oHGs(olQ)OATFIx~ zVmfa^*N)ZkE2RNtvp-Rnd@Q`gx5WP@h~C&l1-qTWhw{2CcX-pkGQ^JML4soj4ZbHa zHH-#=OjI4>R?7(KKsAN95*I^x!d6T*UeG!*|7u<}-I!CdV--^LEDPbsjyQApOKqZVfSv%jYslTWn6)ng%g~6{;#tT5>5{6C5z)?F@Is zK2vD&$917=0d~_hfMnzZ$ugFGGoeP)GCS% zhDgb3jrF|WR`aMh2M!YKAm3%gu_XEaG)7J&^+TX0T>PayXYjl?DQ?51;TcNCf2f8E z<+WxJ=}f#AwrX#nDuK9A+f_SewLR!a?KRYKt~=irBN-xa@sA%fAe-vH0Hz1kAEnYL zfYR}~0;@)Wad>Kf0G3Tg9F;ujrwFT}eJA++`Y#yoZCpbU?(^!Doo^~7cPz#_Z>;2; z2Xe_6F@#z=xhrljWLMt+PIsjstRa6+g2tq-Em`7Q_|``j^auc4Pa7glo?w+H($!?4 zy4uIuXH`>5UvSt}9;Q)DOZ zcy2YovcsJtiM|x!xCkbevWs0W-zNdG_q!7eIc@O{=2nr#teutL(Boh%QO`y9Yx1@y zZf3YyWecgPS=^Bd?8($!hyEoW+;k01(#r{i;a8+XAB?GqBl;SGDNwjmBAoq6lRtxNMX!Mk3SK zYdAbg7nA^@pquCvY{TX80R-RI)W^`PTX)b3Ycxxe;fe|G}SZh)=k z#FxrjwVweSdZ)(oV=H?+{q*ncNJOPG&FJ@dYJ`E$*+@O`;+@{p@f#4ZYWEVW= z+;{%+V1~VMZ&YX6rfPZ=ztC|H=@p*Qr&uzi+FpWR&-F^ZDB$XSz$*C~B^Ed7mtzZG z>=yyCmD8wijrw@3!~5Jzj^KTQ$*{CO{7jVBE7JaN%a=B>f>l@MW$RyVmJ7RSA(0Jj z>0>W{n^;p@c~j*%D@>jYjq#24Fz`=Q96MN3BPxmWX}VNgGWSNT#NtNV8nZ=81-D(k zFNw7$eAn$#%rhPj)Te0n?-Re8KBF{GnS)gvFn&=qfNYCrBKAky?bNmCGvCG#-XQgW zSWfl8CaZ7tqh^_>r#pRT7am@~JZ~C=wjjI!$#NR}&)I3%R{hz@Xr#BIV0)K;HE_2* z?$b66^;U0_R-{V9&Enf?IN8)UO`D)&Y&CxRy{LLV^ujpPZMk2lkI%*G1mrNR4ClhL zkAFpg)8w2J@SJNn8V={B1HpLu4g*27C+n0b9UC2;eK?mIy$|~iovHbFwd2&s);Fwj z6udJb$y{(<7X>F^IbF>{+ma3F>uZ?*Gcgw|2A zsNC%Kvz}RSsyB4;Wh=qIg)^&ZR|4;C_U?2P^vECHEgDt3+wN8lc?|#ywqS4$g*?e>$Z(& z`}zE=MrJ|8@GwHDEYYKHX#k;o(J;1?e}FvAT`#l`cahi1T<%NTI`hqUQTcmz zw464L&p*{~W_u3&NM&FmFN)&4coDXV@-z4T*vP@3pC2Nb!g$8)y4X*Cd$Z%rUk}qJ zX1*{FPlZc7`n22iz^nhp)jE~#j2U)A8J*2NlOGpd6;4!p^~-Ck-r9Mk_+Lq_h`^k_mcSY z=O^oB)9Bo4#QN}ww>Mig@kZfZ+RzDSa7<}z8{=dr+MO(oaw0qfqt>2NXZ0-jKFpX; z-(g{an_5DiH9Z!^ZxSCw<(6;*>>E>jcv=;eMjRg3b5-d5YtFCV^-~s$J2dXUv6g1J zD#CrbWQ-E=*+EtPZb^3EdgsxeZYreowKZebIhBjMZisqun}Q-|lD>v-ad+7=^AIm3 zVcYOQUGo=8lKO?Z)(!FRG_rVH!`6%Wi;z~qFtEFH%e|p|`s}Y)u0K=7j~uebI)OsA zUfC0_#nB#3ks`{&3=h0>)6rRD7AE*$p0d(1m$LBO)PatdTXOW|8gT%Vpb)KKoS?;V z7wQ=J)1sJyV<FkH(F`+5_L*U{K0%%$1D zYM;;HYyLx1+!7oh3Y$(@A3VRrq48?_;tposxSnS508ajXdx~FKNGsl3=!Ppzs~Fq0T0PY@k0dv ztL&E+bvg2JZp6PI()b{W!0yyO_IBpDssKyBnZ*XEP78dx^Su0})psTP-pnCwZulg} zE8B-e(EP_8%Xi+3uA1g$x2x{4gzMq89NGkuvG%SGP11zUDrS1y$h{|s(caHYQ*EqQ z-fE|j?N#hxU=E(=rc$^#qUq8UQtpCom*!P=FRZr#yWJGL!^3mqM-GxMHmJy1{{`yc z?3shVl6TJS;70i_n&q*T?}ulqj&@xJD;2d|VmKJK7AyIFy|~l4SoZRakH<=aqO{9& z&+EA2D@~})(camlL<)I0tJlSF+e?gg#1gZM#}_Kr)sOib4iB#;^y_#W*89*BMgs_U ztECnzxTPLwXJ;(zCwb~-hJ0N07=o<1pSYD-EN;bZa_Ff^sXPEYIb(?ZbOk_f6vk5K zQ^gf1Ox_k6E|5dzIuXaS?A{MxNjA;Qu9ULu_5Aaii8v=tq*{g{v{OA6z#HOZ@DXr{ z)#;4z%qh>4gR{z9a}Fa0S;eh9Ff4!T+Co(KMfN5#eEs{(*-SiMTu6!$)(3JaJ5+L2 zq?YfVJqmXCoRn-YfqvUGu@fecK$-D>r4W0uZ<3C}>~-X9g?h&2<5U#lVuTx9!bqYHmut3bt}bWri6&bx0_72CbA^8L5PxxIXXOwGX5u~`6kVkB$iFA&@9 zMpl`cJ$QTZUqZM>6|L_=C$br2e|-+&`{j@6g5;>R;Z;6Wr@in_F(@eHQfs!B2gtSm z=qOw)S>PMw_hOaDam^E6F|UFwLot%>n!oS6dGjQAm4EpZ*YI?yl<#b51 zR;+~c*jJ;+1ug)uZk(ND0~$pNg$AW$j*2%GF9lNbNIwQVup&x8nljpAmjD{&C*0K6 znWDwJ>3wR&vF-B~7A_uP)&WlOXr#5N`EqhMAXPe7b;`*wIaSdRyX|q%^Lhr`MIw}2 zS>b_-2gLb{d{OQQxlqPUT$dgA6IRriL{YBX<}PjW%|1@s<&yogeI`T~@$y((GVFQ9 zG!uWLDu9CxDvW(Omgx&i1C3i7M(o5U9Sxx$_4%l*bgVWqf~eNU8kWY_(#fM@^!O0j z6)D~D{OMlgM){IY=hy=e6PY7(%F6|Vruc@RWB^l+|2r$ZmtG5labs&f8{VIO)wnIE zy4J)pDp83nrdnCw`m|y(4TxY*HDaYU+{~Q!+ceAx^PI6eVB^>*)6?wSTM1EiCTA=v zty5$1^M5>c6SZ>&V70nsAM=K1D$gVJC&=87-=jBfexGm%p%xZ=rZFbWH*GpagW%b# zyya#-x8O-}tIQik?)ZwRr1FD2j?tdO?^8K6vaFj{6OWNnJ){*_hCj4eT-I+RmL~tY zXkpu0S;miaRV*#{vsex0a$JrJ^N&q*VsYv>!*mJ9B>@_%6|h3YCpwp%35sIktW#dw z?P};@LIS2DXb3YFPNsZD8!w?|G=?H7wD{mN%V-ak0)vE~=p%q;BIL0QFVRtxIxZn} z;)(aOAkjn&MXN-jv_p<-qxc1wn1l(*7#=3JndLVxu~x0LFHIMF?|m+6l4~iW0ZE$^ zH@a&Q@gL&@On<=$&=&JQXsafY=2ig)W(0AQg^j2GebOlBp_LXIGAx$_aJe8xf&p4I z+I`Ij@S>@Nj0B-(AZQ?$?m_*l(Vm9Br^tY&W6(epcb?SMO-G4x1v`LHR2Q%ncZLnp z5n;2Zb>gZlF|9fO(- zu0*A#Dy4B!5nT?RPC|!Z14A(2vOk@|V?_HR@!-2su8@NN$WpOF1Kom`=`<>Eg%pYj zLlXH4ars5C?rQG_(f)v-po92uIN%wg-m08I#%if3Ts zMA%TJDP9yzhzY?<$sC~^E9M$;7(uEb1ZWCJ0@K8#;nRdXRx+O;PE*9mxJ(UMi;{<6 z$P!=~Bq11uGwDsKJW(`)p|NPG`VfnZqCy~07OWgeC8{}eEEp#uqI75l5VOQ?i| z4h~}*gq%>BFh)#cNkZ81(HIr@NheKJgHh_F6d9HQ{-z*9lPF4HW2B_?G`v}!hE7U0 z$^|Jhc^DFDp~zAQ;%GXS%40?8^-+irswIUK9Umi);$p~{7#fvtCZY-AD3KOvk|3a2 zWN~O-m|PSpB8D2$F>FB+c$i3JOoNtg#K(!r$gmVXQ-vkaNLosqKyK12ka1Y5&LD~w zp@9LCkRe*FJ`}QBJ|7qt5{FU{lFMOF38R7QOjAg@3@=ww<7kXD6VhT7l6aDY z5F(u@0yahxpkkOwLL>)6iWVzUsEjnJfoNoD31ElK>}Zhz%jJ^6v=j*|S)8mF)3t(F z5ji+HREdZUL&UMQYDS8L%)!v~QZAa4CLxK$dPxE>H&QSQlP*ltrn932TpU79Wosoe zajKXU$J0ckj0y`yE{#ngn$+nkNU`8wEKmq8TEsMmq^6;b$}p0W70)J$R0;|$0b>-% z6IdY{M2wEgkJHkaL<$(JjnhhS6ntpyt z+i2jX;)qf`MuiEXrJ*sFFsdk)q>PP<=VMIZ7OBc&jy0!ffqqFmgpw*0GO3(YAxEw< zl8rGb;3_ad9A1P@L8F8`v0OwDhng@7j*KSPCvg)}Nzu}Dx(Xo%1Cym;s3amc4HGYt zS)>-NS%=W$s4^r`6bA5tB_&goW;BTs%SB?6Lc=r)7K4&*2w?;pXjBQsB0!-eN=OJH zSIaWV#i@FN5z98yd0|{`vLV={1!91ofvQLfjsm9w&`r|OnIU9T3@Ry%p2|nbX<;c6 z0dNVT1^hi5@MIKo~+v1s7A(`SC2QNXQbz zMqx}EqyisHr_y-AX$T(Vf3&190*D|u1B$1xAhjlun5je?m}wFgO=QHOWE_UrBryl; z1$sQ&OvO|9YNkx9*Gu_igEUDe<#B`-TzV`W9UaBu;i2b)xo|SFA|Vx02_k_j#nMCB zQIP4Qj9fKIi6q5wc`619ZRVf_DtuBZ7oB3HrV!9F5>G&2#6VgAgG~Z`oJy`1Yjivj z56@<%>9HCu62J#eYY;2gMyh~sP7jOK2v{l{ix{Pg6_9xZJeC`$isdGxAk^tREM1c# zNKhd#oOFFC5kZbkPRGe1I7$$vDwQHrNSxRxH;17@gmGp)Q=z3s>C&+(3XjQ2)pApk zAS_jANQ6{1S4)bL6RCPBm8j7Zm`IAQf6cdNPlZ%7|l;5z!nK#faBg zkZM(MLR={1bO{N`TCCR0h{8mxL!}TDiIDNBQj`(=#uixkLQ7h@oEsRU!)_ zDqY8b;2dYx^5kSo0uhlEN@AiylKDb(h)7NirKj+iCc2mtn#?2U(y7T(5Il&oD4d+d z5YV|CN(zdhL?Q4(A_0q}i!qX9ZmfzPBBpSOToj2eOaM+MV5gBdDgrB%Ak^vcAym9B zUMN=45|FVh4g-}YC(?*=SqhGaWEv5%G@9NN%2gz=7+j2zm?Gf`7-7LAl0lFx)1^qFcqwF=h|7s(qyV48Q8<9+kR&D*E`*K? zjwgmFq%n$UGle2oD;V6gXcaC^saJ-jTOeCOkmz8rIWAbjASqCYcm&r%gP;}}M->F8 z6Nz{fKOU8wisqt~Au)W8SOlm9js(6(p_7ChsYS}f0o){o7zNy9J|3gP#?yk$3TZUY z5Q_*!()1KGPK%A90`yIgOR(~^bat#HL?261i{(i)0f)tjmxHj5V=7~~2#i_{H~>0U zA52rHDYRh{A(6 z*eHRFrRB4b$pR8JjgO3%FpPYxFag0r>SVz1Q~7ceMEeXvu9QGe3zezU!orl8q!0=n zi%X{pL*>y#slk{+5TMZ5;9w4#!Ur=e!o(z_0!U3apKvsxzWvEF?5iP8Dfmeg^|ibWB{5P%LAMuoMnmri!B(aKI7S zI$RV%5t9}r;X>h;q-Syj5=9sxCN)|^r{Of_I8LyMNT-lB%2<(7mJmfEvJ^~OavIC1 z;mPQ%bR=D91SSjkGQko|)?kbVoJ<-kqs2@4Q8HqJ+(;9}ageNFHA|OHz{PUIq|s?n z9IYfa3LmGBP7{;F=|*;}nUp3IU`<4Znxe!T5YkWqAvlf21h}q4r3n)hNQog<2A+Z! zV8X~Ol1Ue(3QmuSMiN2rp(Ux2EL3PPRwzhNKm=EsppJr6E{~Rn8p*1Vm}qGbEk|0b&L4`t)guePP063%+B`SoaHpZ|7Al5}CAuY;y0P-?~ zT8xCEaIzvkEjC^srA!NB^HCogCnBo=@bsy#3k^B7zTp|bWAp~Ogw}
&)5DY{DGb#+HNu?U%LK$cp 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 rjbVZ|MFL?de=fy;ZV Date: Thu, 29 Oct 2020 00:56:58 +0800 Subject: [PATCH 230/447] Amended UserStorage to make it compatible with changes to the Note class + Updated UGDG --- docs/DeveloperGuide.md | 15 +++--- docs/UserGuide.md | 45 ++++++++++++++++-- docs/images/TopicListSampleSequence.png | Bin 8151 -> 8166 bytes .../seedu/eduke8/storage/UserStorage.java | 25 ++++++++-- src/main/java/seedu/eduke8/ui/Ui.java | 12 ++--- 5 files changed, 77 insertions(+), 20 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e4858e11ea..5751722817 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -68,6 +68,11 @@ The high-level design of our program is based on a 3-tier architecture which con #### 2.2.1. Design of TopicList +TopicList is an ArrayList of type Displayable, which is one of two interfaces implemented +in the code for EDuke8. As such, many of the commands that manipulate the TopicList make +use of the package java.util.ArrayList. The TopicList is used to store Topics. Additionally, +each topic stores a NoteList, which contains Notes. + 1. Listing topics in TopicList 2. Adding a new note 3. Deleting an existing note @@ -75,10 +80,6 @@ The high-level design of our program is based on a 3-tier architecture which con ![TopicList_Class_Diagram](./images/TopicListAndNotes.png) -TopicList is an ArrayList of type Displayable, which is one of two interfaces implemented -in the code for EDuke8. As such, many of the commands that manipulate the TopicList make -use of the package java.util.ArrayList. The TopicList is used to store Topics. - #### 2.2.2. Implementation of TopicList **Listing topics in TopicList:** @@ -123,12 +124,12 @@ Step 2: The `NoteList.delete()` method makes use of `ArrayList` API, specificall **Listing out all notes in a topic** -This task is performed by the `Topic.showNotes()` method. +This task is performed by the `Ui.printNoteList()` method. Step 1: The `parseCommand()` method instantiates a `NoteCommand` object which then instantiates an Ui object -and calls the `Ui.listInteraction` method. This method then calls the `Topic.getNoteList` method. +and calls the `Ui.listInteraction` method. -Step 2: The `Topic.showNotes()` method calls the `Ui.printNoteList()` method. The topic's `NoteList` is passed into +Step 2: The `Ui.listInteraction` method calls the `Ui.printNoteList()` method. The topic's `NoteList` is passed into this method. `Ui.printNoteList()` prints out the descriptions and texts of all the `Note` objects in the topic's `NoteList`. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 84c537bfac..6326c2730a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -13,8 +13,11 @@ Table of contents: - [3.6. Accessing the CS2113T textbook content: `textbook`](#36-accessing-the-cs2113t-textbook-content-textbook) - [3.7. Starting a quiz: `quiz`](#37-starting-a-quiz-quiz) - [3.8. Showing a hint: `hint`](#38-showing-a-hint-hint) - - [3.9. Exiting the program: `exit`](#39-exiting-the-program-exit) - - [3.10. Saving user data](#310-saving-user-data) + - [3.9. Adding a note: `note add`](#39-adding-a-note-note) + - [3.10. Deleting a note: `note delete`](#310-deleting-a-note-note) + - [3.11. Listing out notes: `note add`](#311-listing-out-notes-notes) + - [3.12. Exiting the program: `exit`](#312-exiting-the-program-exit) + - [3.13. Saving user data](#313-saving-user-data) - [4. FAQ](#4-faq) - [5. Command summary](#5-command-summary) - [6. Glossary](#6-glossary) @@ -181,7 +184,41 @@ What you should see: ![hint](./images/hint.png) -### 3.9. Exiting the program: `exit` + +### 3.9. Adding a note: `note add` + +Adds a note to a specified topic. + +Note: +- There can be many notes under each topic +- The UI will guide you through the note-adding process + +Example of usage: +``` +note add +``` + +What you should see: + +### 3.10. Deleting a note: `note delete` + +Deletes a note from a specific topic. + +Example of usage: +``` +note delete +``` + +### 3.11. Listing out notes: `note list` + +Lists out all notes belonging to a specific topic. + +Example of usage: +``` +note list +``` + +### 3.12. Exiting the program: `exit` Exits E-Duke-8. - You can only exit the application when you are not in a quiz. @@ -194,7 +231,7 @@ exit ![exit](./images/exit.png) -### 3.10. Saving user data +### 3.13. Saving user data User data is only saved upon successful exit of the application through the `exit` command. This is store in the `user.json` file in the `data` folder and can be transferred between machines to keep your quiz history. diff --git a/docs/images/TopicListSampleSequence.png b/docs/images/TopicListSampleSequence.png index 48cc3c5420de4f40123e5674b8a2738d5bbf2da9..4e4b8efdd289a999200845c7203f669754bfc302 100644 GIT binary patch literal 8166 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 t0KfzMT?5v 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 Date: Thu, 29 Oct 2020 01:45:50 +0800 Subject: [PATCH 231/447] Add the explanation for Revision Control questions --- data/main/topics.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/main/topics.json b/data/main/topics.json index 767f722924..4d2f3a3a6b 100644 --- a/data/main/topics.json +++ b/data/main/topics.json @@ -365,7 +365,7 @@ { "description": "Which of these is not considered a benefit of a typical RCS?", "hint": "Typical RCS may not use any graphics", - "explanation": "", + "explanation": "Option 2 describes Work Breakdown Structure (WBS)", "options": [ { "description": "Help a single user manage revisions of a single file", @@ -388,7 +388,7 @@ { "description": "Merge conflicts can occur when:", "hint": "Conflicts can normally occur when different developer change the same line of code", - "explanation": "", + "explanation": "This is the only case where developers change the same line of code", "options": [ { "description": "team members don't like each other", @@ -411,7 +411,7 @@ { "description": "Git:", "hint": "Git can be quite flexible in its use", - "explanation": "", + "explanation": "Git can support both centralized and distributed revision control", "options": [ { "description": "supports distributed revision control", @@ -434,7 +434,7 @@ { "description": "Your local repository can communicate with ___ remote repositories:", "hint": "Recall adding remote repositories through git", - "explanation": "", + "explanation": "There is no limit to the number of remote repositories you can communicate with", "options": [ { "description": "zero", @@ -457,7 +457,7 @@ { "description": "What is branching?", "hint": "Think about the use of branching for your team project", - "explanation": "", + "explanation": "Option 1 is called a checkout, option 2 is called committing and option 4 is making a fork", "options": [ { "description": "Restoring the state of the working directory at a point in the past", From a134e08b80a95ebc91e3b87f778a76a831a2401e Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 29 Oct 2020 06:25:12 +0800 Subject: [PATCH 232/447] Enhance bookmark command to allow for questions that have already been bookmarked to not be bookmarked again. --- .../seedu/eduke8/command/BookmarkCommand.java | 16 ++++++++++++++-- .../java/seedu/eduke8/question/Question.java | 15 +++++++++++++-- src/main/java/seedu/eduke8/ui/Ui.java | 5 +++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java index f28377ed41..de7264b7e0 100644 --- a/src/main/java/seedu/eduke8/command/BookmarkCommand.java +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -13,12 +13,20 @@ public class BookmarkCommand extends Command { private static final String BOOKMARK_STORE = "storing"; private BookmarkList bookmarks; + private Question question; + private boolean alreadyBookmarked = false; String typeOfBookmarkCommand = ""; public BookmarkCommand(Question question, String typeOfBookmarkCommand, BookmarkList bookmarks) { super(); assert bookmarks != null; - bookmarks.add(question); + this.question = question; + if(question.isBookmarked()){ + alreadyBookmarked = true; + } else { + bookmarks.add(question); + question.markAsBookmarked(); + } this.bookmarks = bookmarks; this.typeOfBookmarkCommand = typeOfBookmarkCommand; } @@ -34,7 +42,11 @@ public void execute(DisplayableList displayableList, Ui ui) { if (typeOfBookmarkCommand.equals(BOOKMARK_LIST)) { ui.printListOfBookmarkedQuestions(bookmarks); } else if (typeOfBookmarkCommand.equals(BOOKMARK_STORE)) { - ui.printBookmarkedIndicator(); + if(alreadyBookmarked){ + ui.printAlreadyBookmarkedIndicator(); + } else { + ui.printBookmarkedIndicator(); + } } } } diff --git a/src/main/java/seedu/eduke8/question/Question.java b/src/main/java/seedu/eduke8/question/Question.java index 4a9006a273..e795df7505 100644 --- a/src/main/java/seedu/eduke8/question/Question.java +++ b/src/main/java/seedu/eduke8/question/Question.java @@ -16,18 +16,21 @@ public class Question implements Displayable { private Explanation explanation; private boolean wasAnsweredCorrectly; private boolean wasShown; + private boolean isBookmarked; + public Question(String description, OptionList optionList, Hint hint, Explanation explanation) { - assert description != null; // A question must have its description + assert description != null; //A question must have its description this.description = description; - assert optionList != null; // A question must have some options + assert optionList != null; //A question must have some options this.optionList = optionList; this.explanation = explanation; this.hint = hint; wasAnsweredCorrectly = false; wasShown = false; + isBookmarked = false; } /** @@ -107,4 +110,12 @@ public boolean wasAnsweredCorrectly() { public void markAsAnsweredCorrectly() { wasAnsweredCorrectly = true; } + + public boolean isBookmarked() { + return isBookmarked; + } + + public boolean markAsBookmarked() { + return isBookmarked = true; + } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 34e9485ffb..7c19ca374a 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -70,6 +70,7 @@ public class Ui { private static final String MESSAGE_QUIZ_QUESTION_CHOSEN_SECOND = " question"; private static final String MESSAGE_BOOKMARK_INDICATOR = "Bookmarked this question!"; private static final String MESSAGE_BOOKMARK_LIST = "This is your list of bookmarks: "; + private static final String MESSAGE_BOOKMARKED_ALREADY_INDICATOR = "This has already been bookmarked."; private static final String CLOSE_BRACKET = ") "; private static final String OPEN_SQUARE_BRACKET = "["; private static final String CLOSE_SQUARE_BRACKET = "] "; @@ -259,6 +260,10 @@ public void printBookmarkedIndicator() { printMessage(MESSAGE_BOOKMARK_INDICATOR); } + public void printAlreadyBookmarkedIndicator() { + printMessage(MESSAGE_BOOKMARKED_ALREADY_INDICATOR); + } + public void printListOfBookmarkedQuestions(BookmarkList bookmarks) { String list = listOfBookmarkedQuestions(bookmarks); From ff11149e5a8a4a8dacdc22803c819d9cdc8e9084 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 29 Oct 2020 06:28:06 +0800 Subject: [PATCH 233/447] Fix checkstyle errors --- src/main/java/seedu/eduke8/command/BookmarkCommand.java | 4 ++-- src/main/java/seedu/eduke8/question/QuizQuestionsManager.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/BookmarkCommand.java b/src/main/java/seedu/eduke8/command/BookmarkCommand.java index de7264b7e0..616ff49b8f 100644 --- a/src/main/java/seedu/eduke8/command/BookmarkCommand.java +++ b/src/main/java/seedu/eduke8/command/BookmarkCommand.java @@ -21,7 +21,7 @@ public BookmarkCommand(Question question, String typeOfBookmarkCommand, Bookmark super(); assert bookmarks != null; this.question = question; - if(question.isBookmarked()){ + if (question.isBookmarked()) { alreadyBookmarked = true; } else { bookmarks.add(question); @@ -42,7 +42,7 @@ public void execute(DisplayableList displayableList, Ui ui) { if (typeOfBookmarkCommand.equals(BOOKMARK_LIST)) { ui.printListOfBookmarkedQuestions(bookmarks); } else if (typeOfBookmarkCommand.equals(BOOKMARK_STORE)) { - if(alreadyBookmarked){ + if (alreadyBookmarked) { ui.printAlreadyBookmarkedIndicator(); } else { ui.printBookmarkedIndicator(); diff --git a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java index af6ac3229f..ce9999a5d0 100644 --- a/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java +++ b/src/main/java/seedu/eduke8/question/QuizQuestionsManager.java @@ -27,7 +27,7 @@ public QuizQuestionsManager(int numberOfQuestionsForQuiz, } private void setQuizQuestions(int numberOfQuestionsForQuiz, - ArrayList questionsInTopic) throws Eduke8Exception { + ArrayList questionsInTopic) throws Eduke8Exception { if (numberOfQuestionsForQuiz <= 0) { throw new Eduke8Exception(ERROR_QUIZ_INVALID_QUESTION_NUMBER); From fe3b3ee540a3b5815a57557b391906fb96619159 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 29 Oct 2020 09:58:45 +0800 Subject: [PATCH 234/447] Timer done --- .../eduke8/command/IncompleteCommand.java | 29 +++++++++++++++++ .../java/seedu/eduke8/parser/QuizParser.java | 4 +++ .../seedu/eduke8/quiz/SingleTopicQuiz.java | 26 +++++++++++----- src/main/java/seedu/eduke8/ui/Ui.java | 31 +++++++++++++++++-- 4 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 src/main/java/seedu/eduke8/command/IncompleteCommand.java diff --git a/src/main/java/seedu/eduke8/command/IncompleteCommand.java b/src/main/java/seedu/eduke8/command/IncompleteCommand.java new file mode 100644 index 0000000000..ceb88ab7d4 --- /dev/null +++ b/src/main/java/seedu/eduke8/command/IncompleteCommand.java @@ -0,0 +1,29 @@ +package seedu.eduke8.command; + +import seedu.eduke8.common.DisplayableList; +import seedu.eduke8.exception.Eduke8Exception; +import seedu.eduke8.option.OptionList; +import seedu.eduke8.question.Question; +import seedu.eduke8.ui.Ui; + +public class IncompleteCommand extends Command { + private Question question; + + public IncompleteCommand(Question question) { + super(); + + this.question = question; + } + + @Override + public void execute(DisplayableList optionList, Ui ui) { + String explanation = question.getExplanation().getDescription(); + try { + int correctOptionNumber = ((OptionList) optionList).findCorrectOptionIndex() + 1; + ui.printIncompleteAnswer(correctOptionNumber, explanation); + } catch (Eduke8Exception e) { + ui.printError(e.getMessage()); + } + + } +} diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index 012c26ba39..b5e702cb50 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -4,6 +4,7 @@ import seedu.eduke8.command.Command; import seedu.eduke8.command.AnswerCommand; import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.IncompleteCommand; import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.command.HintCommand; import seedu.eduke8.common.Displayable; @@ -58,6 +59,9 @@ public Command parseCommand(DisplayableList optionList, String userInput) { } try { + if (userInput == null ) { + return new IncompleteCommand(question); + } ArrayList options = optionList.getInnerList(); int chosenIndex = Integer.parseInt(userInput) - 1; Option chosenOption = (Option) options.get(chosenIndex); diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 48b686be3a..6ebf0efebe 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -1,11 +1,12 @@ package seedu.eduke8.quiz; import seedu.eduke8.bookmark.BookmarkList; -import seedu.eduke8.command.Command; import seedu.eduke8.command.AnswerCommand; -import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.command.BookmarkCommand; +import seedu.eduke8.command.Command; import seedu.eduke8.command.HintCommand; +import seedu.eduke8.command.IncompleteCommand; +import seedu.eduke8.command.IncorrectCommand; import seedu.eduke8.common.Displayable; import seedu.eduke8.exception.Eduke8Exception; import seedu.eduke8.option.Option; @@ -17,6 +18,7 @@ import seedu.eduke8.topic.Topic; import seedu.eduke8.ui.Ui; +import java.io.IOException; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; @@ -29,6 +31,8 @@ public class SingleTopicQuiz implements Quiz { private QuizParser quizParser; private BookmarkList bookmarks; + long startTime; + public SingleTopicQuiz(Topic topic, int numberOfQuestions, BookmarkList bookmarks) { assert topic != null; @@ -83,19 +87,22 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan quizParser.setQuestion(question); + ui.printQuizInputMessage(); + Command command = getCommand(ui, optionList); assert (command instanceof AnswerCommand || command instanceof HintCommand - || command instanceof BookmarkCommand); + || command instanceof BookmarkCommand || command instanceof IncompleteCommand); - while (!(command instanceof AnswerCommand)) { + while (!(command instanceof AnswerCommand || command instanceof IncompleteCommand)) { command.execute(optionList, ui); + ui.printQuizInputMessage(); command = getCommand(ui, optionList); if (command instanceof IncorrectCommand) { LOGGER.log(Level.INFO, "Invalid answer given for question"); } else if (command instanceof HintCommand) { LOGGER.log(Level.INFO, "Hint shown"); - } else { + } else if (command instanceof BookmarkCommand) { LOGGER.log(Level.INFO, "Question bookmarked"); } } @@ -107,7 +114,12 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } private Command getCommand(Ui ui, OptionList optionList) { - String userInput = ui.getQuizInputFromUser(); - return quizParser.parseCommand(optionList, userInput); + try { + String userInput = ui.getQuizInputFromUser(); + return quizParser.parseCommand(optionList, userInput); + } catch (IOException e) { + return quizParser.parseCommand(optionList, "exception from getCommand " + e); + } + } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 6e69aef60c..87951944ea 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -8,6 +8,9 @@ import seedu.eduke8.question.Question; import seedu.eduke8.topic.Topic; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Scanner; @@ -98,9 +101,24 @@ public String getInputFromUser() { return SCANNER.nextLine(); } - public String getQuizInputFromUser() { + public void printQuizInputMessage() { System.out.print(MESSAGE_GET_INPUT_FROM_USER_QUIZ); - return SCANNER.nextLine(); + } + + public String getQuizInputFromUser() throws IOException { + int x = 5; // wait 2 seconds at most + + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + long startTime = System.currentTimeMillis(); + while ((System.currentTimeMillis() - startTime) < x * 1000 && !in.ready()) { + } + + if (in.ready()) { + return in.readLine(); + } else { + return null; + } + } private static void printMessage(String message) { @@ -169,6 +187,15 @@ public void printAnswerIsCorrect(String explanation) { System.out.println(HORIZONTAL_LINE); } + public void printIncompleteAnswer(int correctAnswer, String explanation) { + System.out.println(System.lineSeparator() + HORIZONTAL_LINE); + System.out.println("Oops! You took more than 10 seconds to answer!"); + System.out.println("The correct answer is " + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); + System.out.println(System.lineSeparator() + MESSAGE_EXPLANATION + System.lineSeparator() + explanation); + System.out.println(HORIZONTAL_LINE); + System.out.println(HORIZONTAL_LINE); + } + public void printHelp() { printMessage(MESSAGE_HELP); } From 915202ed4b7c809c37e3a871be82752f3747d057 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 29 Oct 2020 10:13:49 +0800 Subject: [PATCH 235/447] Clean up in progress --- .../seedu/eduke8/command/IncompleteCommand.java | 3 +-- .../java/seedu/eduke8/parser/MenuParser.java | 1 + .../java/seedu/eduke8/quiz/SingleTopicQuiz.java | 10 ++++------ src/main/java/seedu/eduke8/ui/Ui.java | 17 +++++++++-------- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/IncompleteCommand.java b/src/main/java/seedu/eduke8/command/IncompleteCommand.java index ceb88ab7d4..60cc5e9cf0 100644 --- a/src/main/java/seedu/eduke8/command/IncompleteCommand.java +++ b/src/main/java/seedu/eduke8/command/IncompleteCommand.java @@ -20,10 +20,9 @@ public void execute(DisplayableList optionList, Ui ui) { String explanation = question.getExplanation().getDescription(); try { int correctOptionNumber = ((OptionList) optionList).findCorrectOptionIndex() + 1; - ui.printIncompleteAnswer(correctOptionNumber, explanation); + ui.printIncompleteAnswer(correctOptionNumber, explanation, timer); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); } - } } diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index f45e18b563..76791a8e1d 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -76,6 +76,7 @@ public Command parseCommand(DisplayableList topicList, String userInput) { case COMMAND_QUIZ: int numOfQuestions = 0; String topicName = ""; + int timer = 0; try { if (commandArr[2].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { numOfQuestions = Integer.parseInt( diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 6ebf0efebe..8685f99039 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -31,8 +31,6 @@ public class SingleTopicQuiz implements Quiz { private QuizParser quizParser; private BookmarkList bookmarks; - long startTime; - public SingleTopicQuiz(Topic topic, int numberOfQuestions, BookmarkList bookmarks) { assert topic != null; @@ -89,7 +87,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan ui.printQuizInputMessage(); - Command command = getCommand(ui, optionList); + Command command = getCommand(ui, optionList, timer); assert (command instanceof AnswerCommand || command instanceof HintCommand || command instanceof BookmarkCommand || command instanceof IncompleteCommand); @@ -97,7 +95,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan while (!(command instanceof AnswerCommand || command instanceof IncompleteCommand)) { command.execute(optionList, ui); ui.printQuizInputMessage(); - command = getCommand(ui, optionList); + command = getCommand(ui, optionList, timer); if (command instanceof IncorrectCommand) { LOGGER.log(Level.INFO, "Invalid answer given for question"); } else if (command instanceof HintCommand) { @@ -113,9 +111,9 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan } } - private Command getCommand(Ui ui, OptionList optionList) { + private Command getCommand(Ui ui, OptionList optionList, int timer) { try { - String userInput = ui.getQuizInputFromUser(); + String userInput = ui.getQuizInputFromUser(timer); return quizParser.parseCommand(optionList, userInput); } catch (IOException e) { return quizParser.parseCommand(optionList, "exception from getCommand " + e); diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 87951944ea..53950d594e 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -94,6 +94,10 @@ public class Ui { private static final String MESSAGE_POINTS_EARNED_OUT_OF = " points earned / "; private static final String PERCENTAGE_SIGN = "%"; private static final String MESSAGE_AVAILABLE_WORD = " available "; + private static final String MESSAGE_ANSWER_INCOMPLETE = "The correct answer is "; + private static final String MESSAGE_INCOMPLETE_ANSWER_TIMER = "Oops! You took more than "; + private static final String MESSAGE_INCOMPLETE_ANSWER_TIMER_SECOND = " seconds to answer!"; + private static final int CONVERSION_FROM_MILLIS_TO_SECONDS = 1000; public String getInputFromUser() { @@ -105,12 +109,10 @@ public void printQuizInputMessage() { System.out.print(MESSAGE_GET_INPUT_FROM_USER_QUIZ); } - public String getQuizInputFromUser() throws IOException { - int x = 5; // wait 2 seconds at most - + public String getQuizInputFromUser(int timer) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); long startTime = System.currentTimeMillis(); - while ((System.currentTimeMillis() - startTime) < x * 1000 && !in.ready()) { + while (((System.currentTimeMillis() - startTime) < timer * CONVERSION_FROM_MILLIS_TO_SECONDS) && !in.ready()) { } if (in.ready()) { @@ -118,7 +120,6 @@ public String getQuizInputFromUser() throws IOException { } else { return null; } - } private static void printMessage(String message) { @@ -187,10 +188,10 @@ public void printAnswerIsCorrect(String explanation) { System.out.println(HORIZONTAL_LINE); } - public void printIncompleteAnswer(int correctAnswer, String explanation) { + public void printIncompleteAnswer(int correctAnswer, String explanation, int timer) { System.out.println(System.lineSeparator() + HORIZONTAL_LINE); - System.out.println("Oops! You took more than 10 seconds to answer!"); - System.out.println("The correct answer is " + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); + System.out.println(MESSAGE_INCOMPLETE_ANSWER_TIMER + timer + MESSAGE_INCOMPLETE_ANSWER_TIMER_SECOND); + System.out.println(MESSAGE_ANSWER_INCOMPLETE + correctAnswer + MESSAGE_ANSWER_WRONG_SECOND); System.out.println(System.lineSeparator() + MESSAGE_EXPLANATION + System.lineSeparator() + explanation); System.out.println(HORIZONTAL_LINE); System.out.println(HORIZONTAL_LINE); From 618f234c55825ea12cdf74cfe6cc2dcb2c9afb7d Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 29 Oct 2020 10:37:37 +0800 Subject: [PATCH 236/447] Clean up the code --- .../eduke8/command/IncompleteCommand.java | 4 +- .../seedu/eduke8/command/QuizCommand.java | 7 +- .../java/seedu/eduke8/parser/MenuParser.java | 75 ++++++++++++++++--- .../java/seedu/eduke8/parser/QuizParser.java | 8 +- .../seedu/eduke8/quiz/SingleTopicQuiz.java | 9 ++- src/main/java/seedu/eduke8/ui/Ui.java | 14 ++-- src/test/java/seedu/eduke8/Eduke8Test.java | 1 + .../seedu/eduke8/command/QuizCommandTest.java | 4 +- .../seedu/eduke8/parser/QuizParserTest.java | 2 +- .../eduke8/quiz/SingleTopicQuizTest.java | 4 +- 10 files changed, 95 insertions(+), 33 deletions(-) diff --git a/src/main/java/seedu/eduke8/command/IncompleteCommand.java b/src/main/java/seedu/eduke8/command/IncompleteCommand.java index 60cc5e9cf0..73997f4d98 100644 --- a/src/main/java/seedu/eduke8/command/IncompleteCommand.java +++ b/src/main/java/seedu/eduke8/command/IncompleteCommand.java @@ -8,11 +8,13 @@ public class IncompleteCommand extends Command { private Question question; + private int timer; - public IncompleteCommand(Question question) { + public IncompleteCommand(Question question, int timer) { super(); this.question = question; + this.timer = timer; } @Override diff --git a/src/main/java/seedu/eduke8/command/QuizCommand.java b/src/main/java/seedu/eduke8/command/QuizCommand.java index 84f54e8365..b0153e68bc 100644 --- a/src/main/java/seedu/eduke8/command/QuizCommand.java +++ b/src/main/java/seedu/eduke8/command/QuizCommand.java @@ -18,8 +18,10 @@ public class QuizCommand extends Command { private String topicName; private Ui ui; private BookmarkList bookmarks; + private int timer; - public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui, BookmarkList bookmarks) { + public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui ui, BookmarkList bookmarks, + int timer) { super(); assert topicList != null; @@ -28,13 +30,14 @@ public QuizCommand(TopicList topicList, int numOfQuestions, String topicName, Ui this.topicName = topicName; this.ui = ui; this.bookmarks = bookmarks; + this.timer = timer; } @Override public void execute(DisplayableList displayableList, Ui ui) { try { Topic topic = (Topic) topicList.find(topicName); - SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions, bookmarks); + SingleTopicQuiz singleTopicQuiz = new SingleTopicQuiz(topic, numOfQuestions, bookmarks, timer); singleTopicQuiz.startQuiz(ui); } catch (Eduke8Exception e) { ui.printError(e.getMessage()); diff --git a/src/main/java/seedu/eduke8/parser/MenuParser.java b/src/main/java/seedu/eduke8/parser/MenuParser.java index 76791a8e1d..1b9b8195f4 100644 --- a/src/main/java/seedu/eduke8/parser/MenuParser.java +++ b/src/main/java/seedu/eduke8/parser/MenuParser.java @@ -27,8 +27,12 @@ */ public class MenuParser implements Parser { private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - private static final String TOPICS_INDICATOR = "t/"; + private static final String TOPIC_INDICATOR = "t/"; + private static final String TIMER_INDICATOR = "timer/"; private static final String NUMBER_OF_QUESTIONS_INDICATOR = "n/"; + private static final int LENGTH_OF_QUESTIONS_INDICATOR = 2; + private static final int LENGTH_OF_TOPIC_INDICATOR = 2; + private static final int LENGTH_OF_TIMER_INDICATOR = 6; private static final String BOOKMARK_LIST = "listing"; private static final String COMMAND_ABOUT = "about"; private static final String COMMAND_HELP = "help"; @@ -37,6 +41,7 @@ public class MenuParser implements Parser { private static final String COMMAND_QUIZ = "quiz"; private static final String COMMAND_BOOKMARK = "bookmark"; private static final String COMMAND_EXIT = "exit"; + private static final String COMMAND_STATS = "stats"; private BookmarkList bookmarks; @@ -76,29 +81,75 @@ public Command parseCommand(DisplayableList topicList, String userInput) { case COMMAND_QUIZ: int numOfQuestions = 0; String topicName = ""; - int timer = 0; + int timer = 0; try { - if (commandArr[2].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { - numOfQuestions = Integer.parseInt( - commandArr[2].substring(commandArr[2].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + 2)); - topicName = commandArr[1].substring(commandArr[1].indexOf(TOPICS_INDICATOR) + 2); - } else if (commandArr[2].contains(TOPICS_INDICATOR)) { - numOfQuestions = Integer.parseInt( - commandArr[1].substring(commandArr[1].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + 2)); - topicName = commandArr[2].substring(commandArr[2].indexOf(TOPICS_INDICATOR) + 2); + if (commandArr[1].contains(TIMER_INDICATOR)) { + if (commandArr[2].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[2].substring( + commandArr[2].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[3].substring( + commandArr[3].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[1].substring( + commandArr[1].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + + } else if (commandArr[2].contains(TOPIC_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[3].substring( + commandArr[3].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[2].substring( + commandArr[2].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[1].substring( + commandArr[1].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + } + + } else if (commandArr[1].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { + if (commandArr[2].contains(TIMER_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[1].substring( + commandArr[1].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[3].substring( + commandArr[3].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[2].substring( + commandArr[2].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + + } else if (commandArr[2].contains(TOPIC_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[1].substring( + commandArr[1].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[2].substring( + commandArr[2].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[3].substring( + commandArr[3].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + } + + } else if (commandArr[1].contains(TOPIC_INDICATOR)) { + if (commandArr[2].contains(NUMBER_OF_QUESTIONS_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[2].substring( + commandArr[2].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[1].substring( + commandArr[1].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[3].substring( + commandArr[3].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + + } else if (commandArr[2].contains(TIMER_INDICATOR)) { + numOfQuestions = Integer.parseInt(commandArr[3].substring( + commandArr[3].indexOf(NUMBER_OF_QUESTIONS_INDICATOR) + LENGTH_OF_QUESTIONS_INDICATOR)); + topicName = commandArr[1].substring( + commandArr[1].indexOf(TOPIC_INDICATOR) + LENGTH_OF_TOPIC_INDICATOR); + timer = Integer.parseInt(commandArr[2].substring( + commandArr[2].indexOf(TIMER_INDICATOR) + LENGTH_OF_TIMER_INDICATOR)); + } } } catch (NumberFormatException | IndexOutOfBoundsException e) { return new IncorrectCommand(ERROR_QUIZ_WRONG_FORMAT); } + LOGGER.log(Level.INFO, "Parsing complete: quiz command chosen."); - return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui, bookmarks); + return new QuizCommand((TopicList) topicList, numOfQuestions, topicName, ui, bookmarks, timer); case COMMAND_BOOKMARK: LOGGER.log(Level.INFO, "Parsing complete: bookmark command chosen."); return new BookmarkCommand(BOOKMARK_LIST, bookmarks); case COMMAND_EXIT: LOGGER.log(Level.INFO, "Parsing complete: exit command chosen."); return new ExitCommand(); - case "stats": + case COMMAND_STATS: LOGGER.log(Level.INFO, "Parsing complete: stats command chosen."); return new StatsCommand((TopicList) topicList); default: diff --git a/src/main/java/seedu/eduke8/parser/QuizParser.java b/src/main/java/seedu/eduke8/parser/QuizParser.java index b5e702cb50..ec0cad99e0 100644 --- a/src/main/java/seedu/eduke8/parser/QuizParser.java +++ b/src/main/java/seedu/eduke8/parser/QuizParser.java @@ -30,15 +30,17 @@ public class QuizParser implements Parser { private Question question; private BookmarkList bookmarks; + private int timer; public QuizParser(BookmarkList bookmarks) { this.bookmarks = bookmarks; } - public void setQuestion(Question question) { + public void setQuestion(Question question, int timer) { assert question != null; this.question = question; + this.timer = timer; } /** @@ -59,8 +61,8 @@ public Command parseCommand(DisplayableList optionList, String userInput) { } try { - if (userInput == null ) { - return new IncompleteCommand(question); + if (userInput == null) { + return new IncompleteCommand(question, timer); } ArrayList options = optionList.getInnerList(); int chosenIndex = Integer.parseInt(userInput) - 1; diff --git a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java index 8685f99039..263287ef57 100644 --- a/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java +++ b/src/main/java/seedu/eduke8/quiz/SingleTopicQuiz.java @@ -30,13 +30,15 @@ public class SingleTopicQuiz implements Quiz { private int numberOfQuestions; private QuizParser quizParser; private BookmarkList bookmarks; + private int timer; - public SingleTopicQuiz(Topic topic, int numberOfQuestions, BookmarkList bookmarks) { + public SingleTopicQuiz(Topic topic, int numberOfQuestions, BookmarkList bookmarks, int timer) { assert topic != null; this.topic = topic; this.numberOfQuestions = numberOfQuestions; this.bookmarks = bookmarks; + this.timer = timer; quizParser = new QuizParser(bookmarks); } @@ -83,7 +85,7 @@ private void goThroughQuizQuestions(Ui ui, QuizQuestionsManager quizQuestionsMan ui.printOption((Option) options.get(i), i + 1); } - quizParser.setQuestion(question); + quizParser.setQuestion(question, timer); ui.printQuizInputMessage(); @@ -116,8 +118,7 @@ private Command getCommand(Ui ui, OptionList optionList, int timer) { String userInput = ui.getQuizInputFromUser(timer); return quizParser.parseCommand(optionList, userInput); } catch (IOException e) { - return quizParser.parseCommand(optionList, "exception from getCommand " + e); + return new IncorrectCommand(e.getMessage()); } - } } diff --git a/src/main/java/seedu/eduke8/ui/Ui.java b/src/main/java/seedu/eduke8/ui/Ui.java index 53950d594e..c33fdd2688 100644 --- a/src/main/java/seedu/eduke8/ui/Ui.java +++ b/src/main/java/seedu/eduke8/ui/Ui.java @@ -45,7 +45,7 @@ public class Ui { + System.lineSeparator() + "2) help" + System.lineSeparator() + "3) topics" + System.lineSeparator() + "4) textbook" - + System.lineSeparator() + "5) quiz t/ n/" + + System.lineSeparator() + "5) quiz t/ n/ timer/

Ojk87Gw@%n(Gpn{$ZZZY&mF}QZtTM``og>9ihOm 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 From 8d719b9b5211b4ea139a74b80802c3c6ef14f4ba Mon Sep 17 00:00:00 2001 From: kstonekuan Date: Thu, 29 Oct 2020 15:03:28 +0800 Subject: [PATCH 252/447] direct testing to user guide --- docs/DeveloperGuide.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ec2f2a9c94..7a66e0069b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -31,7 +31,8 @@ - [4. User Stories](#4-user-stories) - [5. Non-Functional Requirements](#5-non-functional-requirements) - [6. Glossary](#6-glossary) - - [Instructions for manual testing](#instructions-for-manual-testing) + - [7. Appendix](#7-appendix) + - [7.1. Instructions for manual testing](#71-instructions-for-manual-testing) ## 1. Introduction @@ -405,6 +406,8 @@ enhance their learning experience. Consolidate key concepts for easy revision. - **Mainstream Operating Systems (OS)**: Windows, Linux, Unix, OS-X -## Instructions for manual testing +## 7. Appendix -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} +### 7.1. Instructions for manual testing + +To test the product please refer to the E-Duke-8 [User Guide](https://ay2021s1-cs2113t-f12-3.github.io/tp/UserGuide.html). From 489cd68d3eab95d8050ab7b94357e8e4326e9786 Mon Sep 17 00:00:00 2001 From: anqi20 Date: Thu, 29 Oct 2020 17:15:16 +0800 Subject: [PATCH 253/447] Update UG --- docs/UserGuide.md | 24 +++++++++++++++--------- docs/images/help.png | Bin 15299 -> 57708 bytes docs/images/topics.png | Bin 16890 -> 48272 bytes src/main/java/seedu/eduke8/ui/Ui.java | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d88725dd4d..a0f01cbbbf 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -16,7 +16,7 @@ Table of contents: - [3.9. Adding a note: `note add`](#39-adding-a-note-note) - [3.10. Deleting a note: `note delete`](#310-deleting-a-note-note) - [3.11. Listing out notes: `note add`](#311-listing-out-notes-notes) - - [3.12. Displaying stats: `stats`](#312-displaying-stats-stats) + - [3.12. Displaying statistics: `stats`](#312-displaying-stats-stats) - [3.13. Exiting the program: `exit`](#313-exiting-the-program-exit) - [3.14. Saving user data](#314-saving-user-data) - [4. FAQ](#4-faq) @@ -50,7 +50,7 @@ Understand more about E-Duke-8, and how you can use it to aid your learning, thr - about : Provides information about E-Duke-8. - topics : Lists CS2113/T topics that E-Duke-8 knows. - textbook : Provides you with a link to the CS2113/T website. - - quiz : Starts a quiz. Eg. `quiz t/OOP n/5` will start a quiz with five questions based on OOP concepts. + - quiz : Starts a quiz. Eg. `quiz t/OOP n/5 s/10` will start a quiz with five questions based on OOP concepts. You will have 10 seconds to complete each question. - hint : Shows a hint to the current question. - exit : Exits the app. @@ -60,7 +60,7 @@ Understand more about E-Duke-8, and how you can use it to aid your learning, thr ℹ️ Notes about the command format: - Words in UPPER_CASE are the parameters that you can specify for your usage. -- e.g. in `quiz t/TOPIC n/NUM_QUESTIONS`, 'TOPIC' is a parameter that allows you to choose the topic you want the quiz to be based on, and 'NUM_QUESTIONS' specifies the number of questions you want to have in your quiz. +- e.g. in `quiz t/TOPIC n/NUM_QUESTIONS s/TIMER`, 'TOPIC' is a parameter that allows you to choose the topic you want the quiz to be based on, 'NUM_QUESTIONS' specifies the number of questions you want to have in your quiz, and 'TIMER' specifies the number of seconds given to complete each question. ### 3.1. Loading Data @@ -140,10 +140,12 @@ What you should see: ### 3.7. Starting a quiz: `quiz` -By following a specific input format for your command (seen below), you can start a quiz with the number of questions and topic as specified by you. +By following a specific input format for your command (shown below), you can start a quiz with the number of questions, topic and time to complete each question as specified by you. While on a question, you can choose to answer it, ask for a hint if you are unsure of the answer or bookmark it for future reference! +You will have to complete the question within the specified time as well. If you are unable to complete it in time, it will be regarded as an incorrect answer and the correct answer, along with the explanation, will be shown to you. You will then proceed to the next question where the timer will restart. + A correct answer without requesting for a hint will earn you **2 points**! Whereas a correct answer with hint requested will earn you **1 point**. No point will be awarded for incorrect answers. You can view the points you have accumulated with the `stats` command, which will be further explained in a later section of this guide. Regardless of right or wrong answer, an explanation about the question will be displayed after you give an answer. You will then proceed to the next question. @@ -155,13 +157,13 @@ Note: - The first question will be immediately displayed to you once the quiz starts. - The quiz will only end when you have attempted all of the questions in the it. -Input format: `quiz t/TOPIC n/NUM_QUESTIONS` +Input format: `quiz t/TOPIC n/NUM_QUESTIONS s/TIMER` Example of usage: ``` -quiz t/OOP n/5 +quiz t/OOP n/5 s/10 ``` -- This will start a quiz that contains 5 randomly-chosen questions from the topic on OOP. +- This will start a quiz that contains 5 randomly-chosen questions from the topic on OOP. Each question will have to be completed within 10 seconds. What you should see: @@ -179,6 +181,9 @@ If you have entered the correct answer, this is what you will see: If you have entered the wrong answer, this is what you will see: ![quiz](./images/quiz_wrong.png) +If you did not answer the question within the specified time, this is what you will see: +add graphics here! + After attempting all of the questions, the quiz will automatically end: ![quiz](./images/quiz_end.png) @@ -231,7 +236,7 @@ Example of usage: note list ``` -### 3.12. Displaying stats: `stats` +### 3.12. Displaying statistics: `stats` Displays the points you have earned, and the accumulated statistics of your quiz attempts on E-Duke-8. @@ -294,8 +299,9 @@ This is store in the `user.json` file in the `data` folder and can be transferre | Viewing available commands | `help` | | Listing all topics | `topics` | | Accessing the CS2113T textbook content | `textbook` | -| Starting a quiz | `quiz t/TOPIC n/QUESTIONS`
e.g. `quiz t/OOP n/5` | +| Starting a quiz | `quiz t/TOPIC n/QUESTIONS s/TIMER`
e.g. `quiz t/OOP n/5 s/10` | | Showing a hint | `hint` | +| Displaying statistics | `stats` | | Exit | `exit` | ## 6. Glossary diff --git a/docs/images/help.png b/docs/images/help.png index 0a90544ce30e7af76f69b12bc7990759cc4b9688..2f5b0a71147e59f053df31e7d5c783a28e9307cf 100644 GIT binary patch literal 57708 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
q}t+L2g^h*o*rMWgKtBFQxX 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 literal 15299 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 z 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

QJe9Gc>n8 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