From 4d69492cb25a4b52899cae5c2747a9c4925b7ca1 Mon Sep 17 00:00:00 2001 From: Paulsmlim Date: Tue, 26 Mar 2019 01:59:44 -0400 Subject: [PATCH 01/12] Finished implementation --- morseCode.cpp | 67 ++++++++++++++++++++++++++ morseCodeTree.cpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++ morseCodeTree.h | 49 ++++++++++++++++++++ sampleInput.txt | 11 +++++ 4 files changed, 243 insertions(+) create mode 100644 morseCode.cpp create mode 100644 morseCodeTree.cpp create mode 100644 morseCodeTree.h create mode 100644 sampleInput.txt diff --git a/morseCode.cpp b/morseCode.cpp new file mode 100644 index 0000000..2eb4e63 --- /dev/null +++ b/morseCode.cpp @@ -0,0 +1,67 @@ +// +// morseCode.cpp +// +// +// Created by Paul Lim on 3/23/19. +// + +#include +#include +#include +#include +#include "morseCodeTree.h" + +int main(int argc, char* argv[]) { + if (argc != 2) { + std::cout << "Must only provide 2 arguments." << std::endl; + return 1; + } + + // read morse code file + std::ifstream morseCodeFile(argv[1]); + if (!morseCodeFile){ + std::cout << "Could not open the morse code file: " << argv[1] << ".\n"; + return 1; + } + // hard code array of all morse codes and all alphanumeric characters + int const SIZE = 26; + std::string morseCodes[SIZE] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." }; + char letters[SIZE] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + // create MorseCodeTree + // the MorseCodeTree class is essentially a finite state automata where each state + // is a subsequence of a morse code, and all states reached through a valid + // sequence of a morse code for a letter are "accepting states" + MorseCodeTree tree = MorseCodeTree(); + for (int i = 0; i < SIZE; i++) { + tree.addMorseCode(morseCodes[i], letters[i]); + } + + // regular break is b/t chars; spaceBreak is b/t words + size_t prev_break, next_break, i_spaceBreak; + std::string morseCodeSeq, morseCodeSubSeq; + while (morseCodeFile >> morseCodeSeq) { + prev_break = 0; + i_spaceBreak = morseCodeSeq.find("||||"); + while ((next_break = morseCodeSeq.find("||", prev_break)) != std::string::npos) { + if (next_break == i_spaceBreak) { + // space + // print out the word before the space + morseCodeSubSeq = morseCodeSeq.substr(prev_break, next_break-prev_break); + std::cout << tree.getLetterFromCode(morseCodeSubSeq); + // print the space + std::cout<< " "; + i_spaceBreak = morseCodeSeq.find("||||", i_spaceBreak+4); + prev_break = next_break + 4; + continue; + } + morseCodeSubSeq = morseCodeSeq.substr(prev_break, next_break-prev_break); + std::cout << tree.getLetterFromCode(morseCodeSubSeq); + prev_break = next_break + 2; + } + // last morse code sub sequence + morseCodeSubSeq = morseCodeSeq.substr(prev_break, morseCodeSeq.size()-prev_break); + std::cout << tree.getLetterFromCode(morseCodeSubSeq) << std::endl; + } + + return 0; +} diff --git a/morseCodeTree.cpp b/morseCodeTree.cpp new file mode 100644 index 0000000..a63025c --- /dev/null +++ b/morseCodeTree.cpp @@ -0,0 +1,116 @@ +// +// morseCodeTree.cpp +// +// +// Created by Paul Lim on 3/23/19. +// + +#include "morseCodeTree.h" +#include +#include + +// MorseCodeTree implementation +// public +MorseCodeTree::MorseCodeTree() { + root = new MorseCodeNode(); +} + +MorseCodeTree::~MorseCodeTree() { + deleteTree(root); + delete root; + root = NULL; +} + +// returns NULL char '\0' if morseCode does not exist in the tree; else return the letter +// that matches with the morseCode parameter +char MorseCodeTree::getLetterFromCode(std::string& morseCode) { + if (root == NULL) { + return '\0'; + } + return getLetterFromCode(root, morseCode, 0); +} + +void MorseCodeTree::addMorseCode(std::string& morseCode, char letter) { + if (root == NULL) { + return; + } + addMorseCode(root, morseCode, letter, 0); +} + +// private +char MorseCodeTree::getLetterFromCode(MorseCodeNode* node, std::string& morseCode, int index) { + if (index == morseCode.size()) { + // 'node' is where the 'letter' should be + // in terms of finite state automata, 'node' should be an accepting state for morseCode + return node->letter; + } + + char subMorseCode = (char) morseCode.substr(index,1)[0]; + for (std::vector::iterator child = node->children.begin(); + child != node->children.end(); child++) { + if ((*child)->subMorseCode == subMorseCode) { + return getLetterFromCode(*child, morseCode, index+1); + } + } + return '\0'; +} + +void MorseCodeTree::addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, int index) { + if (index == morseCode.size()) { + // 'node' is where the 'letter' should be + // in terms of finite state automata, 'node' should be an accepting state for morseCode + node->setLetter(letter); + return; + } + char subMorseCode = (char) morseCode.substr(index,1)[0]; + for (std::vector::iterator child = node->children.begin(); + child != node->children.end(); child++) { + if ((*child)->subMorseCode == subMorseCode) { + addMorseCode(*child, morseCode, letter, index+1); + return; + } + } + // 'node' does not have a child with subMorseCode == morseCode.substr(index,1). + // In other words, the 'morseCode' that needs to be added is an extension of an already + // known morse code subsequence + MorseCodeNode* newChild = new MorseCodeNode(subMorseCode, '\0'); + node->children.push_back(newChild); + // recurse down the new child node + addMorseCode(newChild, morseCode, letter, index+1); +} + +void MorseCodeTree::deleteTree(MorseCodeNode* node){ + if (node == NULL) { + return; + } + for (int i = 0; i < node->children.size(); i++) { + deleteTree(node->children[i]); + delete node->children[i]; + node->children[i] = NULL; + } +} + + +// MorseCodeNode implementation +MorseCodeNode::MorseCodeNode() { + letter = '\0'; + children = std::vector(); +} + +MorseCodeNode::MorseCodeNode(char subMorseCode, char letter) { + this->subMorseCode = subMorseCode; + this->letter = letter; + this->children = std::vector(); +} + +MorseCodeNode::~MorseCodeNode() { + +} + +void MorseCodeNode::addChild(MorseCodeNode* child) { + children.push_back(child); +} + +void MorseCodeNode::setLetter(char letter) { + this->letter = letter; +} diff --git a/morseCodeTree.h b/morseCodeTree.h new file mode 100644 index 0000000..3b3adc1 --- /dev/null +++ b/morseCodeTree.h @@ -0,0 +1,49 @@ +// +// morseCodeTree.h +// +// +// Created by Paul Lim on 3/23/19. +// +#ifndef morseCodeTree_h +#define morseCodeTree_h + +#include +#include + +class MorseCodeNode; + +class MorseCodeTree { +public: + MorseCodeTree(); + ~MorseCodeTree(); + // Accessors + char getLetterFromCode(std::string& morseCode); + // Modifiers + void addMorseCode(std::string& morseCode, char letter); +private: + char getLetterFromCode(MorseCodeNode* node, std::string& morseCode, int index); + void addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, int index); + void deleteTree(MorseCodeNode* node); + MorseCodeNode* root; +}; + + +class MorseCodeNode { +public: + MorseCodeNode(); + MorseCodeNode(char subMorseCode, char letter); + ~MorseCodeNode(); + // Accessors + char getLetter(); + // Modifiers + void addChild(MorseCodeNode* child); + void setLetter(char letter); + + friend class MorseCodeTree; +private: + char subMorseCode; + char letter; + std::vector children; +}; + +#endif /* morseCodeTree_h */ diff --git a/sampleInput.txt b/sampleInput.txt new file mode 100644 index 0000000..9e7268b --- /dev/null +++ b/sampleInput.txt @@ -0,0 +1,11 @@ +-..||---||--. + +....||.||.-..||.-..||---||||.--||---||.-.||.-..||-.. + +...||---||..-.||-||.--||.-.||..||-||.||.-.||... + +...||---||..-.||-||\-||.--||.-.||..||-||.||.-.||... + +...||---||..-.||-||||||||.--||.-.||..||-||.||.-.||... + +||||beginning||||space \ No newline at end of file From 67772499ee6ed2a95d04d0c1d21eaede5ecca920 Mon Sep 17 00:00:00 2001 From: Paulsmlim Date: Tue, 26 Mar 2019 03:06:41 -0400 Subject: [PATCH 02/12] Finished comments --- .DS_Store | Bin 0 -> 6148 bytes morseCode.cpp | 36 +++++++++++++++++++++--------------- morseCodeTree.cpp | 26 ++++++++++++++------------ morseCodeTree.h | 6 +++--- sampleInput.txt | 8 +++++--- 5 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0> morseCodeSeq) { prev_break = 0; - i_spaceBreak = morseCodeSeq.find("||||"); + // while a break exists in the morse code subsequence that I have not translated yet.. while ((next_break = morseCodeSeq.find("||", prev_break)) != std::string::npos) { - if (next_break == i_spaceBreak) { - // space - // print out the word before the space - morseCodeSubSeq = morseCodeSeq.substr(prev_break, next_break-prev_break); - std::cout << tree.getLetterFromCode(morseCodeSubSeq); - // print the space - std::cout<< " "; - i_spaceBreak = morseCodeSeq.find("||||", i_spaceBreak+4); - prev_break = next_break + 4; - continue; - } morseCodeSubSeq = morseCodeSeq.substr(prev_break, next_break-prev_break); std::cout << tree.getLetterFromCode(morseCodeSubSeq); + // skip over the "||" prev_break = next_break + 2; + + if (morseCodeSeq[next_break+2] == '|') { + // there are subsequent breaks "||" + // each subsequent break results in a space (eg: |||| -> 2 spaces, + // |||||| -> 3 spaces); assumed that groups of subsequent breaks only + // occur in sizes of even numbers + while (morseCodeSeq[next_break+2] == '|') { + next_break += 2; + std::cout<< " "; + } + prev_break = next_break; + } } - // last morse code sub sequence + // last morse code sub sequence, which does not precede a break morseCodeSubSeq = morseCodeSeq.substr(prev_break, morseCodeSeq.size()-prev_break); std::cout << tree.getLetterFromCode(morseCodeSubSeq) << std::endl; } diff --git a/morseCodeTree.cpp b/morseCodeTree.cpp index a63025c..43f17bc 100644 --- a/morseCodeTree.cpp +++ b/morseCodeTree.cpp @@ -5,9 +5,9 @@ // Created by Paul Lim on 3/23/19. // -#include "morseCodeTree.h" #include #include +#include "morseCodeTree.h" // MorseCodeTree implementation // public @@ -25,6 +25,7 @@ MorseCodeTree::~MorseCodeTree() { // that matches with the morseCode parameter char MorseCodeTree::getLetterFromCode(std::string& morseCode) { if (root == NULL) { + // root should never be null for an object, but check nonetheless return '\0'; } return getLetterFromCode(root, morseCode, 0); @@ -32,22 +33,25 @@ char MorseCodeTree::getLetterFromCode(std::string& morseCode) { void MorseCodeTree::addMorseCode(std::string& morseCode, char letter) { if (root == NULL) { + // root should never be null for an object, but check nonetheless return; } addMorseCode(root, morseCode, letter, 0); } // private -char MorseCodeTree::getLetterFromCode(MorseCodeNode* node, std::string& morseCode, int index) { +char MorseCodeTree::getLetterFromCode(MorseCodeNode* node, std::string& morseCode, unsigned int index) { if (index == morseCode.size()) { // 'node' is where the 'letter' should be // in terms of finite state automata, 'node' should be an accepting state for morseCode return node->letter; } - char subMorseCode = (char) morseCode.substr(index,1)[0]; + char subMorseCode = (char) morseCode[index]; for (std::vector::iterator child = node->children.begin(); child != node->children.end(); child++) { + // from the currently seen morseCode subsequence "state", check if there is a transition for the + // next morseCode character to the next state if ((*child)->subMorseCode == subMorseCode) { return getLetterFromCode(*child, morseCode, index+1); } @@ -55,24 +59,26 @@ char MorseCodeTree::getLetterFromCode(MorseCodeNode* node, std::string& morseCod return '\0'; } -void MorseCodeTree::addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, int index) { +void MorseCodeTree::addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, unsigned int index) { if (index == morseCode.size()) { // 'node' is where the 'letter' should be // in terms of finite state automata, 'node' should be an accepting state for morseCode node->setLetter(letter); return; } - char subMorseCode = (char) morseCode.substr(index,1)[0]; + char subMorseCode = (char) morseCode[index]; for (std::vector::iterator child = node->children.begin(); child != node->children.end(); child++) { + // from the currently seen morseCode subsequence "state", check if there is a transition for the + // next morseCode character to the next state if ((*child)->subMorseCode == subMorseCode) { addMorseCode(*child, morseCode, letter, index+1); return; } } - // 'node' does not have a child with subMorseCode == morseCode.substr(index,1). - // In other words, the 'morseCode' that needs to be added is an extension of an already - // known morse code subsequence + // 'node' does not have a transition with 'subMorseCode' as the transition character + // In other words, the 'morseCode' that needs to be added is a new extension of a subsequence of an already + // known morse code, and this extension was never seen before MorseCodeNode* newChild = new MorseCodeNode(subMorseCode, '\0'); node->children.push_back(newChild); // recurse down the new child node @@ -103,10 +109,6 @@ MorseCodeNode::MorseCodeNode(char subMorseCode, char letter) { this->children = std::vector(); } -MorseCodeNode::~MorseCodeNode() { - -} - void MorseCodeNode::addChild(MorseCodeNode* child) { children.push_back(child); } diff --git a/morseCodeTree.h b/morseCodeTree.h index 3b3adc1..1b88c6b 100644 --- a/morseCodeTree.h +++ b/morseCodeTree.h @@ -21,9 +21,10 @@ class MorseCodeTree { // Modifiers void addMorseCode(std::string& morseCode, char letter); private: - char getLetterFromCode(MorseCodeNode* node, std::string& morseCode, int index); - void addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, int index); + char getLetterFromCode(MorseCodeNode* node, std::string& morseCode, unsigned int index); + void addMorseCode(MorseCodeNode* node, std::string& morseCode, char letter, unsigned int index); void deleteTree(MorseCodeNode* node); + // member fields MorseCodeNode* root; }; @@ -32,7 +33,6 @@ class MorseCodeNode { public: MorseCodeNode(); MorseCodeNode(char subMorseCode, char letter); - ~MorseCodeNode(); // Accessors char getLetter(); // Modifiers diff --git a/sampleInput.txt b/sampleInput.txt index 9e7268b..89ca14b 100644 --- a/sampleInput.txt +++ b/sampleInput.txt @@ -4,8 +4,10 @@ ...||---||..-.||-||.--||.-.||..||-||.||.-.||... -...||---||..-.||-||\-||.--||.-.||..||-||.||.-.||... +...||---||..-.||-||||||.--||.-.||..||-||.||.-.||... -...||---||..-.||-||||||||.--||.-.||..||-||.||.-.||... +-||....||.-.||.||.||||||||...||.--.||.-||-.-.||.||... -||||beginning||||space \ No newline at end of file +||||-...||.||--.||..||-.||-.||..||-.||--.||||...||.--.||.-||-.-.||. + +.||-.||-..||||...||.--.||.-||-.-.||.|||| \ No newline at end of file From f733d58d8774303c581342c36cc763d24342c51a Mon Sep 17 00:00:00 2001 From: Paulsmlim Date: Tue, 26 Mar 2019 03:08:40 -0400 Subject: [PATCH 03/12] removed DS_Store --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 1 + 2 files changed, 1 insertion(+) delete mode 100644 .DS_Store create mode 100644 .gitignore diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 26 Mar 2019 03:17:17 -0400 Subject: [PATCH 04/12] Finished commenting --- a.out | Bin 0 -> 76844 bytes morseCode.cpp | 16 +++++++++------- morseCode.exe | Bin 0 -> 76844 bytes morseCodeTree.cpp | 1 + 4 files changed, 10 insertions(+), 7 deletions(-) create mode 100755 a.out create mode 100755 morseCode.exe diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..777d0231b092eaec97cdb23ada642218cabfe157 GIT binary patch literal 76844 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 literal 0 HcmV?d00001 diff --git a/morseCode.cpp b/morseCode.cpp index 6a220a4..354502e 100644 --- a/morseCode.cpp +++ b/morseCode.cpp @@ -25,21 +25,21 @@ int main(int argc, char* argv[]) { std::cout << "Could not open the morse code file: " << argv[1] << ".\n"; return 1; } - // hard code array of all morse codes and all alphanumeric characters + // hard code array of all morse codes and all english alphabet letters + // 'morseCodes' and 'letters' correspond so that morseCodes[i] is the morse code for the letter in letters[i] int const SIZE = 26; std::string morseCodes[SIZE] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." }; char letters[SIZE] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; // create MorseCodeTree - // the MorseCodeTree class is essentially a finite state automata where each state - // is a subsequence of a morse code, and all states reached through a valid - // sequence of a morse code for a letter are "accepting states" + // the MorseCodeTree class is essentially a finite state automata where each state is a subsequence of a morse + // code, and all states reached through a valid sequence of a morse code for a letter are "accepting states" MorseCodeTree tree = MorseCodeTree(); for (int i = 0; i < SIZE; i++) { tree.addMorseCode(morseCodes[i], letters[i]); } - // break is b/t chars or letters; prev_break is the start index of the current morse code - // sequence, next_break is the end index of the current morse code (index+1), where + // break is b/t chars or letters; prev_break is the start index of the current morse code subsequence for a letter; + // next_break is the end index of the current morse code subsequence (end_index+1), where // the || begins size_t prev_break, next_break; std::string morseCodeSeq, morseCodeSubSeq; @@ -47,7 +47,9 @@ int main(int argc, char* argv[]) { prev_break = 0; // while a break exists in the morse code subsequence that I have not translated yet.. while ((next_break = morseCodeSeq.find("||", prev_break)) != std::string::npos) { + // get the morse code subsequence for a letter morseCodeSubSeq = morseCodeSeq.substr(prev_break, next_break-prev_break); + // translate that morse code subsequence and print it out std::cout << tree.getLetterFromCode(morseCodeSubSeq); // skip over the "||" prev_break = next_break + 2; @@ -64,7 +66,7 @@ int main(int argc, char* argv[]) { prev_break = next_break; } } - // last morse code sub sequence, which does not precede a break + // last morse code subsequence, which does not precede a break morseCodeSubSeq = morseCodeSeq.substr(prev_break, morseCodeSeq.size()-prev_break); std::cout << tree.getLetterFromCode(morseCodeSubSeq) << std::endl; } diff --git a/morseCode.exe b/morseCode.exe new file mode 100755 index 0000000000000000000000000000000000000000..777d0231b092eaec97cdb23ada642218cabfe157 GIT binary patch literal 76844 zcmeFaeSBS2l{bDusRXdzz<_4Zk*gMM1u;dyUmWwPfrv_;@Atd*xw$uO zbw0n}^Vjns?K$hLwfA0oul=(2+OPL}&;Rm;gFLTciRa}G@I0>xPs>X@uaJ8UzC7>G z@%VVwukT!QcJ>3=bKgU1{a-^px=)OJdJ)0;_2*~TonP-o;iu|pp2LwgZz&!^{;glX zbz|>V`!>9uU&|p71`hvmulXT<;DUD|xmtAn`Yl_xUA(1ATAaS-oyKp*37OzYfJVm; zS*AbZx4wJhSr~nWHb}H}tUaOS|+Dul-xh8~m=ia?3)2Eao@wC6t-Y>s|9r-bQ^2hqonIM4c z*I#zkLayzdz9xic`id?L@x}bkt>bt3MSm=PgN~mXIl>XILQ!$FDjbiQ06r(%D+$f9d3t$i;g9=UuyH>&7dNKf?uqZ_j%@9;T-k`PmD& z(&4kfk=-x;y_f?p=D`2MIk46be&%m~YT!tih2he(_7He}ke!<-od2u&c}gCPb>hnp z%056|$N{PTcfrLEPrdse0HTwQ*#(uo8wwfU?>`P8D0Eq%bp+uUvH21aV@#b0PeV`7 z&sQ!y7T;lk?ENs)=tt4$9~fa&Bqb>16zY1ssgdB*=sW%GJBPss9tRZEKoAWID;YTH zT&6I;r^yda@WUh9h3x`%m>(`Xo>=gZpWoH&2Tgu{XT}eT#&ahy_$rKu*^#uv;H}XQ zO2ecC(U8Sy?nVqx@Pk!;cy6N~0$daO!4a$ci8a!reuxOqjs1p4{jj94K{PH-rBUM~ zEG!EPzK5s>kvS9&Abv0G-wLFs_$2rfxgt^g#oc9+;B?0pjkZ!C<-ji1>@RrZ~c#|KNb4XSgG28Rsf!q_pL-Dzc2?c^sNn-fz=jXgs zA;q!?E!82ipbf%K!uJ$7OcWl*8$A+zkPwzgfa?rEP`g-^NY-0VOqjtB60`J`4+7-JkzSWed*U1JsrO?d zEwy?v5&s}@MuM3Tq^Fk|@{1MV6ilFo^e|U1Mpy4g1y$wHYIHSAVg?Hf0zqNcFoB>j zXBYvpBLBqF{PSKWRoas&mahWe9R^fuNKzOmPH1K)QSgiUef@O0CR-*MCFVAyQZ- z$q#nLuLaerVv@0R$d5yN6r7BmWF9U1(3oWO6;&i+SP~XQT_gsjb>?PR)Ge$efEr|& zKv3!xRu!Q0rt=$T}Hk$UIs$^!Ji+T2VzJh9zM^G)rPoip|ZiXiiv3 zASijih8I+Bf}qqWtSqo!8JjGKKu~HnOmRp?&t#nYr8v$4#MgaIGKv(INurF`fLbS` zLe|N+g3P03l28RryLBw|<+7DP?- zf>uTlIxK1yRuTwGX~P82lL#vd>{rGX3nGA?#4yDn8HY^9L6dQSGXCOkC8J1TnIy{i zb5QGKRLD9ReKL=hWoSpEJ5p4Uh+#=s5UnE-t<2mEi@JoB1cFkxVFKt$gp~#MD`T$( z5eP~-!xV>PESiitld+dFzQkk{DJ+vj84p-2qe9lnI6&snvh}cMA!AWdMIweJVX&-8 zL@P5l!=hnfC4rzcVweDW5@BV5{mM9QK?H)*q+yCfGWM8^-6mrfWqj?IRgNNsWs)f4 zt3jVFKt${tE%ZvcP_2 zY?P;x0E{TZ6o+J7XEJu0j6P*N?QbNbNMV^I%J?==>ts~OIvLYsj{Z@WWYnyvA`!!q zupnw75v|PJ42xQYl>}gl876?9L|9p1zcO}O5CIrbhA9rom@ye!O~w|=_<>=`C{kD^ zi88(y)H)dzvQEZsGLM$+lsO!ADXK`sup}&qdPzhpGdIJcoUoDrOfka*(31!&3+z|M zK?@=PBg!zvAsJVgjA@gxnKEAUCCMmKSSE=wZU(hZMun`CafHmHWizyQVYVr%NW`!t z48v3s(aOxtuxL_PNdTspVFKt$gp~#ME8~m>5r7e8nBtI(O(tWb$>>qWkAG1ziiDQn zWV{X3IvEwRPR2PhNB>BB7iOEHibM=c!h)#rH)FiAV08`8`0rVuo$^!e9 zafJmDfDvVw;*gAUPchPHR-hCE#9#e_WE3eZlf-iTGN^SjDrB9E88VNS9c?nUDym4t zup}&qI!Qz;GdIJcb;3#lFvScLKu;p9EU;f0dn||mj3~nthh&^F8K+IgDa!cJ=Ov>^ zVVNY#xChia85Ocl#v+-cf22(hvrSP&B8DYlnEN3St<2mEi-v@i1Yn98CV-wqSXp4d zGLBjh0T@w+DGtdvX)=zRjH8tC=YK63MZ%nplko{q>ts~OIvJxkWN6WSxx7WF9TsPMaQPo1%(D3`@d-XoV#sZEl7|Ey79yFvScLKu;p9 zEU;f0eG4K0Bg!zvAsGiv#sQPDNEu%ZX<(C!6qZS%j7Ke&Q6cMO>>~4M*=K3f!)#Mj zk%(bQSP=D)h*oB9hDE)?N&+y&3==?4BCIU1Ul|81hyaWz!xV>P%$bb6CSwm}eA{Ow zqex+yB+7U)sC9K!A?suuCi7_7w`tSEY*SQ`h?wFe7DS^0r4e&8EE*S95`ZaYm;ibb zVP%2+$~bL71YkrNrZ^;Hx5?OLGOnYH?;VniB86p=DC4=H*2$=lbu!M9d9>`uw0B{) zDXK`sup|raFHwN6Hbtdp^o%%f$V$=IT(A`!!qupshDL@P5l!=g@MB>|XXh6$i2 z5mpx1uZ-OmL;yyVVTwaCwwjDBCgTdqc-va$) zmt+(vER#eTzX)obj0#yN<0P3!%hvpjWE@vik%(bQSP)H^tJIK#~$pW)_^571OEhT|4Q z0PVpr#Sw6^W>z9ZF@>w#A>l-V5$A;a8K^bFjb6POTa~W)NG}4nV46I&V(C20_0-Bj z8rY?nX$QFWIzJjqWA;4WfQ1f)o+!KuI1`m0LrTyxg(lwC;b45Uf*pUN1qUPICH z<5=jzvPWT>vcDpc63!&Rnzq1P3R2+0gNUheZffu4gNI+XH|^KUu#w~0(Pl&#?84IE ztj&LRTK)^5do@e|^XtOK1cI?{!wA}fxppib;j0}>H>3w+Q%GYwlOIho`NJx@h*YWx zg*5#3*y( zGoNM=N2Eg9X@xZa3)C?BgWH_2k^ox&9MfX}cBEkfP$uv>QFsb(3X>n>*FsLvHH=8B z%?aYl34Sc(gt7xQTkC64nbjhG&tDV~Di#XAg>mMp?;vGCVOVmPh8WMabd3tF42qQ`f{8)~fPZKMqJ$ACa9<}7brOVz zO)x9im>i2Hx5}OwMIcDT@X~EC_IIw*QDj5XD5H z$!QKhTKak#@2)w)>V^aO_b7RVZh=x40UC-Cdxb>;XbXl3U>Z+YNdWcTFacPgh7qLh zJt26;&p*-NV@(seQMA;|1nMk0K~_15|T^2%NeVDiS~`876?_8D^jj3-wVK0##ggItHEQ zNdW57FadZsj39OIVLP91@He26iwndiGt{qciS4Sym@w34r7r3eDER>K)3>uOM@ z7VDDvD>WPDyf+!fP%uaui3J5u#DcKZ1qMjn%>Ed4cLfmsRenJ{KSrMlGz zRlZ{+i##%yU4FwuNSBg;T?tqofKSe+5}*Tbcn%scqqJZ}cn>#)pwUvIPgA0x(2DOw zsqh=5IjbfHN{ViY33CH%x_CA&*XgCY=s zt;05&pF`#N-4bT9S~F59`pTVtRI6!j%dt3e|@U(V1p~SedS?cg(W^M zZVoH77$$)FZ!rnL7&c4*#;{=oi*u|IX{qKI5#(5}c^5!WVweDW62lBA$2xI3n=*n*}gji%*SMJ-J=2}_&FCR^s*zNFy@>By4)Z8m)P;FG3 zfpy!30m)`TS>$)5)sN; zZe@X>>~UBG?N1Pt8v&r|2v7*aPSu@#TT%|F2`KSI)zLjZ8IFi?nzA})(VLS%i&Wk2 zbExWmka*vrPg8Z9FzAhMGk%ka2Z+vZMA58NEn7mJk0wqm91{_p7_fP6h#ODBDKV8N zG2y$Y#yP>_k3@-7CnMbpyF3?mb~#Doj>IPjGOyoG!pj%(B0e_pQ8~=08mZpbx!_IV z4y<}xE^lsE824}Xu!aYPQHdIjPzo1;SY1h02;)_-tih&09}5G{VPNqWZ*_j)OagSV z*qy>2l>VXoXf{lN!{R&%EoQ8AG2kh%vP(k@k&JJNEJQa5EPiWEbR^V8r@$87W+ph< z09PaG0K-7fDQH2UI)KhGg2%!Ic}PG63L|;w-^t^$oa3MP*@F?rWt<2-NAmicFsTL(V%d>*qtFS{Pwr+=1$-XA4Fbq8UQ)ii`rhnSRKWrt&Q*% z--6BrKIjB$JhTJT7Kg@1BWF^FUaG(2Q%CnBjOS^8asH{aAN0-n!8Ua5fFWUa7PMGg zx6Q=&f(P7UxXo}T=#9t)KfgPD;e-3&hyBV*P~Rwm;5i7}hQaB#egg(c9W#5fKR!f! zqAW_ZZ$xoqhvQc%j_feDHzOX#b<%$iqV3HElrB4@4BL_Yu^)B}fzMnq`(P!e! zOT2?Yf&-Vw7vf{U?dKj+yBb@8-U#|FO@P@_f@rK6VAc2IkAt-(FDj6PC|cxCU`Jyy z`Vp$ujsoA+?WSMDj!Klg7-F<*{spjI)R^>&7zvGw+eHr( zg>`hY^ooLY3p(ulc|)d%z0pxOF$~QJVAvQ&P{daA!V2My3;VEVMJO1^G$UgtnZM|0 zESo*LV_XH`r9O&=QB%?$D_>X;fFWd<0PGUO1kha>CV(1cm;h`@!vs)!h)opc5Fh`* zo}Yd`ZbH(Sipmj4gH(1CupoLVX%AEPR8uJ>IBE>$Z*<|v6e3yHEzXB%ES9)?;$=54 zGytPz2hi5=ob)5q!}uo!#DuOD-mRU4`Uc77oWv-Os$9^SSVqnQOcb8P+a-ai@mEWx zRJ7BKy2Ztl9fV38q#6RmlUad?Mi>yi9zg(Q7Ixq{r`cb9P8uaX405V)oD~!io9ObP zWagpVKM#r$9_lm5K5ktEx=H!@xMd6SCzu`NI@uh^OFYz`l$RHifK{NLG>`3;}3$7(&ch>jHMet$lMN1V}&WJ zwVYQUV32c@An~xgS)p#CslVZw@QAO!Ztat{1Aih@9J>Y1>J3+o7k3sT zp$O>hDDbmbxEb#qdRKF2DV!@0i~Cp_lBOOgGmY^Rh}q?Usw?aa%tYDe-mMqCrFzUP zdQU#89=+g$>LCzh#~~Y@YW3)WYqfe1vFg$3s>kJ^xaz^rAp3CTHA-c{{QA%kJQ;&T zb*iTP>L%8dhbza5)#7#)WJmppEOjM{5#J%hcMKy<=zsB@A7d-vF%kGkYRiFETOdPy za|lapJ;;q-H0_|Y)zkx#(2yWo4A%A|q9TurZ0k?Xiky^Ws#UPdOrUz^V7m^SVEW>H zp!pynERg`$Zh)Y436W3;<0unPqIm>aVKE@M`?{2wNLzeCS;f!S`9t+qRqxqeH3dpt z2o=9|4kdMTj=Y?`)RZaC`q8%M?n5*3IOp7F)=1x6+ytJmjG8WdFm-e$@!ul*O19NW zZLkl3&cs~^>uOkb#;=}Vd4(}(x$r^RE3-kzQ^?2~56>cf3(`R)&ceN7sv-==Zw zs!@)Q#Lps9NSbj8jf0LSkx=;HX`Q|)Ow+~x1TS?-jpM^>k~$ebjzvgVkoEQ`ZBgZw z8IBDT7gp|J%UsA$s8{EQ8Tl!8JV+>O_6!mizkoQ*I<3z_IQ^7P%(5LfGRst+2`^`; zGQQhUn`+`?o+wT6p^U~AFYG&4A376vKU{h>hlWXM+ltK~csUyGP4XS<-! z=01kX+K}pB?g-%3?Rbq>d5y>SGZ4H~GxIG>e|~r8g%3J1(%f;wLVX*JUxA$!we@ZL zQ%wg@rZFD{gH|PgRTp4loWHS`uFWjd{y%Ww9400%{UBkzm@RGLCpIbwL^7?yW$hTN zqHpMww@7Z-uOqB1A|~7|T#rDx+kA=`m5f-*iRi%LFlgl~D9?%Rz{!YbP)te#0_CEd zoi%Ah>^YK~8I730F`q-`bA%vr#L}pU4jc~du{@V%j4muH3k%A#B07MioS=pmmBbmF z%Pfom@|rYW1 z3$`Vh%RzL6LX0&7#N#lhD(_(SL^dFELq9CU(UUUdEA41y>p zscVoZ=x1niYIG*9V-%m`aGJr8dBzXc#(=TU-0d4>*3vpi^`9jkW&{Pac{>FiX{s#UnFAql;>7|jN<8C;Q#C?B>#LMn#GJdRP7&udFaBf3ZX3VAAKR#c< zK7tzdeV99Ry2maITCu$U;IsKGQ(*I)b#^dOcAta|Fwhd!yV#E(m13Ksjm|>vR zzinW?vjqc>D>QEH8-^n?tZy{P-WtCjj1XqP4{pwZ&5qkXj>?hyNkg&YOMWO4vUMDM z@U$Xej@@UN&CPeVE^lDK;>`@PBm1T04XJylb_iSEaAxY>@iR}^mFmy4uCc1Ha3-?T zhyzVCJLTY{p!x=sW#BiVAW*h2>B0__wV!rj=MZMrg^67l7TPTQwBT8RZxp!SO8?L1 zm?U%-$Sp-)?TOy#2n#)tYI>^wrE(Z!wU2v|B}st{>?pG1VTKghoB3g94@}lBz;3{d zKauHCawam}gnQIad6iqlk4dpUu+ZTM7W4Qz|CF7n{?-Lz7ZTqi$H4D)T>P-ND}ENO z1;P#Z!J5pT?c!E(o!|icyKucd@pl(IcJJA)?$W9-BJma`cJ{JYwm&sa4}pZoe2yuC zlG;0Vuc_HXX>J=t5wNDQ_)w7qbAlnny&*n0wMWL+}^SwQdshjqhRj$@9&Z?gHzqZw8Rrj7-ta3Xh%E5g% z!z3fO?;b}IE_~4G%c%pH8*}a9vcJQKt|L6SojpKMo`%*()tdqcqKEN5GnvII$tnM> z9M~YJn~ND6u>hR$NEJ?k(%qeZncf?0YfRmOYHa|S_>6-|~I3E(9As07i zQp|~a#CZ`Eyn(~8fnfgJmY}fPsEiC%vKJNZM0n4Sk&Y>~moaR9jEToM_|J(Yb1{uH zmCk9AX>>Ilu+J+85bQ!ECW2-(U@^rA%|9e>7N1zQA_cmEJvnx_u^)vSu{O*W2V;Zu z1%V&g%J?F4FOlj8I~YmjNLa{Wfw@^24+^&frut8z10Fb#kdLuVa6m4c=&p0Yl+Uel zc^zHYoF_CUXHRIBNDvAR3D*F+&iQV;t3@j%qDO{nWL!fCCh}ujH))jz> znnN-u>QA>wRC6zpnuz*F)~h7bdwX5cP_t5k+h~?yBc;kQ^|fTKw+C(&wy#y=0Tvh{ z;XuiW-`HHsC_*vesPq)X|Hq1wRxaeDjqBti1@e)C#L!%Ue67SnVJ2TUqM>|COg?ij zk($W&PIZ8;viA1I<;|XVAG-p~Aw*-dV0d4S*dy(c=2qGx%^R=!4q{!W$ZZ-Q3Y}>P zOPxmSCg#RUm=gik7GO8%SeH_S9W&*1_ySuDmXw@Qr(C|@j@QnOewn@kl<&6;-EzME?5!UyAH;5T)s)?=LhYGFB` z`9&Q~?cvg2-9R1Ywc}bHuEwCugVL+;#+nQfKYs(qt2U92qi7_dJqu{8nCf@RVonnM zF=b()q80|WQ4zjai%4M&BZeAAEEyvSvl_-4!W#D39*S*)C!CREv`$%^4#`%1ABA9P z>FtF#OL4@$1R@!@m&F;s8GQEH5?ng1XDD#|3QjktkkWO~=NN1P15wmp0E}g%< zO6fHB5~)c#KZWQ=Rr7b5D#Zq=a(IM%=^#2#N@-XvaFvWT4fG~M4W_oe@iao9epRTI;DsW;)ex+e6OlhH%K<+I#IYA-^diNazBPf@JBa4ugpPr zRNFVMLd4cLvW3PkTtWXQRWPbT-}rrjF}b{+9*t92ycKE6|D*{!rBeOBQTi+jEMqVx zEMo{{T2NyYH+F)EVqo=}6{-IBBYjEIG>6cQ{9ngJw2dl&G7|xgpaYo|S1|a#j~A!VJA*ql>^8 zOBpqCQdnV}0J~HK8ZqYqJGm^MRv(aJ`a~_0Pd8)5@tJ8SOiYN;&UVaA;A_qNqieo} zyz|Zs9t#S0ifv@+Eh*2!>oWez-y%6hxdFqTKJ#YoZN2dxX4UEf$*KMnm|58?Gse-^ zD>L$AD@Q zy?sw3D@yRacsV%lDcp#(AVO7-XScf{;u;o^tFG9e1TVl0WYS4F;t&Vq17@JD+1C!r z9DG-PSW_9pVvg+4iJNx=RST|H+}+CRIh}rZt?#dV9+iNM@?&)NQn#H)78?q+p55#V zk}ke&NSGBEI!#d=I2Q?f)K7hFr@y2?o>2Qr0J6Ut zDpikp8t}Riypo#8v2NgZ;_;DNjTC-D>*HXB@wd81_c;pz^$7!3nPd~1no5c0ltY|N ziRcgfP<2#56FF*B{z=#c1s+P3`{A-rUBmP&Z09)+43Y&lexoa4M}e*+-)$C())UUd zg@4U#tT^)_^T&XjHK+Y%c21nah&s@~ptAO0Mm0vqI0N$XhGOB{7ML`!nlelve`7Pc zlrAJ4b@Kr^MCNUmttjrn#dKI$jG85~mdsG~8ikcT0ykriJ#Hd$+9@)3<(2#(ubx#Z zP=q!1IqkPfnhh$l43DBArU4V>01t5F5j=-F$`qj$tUv_72+#`BsG8;=%NSUX9NL;X zq)}*ewg=-#ZH7Gm%72cng^W??j0U|8D~VijEKI3Swy6jU$6_OTtPH`JY5)diBx2wO zB2r_~6x67YP3F^@pJ6QaF%ed$Qu#l#NUbu-KCZmXNEV4RnH@mM7nn&%rhsiUh|?Qc z++6HOUR!bPrB$o;eMU98B(VCO=~N;A5;s7qdhyMRf$LC!Zfvl25R(~r&P}78jxajy z&DYn?pCECVka{R?zLfc>bhxenscwPqR6mvFDBFfv0^|^2o{@8np){{0-pw(G=QdI2 zx~Oo>vsS>483ed`X@q zv)*7?m3Rsg<3UQ6lt#o}113zoO=5-?&oyu<%VkMfQE*C^v*wx-;-oRBcZq8P7Slv* z2AC=`ePIG;hu{rQ2J7{$@#!0q;;cM@N{Pa@WI}1J_We}<%G$K|X8f=Rx)+XNC;B|B zO*|BrE|JJ9l;9*ZJa)npJVQ0(HcKi%D#H*{t(*?yDZwa>Aa*vx=36*yZU(J#cx|M9 zmm{;aGZJSVM5SI~~C84(P>h}xQC_GGS z^nYXTB;zQBqHv%_o4NIH2WoYi;!AddM!phW$_SKOEy10})ZEmon>*E6BtNwpt#(Ul zqSr3_P*qH%x@Krsp&6G{ew^*J2n|>c9ajyCnq6m?xOq_nr>tp872a3JY?jTyW?va8 zK4(C2pVP@_SdhOkis{`9Jo>{Y#iKubrbBhIW?9+9D=alyWFK_fofqv_$v=g5&^Hon z)AFWohFafHs{b$=IaK-81;7kyjCL zM~&0ej?c_Q_HndEw4Cfr*zq{jdb7Xb*M0*woOU*YOWcfrLH7R2T`o*mEFu+d;9po} zamAAtkfZIR2Ao3=i%w}S^}yA*=MZkysM{8zo}I|zh5$u98*)?9;;6TX=~{@(&Qu+0 zbMb(%m~is^IbBb?}B1hS~eEM%$w-T|9p>#f%HaMo~qA@;$03LR{Wzn!y>t zhmc!gH~dr{(!_}z<26c)zQJhHSQxl*1t`Nt=_Y`2Y?y%?TR|BDB^+ba!Pq5u$DjKk zibkI(ojxGUqTR}!WFBQ!T+F7-_qM>qeiz-N!r#fk&8j#P+lGB^^#_Mim9cK4gYAQ; zuFIO0hoxCdP<$w2M|HKd+hEg;IkBmuh&AQJsTWKq3S04}H3m8f;TQ?nh}hz9cuo}u zU&;6#t6$tA5Z25BITK9tKkqX`g)t|~X8lyB3)Y?`3MU`_~jp{mic37mX&RIB_e3x=jLRrVD{P1 z{t_%~4s9Kxi@!xQJn0Jzr364`9_Ypx_y_1pf>jfJur=> zSUfkbKnF(YFs(e*9%iR7cxgc=OHv2=n~w1PnT{pz?}8aKjs^qEv2O%kVKH_LwFhel z+k*>X=4iLbxOJ1wFhxg^i6e+$7#xS%!;ZmroN#ClFN8HTCe^JT(Y~C5SC824dPE?-NL(@N*z5fJA>pr4cBi*A=^B+*PiM2Uvj5T*f$v7qABi~MofXCH4UT+zf^%} z>&(LL=ZWkv$S5f8g6Mm%ijKAbsG+r(lL9GSb zVnjKEz;jY_0ZqfTprMb{hN{kV#jj`94U4neUvhO1m;qkf17_3eIyveL`o_U*8iA+4 zgv>w_GiVD~m`J5fKsAEvp6r(zDp1Y*NH!9UGlw*vlqq6!G7j`)k!j4opzrtCP!ewY z{pxLVsoTf7>j<9hypq<(@=rCvPY7?=&-~@{X_CyL(<|buY8P-mC%z4o{4DmS|E7Z3 z1uxA09-m?MH^~NB+y9Kc(wX9KiyiaD>Ed6# zeSoq>c@HGz-DKrmOch>>nu44uA}2?%VaCdNB0Ge%anH@5U>;=g8;2|bEs^_TSLz3cmbPRe%0VNyiivY7HR>iRwr7pYC>z}^m-mv145L1 zmB$P!04l+@Da1X4aQMc?GvmRE&{}Cpc+_s|o5+rW%=Aq{7SxbxogT$^D+RII!eT?7 z*5~K;r-qnum=31a2+C4YHtNI3Ohg<@gIjzgrq-?D<4~GByKO51Je2kvn)8kV-_@#e zHGAhM(Ki-{TR?Pk--h8PB4gPj;Chl|H&8c;3qR6<5taxBf{q;I#)Ac(pb?2SJ?l<1 zf#81Z0^Mtv9S(aNAtiNGF!m(gIPQS=F(b&E{2Zprj#5_IM%5)wPiwfEOeRcw^i=A2G7&$s@l2A9*j5iYY81y&@2yDronW^=gGxKI;%y+W0ut;m7l{XH2wk{5%mZHsyKD3 z((Pg1=fTRcyA=n{R@&rtP^PBW2}^BB#v#kX|0Xw9@c^?<*~#Rb<)KKi>nyU9Ar4<+ zk`6v`brStASIxtGhX&8_!+Ve!O#Z(l$=@NqsRvN8wRJk!!JI(HL#e|ek>W$e5|^eh z73Cq@cWBw*Oa)OXBcw7pR3^hL8;9rkvx>RU!&HC?tLU7V*ik*)n?#J7gc>8?3UmH* z7PFOYO|2T3$li*v2U3+C2-n_r~7ut;XQ|9MWDv z=@_jhk3hmcA7`&6*O9bRpO5z(-B0rVrm=i|eadQ_~t#hBL+x|kayR)E?oVX6C zFWW`9u$>FM-2{hnL~)LiXI}SkVQKUS#!ZQ>ZZ?w_OgJ(}l4@_8O5BlB&C+#2iCF`2 z8%}VF5f(WEyM4luorH{%4JXZHh+D0g)%Z&cS!5+KTp}yrRwfObK=op7CoD#kRWPcs zc!zv4M|~!FeKqVJtMPfQlR?O%(BahH#5SmGmFt<+Lx&@%a>Hj9vtL5TfhLY`?7+t0 z3uac|IOyL79pBi#sk2NrtZNH?i=B=$7WMWmcFy$Ba0d<-}X zjXaJPK`%J9`0Y54NdZ5KEK#GXRqA9d#_bZaJsWOYN3x%QDz^*Oa7InW%{;Rj zVj2aKnVxfXgalO2afx51_^6%?=O(A^ygAa!7CA14w$Y`&N5=JgbekYoly1VJmE5C3 zjsWwb1UO7DP#9K#{nXcq!u9aQT3+E+da3^bP|zJRbfo>D@zrf`hxWwQ5PHW4l5bA$ zg;OXhcY~e?*Hr(}aF_6*2-*$WBA4?JQ{^xDV*gY*A72nc)1P(-*Y;tIGVZF9_#vaS zvnLR4mTu^K36i;Sn_t0QtjaexDV~(hfQW8hyjDr{Nenx`iapl!=FY`WXk2TBVcl;s zl64yeO1)xgSXD_REG%j3=w-ip0@>#DL{$NIS^ysajucrG9gVe(KQKw@M?-{Ktpl%( zbie{Wx(A(EVIjsRoxRZGtsvp|V4imvo<$v;rdE9=OudK!hViLAj>Xv_|OwrPUJVKXkIHKq`?3#Z9 zwC|n^C!R^B3h-m`kOZ!^`u3GQJQ z+1N1^Z0B4!ko?R6+9$>2U~kHvZ?Ti74~)fo<39rvIWHHL$EC2j>St#uo+*FgY)V~C z2IltF_A0e$Gm5-%Ag5EZgRC*sH||kq>b{5JHeKW12)Yb2=U#+cZTJ{?ZTQhe;o0@p zhEL-B{|Xs@ZCJ)%i%%}XS0MiC`PuDH%`(5-u$}vEu``*1VLbCajH~^K-N31>u!nvA z?qO(sOmGSgY-E&&6Khyf$nrI?par`e>~^rnK`WZ=J9EHM!-r8>h7c7r7{`8nL!e>M zg_B;K{z@c#RSZ&+Ki;CTL zu;ND&xnDH{m!R-=yyKrzX1CtGeU~jP{~#>W4P<(Z#}~Xz+{8-DzlocY9Y=d~%E#Mt z)5qwv=O%8&gSeO@;ye+52Q#q{9*Ya_fK%j7CvsAO(^Mz@HAZFe;2FG--J4nPE99rbf&4RjZ#m-E$je!D zMV)?-l*OQ;lXEiuJT<&P@1q| zIh1f~L#wk>DO^S`pWp|de{IMN=6^b{AkPZ$r-HD#`q5hWW_PdX#Ij50(npQsK?|gmD*I7-k^*aZ@Y-Pw1`o-sgs7_oY$qrO=VIa;SmLwMjDBm|B7J}8XLM!BY zFq=48A%hN70|~SD@T&UkJ(ZP+UpY0b8q9h<5nlmLS|UJEVZ~n+`{1{;&^5ikS9@$q z$}j%MKSvt&D&Gb7Luq*I<(@|PS?N38WtTq6%K}kd$RLhr5PVMRHZrg7Pd(y z5_%n15Mhv>CC7Ai{RG=_(+40GcJK=$>sH2zo!9_DbQ}>o1r`dCRX{iRwDE+ynZm9I zv!h$+_cVBMhpcd^jo1jJ?rjWEJ~J4|vy8?X#jE5Q%Q*}ysuzF~0jr_{+nEDwpfpUN z{_eA|tr3O}2Xx5=ppHS01rbR0F74xrxY`RqZCIGhHz{#AkX<+unTSr4S+v7%C`RwW zM`iUA5nJ$G%_D5eWu&;#ksx%KJA{%9vuW0H>}fv74HLlc(ildNy7v&|`ohKK9N$*+ zNP}G*yp(r0sq3z+a2vgCvdPUk*(}Hm^JtyP;uuUB1A$~-!ks#)yY$XxL1ObQfGjsm z09WL()Z8dEVn3`r$m}=~*9w)7l~>!3&*n~hRZEqq^BnEb#zSww2`1gvpx$-{-!-iq zO&l7R$|2c!d23hD-bmXLUj~xu<=q4G^QRXF_U=-IBdNd z&$2#~;}h@<&7ekZb(ZBCsxiht$Gxt_f~s~GIGEC`#!1_5qQE;t;08AC&OKzOTh~wQ zTMm+ZSe8=$C@;62T-)s{ok-#y#ep;n!p5W?;*x0n`W^1?ETU$Z)mY5_3grPqCsBIJ z6?S#mRpY1=Gm?u-))T1*I(`)&!ZbQ{=kBZ8{*;FXTbzXM8D>?*Vvm4MB^L{y0)lhh zobW&f(Fd+T#XEQe`7=mrU^{=qWCQRhh}ilfU^Cai#!1Awm$?zFN!@$!n&3NaxX`-| zQ|qWpouDFmUtlZ)P;J&kPFlC+u(5wv;NE)iz zYpv=d7nGI(o71G~W2b@~7=kM%Q2SIQd#UH6?RKqZ>?q-whZZddn zlAAj~?V6BVsW5=WS$YWt7Hhv2CLsB}1|n=@@@}^%)$bhLd*3N0<`F2-evUzlF%ZB6 zwP6D8jGP^iLtTc!ZL?;{xa~twv{>Ab6B3Vw8jF-%(XB#kBwg@Gq+iBG7P^HE+Q6?-88qY z4C5@j=(Yo2s}($Wz@b^kIJ7-9zB3E0b3kiH-2;jJMTlpgI`ez1xo$R_9Z6y;I&H}k zp|-@*T#dI`c*6ts)RU~;J0ezk{2CwL`3Y!C9bXB?mIIf%`3{zkiNqx+&`Ju*EK!}x zY&)klQ8;ixbv8N`X$zhxdMZ~iHc+EFn@Go1OyFKQ3t40Xm5F%%1f-eclAUOi6a16`SBn+kYB-0)CqpY z+xg20+jq0;aSO~{AP3O}cq4TzviKN9ptZF4J6O}&=lFqlGomxp_0WBDJF?Fe&u&;W zAJSBu$`pSsUmedCv(Iv93y-+s8B27}#y_XV)}Vsp-!<=B^WHUU*PLHHm*+MLM0OQ% zWE)naGV3JnZ5TrB!@UhGYphpONo~gkBmi*#N>=dqG3f$CSPqJl-LsmNtJY1Y9PrV z-1Ql-BFPgM;sfvx>_x$8KI}^bMh8e88)oN1l6x~mOzxgAVl^QymzDKs+9tpX6F@mK zk!eI5MAaB?Y7f5BWXWiB$!HIaf}IBzF&*G7O>fC=m<~l z2rx}z_o-mP6HdUU0rs5T0PT5Kk;x2Qx9iU5C!OYqxd{Xh!ZSNWY+f#6<~_&a(eC8% z!W?K&Ef;dP@?hHpTDj-pAQ2k|Hf9VfP^pK-X}JT_utxV8BT;zki2`YZ7;ilxhIMy< zHd`75rsijNeY=y?xM-|edeF?$b`vtW$sB5n6infp8kR0cNE;KFX17^>_+(25i$RKx z9}g8~R}Nq=28gb_Ch4B^*tSh9xs1_aJc~CYUk>0ZzLF!L*TaF;>`DMBZ;$OeM4UzLg8p>ywZn&JE4aC;M47I)ajq?>Gp8 z*3TE!>UW<5ANCDUbXi(&;Wswe(K#{91M_*xTd{gp%q;+$w zv500iWmT)Y*1y8siUb&^8`i>F;q-W9V=bq^apq5MQuW2?GWg#Sk$*Ab9mmx^;I}re z)OASU)F`+AiSqa8GtgmaGheTic(egbU^Bz4tDCk)1r2o)i+GUDtnjVDg`J3i)@AY zw1m{EkAhlMwMS~AzuFtIk|CTLQ+0U9YKa6}3rh~biTJ1c2ZU>}M9mT4{G{5cZMoX3 zn?MeXTV%r)Xw)zfs~gQkba$~;Z_ghQ-_oRFaR8Ub+DIGMtyt`_*sA}4iklS?zM7CQ zW3Z3jWJiIOwRq5u0xK%4GW3o`<*?f<;_lRSrz=Y%<|e>H=Ne?S2OFzh3k=s{d$=*j zi7C(rfDigrEzRbLK*QjI?$5dw3^~y4U~?4R%&fLrBuaZ&X4is1-2m{$u7w6IL6t8X zJ-iGtb-`U3xw&7X&F_L?aMucv_U>BlN?XWQ0C@XTT?@K4>soB8v$kt-lb_{rrNNC5 zlQXo_B0h!=bcUki8ax2p(T6m9irIB74$~bB==U1ordzOHf<7oFkI?PKa{K+FVbzSW zA%aNS8r_AkeRnN`@L1Qiknlh3TK;Q!t>#a<79aH{UQxa7b^C7W>klsKS~BnyL~qA? zp=(*7p=%MBCotR)+oWrubn(NBsSFr@=yeNS%K*I{^Jz#{J%8fv|3q)A@^v>-T2*oz z1Zw72?E-tWlOFmGd(e|&csi!qiaY8^QYhm-`hsO34Ont2CzZlEQWX(D3TM!k@FYXYX>foA z&^L(?Q*Z)wgF@H`dk+e`C7Sj>#D9Uz!?c^QG1~sjwvnW_` z))?K!<}|%HnZs4({H{6Uv33qPzPaxdheEjWro$mDzO`}XGZGIm;5terd`)9Db^3_} zv}KhE6ck#w)jR|B6ZWv}td^nZS=mrAS*f8O2--C8(G)!>>*!!J^}tvgp+5ZZ^tP3A zZ9C_dAf86hs#?dbz$7LtRS_bYQ*!NGoHNRCfu!7Y-vGF@noojw`D>7Q+jq14YuD$x zSR7a>qfgUv(AtJQ2YQon5K!CF-gv~`tN<=P1Mb2XmliiG5}u9xJl$V8=Tk6kDsVl8 zJF)AUJ{q#k1lrk(_#HQshhc6j})-D;zQ^ysS?Sy7i-?`6pVr7S}ZF$ zE6ZNV=9XLB3C{5Fng!$}1KnLQ+F#`F{6zzPVJvl%P2yMrZ6&5Mz=TDpm^Oz26ShTB z*cb@EZUh-cQRVJHrwhGdt%HI*NYfEz}tH{^000U0s(gxhfQTx!MG0)DjaS2@&h zgtv7-w;YHNmMAFgDOMDxO{)zLs)*{SZo%A+G{(EcGFkRx7l_2L<=}BcENp+_7MNt| z3=IisnuQlY^pV@NuTBOzmcIBx9D_skWOa1ooJm9+L_D7EWQb3J zpSq5RUgF=qYN3l6B4O7jusJBvhiRx@w0^8*Gm%<9Y1ig@=<^1PmmV)J;-fLDQ6IG>NeD6wn;Dm zV5>qPfx{hpSCR$rW1!7=!76jDzXA05OXN^KMD<16Y z4<(?byE*j$ze*S>=H$$Utx&6THWSO{mB67>kvQOPy0!iaYjSkU?`lRdo91-Ao9oC7 zB=^XgDyp7$X)?YBpo8jWfvUfXVf`Z$ZhhP#P?PG)l7$hJpxfKPRTz~`m}vx2p8<&` zsQbA&w?Uy!k7Ala?b$6gx~l=*(x07wQhsOX3q>Z+iG?*IB8uHvR|b+BMWsF266MQ) z*>BJyREN&cpw0(Hz&0&L!)iy%#!v7tiQPRJ$JXq>4;#&A`q}2I|PFqx!NKk zu%clD1X!m4K&!$iPD_WN49Z=ri@=6}Q7eUB$I6{;JAVtc@)JakD`eeubebqJt=KD; zn)61;732)h9r$^3x8|DsxQ%TLvI`uLFdsfqplO2byQ#Tx?@aCQ>(tuEe}5p_W&L~> z_IvuS16Ny!Y{}>WR4xA9*fwe(^G73xy77(XE8qsnp^cTzQ0g^zfrTN-3>q&wPX0zG ze|Dg6&e?(NNf==NrooWf`v1%{$beO)#xx+#nyVP zN#P>^Aop|d0jrm2g%U?lWqE0n5J!GGz{);g1jRBAIL>LBye_mtDD4SI_20rA8g*&VO%-WUAyG{D1!u|~*b%?L=FROuprlW3C3O?( zra5s%@XfX$z4V=FW|2(n`)D#^%K0R0Fk_dL{1}kiFQg>_)D6`>TOdF{tJQAB)Qy8| zPG{k^6l-ts7hnmynSiC=doAMNFL*&;Di@$HPr8Z3@W^)w=&qG`;s`f!%^Har2bHlo zeGyJ5O*+JBu*SY`r<+=6sNJCF2M2HpKxXk?_9@KM7S=v2Q7OC=$*$o{j{f_L2 zJJFIjMhC1PNMn-?i^+b51rHuanu*wD%r!5HalzIOrELE0v?d+Ju1Od`R zqYRHtwoT(357L0BsR1xu6Kq3sg+k6xz&AJ6a}#W`5&Cpa*{pod-#L#8*f9WQP=sR+ zYzENAi_$;bA5h)cr~LxsU@{(m1sm#7fGj2rFpjVL{bXkP*CYeh-H}-GWEqx3 zv^x<|T}8y;T0ZUONUXfcr(xJdVQwuVmJN)Fxbg*m=L<-Ed5#l_sOAKLnP1KXMZ-2` z0{GPgVRoaVew5GMm}meh!rTp@GE@ior|{6uG$KgdvX*^pbwzs?v^|Ai;Z35Y#1`0~ z=EcnndCsFjKdyXCX+C8(b@O%>Y^3E7V}Qn%?DHU3V2ltIuh|-sfjT~kRp!p9y9@Zt zMsq9U?r^$W2X~ek)y|Rw*bXt%t5n*BiP&DGm`_0STBmkk+qE!2R2m$yZnrWvW13I( zab`53G)z~PiwbAJEdjYL#n_)>JbMM~FegryXtKz*58$FqxOu6YkF`c%0qU-)S{Rd* zQml2hoRVx0vwNFhXZf_Vv<&pD3JZ4-XT`H@S?#K4eF1VN6vm8A_qchi_LbvU>%<14 zxC3VqD(`?jhCH09E3Z)sWOF`n6BgR?MRFCr+qcE(1@@!$W$IRv@oO^9q~Nq6#zMM= z7hbgww_poJB`x8wmtUPNR%a7M46;LL%|mWBaTwpjXz3$>c+kRaHW96UEz|@aDirM} z2GspRHoKV2CL;dG_-ZzBP=!`-&V-8JBp^U7G^1$<-E^H26w@_n}f7lqiqj5r$i7}rNS;R)H;3qG>lw)n=VNf z_6FHX-Go7PU+pNWUHnVz*+p$Dn(7)Lz|RQ)RA&|C?H+nVZInuJzd55HrG|nTQP||S zi$;an5pSDS95;%9O^~2ppA@lvZZT(!4A>pGi{=)UOj}N_jGG3WV<7DP6tJy~Fe8cC z^kOeR-BM$9PwotfP*-wuTYO8gh=yUgN^WlL)m=wkx5JiG8^cXWKtr*>x(HtkXB1U5QM^rSYwxBaOR z%NJH=^~r8n;AZNRUGG?9z%d8*+t!-V@nhOmQ?F1MI)&zJT{k%bvtZ%p$Y$UJ1_PII zcvb*fNali@Zg$)D%W9IcFgSb5vBEZ(1XLj04bm~rlYr9K7?0%phH=|Qi?k|78OU6C z;9Smvj{eVsSqV9K0S|RTm_KenFKDu6hmaYRzV>_<@`Fk?vO0^qIF+dmq)-g1uM=AO zMvk$FM1jhsPxq5!f&1AfyE>)1&Oas6q+$P$ zY3x+D(V5Nb7K-c^C$toWS)}BxlVAbnkV$yZ=OV8(NyhmvDS9Y=-6lfIk%{6YdF`^1 zh#J!&KmRW-8yVk)Wh2aqDQn!%tC)s&^WoSFAo<)7go>Uj4ZW8@@`I>Oy`PS3?o}xn z*tcpo4R5pkPOUpdPo3^mJ9H;aW?%&SQS`0yA-!&jULA_-S72cwr3;F_Mz7m!GW!Sc zCqUV=1AwBpeqi5Yv4bbKqafP4OM6uIMJm_B3~>!Ls`UBpi#yE$WmZbQ>0T$I2l^exI${mPFYU_}-y z82rh0o3u+zey3~fUO-cjP_^tjJJ4_9(d@V7xLNAxND#Yam%9SU)OqM8s85H?la$7O zEea(?^#fbPz~Ru<>NZ0I$?CzrcKzc>D1xF*5&Vyq(@$<&Im_jAo8{()(H2E+Yp~pf zVGFbF*nzDpAc985gXU$?3D_b5^Z<31(-WrQWa*;$*Q-OQ&$?OeM-cfO@&VilOuI_e z*<=hjGbgLs)orkFzo+7Q5>03!VN=Y|?e0Fgf%#*u!(eXynCtbvLGPU2H|fpa$(ldr zX1$Ag@6h{Jy>HWdK<|(1eY@VD)O%3xPwRcB-k;HXNbk?-{dv8=sQ0kmU)K9>y}zpW zh~D4O`yRdT)q7O$Z|Qx%-Vf+KuJUn)Bw5`7Ko8K=&)q-YP#w zJ?#DvzaHn;t^E2vzrMwjZxN z7r)q8x{p9-S9vwRR`H9cKD)2x*CG76onLGr-QVQbv#9gkPxI?3ejUu608jAiHT;_9 z*BShJgkKl%iyH^JujALZ`1Nsqv5j?qjbC5n7c$7J@WUMSlG!zi!~y z^Zep(c6B#muR!I){CYXRy7;x6U+?ADTlm$^uQT{{2EWeXS1Z4|_;ozLuHx5ne%-*Y zqxf|jznb`U7r$PDFVvws{x>&Sv$O^n}1pHSb zF<$Qhd=Ek|*^Sp)Ag3Ysy;mU{&jW{-VPV?)EbhG|gFYfpI^<(S&cX||*?Z%0V6Ya* zCbH$<16c6p2(bGNcpdUOa0I*(u;KN1sXqY0J7&2tkhjx-FwFG~b0LtQgPUAJP?!S6 z)3mZC%t{~(^Fu(-$Lo4Pg{c6khWWEM8gf2aFL#JUILRSm{Vs<{(hGo`1@ChCCJ;*c zG@$o-%%AlnE}sN)3K0E$4@foAe*RVBM4V!=r0g=lcpwQ*Z2f^h_ zK$r>od&If0j(I->@;&F^{S7L>PQ)e#5uAY=gO3BLGDy-xd7y}>)I1(5@X~l%_`$zU zJUkt81)c_;`+p4{{ndtNhA{l4bU72xTlm4hkKmyIgLoS9cHaNd29Lf~b01iX5i5R{%B~gx5QrFEq&p@5a6ao4?~v z$@8};|2riG^JP0D`4=RF2`>@(6%baMwTN!Xhw!3H0q~&P@%mBX?Lqh@gAGW_(tmY` zxcv;sad6S!VQ{9mw*q>9f!9i-qkS+S5HWZckZR3mhe zk$)LVwBdI^{*jr=KZEmke0n?b{G-C^lpI5`BpN=4*Iy_IUf%{nmrp=e?+Cnze3r<2 z93qzw0(lRJ`unnTIUIs7c?1ZIcw_MET9-cnS?+?U)ROP{J3f;`8jsov0tLGrPs6o% zRcj&DF7v|tkxYL~K*QVdIv$Vy5`Qa~C^M^h%@5XbC7Bwh+CJv*aDG>b0bcxIkzYW< z+wh#h5B^pCe$#Nz;|Kk|gxNce=W0CqtNP_nsOgU%Jc(aKNqNr$`6dJL&&v2Hh{TrO zP0`qAGw07I@)5jV3;1=whQGqAT2qXJg)hN@;eQI~-HjK+e~-vBcrpBOtRqL@wO4qw zakzU|p@j6u4|WZAl5i7V)tvlWAYu&I@J+n-;^p%54RF&RKiHvOO~R>oUAiE*^Luzg z;RpR*K*9>VPEWXWY}>LmebtqhUz_gPeAP9ZF4>qqA$`&2%eGyy@ye}Rj`!Yi)wato zNnd#t{Pb+RGQG8XWBQ7#HgDOO-f$JXUb^Y>jc-eP#~wV-{?;^Y} z_Aa{E+l>FmUJMd2K9^s9)rO0fO%iY=S2+qiyf`pT8*H(dFK^v2!| z8#i9EC4I$3y_>Gsc13#2ww|7=HgDZ{Nt*t^b;BhaFTJdL(}(}pZ z%}08#y$(5vzjvRv^)2hyuUd8D#TRYav|;_GOSf#@yz!zd+BUrVJWw}uU$lAs*3B1f z+PbA}Ll%Ek|8Ft>%)yJdUAkZI(l)eHSlf@o!vbV);>zzFlAzNX9$mNeoZJ-L4lz$Y zK=V$#_=iBG|7JIo+sU|2eh+A^u(beZPxrju3D^!9{A3DXW{u~~0ZsunPs0Bho_7gg z=4{WK1RS^$;Q(8$t&Fkn|6`~YVFm;a;Z4edbR z3pnyI_y-*Ll;_RzRpew2NcCQKxsij`JEukP+i=@(!GO z6T+Y5HH@SG%s{T$lf8x}D6y`$dJRK>BapG_RN$w24YTj@4j6jB*U)td(!!y|Cdhad z!fr;mZJ>VyetSJHhiA6eYiNO<9Kkbto!8KlgS@wR4Y^yqC7B3*BUrbe@EX!cyZ33Y zA@gbPfTkgYfebUBhrhoA{ZIUL<*Y3Kgtxt%d;ZD7%{iEMa4(O4f^aVCLIeC{at0e8 zGK%SL~_!&@B8U2gOq2h%X5$Zyu+ng3-t>jmj)7f;g`!&y&AA9DWR=J=lJ z;JY1M=itQ-UhZJ0cS5@IOSkhLMOBT!Cw+j0{0h$ z)(`(?zU#`((CRz)&qg0{>7yQH5(XTcYBPMi-CzzHo$fQ|8LTpLAL$R&)2BAnutFJL7%t>Su% z*Lde_ZW?f|nqqQOM*pY1s}GLry6RWEs}Co#rKDj91Ts5xm;t7McJ*Ot7-rOQHbpow zLQ<2or97{mo~*U^%eyPtZYf5OXC4W+w7@F;s$Sv{R!^# zszP&9<`_jE`|C_e+ybl0&fRq=F=Scx$&=~%%t|7O-{p*DXVc}fMJ;1x@{0vzQtLfD zxTaYJBRAvW_8$=tTe9^tavRz!@7;mRn`5jKm}Cz%8->$j#zEAs+wgR zJv)#PHrp1`(->%EODzAoRxk4}o{bAx#G8TnbS@ZnA`oUBIeF45I;CvDB zw7Z*C?M5s$76zex%(9n`Sx1)Br3Gs0MLSz4JNUJ5D!YIL%k$QJCcog6FhN--gVG6F zsP<>d>9U>4WUzFt@;o@GdTDIMv7v~cnobPgN%sc_F!~P>%~}(#ntp0FX+cLm4plsc z$-5kyb^eKKDAW@P=QxH?MUJHu@~!$;%s}!=p^@BH14;M0nKp^EN_~%Un#wdyoOF(- z?B?=@ox&pOBL~bjS&l5CU1`0_&7dKgCLO~B${fk3X6%`R&GQ{oj};QzR3g@+Trpj8 zDBj(O*#OZJjgUdCgf zl*u32ZYi5SIA_g{HvWm~q_+xK#wt^lXzP^D2Gim4HL_@rhhEd28i^>&IySrwPd zOL$0O)huJ@V-?etrKy9mWGgds{z=@H=rIh66X~Lb-GyamO7?OVH;LGIEjp!?>@;+B zxrl|F18MD?L2u!T(K{mA$&(kA@PzyXp)W+y_Nj@I zgBsBY#lj!jJsnqP+#P!U9?q7rg9^Kw4Vw!#4V&39%miChIHXWaFIm> z_FmOZym-&^FqoUwPsNs2Qfvw9eM+{=*mChU+~P?IYS%^novJ+M2CL&;7oG1)=euZU z_163eJlw4rrwq#qQ4^&LUFzh=`y<*Jt1Xh;@nQz$a)tcV9rKA)isC9uC9E#qBO*OT zL}|@0W{eCTvd+X(8Y^Jhb}F=13|Z>*Axck$r(P~QVW}_qQ@h*oF&xp5k1D`ACqf4& zvV|isfshB-14*^xKt&_^h$|1V{!tqGR0&XbsG)Hh~Y5_4Np4al>hyn1gFUW8$6npB_FI^Z5%%wiLuazEbzzrO*f z{;Qo!(LH;?FQUcsKBlc&RyyL=U2w_A&1;ex$wP7ouZJbjB|jVUcD}pn3}g8yJJ{}| z7v{0+Nn9txp~y(H&J zH#L=H#j>BZmh;ZZA`aRPPVS;~wh@c{a)YbZ2wyBYjz6>WjY!$1vMss|<-lS(lck6Y z6rmLaSe7M}vw>otl90|zgz6H}5suI$iOP<1jL^D^3IsPKtT-^=Be*G{Jhu^im0-@v z*-IsYTN>ty1TSk?JVmhDqY~!|EAp{>mN7;WMb`-8Sb+yCp#1ByM7M}oVlbD^LB&_1-!0+JJ~EwTD>k@+dsSOT9Z( zhkSLP=u|9*7Tcu%;=PAeN-rSA z{XP4|^F6GFy4*7+YQ2Uw>3Oi#zYMmBp-4H?V=6^XBk8(IDjx1J^eErkZI3nXMufIOON*3-r4#KWi@%w?~2XiC&-H>lyIY z@LxGW!gu6nHA1}db5nk9$r1A@ zgZRB7p6i1)@I(DEv3ehJ7Il0o+24?|pV<==n-ms>f+Xuy94b`GRE>&@d-h|et+Ktn zRLGIeG$rbLlE~dvqNc=uUI%IKllh#Ze6ZtJCdq-V_E7NDOQ!?#tSP>BomrOcWhTR9 zCId2$ikGRFC?J~k{#_}iEl&6EdO4xiJBNN-hf4~2?~mwn^C9}IK1_vP5s&wyYd?-8 zYY2#m+7tA-PX0Bqr1-DBKcqU8f7_Q3uk7<`M7};CR|5CQ60W}b!oD5op}w>a>&WNO zKC!J!^tt&j^tt{rHRQEb=zV3tuX%iN01L$y<-YoD`ds@SmBCdUhEi)vkIZ9-m&_GhN>sAF5v;2Ok1zvCZzu_3Pu+$XahbTHjZT)b_~TleqG3*nne7 z-2Nj%+}c%@{svgZ#RH7DV3$w$5slf-_XWn}hd}Xza91IIZQpx{v9DW4LG&oCz662k9hOg<)r z-_MwQO$dLKG5MSj{v>1aJt6$}jL8Ru@Ru2rFACw;7?V#5;VX>EH-+#3JnyJ{-ANk{XNDRYk!a&;~Lw!e}=L46TyNf2GD<# zRV8mgV)(%Pslr2y55q5q@|$K{Wt?FgzgNZo4rB7)q4a;knEZMOKgoEL(|?^Y`TtP- z+wd^}nr8f2#%nyj$5CL4Kg^h1B?(WmJaTU(OnyfAl1{-gp3}dk`8j=8l+ss)_Gh_` zvG!vrFxLJoA7-rmT0YNM`?ruYs%+0=D*qmgHNx88YKFs{DGuD1DW8IuT`@fJcBjvCCV4h^G{b9bzSo^gkd$_#p-|_**+OK7UvG#At z^{VvR&*fRh+TUfoPsMA$mu@@{s65*Lc0pUXMM+TZ1$8Ee0nU%n3f81LGD;y7dN z_wg9v9;`>~*YE;k?T0aNJ>@@$k)hiEjS?$AI2tcM3yg1!67@HsFh$9~QwCl&@IM&% z6$AgTfp6}Y`ML5P1FsqQe++!*UO)dI8u)7lzGa_3{j`D482A|j(+h)8Shu`ChXuon zGX{Rt!1S&XZ~9x&6<+*K13zfsFB$l{8~psY7@cjnr zNdwOr*fH>j4g5ukt8RP0V#L30;P@N-`R_OIqJe+Qz)u_ab%`7Kf8W48&~$Z)M*Lm_ z-y|`T@ZT>O_{|2s$G{l_zt_MI82BND-T8ab!1Sta6vmDJqJh6+;Fk>iih;jn;O`jt zih*O;&wBIkH}Fjc{s{yBw1I!#!1P*lul%EE_X*H3P!@#8f_!;L9^VDfuYwMO?f~5h zIt2PP&@|}RK{KFP&~Z=+R0dT*%b*p|TS0e$?grfhIstkY2-|)6ev|j$`?o>&f=+|p z26{W_eW0_TcYuBa^iI%kf-KNs&^gfkpa($j2c<#tARF|1pc?2Spa((Ns)#=WVGAo( zL4OW<2=p-M5zu3x3!smI{sQ!upuYlr9P|m$6QDKFCqYkwJ_Wi6`ZVaTLHL_2;$seU z26P|jcR{}o`T*#IApBJ|eF#6W{gLnIcog4{gDC(1?~9%FMO^rd3CTd(qeUmxonHYL zlEA013yH_2jBQgkret|r6BeG_j)8QB1_SBy$oOe{-Ch`jU$1v9R9jcib$dl$i^{`5 zqsq1jQDp9V{f>tALP*X#u47n6VdI9XE^kyr+FjmuhK1|lw8NVs63u#G2UB6i7) zbhm`Tesrgze1@Yt6^4zd&ti0^^4yK;c2)&p1_0*$ziT7vDGg7V_KZW@<(H0nZ8MPp zNZU+$N*E|vTc#o>lfS+cf%F9eRiK4 zaQp1;36KXyi&d5urH$O!&$tobcP(y&o94EG7^C-^J0dr@-6gy=L);KX*8(>r&NaPl z#Iz~@f-607AVhlH;G0~V=?mV>Y~~zdA49x+C z6*Pw`^Jjn%$7zH%T&1Nov@b+CPixC)Yf+g*!zYn!p)F(wBWP<;T0g6=0-&;YwicD4 zv$k-S-!N^K->_+>Z)wa-Kgfz%n=c34v(a#@0UAM#vz>W>%68AD^G9Gl4g+)7a^3rQ zY;7N_XCarV#TTaPRnQz(*ECOhg$7!$!#tT=*R!RQf!R2%F@^6qn)~%_vmt8EG@8lH z!-ae1AY8Nf`6Abkw(5wzM+FY7^4%Vdv8kPpn-^d|&6UF9V(KJH;4XPGbRk0?8yyKO z7Ro8e8(GAUDgRqIIuJQhK9wh@xOR&&u}p7M;P#y(zX zV2W_GCl4EVA7kgV-O_=!OH34$*Eo9C>uaq%$jNUOUTd@C^bczHM%SgtnXTROx;l3M z7Q6Y-akpQ_6_PRK+EMGdtfol+gltQspEZF)uE!m;rPpTYrBY8y(?LAs!o_<`lRoPy zG;uBme?xEIbR@`aBkrq?grM(ssWjBQZ#i&)eVwcdy)a-X5Rwdpj08f)0wMbYArpa+ zL{M~MIG8G!-Ebn1YBjouJ&$qVw&rO=|G!IL-K_N=Al8(Ab-hQdXA@HG9dr{5B3}lZvX%Q literal 0 HcmV?d00001 diff --git a/morseCodeTree.cpp b/morseCodeTree.cpp index 43f17bc..54355bb 100644 --- a/morseCodeTree.cpp +++ b/morseCodeTree.cpp @@ -85,6 +85,7 @@ void MorseCodeTree::addMorseCode(MorseCodeNode* node, std::string& morseCode, ch addMorseCode(newChild, morseCode, letter, index+1); } +// private recursive delete method called by destructor void MorseCodeTree::deleteTree(MorseCodeNode* node){ if (node == NULL) { return; From 84a38c7c92406ed3d2643d6389364b40f4139161 Mon Sep 17 00:00:00 2001 From: Paulsmlim Date: Tue, 26 Mar 2019 03:20:45 -0400 Subject: [PATCH 05/12] Removed executable files --- a.out | Bin 76844 -> 0 bytes morseCode.exe | Bin 76844 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 a.out delete mode 100755 morseCode.exe diff --git a/a.out b/a.out deleted file mode 100755 index 777d0231b092eaec97cdb23ada642218cabfe157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76844 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 diff --git a/morseCode.exe b/morseCode.exe deleted file mode 100755 index 777d0231b092eaec97cdb23ada642218cabfe157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76844 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 From f88ddb087d4ad7e59d41a74ff3e815472650f287 Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Tue, 26 Mar 2019 03:38:12 -0400 Subject: [PATCH 06/12] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 605e027..21b93e7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ Morse Code ========== +Instructions +----------- +1) Clone the repo. +2) Compile .cpp files and create an executable file through the terminal app with command `g++ *.cpp -o morseCode.exe -Wall`. +3) Files should successfully compile without errors or warnings. +4) Run the executable with the input file as a command line argument through the teriminal app with command `./morseCode.exe sampleInput.txt`. +5) Program should translate the morse code from 'sampleInput.txt' file and output the translation on the console of the terminal app. + The Problem ----------- Morse code is a way to encode messages in a series of long and short sounds or visual signals. During transmission, operators use pauses to split letters and words. From 88eddf4f437a808c087d7299c345835b2e68727e Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Tue, 26 Mar 2019 03:54:57 -0400 Subject: [PATCH 07/12] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 21b93e7..9f6d6af 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ Morse Code ========== +Implementation Details +----------- +The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). Each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. Starting from the root of the morseCodeTree, for a given morse code sequence (e.g.: ..-), transition to future states based on current character (. or -) while reading characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. +The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the alphabet. + Instructions ----------- 1) Clone the repo. From 9c351983bb9e5e40bd1ef49cfd4cbc513f5a5c26 Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Tue, 26 Mar 2019 03:56:25 -0400 Subject: [PATCH 08/12] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f6d6af..767c1f7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ Morse Code Implementation Details ----------- -The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). Each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. Starting from the root of the morseCodeTree, for a given morse code sequence (e.g.: ..-), transition to future states based on current character (. or -) while reading characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. +The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). Each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. + +Starting from the root of the morseCodeTree, for a given morse code sequence (e.g.: ..-), transition to future states based on current character (. or -) while reading characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. + The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the alphabet. Instructions From 805f5444cea1b9678efbc6f66f1010e53a73befc Mon Sep 17 00:00:00 2001 From: Paulsmlim Date: Tue, 26 Mar 2019 18:29:15 -0400 Subject: [PATCH 09/12] Slight modifications to variable types, also verified that no memory leaks occur. --- README.md | 2 +- morseCode.cpp | 2 +- morseCodeTree.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 767c1f7..dd00752 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Morse Code Implementation Details ----------- -The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). Each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. +The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). The root is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. Starting from the root of the morseCodeTree, for a given morse code sequence (e.g.: ..-), transition to future states based on current character (. or -) while reading characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. diff --git a/morseCode.cpp b/morseCode.cpp index 354502e..352af83 100644 --- a/morseCode.cpp +++ b/morseCode.cpp @@ -34,7 +34,7 @@ int main(int argc, char* argv[]) { // the MorseCodeTree class is essentially a finite state automata where each state is a subsequence of a morse // code, and all states reached through a valid sequence of a morse code for a letter are "accepting states" MorseCodeTree tree = MorseCodeTree(); - for (int i = 0; i < SIZE; i++) { + for (unsigned int i = 0; i < SIZE; i++) { tree.addMorseCode(morseCodes[i], letters[i]); } diff --git a/morseCodeTree.cpp b/morseCodeTree.cpp index 54355bb..31ed2ee 100644 --- a/morseCodeTree.cpp +++ b/morseCodeTree.cpp @@ -90,7 +90,7 @@ void MorseCodeTree::deleteTree(MorseCodeNode* node){ if (node == NULL) { return; } - for (int i = 0; i < node->children.size(); i++) { + for (unsigned int i = 0; i < node->children.size(); i++) { deleteTree(node->children[i]); delete node->children[i]; node->children[i] = NULL; From 3b3df1e5e041648923419f990745cfa12c667d9c Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Sun, 15 Mar 2020 23:15:33 -0400 Subject: [PATCH 10/12] Update README.md --- README.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index dd00752..b981336 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ Morse Code Implementation Details ----------- -The morseCodeTree class is a replica of a Deterministic Finite Automaton (DFA). The root is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. +The morseCodeTree class is implemented using the Trie data structure, which is essentially a Deterministic Finite Automaton (DFA). The root is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. -Starting from the root of the morseCodeTree, for a given morse code sequence (e.g.: ..-), transition to future states based on current character (. or -) while reading characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. +When a given morse code sequence (e.g.: ..-), the morseCodeTree will start from the root and transition to future states based on the current character (. or -) while reading the characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. -The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the alphabet. +The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the English alphabet. Instructions ----------- @@ -41,11 +41,3 @@ Sample Output dog hello world - -The Fine Print --------------- -Please use whatever techniques you feel are applicable to solve the problem. We suggest that you approach this exercise as if this code was part of a larger system. The end result should be representative of your abilities and style. We prefer that you submit your solution in a language targeting the .NET Framework to help us better evaluate your code. - -Please fork this repository. If your solution involves code auto generated by a development tool, please commit it separately from your own work. When you have completed your solution, please issue a pull request to notify us that you are ready. - -Have fun. From 8ba6e70e630a986fe2d373b73063c9631665be65 Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Sun, 15 Mar 2020 23:16:34 -0400 Subject: [PATCH 11/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b981336..90930e9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Implementation Details ----------- The morseCodeTree class is implemented using the Trie data structure, which is essentially a Deterministic Finite Automaton (DFA). The root is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. -When a given morse code sequence (e.g.: ..-), the morseCodeTree will start from the root and transition to future states based on the current character (. or -) while reading the characters from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. +When a given morse code sequence (e.g.: ..-), the morseCodeTree will start from the root and transition to future states based on the current character (. or -) while reading each character in the sequence from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the English alphabet. From f4715186a3cfad5665a8ba198e221e0d1acd1e67 Mon Sep 17 00:00:00 2001 From: Paul Seung Mo Lim Date: Sun, 15 Mar 2020 23:23:39 -0400 Subject: [PATCH 12/12] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 90930e9..bd167c8 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ Morse Code Implementation Details ----------- -The morseCodeTree class is implemented using the Trie data structure, which is essentially a Deterministic Finite Automaton (DFA). The root is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. +The morseCodeTree class is implemented using the Trie data structure, which functions identically to a Deterministic Finite Automaton (DFA). The root of the tree is the starting state, and each node in the morseCodeTree (or state, in DFA terms), contains a letter and transition(s) to other nodes. -When a given morse code sequence (e.g.: ..-), the morseCodeTree will start from the root and transition to future states based on the current character (. or -) while reading each character in the sequence from left to right. Once the full morse code sequence is read, if the morse code is a valid sequence that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to that morse code sequence. Invalid morse code sequences will lead to a state that contains the null character '\0'. +When given morse code (e.g.: ..-) to translate, the morseCodeTree will start from its root and recursively traverse through the tree based on the current character (. or -) it is reading while reading each character in the code from left to right. Once the morse code is read, if the morse code is a valid sequence of characters that can be translated to a letter, the current node or state will contain the letter (e.g.: u) that corresponds to the given morse code. Invalid morse codes will lead to a state that contains the null character '\0'. The morseCodeTree instance is created at the beginning of program execution, and all valid morse code sequences are added to the tree through a hard-coded array of size 26 that contains the morse code sequences for all 26 letters in the English alphabet.