From 7bf8ef7d6f1eadff7e718daa0408629a95ad5ade Mon Sep 17 00:00:00 2001 From: "alexander.a.kuznetsov" Date: Sat, 29 May 2010 15:54:44 +0000 Subject: [PATCH] fixing problem with - in word the english morphology not work correctly because word forms contains it git-svn-id: https://russianmorphology.googlecode.com/svn/trunk@97 d817d54c-26ab-11de-abc9-2f7d1455ff7a --- .../dictionary/DictonaryReader.java | 8 +- .../morphology/dictionary/FlexiaModel.java | 8 +- ...ollector.java => StatisticsCollector.java} | 36 +- .../morphology/dictionary/WordCard.java | 10 + .../morphology/dictionary/WordProccessor.java | 2 +- .../generator/EnglishHeuristicBuilder.java | 8 +- .../generator/RussianHeuristicBuilder.java | 8 +- .../lucene/morphology/english/morph.info | 12654 ++++++++-------- .../english/EnglishAnalayzerTest.java | 2 +- .../apache/lucene/morphology/Heuristic.java | 24 +- .../lucene/morphology/LuceneMorphology.java | 2 +- .../lucene/morphology/MorphologyImpl.java | 12 +- 12 files changed, 6393 insertions(+), 6381 deletions(-) rename dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/{StatiticsCollector.java => StatisticsCollector.java} (80%) diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/DictonaryReader.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/DictonaryReader.java index ff72d7c..0ec7956 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/DictonaryReader.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/DictonaryReader.java @@ -71,11 +71,17 @@ public class DictonaryReader { List models = wordsFlexias.get(Integer.valueOf(wd[1])); FlexiaModel flexiaModel = models.get(0); if (models.size() > 0 && !ingnoredForm.contains(flexiaModel.getCode())) { + WordCard card = new WordCard(flexiaModel.create(wordBase), wordBase, flexiaModel.getSuffix()); for (FlexiaModel fm : models) { card.addFlexia(fm); } - wordProccessor.proccess(card); +// if(card.getBase().equals("face") || card.getBase().equals("fac")){ +// System.out.println(models); +// System.out.println(card); + wordProccessor.process(card); + //} + } } } diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/FlexiaModel.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/FlexiaModel.java index 9b51950..b4591cf 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/FlexiaModel.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/FlexiaModel.java @@ -17,7 +17,7 @@ package org.apache.lucene.morphology.dictionary; /** - * Represent inofrmation of how word form created form it imutible part. + * Represent information of how word form created form it imutible part. */ public class FlexiaModel { private String code; @@ -60,6 +60,10 @@ public class FlexiaModel { @Override public String toString() { - return prefix + " " + suffix; + return "FlexiaModel{" + + "code='" + code + '\'' + + ", suffix='" + suffix + '\'' + + ", prefix='" + prefix + '\'' + + '}'; } } diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatiticsCollector.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatisticsCollector.java similarity index 80% rename from dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatiticsCollector.java rename to dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatisticsCollector.java index 32525cd..94eaace 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatiticsCollector.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/StatisticsCollector.java @@ -26,20 +26,20 @@ import java.util.*; //todo made refactoring this class -public class StatiticsCollector implements WordProccessor { - private TreeMap> inversIndex = new TreeMap>(); - private Map, Integer> ruleInverIndex = new HashMap, Integer>(); +public class StatisticsCollector implements WordProccessor { + private TreeMap> inverseIndex = new TreeMap>(); + private Map, Integer> ruleInverseIndex = new HashMap, Integer>(); private List> rules = new ArrayList>(); private GrammaReader grammaReader; private LetterDecoderEncoder decoderEncoder; - public StatiticsCollector(GrammaReader grammaReader, LetterDecoderEncoder decoderEncoder) { + public StatisticsCollector(GrammaReader grammaReader, LetterDecoderEncoder decoderEncoder) { this.grammaReader = grammaReader; this.decoderEncoder = decoderEncoder; } - public void proccess(WordCard wordCard) throws IOException { + public void process(WordCard wordCard) throws IOException { cleanWordCard(wordCard); String normalStringMorph = wordCard.getWordsFroms().get(0).getCode(); String word = wordCard.getBase() + wordCard.getCanonicalSuffix(); @@ -47,13 +47,13 @@ public class StatiticsCollector implements WordProccessor { if (!decoderEncoder.checkString(word)) return; for (FlexiaModel fm : wordCard.getWordsFroms()) { - if (!decoderEncoder.checkString(fm.create(wordCard.getBase()))) continue; + if (!decoderEncoder.checkString(fm.create(wordCard.getBase())) || fm.create(wordCard.getBase()).contains("-")) continue; Heuristic heuristic = createEvristic(wordCard.getBase(), wordCard.getCanonicalSuffix(), fm, normalStringMorph); String form = revertWord(fm.create(wordCard.getBase())); - Set suffixHeuristics = inversIndex.get(form); + Set suffixHeuristics = inverseIndex.get(form); if (suffixHeuristics == null) { suffixHeuristics = new HashSet(); - inversIndex.put(form, suffixHeuristics); + inverseIndex.put(form, suffixHeuristics); } suffixHeuristics.add(heuristic); } @@ -76,24 +76,24 @@ public class StatiticsCollector implements WordProccessor { Map dist = new TreeMap(); Set prevSet = null; int count = 0; - for (String key : inversIndex.keySet()) { - Set currentSet = inversIndex.get(key); + for (String key : inverseIndex.keySet()) { + Set currentSet = inverseIndex.get(key); if (!currentSet.equals(prevSet)) { Integer d = dist.get(key.length()); dist.put(key.length(), 1 + (d == null ? 0 : d)); prevSet = currentSet; count++; - if (!ruleInverIndex.containsKey(currentSet)) { - ruleInverIndex.put(currentSet, rules.size()); + if (!ruleInverseIndex.containsKey(currentSet)) { + ruleInverseIndex.put(currentSet, rules.size()); rules.add(currentSet); } } } System.out.println("Word with diffirent rules " + count); - System.out.println("All ivers words " + inversIndex.size()); + System.out.println("All ivers words " + inverseIndex.size()); System.out.println(dist); - System.out.println("diffirent rule count " + ruleInverIndex.size()); - Heuristic[][] heuristics = new Heuristic[ruleInverIndex.size()][]; + System.out.println("diffirent rule count " + ruleInverseIndex.size()); + Heuristic[][] heuristics = new Heuristic[ruleInverseIndex.size()][]; int index = 0; for (Set hs : rules) { heuristics[index] = new Heuristic[hs.size()]; @@ -109,12 +109,12 @@ public class StatiticsCollector implements WordProccessor { short[] rulesId = new short[count]; count = 0; prevSet = null; - for (String key : inversIndex.keySet()) { - Set currentSet = inversIndex.get(key); + for (String key : inverseIndex.keySet()) { + Set currentSet = inverseIndex.get(key); if (!currentSet.equals(prevSet)) { int[] word = decoderEncoder.encodeToArray(key); ints[count] = word; - rulesId[count] = (short) ruleInverIndex.get(currentSet).intValue(); + rulesId[count] = (short) ruleInverseIndex.get(currentSet).intValue(); count++; prevSet = currentSet; } diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordCard.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordCard.java index ef79061..6f18ccf 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordCard.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordCard.java @@ -69,4 +69,14 @@ public class WordCard { public void setWordsFroms(List wordsFroms) { this.wordsFroms = wordsFroms; } + + @Override + public String toString() { + return "WordCard{" + + "canonicalFrom='" + canonicalFrom + '\'' + + ", base='" + base + '\'' + + ", canonicalSuffix='" + canonicalSuffix + '\'' + + ", wordsFroms=" + wordsFroms + + '}'; + } } diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordProccessor.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordProccessor.java index e9edb46..846cee0 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordProccessor.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/dictionary/WordProccessor.java @@ -24,5 +24,5 @@ import java.io.IOException; */ public interface WordProccessor { - public void proccess(WordCard wordCard) throws IOException; + public void process(WordCard wordCard) throws IOException; } diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/EnglishHeuristicBuilder.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/EnglishHeuristicBuilder.java index 35c26b2..864b3d2 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/EnglishHeuristicBuilder.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/EnglishHeuristicBuilder.java @@ -18,7 +18,7 @@ package org.apache.lucene.morphology.generator; import org.apache.lucene.morphology.dictionary.DictonaryReader; import org.apache.lucene.morphology.dictionary.GrammaReader; -import org.apache.lucene.morphology.dictionary.StatiticsCollector; +import org.apache.lucene.morphology.dictionary.StatisticsCollector; import org.apache.lucene.morphology.english.EnglishLetterDecoderEncoder; import java.io.IOException; @@ -32,9 +32,9 @@ public class EnglishHeuristicBuilder { DictonaryReader dictonaryReader = new DictonaryReader("dictonary/Dicts/SrcMorph/EngSrc/morphs.mrd", new HashSet()); EnglishLetterDecoderEncoder decoderEncoder = new EnglishLetterDecoderEncoder(); - StatiticsCollector statiticsCollector = new StatiticsCollector(grammaInfo, decoderEncoder); - dictonaryReader.proccess(statiticsCollector); - statiticsCollector.saveHeuristic("english/src/main/resources/org/apache/lucene/morphology/english/morph.info"); + StatisticsCollector statisticsCollector = new StatisticsCollector(grammaInfo, decoderEncoder); + dictonaryReader.proccess(statisticsCollector); + statisticsCollector.saveHeuristic("english/src/main/resources/org/apache/lucene/morphology/english/morph.info"); } } \ No newline at end of file diff --git a/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/RussianHeuristicBuilder.java b/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/RussianHeuristicBuilder.java index d706be8..c0ae11d 100644 --- a/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/RussianHeuristicBuilder.java +++ b/dictionary-reader/src/main/java/org/apache/lucene/morphology/generator/RussianHeuristicBuilder.java @@ -18,7 +18,7 @@ package org.apache.lucene.morphology.generator; import org.apache.lucene.morphology.dictionary.DictonaryReader; import org.apache.lucene.morphology.dictionary.GrammaReader; -import org.apache.lucene.morphology.dictionary.StatiticsCollector; +import org.apache.lucene.morphology.dictionary.StatisticsCollector; import org.apache.lucene.morphology.russian.RussianLetterDecoderEncoder; import java.io.IOException; @@ -31,9 +31,9 @@ public class RussianHeuristicBuilder { DictonaryReader dictonaryReader = new DictonaryReader("dictonary/Dicts/SrcMorph/RusSrc/morphs.mrd", new HashSet()); RussianLetterDecoderEncoder decoderEncoder = new RussianLetterDecoderEncoder(); - StatiticsCollector statiticsCollector = new StatiticsCollector(grammaInfo, decoderEncoder); - dictonaryReader.proccess(statiticsCollector); - statiticsCollector.saveHeuristic("russian/src/main/resources/org/apache/lucene/morphology/russian/morph.info"); + StatisticsCollector statisticsCollector = new StatisticsCollector(grammaInfo, decoderEncoder); + dictonaryReader.proccess(statisticsCollector); + statisticsCollector.saveHeuristic("russian/src/main/resources/org/apache/lucene/morphology/russian/morph.info"); } } diff --git a/english/src/main/resources/org/apache/lucene/morphology/english/morph.info b/english/src/main/resources/org/apache/lucene/morphology/english/morph.info index bee2501..949236b 100644 --- a/english/src/main/resources/org/apache/lucene/morphology/english/morph.info +++ b/english/src/main/resources/org/apache/lucene/morphology/english/morph.info @@ -1,4 +1,4 @@ -55459 +55457 1 17210368 1 @@ -7083,8 +7083,6 @@ 1 71914752 1 -72526272 -1 71937544 2 71940745 @@ -43257,8 +43255,6 @@ 1 129201744 1 -129297168 -1 129276142 1 129276896 @@ -152700,513 +152696,512 @@ 1 27 97 -98 10 +97 98 -99 -98 -99 +97 98 +97 10 -98 +97 10 -98 +97 2 20 1 +99 100 -101 +99 100 -101 +99 +97 100 -98 -101 +99 100 -101 +99 100 -101 +99 100 -101 -100 -101 +99 100 +99 10 +99 100 -101 -100 -101 +99 100 +99 10 +99 100 +1 +101 +10 +101 +10 +101 +102 +10 +101 +102 101 1 -102 -10 -102 -10 -102 -103 -10 -102 -103 -102 -1 -98 +97 71 -99 -98 -10 -99 -98 -10 -99 98 +97 10 98 -99 -98 +97 10 98 -99 -98 -102 +97 10 -103 -102 +97 +98 +97 +10 +97 +98 +97 +101 10 102 +101 10 -102 -99 -98 +101 10 +101 98 +97 +10 +97 10 2 -98 +97 71 1 -98 +97 +1 +97 1 98 -1 -99 -98 -99 -10 -98 -99 +97 98 10 -99 +97 +98 +97 +10 +98 10 1 -98 -102 +97 +101 1 +101 102 -103 +101 +10 +101 +10 +101 +10 +102 +101 +102 +101 +10 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +102 +101 +99 +101 +102 +101 +102 +10 +101 +10 +101 +10 +102 +101 +102 +101 +102 +10 +101 +102 +10 +101 +102 +101 +102 +101 +10 +101 +10 +102 +101 +102 +101 +10 +97 +101 +102 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +102 +10 +101 +10 +102 +101 +102 +10 +101 +97 +101 +10 +101 +10 +101 +10 +102 +10 +101 +97 +101 +102 +10 +101 +10 +101 +10 +102 +101 102 10 102 10 +101 +97 +101 +102 +101 102 10 -103 -102 -103 -102 -10 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -103 -102 -100 -102 -103 -102 -103 -10 -102 -10 -102 -10 -103 -102 -103 -102 -103 -10 -102 -103 -10 -102 -103 -102 -103 -102 -10 -102 -10 -103 -102 -103 -102 -10 -98 -102 -103 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -103 -10 -102 -10 -103 -102 -103 -10 -102 -98 -102 -10 -102 -10 -102 -10 -103 -10 -102 -98 -102 -103 -10 -102 -10 -102 -10 -103 -102 -103 -10 -103 -10 -102 -98 -102 -103 -102 -103 -10 -102 -103 +101 102 +101 20 +101 102 +101 +98 +97 +98 +97 +10 +97 +10 +97 +98 +10 +97 +98 +97 +102 +101 +102 +10 +101 +102 +10 +101 +102 +101 103 +101 +97 +98 +97 +101 102 -99 -98 -99 -98 +101 10 -98 +101 10 -98 +101 +97 +99 +100 +97 99 10 -98 +100 99 +100 +99 +97 +99 +100 +10 +99 +10 +99 +100 +99 +10 +99 +100 +99 +100 +99 +97 +101 +97 +10 98 -103 +10 +97 +98 +97 +10 +97 +10 +97 +101 +10 +101 +98 +10 +97 +98 +97 +101 +102 +10 +101 +97 +101 +97 +101 +102 +101 +10 +101 102 -103 10 102 -103 +97 +101 +102 +101 10 -102 -103 -102 104 -102 -98 -99 -98 -102 -103 -102 10 102 -10 -102 -98 -100 -101 -98 -100 -10 -101 -100 -101 -100 -98 -100 -101 -10 -100 -10 -100 -101 -100 -10 -100 -101 -100 -101 -100 -98 -102 -98 -10 -99 -10 -98 -99 -98 +97 10 98 10 +97 98 -102 10 -102 -99 +97 +98 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +97 +98 +20 10 98 -99 -98 -102 -103 +97 10 -102 98 -102 +10 +97 98 -102 -103 -102 10 -102 -103 +97 10 -103 98 -102 -103 -102 +97 +98 10 +97 +98 +10 +97 +10 +97 +10 +97 +10 +97 +98 +10 +97 +10 +97 +98 +97 +98 105 10 -103 -98 +97 10 -99 -10 -98 -99 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -20 -10 -99 -98 -10 -99 -10 -98 -99 -10 -98 -10 -99 -98 -99 -10 -98 -99 +97 10 98 10 98 -10 +97 98 10 98 -99 +97 10 +97 +98 +97 +98 +97 +10 +97 +101 +97 +98 +97 +10 +98 +97 +10 +97 +98 +97 +98 +10 +97 +10 +97 +98 +97 +10 +97 +10 +97 +105 +97 +101 +102 +10 +101 +102 98 10 98 -99 +97 98 -99 +10 +102 +97 +101 +97 +98 +10 +97 +10 +97 +98 +97 +10 +98 +97 +10 +97 106 -10 +97 +98 +97 98 10 +97 +101 98 -10 -99 -10 -99 -98 -99 -10 -99 -98 -10 -98 -99 -98 -99 -98 -10 +97 98 +97 +101 102 -98 -99 -98 +101 10 -99 -98 -10 -98 -99 -98 -99 -10 -98 -10 -98 -99 -98 -10 -98 -10 -98 -106 -98 -102 -103 -10 -102 -103 -99 -10 -99 -98 -99 -10 -103 -98 -102 -98 -99 -10 -98 -10 -98 -99 -98 -10 -99 +101 +98 +97 +10 +97 +101 +97 98 10 98 +71 +97 +101 +71 107 -98 -99 -98 -99 -10 -98 -102 -99 -98 -99 -98 -102 -103 -102 -10 -102 -99 -98 -10 -98 -102 -98 -99 -10 -99 -71 -98 -102 -71 +101 108 -102 +1 109 1 -110 -1 71 1 71 1 71 -102 +101 10 2 -102 +101 2 1 -98 +97 2 -103 102 +101 40 1 5 @@ -153215,4606 +153210,4606 @@ 2 71 1 -102 +101 1 -102 +101 1 -102 +101 15 -103 102 +101 10 -102 +101 1 -103 -111 +102 +110 1 71 1 71 1 +101 102 -103 1 -102 -98 -102 +101 +97 +101 2 38 1 38 1 -102 +101 +111 +97 +98 +101 +97 +101 +97 +10 +97 +101 +98 +10 +97 +10 112 -98 -99 -102 -98 -102 -98 +97 10 +97 98 -102 -99 -10 +97 98 -10 +97 +98 +97 +98 +97 +98 +97 +101 +97 +101 +97 113 -98 10 +97 98 -99 +97 98 -99 -98 -99 -98 -99 -98 -99 -98 -102 -98 -102 +97 +10 +97 98 +97 114 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -115 -98 -115 -98 -103 +97 +114 +97 102 -103 +101 102 -103 -102 -10 -103 -102 -103 -102 -10 -103 +101 102 +101 10 102 -10 -98 +101 102 +101 10 102 -103 +101 +10 +101 +10 +97 +101 +10 +101 102 -103 +101 +102 +10 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +10 +101 +10 +101 +102 +10 +101 +102 +101 +102 +10 +101 +102 +101 +102 +101 10 102 10 102 -103 -102 -103 -102 -10 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -10 -102 -10 -102 -103 -10 -102 -103 -102 -103 -10 -102 -103 -102 -103 -102 -10 -103 -10 -103 -102 +101 3 -101 100 -101 +99 100 -101 +99 100 -101 +99 100 -101 +99 +100 +99 +10 +99 +100 +99 +97 +99 100 10 +99 100 +99 +100 +99 +100 +99 +10 +99 +100 +10 +99 +100 +115 +99 +100 +99 +100 +99 +100 +99 +100 +99 +100 +99 +100 +99 +100 +99 +102 101 -100 +102 +101 +10 98 -100 -101 -10 -100 -101 -100 -101 -100 -101 -100 -10 -100 -101 -10 -100 -101 116 -100 +97 101 -100 +10 101 -100 +97 101 -100 +97 101 -100 -101 -100 -101 -100 -101 -100 -103 102 -103 +97 +101 102 10 -99 +101 +102 +101 +97 +101 +10 +101 +10 +101 +10 +97 +102 +101 117 -98 -102 +97 10 -102 +97 +101 98 -102 -98 -102 -103 -98 -102 -103 +101 10 -102 -103 -102 -98 -102 +97 +101 10 -102 -10 -102 +101 +97 +101 +97 +101 +117 +97 10 98 -103 +10 +97 +101 +97 +117 +97 +98 +97 +101 +97 +98 +10 +97 +101 +97 +101 102 -118 +101 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +10 +101 +97 +101 +97 +101 +98 +97 98 10 98 -102 -99 -102 -10 +97 98 -102 -10 -102 +97 98 -102 -98 -102 -118 -98 -10 -99 -10 -98 -102 -98 -118 -98 -99 -98 -102 -98 -99 -10 -98 -102 -98 -102 -103 -102 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -10 -102 -98 -102 -98 -102 -99 -98 -99 -10 -99 -98 -99 -98 -99 5 10 -99 +98 +97 +10 +97 +98 +97 +101 98 10 +101 +97 +101 98 -99 -98 -102 -99 -10 -102 -98 -102 -99 -98 -99 -10 +97 98 10 -98 +97 +10 +97 10 -99 98 -99 +97 98 -99 +97 98 -99 +97 98 -99 +97 98 -99 +97 98 +97 1 +97 98 -99 +97 +10 +97 +98 +97 98 10 +97 98 -99 -98 -99 +97 10 +97 +10 +97 98 -99 +97 +98 +97 98 10 +97 +98 +97 +10 +97 +98 +97 98 10 +97 98 -99 +97 98 -99 +97 98 -99 +97 +98 +97 +98 +97 +98 +97 +98 +97 +101 +97 +98 +97 +98 +97 10 -98 -99 -98 +97 +117 +97 10 -98 -99 -98 -99 +97 10 -98 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 -102 -98 -99 -98 -99 -98 -10 -98 +97 118 +97 98 10 -98 -10 -98 +97 119 +97 98 -99 +97 +98 +97 +98 +97 10 -98 -120 -98 -99 -98 -99 -98 -99 -98 -10 -98 +97 28 2 +97 98 -99 +97 +10 +105 +97 +10 +97 +10 +97 +98 +97 98 10 -106 +97 +10 +97 +10 +97 +10 +97 98 +97 10 98 10 98 -99 +97 +10 +97 98 -99 +97 +98 +97 +10 +97 +98 +10 +97 +98 +10 +97 10 98 10 -98 +97 10 98 10 -98 -99 -98 +97 10 -99 -10 -99 +97 98 10 98 -99 +97 98 -99 +97 98 -10 -98 -99 -10 -98 -99 +97 10 98 10 -99 +105 10 +97 98 -10 -99 -10 -98 -10 -98 -99 -10 -99 -98 -99 -98 -99 -98 -10 -99 -10 -106 -10 -98 -99 -98 +97 1 -98 +97 1 10 +97 98 -99 -98 -1 -99 -98 -99 -98 -99 -10 -99 -98 -1 -118 -102 -10 -102 -118 -102 -103 -102 -98 -118 -98 -102 -98 -10 -102 -98 -102 -118 -102 -98 -102 -99 -98 -106 -98 -99 -98 -99 -98 -102 -98 -121 -98 -121 -122 -10 -102 -121 -122 -121 -10 -122 -121 -10 -121 -10 -121 -122 -10 -121 -10 -121 -122 -121 -10 -122 -10 -121 -122 -121 -10 -121 -122 -10 -121 -122 -121 -122 -10 -121 -123 -121 -122 -121 -10 -121 -10 -121 -122 -10 -121 -122 -121 -122 -121 -10 -121 -10 -121 -122 -121 -122 -121 -122 -121 -10 -121 -10 -122 -121 -10 -122 -10 -121 -122 -10 -122 -10 -121 -122 -121 -10 -121 -122 -121 -10 -122 -10 -121 -10 -121 -10 -121 -122 -10 -122 -121 -10 -102 -122 -121 -124 -121 -125 -102 -121 -10 -122 -121 -10 -121 -122 -10 -122 -121 -10 -121 -122 -121 -122 -10 -121 -10 -121 -102 -121 -102 -121 -10 -121 -10 -121 -10 -98 -10 -121 -10 -121 -103 -121 -10 -121 -122 -121 -122 -10 -121 -10 -121 -10 -121 -122 -10 -121 -10 -121 -122 -10 -121 -10 -122 -121 -10 -121 -122 -121 -122 -121 -122 -121 -122 -121 -122 -10 -122 -121 -122 -10 -122 -10 -122 -121 -10 -122 -10 -121 -122 -121 -10 -122 -10 -121 -10 -121 -102 -10 -121 -10 -121 -102 -121 -10 -121 -10 -102 -121 -10 -122 -121 -102 -121 -98 -121 -122 -121 -1 -103 -10 -102 -103 -102 -98 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -103 -102 -10 -82 -102 -98 -99 -98 -102 -10 -102 -98 -99 -10 -98 -10 -98 -10 -98 -99 -98 -113 -98 -99 -98 -99 -98 -99 -98 -99 -98 -99 -126 -98 -99 -98 -100 -98 -99 -10 -98 -99 -10 -98 -10 -99 -98 -10 -98 -99 -113 -98 -100 -98 -10 -100 -98 -100 -99 -100 -98 -100 -98 -99 -98 -100 -98 -100 -98 -82 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -98 -99 -98 -99 -98 -100 -98 -99 -10 -98 -99 -98 -99 -102 -98 -102 -103 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -98 -99 -98 -99 -98 -99 -98 +97 1 98 -99 +97 98 -99 -98 -99 -98 -10 -98 -99 -98 -99 -102 -103 -102 -10 -102 -99 -10 -98 -99 -98 -10 -98 -99 -98 -99 -102 -10 -102 -10 -103 -102 -98 -99 -98 -10 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -99 -10 -98 -99 -98 -102 -98 -99 -98 -10 +97 98 10 98 +97 1 -98 -99 -98 -102 -98 -102 -98 -102 -118 -98 -99 -98 -102 -127 -98 -103 -102 -98 -99 -10 -98 -99 -98 -10 -98 -99 -98 -99 -98 -102 -98 -102 -98 -102 -98 -102 -98 -10 -98 -102 -98 -10 -98 -102 -115 -102 -103 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -10 -103 -102 -103 -10 -102 -10 -102 -10 -102 -10 -102 -10 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -98 -10 -98 -102 -98 -99 -98 -99 -10 -98 -10 -99 -98 -102 -10 -98 -99 -98 -10 -98 -99 -98 -128 -103 -102 -103 -102 -10 -103 -102 -103 -102 -103 -102 -103 -10 -102 -103 -102 -10 -102 -103 -102 -103 -10 -102 -10 -102 -10 -102 -103 -102 -98 -10 -99 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -10 -98 -102 -99 -98 -102 -98 -99 -98 -99 -102 -10 -98 -10 -102 -99 -98 -10 -98 -99 -10 -98 -10 -98 -10 -98 -10 -98 -99 -98 -10 -98 -103 -102 -98 -102 -98 -102 -98 -99 -98 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -99 -100 -98 -10 -98 -10 -100 -10 -98 -100 -101 -129 -113 -10 -98 -100 -98 -100 -101 -100 -10 -100 -98 -100 -98 -113 -100 -10 -98 -100 -10 -100 -99 -98 -99 -101 -10 -100 -99 -100 -10 -100 -10 -98 -100 -10 -100 -99 -100 -98 -100 -99 -98 -10 -100 -98 -100 -98 -101 -100 -10 -100 -98 -100 -98 -101 -100 -101 -100 -10 -98 -10 -100 -98 -100 -98 -100 -98 -100 -101 -100 -101 -100 -98 -101 -100 -98 -100 -101 -100 -98 -100 -98 -10 -100 -101 -10 -100 -101 -100 -98 -100 -98 -101 -98 -101 -100 -10 -98 -107 -98 -100 -98 -10 -101 -100 -102 -98 -100 -10 -100 -10 -98 -99 -98 -10 -98 -10 -99 -10 -98 -10 -100 -98 117 -98 -99 -10 -100 -99 -10 -98 -100 -10 -100 -99 -100 101 +10 +101 +117 +101 +102 +101 +97 +117 +97 +101 +97 +10 +101 +97 +101 +117 +101 +97 +101 +98 +97 +105 +97 +98 +97 +98 +97 +101 +97 +120 +97 +120 +121 +10 +101 +120 +121 +120 +10 +121 +120 +10 +120 +10 +120 +121 +10 +120 +10 +120 +121 +120 +10 +121 +10 +120 +121 +120 +10 +120 +121 +10 +120 +121 +120 +121 +10 +120 +122 +120 +121 +120 +10 +120 +10 +120 +121 +10 +120 +121 +120 +121 +120 +10 +120 +10 +120 +121 +120 +121 +120 +121 +120 +10 +120 +10 +121 +120 +10 +121 +10 +120 +121 +10 +121 +10 +120 +121 +120 +10 +120 +121 +120 +10 +121 +10 +120 +10 +120 +10 +120 +121 +10 +121 +120 +10 +101 +121 +120 +123 +120 +124 +101 +120 +10 +121 +120 +10 +120 +121 +10 +121 +120 +10 +120 +121 +120 +121 +10 +120 +10 +120 +101 +120 +101 +120 +10 +120 +10 +120 +10 +97 +10 +120 +10 +120 +102 +120 +10 +120 +121 +120 +121 +10 +120 +10 +120 +10 +120 +121 +10 +120 +10 +120 +121 +10 +120 +10 +121 +120 +10 +120 +121 +120 +121 +120 +121 +120 +121 +120 +121 +10 +121 +120 +121 +10 +121 +10 +121 +120 +10 +121 +10 +120 +121 +120 +10 +121 +10 +120 +10 +120 +101 +10 +120 +10 +120 +101 +120 +10 +120 +10 +101 +120 +10 +121 +120 +101 +120 +97 +120 +121 +120 +1 +102 +10 +101 +102 +101 +97 +98 +97 +98 +97 +98 +97 +10 +97 +10 +97 +102 +101 +10 +82 +101 +97 +98 +97 +101 +10 +101 +97 +98 +10 +97 +10 +97 +10 +97 +98 +97 +112 +97 +98 +97 +98 +97 +98 +97 +98 +97 +98 +125 +97 +98 +97 +99 +97 +98 +10 +97 +98 +10 +97 +10 +98 +97 +10 +97 +98 +112 +97 +99 +97 +10 +99 +97 +99 +98 +99 +97 +99 +97 +98 +97 +99 +97 +99 +97 +82 +98 +97 +98 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +98 +97 +98 +97 +99 +97 +98 +10 +97 +98 +97 +98 +101 +97 +101 +102 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +98 +97 +98 +97 +98 +97 +1 +97 +98 +97 +98 +97 +98 +97 +10 +97 +98 +97 +98 +101 +102 +101 +10 +101 +98 +10 +97 +98 +97 +10 +97 +98 +97 +98 +101 +10 +101 +10 +102 +101 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +98 +10 +97 +98 +97 +101 +97 +98 +97 +10 +97 +10 +97 +1 +97 +98 +97 +101 +97 +101 +97 +101 +117 +97 +98 +97 +101 +126 +97 +102 +101 +97 +98 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +101 +97 +101 +97 +101 +97 +101 +97 +10 +97 +101 +97 +10 +97 +101 +114 +101 +102 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +10 +102 +101 +102 +10 +101 +10 +101 +10 +101 +10 +101 +10 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +97 +10 +97 +101 +97 +98 +97 +98 +10 +97 +10 +98 +97 +101 +10 +97 +98 +97 +10 +97 +98 +97 +127 +102 +101 +102 +101 +10 +102 +101 +102 +101 +102 +101 +102 +10 +101 +102 +101 +10 +101 +102 +101 +102 +10 +101 +10 +101 +10 +101 +102 +101 +97 +10 +98 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +10 +97 +101 +98 +97 +101 +97 +98 +97 +98 +101 +10 +97 +10 +101 +98 +97 +10 +97 +98 +10 +97 +10 +97 +10 +97 +10 +97 +98 +97 +10 +97 +102 +101 +97 +101 +97 +101 +97 +98 +97 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +98 +99 +97 +10 +97 +10 +99 +10 +97 +99 +100 +128 +112 +10 +97 +99 +97 +99 +100 +99 +10 +99 +97 +99 +97 +112 +99 +10 +97 +99 +10 +99 +98 +97 +98 100 10 99 98 -100 +99 +10 +99 +10 +97 +99 +10 +99 98 -100 +99 +97 +99 98 +97 +10 +99 +97 +99 +97 +100 +99 +10 +99 +97 +99 +97 +100 +99 +100 +99 +10 +97 +10 +99 +97 +99 +97 +99 +97 +99 +100 +99 +100 +99 +97 +100 +99 +97 +99 +100 +99 +97 +99 +97 +10 +99 +100 +10 +99 +100 +99 +97 +99 +97 +100 +97 +100 +99 +10 +97 +106 +97 +99 +97 +10 +100 +99 +101 +97 +99 +10 +99 +10 +97 +98 +97 +10 +97 +10 +98 +10 +97 +10 +99 +97 +116 +97 +98 +10 +99 +98 +10 +97 +99 +10 +99 +98 +99 +100 +99 +10 +98 +97 +99 +97 +99 +97 +129 +97 +10 +98 +10 +97 +98 +99 +97 +99 +97 +99 +100 +99 +10 +97 +99 +97 +98 +97 +98 +10 +1 +97 +99 +97 +101 +102 +101 +102 +101 +97 +101 +97 +10 +97 +101 +97 +10 +97 +98 +97 +98 +101 +97 +101 +97 +101 +97 +101 +97 +126 +101 +126 +10 +101 +10 +101 +126 +101 +10 +101 +102 +101 +10 +102 +101 +102 +10 +101 +102 +101 +10 +101 +10 +101 +126 +101 +102 +101 +98 +97 +98 +97 +101 +97 +10 +97 +98 +97 +2 +102 +2 +101 +10 +126 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +97 +101 +102 +10 +97 +101 +10 +101 +97 +10 +101 +102 +101 +102 +101 +102 +101 +102 +10 +101 +97 +98 +97 +98 +97 +102 +101 +10 +101 130 -98 -10 -99 -10 -98 -99 -100 -98 -100 -98 -100 101 -100 10 -98 -100 -98 -99 -98 -99 +101 +102 +101 10 +101 +10 +101 +97 +101 +10 +97 +101 +10 +97 +10 +97 +98 +101 +97 1 +97 +10 98 +97 +98 +10 +97 +10 +97 +10 +101 +10 +101 +97 +101 +102 +101 +97 +98 +97 +98 +97 +98 +97 +10 +97 +99 +1 +99 100 -98 -102 -103 -102 -103 -102 -98 -102 -98 -10 -98 -102 -98 -10 -98 99 -98 -99 -102 -98 -102 -98 -102 -98 -102 -98 -127 -102 -127 -10 -102 -10 -102 -127 -102 -10 -102 -103 -102 -10 -103 -102 -103 -10 -102 -103 -102 -10 -102 -10 -102 -127 -102 -103 -102 -99 -98 -99 -98 -102 -98 -10 -98 -99 -98 -2 -103 -2 -102 -10 -127 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -98 -102 -103 -10 -98 -102 -10 -102 -98 -10 -102 -103 -102 -103 -102 -103 -102 -103 -10 -102 -98 -99 -98 -99 -98 -103 -102 -10 -102 131 -102 -10 -102 -103 -102 -10 -102 -10 -102 -98 -102 -10 -98 -102 -10 -98 -10 -98 99 -102 -98 -1 -98 -10 -99 -98 -99 -10 -98 -10 -98 -10 -102 -10 -102 -98 -102 -103 -102 -98 -99 -98 -99 -98 -99 -98 -10 -98 100 -1 +99 +10 +99 +10 +99 +10 +99 100 +99 +10 +99 101 -100 -132 -100 +102 101 -100 +97 10 -100 +98 +97 +98 +97 +98 +97 10 -100 +97 +98 +97 +98 +10 +97 +10 +98 +10 +98 +97 +98 +97 +10 +98 +10 +97 +98 +10 +97 +10 +97 +98 +97 +98 +10 +97 +98 +10 +97 +98 +10 +98 +10 +97 +10 +97 +10 +97 +98 +10 +97 +102 10 -100 101 -100 -10 -100 102 -103 +101 102 -98 -10 -99 -98 -99 -98 -99 -98 -10 -98 -99 -98 -99 -10 -98 -10 -99 -10 -99 -98 -99 -98 -10 -99 -10 -98 -99 -10 -98 -10 -98 -99 -98 -99 -10 -98 -99 -10 -98 -99 -10 -99 -10 -98 -10 -98 -10 -98 -99 -10 -98 -103 -10 +97 +101 +97 +101 102 -103 +101 +97 102 -103 -98 -102 -98 -102 -103 -102 -98 -103 -98 -102 -98 -103 +97 +101 +97 102 +101 10 27 +101 +10 +101 +97 +10 +97 +101 +97 +98 +97 +101 +97 +101 +10 +97 102 -10 -102 +97 +101 +97 +101 +97 +101 +97 98 10 -98 -102 -98 -99 -98 -102 -98 -102 +97 10 +97 98 -103 -98 -102 -98 -102 -98 -102 -98 -99 +97 10 +97 +98 +97 +98 +97 +10 +97 +101 +97 +98 +97 +10 +97 98 10 +97 98 -99 +97 +98 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +10 +97 +101 +97 +101 +97 +98 +97 98 10 -98 -99 -98 -99 -98 -10 -98 -102 -98 -99 -98 -10 -98 -99 -10 -98 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -98 -10 -98 -102 -98 -102 -98 -99 -98 -99 -10 -98 +97 1 +97 98 -99 -98 +97 10 +97 98 -99 -98 +97 10 -106 -98 +105 +97 5 +97 +10 +97 +98 +97 +10 +97 98 10 +97 +10 +97 98 -99 +97 +98 +97 +98 +97 +10 +97 98 10 -98 -99 -10 +97 98 10 +97 98 -99 -98 -99 -98 -99 +97 98 10 -98 -99 +97 +10 +97 10 98 -99 +97 +10 +97 10 98 -99 +97 98 -99 -10 -98 -10 -98 -10 -99 -98 -10 -98 -10 -99 -98 -99 -103 102 +101 +97 +10 +101 98 +101 10 102 -99 -102 +101 10 -103 -102 +97 +10 +132 +10 +101 10 98 +101 10 +102 +101 +10 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +97 +102 +101 +10 +102 +101 +102 +10 +101 +97 +10 +97 +98 +97 +98 +97 +101 +10 +101 +106 +101 +97 +101 +97 +101 +102 +101 +10 +98 +101 +10 +101 +97 133 10 -102 +97 +98 +97 +10 +97 +99 +128 +99 +100 +10 +100 +99 +100 10 99 -102 -10 -103 -102 -10 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -98 -103 -102 -10 -103 -102 -103 -10 -102 -98 -10 -98 +100 99 -98 -99 -98 -102 -10 -102 -107 -102 -98 -102 -98 -102 -103 -102 +100 10 99 -102 -10 -102 -98 +100 +99 +100 +99 134 -10 -98 99 +100 +112 +99 +10 +99 +102 +97 +10 +101 +10 +101 +97 +98 +101 +97 +10 +97 +10 +97 +10 +101 +97 +101 +97 +10 +97 +98 +97 +98 +10 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +98 +97 +10 +97 +10 +97 +10 +97 +98 +97 +98 +10 +97 +10 +97 +10 +97 +98 +97 +10 +97 +10 +117 +97 +98 +97 +98 +97 +10 +101 +97 +10 +101 +97 +117 +10 +101 +97 +10 +97 98 10 98 -100 -129 -100 +10 +97 +102 +101 +97 +98 +97 +101 +102 +101 +97 +98 +97 +102 +97 +101 +98 +97 +98 +10 +97 +10 +97 +98 +10 +97 +10 +97 +98 +10 +97 +98 +97 +10 +98 +97 +98 +97 +98 +10 +98 +97 +10 +97 +98 +10 +98 +97 +101 +97 +102 +101 +102 101 10 -101 -100 -101 +97 10 -100 -101 -100 -101 +97 +98 10 -100 +97 +10 +97 +98 +97 +98 +97 +98 +97 101 -100 -101 -100 +97 +10 +97 135 -100 +97 101 +97 +101 +97 +10 +97 +98 +97 +10 +97 +101 +97 +10 +97 +10 +97 +10 +97 +102 +97 +101 +97 +10 +97 +1 +101 +102 +101 +98 +97 +98 +10 +97 +10 +101 +102 +10 +101 +10 +101 +97 +101 +10 +97 +101 +97 +10 +5 +97 +5 +97 +5 +101 +10 +102 +1 +101 +102 +10 +5 +101 +10 +101 +98 +97 +98 +10 +97 +98 +97 +10 +98 +97 +98 +97 +101 +102 +101 +98 +97 +10 +97 +98 +97 +10 +97 +101 +124 +97 +98 +97 +98 +97 +98 +97 +98 +97 +101 +1 +100 +99 +100 +99 +10 +99 +100 +99 +10 +99 +100 +99 +10 +99 +100 +99 +10 +99 +100 +99 +100 +99 +10 +99 +100 +99 +100 +99 +10 +99 +100 +99 +100 +99 +100 +10 +99 +10 +99 +100 +99 +10 +99 +100 +99 +10 +99 +100 +99 +100 +99 +100 +99 +100 +99 +100 +99 +112 +99 +97 +98 +97 113 -100 +97 +113 +97 +101 +97 +98 +97 +101 +97 +5 +97 +101 +102 +101 +5 +101 +102 10 -100 -103 +101 +97 +101 +98 +97 +10 +98 +97 +98 +97 +10 +97 +101 +97 98 10 +101 +102 +10 +27 +101 102 10 102 +101 +97 98 -99 -102 +97 +101 98 -10 -98 -10 -98 -10 -102 -98 -102 -98 -10 -98 -99 -98 -99 -10 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -99 -98 -10 -98 -10 -98 -10 -98 -99 -98 -99 -10 -98 -10 -98 -10 -98 -99 -98 -10 -98 -10 -118 -98 -99 -98 -99 -98 -10 -102 -98 -10 -102 -98 -118 -10 -102 -98 -10 -98 -99 -10 -99 -10 -98 -103 -102 -98 -99 -98 -102 -103 -102 -98 -99 -98 -103 -98 -102 -99 -98 -99 -10 -98 -10 -98 -99 -10 -98 -10 -98 -99 -10 -98 -99 -98 -10 -99 -98 -99 -98 -99 -10 -99 -98 -10 -98 -99 -10 -99 -98 -102 -98 -103 -102 -103 +97 +101 102 10 -98 +101 10 -98 -99 +101 10 -98 +97 10 -98 -99 -98 -99 -98 -99 -98 -102 -98 -10 -98 +101 +97 +101 136 -98 -102 -98 -102 -98 -10 -98 -99 -98 -10 -98 -102 -98 -10 -98 -10 -98 -10 -98 -103 -98 -102 -98 -10 -98 -1 -102 -103 -102 -99 -98 -99 -10 -98 -10 -102 -103 -10 -102 -10 -102 -98 -102 -10 -98 -102 -98 +101 10 5 -98 -5 -98 -5 -102 -10 -103 -1 -102 -103 10 5 -102 -10 -102 -99 -98 -99 -10 -98 -99 -98 -10 -99 -98 -99 -98 -102 -103 -102 -99 -98 -10 -98 -99 -98 -10 -98 -102 -125 -98 -99 -98 -99 -98 -99 -98 -99 -98 -102 -1 -101 -100 -101 -100 -10 -100 -101 -100 -10 -100 -101 -100 -10 -100 -101 -100 -10 -100 -101 -100 -101 -100 -10 -100 -101 -100 -101 -100 -10 -100 -101 -100 -101 -100 -101 -10 -100 -10 -100 -101 -100 -10 -100 -101 -100 -10 -100 -101 -100 -101 -100 -101 -100 -101 -100 -101 -100 113 -100 -98 -99 -98 -114 -98 -114 -98 -102 -98 -99 -98 -102 -98 5 -98 -102 -103 -102 -5 -102 -103 10 -102 -98 -102 -99 -98 -10 -99 -98 -99 -98 -10 -98 -102 -98 -99 -10 -102 -103 +114 10 +101 27 -102 -103 -10 -103 -102 -98 -99 -98 -102 -99 -98 -102 -103 -10 -102 -10 -102 -10 -98 -10 -102 -98 -102 +5 137 -102 -10 -5 -10 -5 -114 -5 -10 -115 -10 -102 -27 -5 -138 +97 98 -99 +97 98 -99 +97 +10 +97 +10 +97 +98 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +101 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +98 +97 +98 +10 +97 +98 +97 +101 +97 +98 +97 +10 +98 +97 +98 +97 +98 +97 +98 +10 +97 +101 +98 +97 +101 +97 +98 +97 +10 +97 +98 +10 +97 +10 +97 +10 +97 +98 +97 +10 +97 +101 +10 +97 +10 +97 +10 +98 +97 +98 +97 +98 +97 +98 +97 +98 +97 +10 +97 +10 +97 +10 +101 +97 +10 +98 +97 +10 +97 +10 +98 +97 +10 +98 +97 98 10 98 10 +97 +125 +10 +97 +10 +97 +101 +97 98 -99 +97 98 -99 +10 +97 +98 +97 +98 +97 +125 +97 +10 +97 +98 +10 +97 +10 +97 +98 +97 +10 +97 98 10 98 +97 10 98 10 -98 +97 10 -102 +97 98 -99 -98 -99 +97 98 +97 10 98 -99 +97 98 +97 +98 +97 +10 +97 +98 +97 +98 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +101 +97 +101 +97 +10 +97 10 98 -99 +97 98 -99 +97 98 +97 10 -98 -99 -98 +97 10 -99 +97 +125 +97 98 -99 +97 10 +97 98 -99 -98 -102 -98 -99 -98 -10 -99 -98 -99 -98 -99 -98 -99 -10 -98 -102 -99 -98 -102 -98 -99 -98 -10 -98 -99 +97 10 98 10 -98 -10 -98 -99 -98 -10 -98 -102 -10 -98 -10 -98 -10 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -10 -102 -98 -10 -99 -98 -10 -98 -10 -99 -98 -10 -99 -98 -99 -10 -99 -10 -98 -126 -10 -98 -10 -98 -102 -98 -99 -98 -99 -10 -98 -99 -98 -99 -98 -126 -98 -10 -98 -99 -10 -98 -10 -98 -99 -98 -10 -98 -99 -10 -99 -98 -10 -99 -10 -98 -10 -98 -99 -98 -99 -98 -10 -99 -98 -99 -98 -99 -98 -10 -98 -99 -98 -99 -98 -99 -98 -99 -98 -10 -98 -99 -98 -10 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -10 -102 -98 -102 -98 -10 -98 -10 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -126 -98 -99 -98 -10 -98 -99 -98 -10 -99 -10 -98 +97 27 9 27 -102 -139 -98 -99 -98 -10 -99 -98 -10 -98 -10 -98 -103 -10 -102 -103 -102 -98 -102 -103 -102 -103 -10 -102 -10 -102 -103 -10 -103 -10 -102 -103 -10 -103 -10 -102 -103 -102 -103 -98 -102 -10 -98 -102 -103 -102 -10 -102 -10 -102 -98 -102 -98 -102 -98 -102 -98 -99 -98 -99 -102 -103 -10 -98 -99 -98 -99 -102 -98 -99 -102 -98 -102 -98 -102 -99 -98 -10 -98 -99 -10 -103 -98 -103 -98 -10 -98 -99 -98 101 -100 -101 -100 -101 -10 -100 -10 -100 -101 -100 -98 -101 -100 -101 -100 -10 -100 -98 -113 -98 -100 -10 -98 -100 -98 -100 -101 -98 -101 -100 -10 -100 -113 -101 -10 -15 -103 -102 -1 -102 -103 -102 -10 -102 -10 -102 -10 -102 -10 -98 -10 -103 -102 -10 -103 -102 -98 -102 -98 -102 -133 -10 -102 -103 -102 -98 -102 -10 -102 -10 -102 -99 -98 -10 -98 -99 -98 -99 -106 -98 -10 -98 -10 -98 -99 -98 -99 -10 -98 -99 -98 -99 -98 -99 -98 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -103 -102 -103 -102 -10 -103 -102 -103 -102 -10 -103 -10 -102 -103 -102 -103 -102 -103 -10 -102 -10 -102 -10 -102 -103 -102 -98 -102 -103 -102 -133 -102 -10 -103 -102 -10 -102 -10 -103 -102 -103 -10 -99 -10 -102 -10 -98 -102 -98 -102 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -10 -102 -99 -98 -102 -103 -102 -98 -102 -103 -102 -10 -102 -98 -102 -10 -102 -98 -102 -103 -10 -102 -10 -102 -103 -10 -102 -103 -10 -102 -10 -102 -103 -102 -103 -102 -10 -98 -103 -102 -10 -102 -103 -10 -102 -103 -10 -102 -10 -102 -10 -102 -10 -102 -98 -102 -103 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -10 -102 -10 -102 -103 -102 -103 -10 -102 -10 -103 -102 -103 -102 -10 -103 -10 -102 -103 -10 -102 -98 -102 -98 -102 -103 -102 -10 -102 -98 -102 -10 -102 -10 -103 -102 -103 -102 -103 -102 -103 -10 -102 -10 -102 -10 -103 -10 -102 -103 -102 -103 -102 -103 -102 -101 -100 -10 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -10 -98 -99 -10 -99 -10 -99 -106 -10 -98 -102 -98 -10 -98 -99 -98 -10 -98 -10 -99 -98 -99 -98 -99 -10 -99 -98 -10 -99 -98 -10 -98 -10 -99 -10 -98 -10 -99 -10 -99 -98 -99 -10 -98 -10 -99 -98 -99 -98 -10 -98 -10 -98 -10 -98 -99 -98 -99 -1 -99 -98 -10 -98 -99 -98 -100 -98 -113 -100 -10 -98 -100 -98 -10 -135 -98 -103 -102 -10 -103 -102 -98 -102 -98 -10 -103 -102 -98 -10 -98 -102 -98 -102 -103 -102 -103 -102 -103 -102 -107 -103 -98 -103 -98 -10 -102 -10 -102 -99 -102 -103 -98 -10 -102 -103 -98 -103 -102 -68 -103 -102 -10 -102 -10 -102 -98 -10 -102 -10 -102 -103 -102 -98 -102 -10 -102 -103 -102 -103 -10 -103 -102 -103 -102 -103 -10 -102 -10 -102 -103 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -103 -10 -102 -10 -102 -10 -102 -103 -102 -103 -10 -102 -10 -102 -103 -10 -102 -103 -102 -103 -10 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -98 -102 -99 -10 -99 -98 -10 -98 -10 -98 -103 -102 -10 -102 -99 -10 -98 -102 -99 -102 -10 -102 -10 -99 -98 -10 -98 -102 -99 -102 -98 -102 -10 -99 -103 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -103 -102 -10 -103 -102 -103 -102 -103 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -98 -102 -10 -102 -10 -102 -103 -102 -98 -102 -10 -102 -10 -102 -10 -102 -103 -10 -102 -10 -102 -10 -103 -102 -10 -102 -103 -10 -102 -10 -103 -10 -102 -10 -102 -10 -98 -102 -103 -102 -10 -103 -10 -103 -102 -10 -102 -10 -102 -103 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -103 -10 -102 -10 -102 -103 -102 -10 -102 -10 -103 -102 -103 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -10 -103 -10 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -103 -102 -103 -102 -10 -103 -102 -103 -10 -102 -10 -102 -10 -102 -10 -103 -102 -10 -102 -10 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -10 -102 -103 -10 -102 -10 -102 -103 -102 -10 -102 -10 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -10 -103 -102 -10 -102 -10 -102 -98 -99 -10 -102 -99 -98 -102 -10 -102 -103 -102 -10 -102 -103 -102 -10 -103 -102 -10 -102 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -102 -10 -102 -103 -10 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -103 -102 -10 -102 -103 -102 -10 -102 -103 -10 -102 -103 -10 -103 -102 -103 -102 -103 -102 -10 -102 -133 -102 -103 -102 -103 -10 -102 -10 -102 -10 -102 -10 -102 -103 -10 -102 -10 -102 -10 -102 -103 -10 -103 -102 -10 -102 -10 -102 -10 -102 -103 -10 -102 -103 -102 -10 -98 -102 -10 -102 -10 -103 -10 -102 -103 -102 -10 -102 -103 -102 -103 -10 -102 -103 -102 -10 -102 -103 -102 -10 -102 -103 -133 -102 -103 -102 -103 -10 -103 -10 -102 -103 -102 -99 -10 -98 -10 -98 -10 -98 -10 -98 -99 -10 -99 -98 -10 -99 -98 -99 -98 -10 -99 -10 -98 -99 -98 -99 -10 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -99 -98 -99 -10 -98 -99 -10 -98 -99 -10 -98 -99 -98 -10 -99 -10 -98 -99 -98 -10 -98 -10 -98 -99 -98 -10 -98 -10 -98 -99 -10 -98 -10 -99 -10 -99 -10 -98 -99 -98 -10 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -98 -102 -98 -10 -99 -10 -98 -99 -98 -102 -98 -10 -98 -99 -98 -99 -98 -99 -98 -10 -98 -102 -10 -99 -98 -99 -98 -102 -103 -102 -10 -102 -10 -98 -99 -98 -99 -102 -98 -10 -102 -98 -10 -98 -10 -98 -99 -10 -98 -99 -98 -10 -98 -99 -10 -98 -10 -98 -99 -98 -99 -10 -99 -98 -99 -10 -98 -99 -98 -10 -99 -98 -10 -99 -98 -10 -98 -99 -10 -99 -98 -10 -98 -99 -98 -99 -10 -98 -99 -10 -99 -98 -102 -10 -98 -10 -102 -103 -102 -98 -10 -102 -98 -99 -10 -98 -102 -98 -99 -98 -103 -102 -99 -98 -10 -98 -102 -103 -102 -10 -102 -98 -10 -98 -102 -99 -98 -99 -10 -99 -98 -10 -98 -10 -102 -98 -140 -98 -102 -10 -98 -99 -98 -10 -98 -102 -10 -102 -98 -99 -98 -10 -99 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 -102 -98 -99 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -141 -98 -10 -98 -106 -10 -98 -10 -98 -99 -10 -99 -10 -99 -98 -10 -98 -99 -10 -98 -10 -99 -98 -10 -98 -99 -98 -99 -10 -98 -10 -98 -10 -98 -10 -98 -10 -98 -99 -98 -10 -99 -98 -10 -98 -99 -98 -10 -99 -10 -98 -10 -98 -99 -98 -10 -98 -99 -10 -99 -10 -98 -10 -98 -10 -98 -99 -98 -99 -10 -99 -98 -99 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -142 -10 -98 -10 -99 -98 -99 -98 -10 -99 -98 -10 -98 -10 -98 -99 -98 -10 -98 -99 -98 -99 -98 -102 -98 -102 -98 -10 -98 -10 -98 -102 -103 -102 -10 -102 -99 -98 -99 -98 -99 -10 -98 -10 -98 -99 -98 -99 -98 -102 -103 -102 -103 -102 -98 -102 -98 -99 -10 -98 -99 -10 -98 -10 -98 -10 -98 -99 -98 -10 -98 -99 -10 -98 -99 -10 -98 -10 -98 -99 -10 -98 -10 -98 -99 -10 -98 -99 -106 -98 -10 -98 -99 -10 -99 -98 -99 -98 -99 -98 -10 -98 -99 -10 -98 -99 -98 -10 -99 -98 -99 -98 -99 -98 -10 -98 -10 -98 -99 -10 -98 -10 -98 -99 +138 +97 98 -10 -99 -10 -99 -98 -102 -118 -98 -102 -98 -102 -98 -99 -98 -99 -98 -99 -98 -10 -98 -102 -98 -102 -103 -143 -98 -10 -98 -99 -10 -98 -10 -99 -98 -99 -10 -99 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -99 -10 -98 -99 -98 -10 -98 -10 -98 -10 -98 -10 -98 -99 +97 10 98 +97 10 -98 -99 +97 10 -99 -98 -1 -98 +97 102 -98 -10 -106 -98 -1 -98 -106 -98 -99 -98 -10 -98 -99 -98 -99 -98 -10 -98 -99 -98 -10 -99 -98 -99 -98 -100 -101 10 101 -100 -101 -100 -10 -100 -101 -100 102 -100 -10 -100 -102 -100 -101 -130 -100 -101 -100 -102 -10 -100 -102 -100 -102 -100 -102 -100 -10 -101 -100 -10 -101 -100 -101 -10 -100 -101 -100 -10 -100 -101 -10 -100 101 97 -100 101 -100 -10 -100 -10 -100 -98 +102 101 -100 +102 10 101 -100 10 101 -100 +102 +10 +102 +10 101 -100 +102 +10 +102 +10 +101 +102 +101 +102 +97 101 10 -100 +97 +101 102 +101 +10 +101 +10 +101 +97 +101 +97 +101 +97 +101 +97 +98 +97 +98 +101 +102 +10 +97 +98 +97 +98 +101 +97 +98 +101 +97 +101 +97 +101 +98 +97 +10 +97 +98 +10 +102 +97 +102 +97 +10 +97 +98 +97 100 +99 +100 +99 +100 +10 +99 +10 +99 +100 +99 +97 +100 +99 +100 +99 +10 +99 +97 +112 +97 +99 +10 +97 +99 +97 +99 +100 +97 +100 +99 +10 +99 +112 +100 +10 +15 +102 +101 +1 +101 +102 +101 +10 +101 +10 +101 +10 +101 +10 +97 +10 +102 +101 +10 +102 +101 +97 +101 +97 +101 +132 +10 +101 +102 +101 +97 +101 +10 +101 +10 +101 +98 +97 +10 +97 +98 +97 +98 +105 +97 +10 +97 +10 +97 +98 +97 +98 +10 +97 +98 +97 +98 +97 +98 +97 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +102 +101 +102 +101 +10 +102 +101 +102 +101 +10 +102 +10 +101 +102 +101 +102 +101 +102 +10 +101 +10 +101 +10 +101 +102 +101 +97 +101 +102 +101 +132 +101 +10 +102 +101 +10 +101 +10 +102 +101 +102 +10 +98 +10 +101 +10 +97 +101 +97 +101 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +10 +101 +98 +97 +101 +102 +101 +97 +101 +102 +101 +10 +101 +97 +101 +10 +101 +97 +101 +102 +10 +101 +10 +101 +102 +10 +101 +102 +10 +101 +10 +101 +102 +101 +102 +101 +10 +97 +102 +101 +10 +101 +102 +10 +101 +102 +10 +101 +10 +101 +10 +101 +10 +101 +97 +101 +102 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +10 +101 +10 +101 +102 +101 +102 +10 +101 +10 +102 +101 +102 +101 +10 +102 +10 +101 +102 +10 +101 +97 +101 +97 +101 +102 +101 +10 +101 +97 +101 +10 +101 +10 +102 +101 +102 +101 +102 +101 +102 +10 +101 +10 +101 +10 +102 +10 +101 +102 +101 +102 +101 +102 101 100 +99 +10 +97 +10 +97 98 -100 +97 98 -100 +97 +10 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +10 +98 +10 +98 +105 +10 +97 101 -100 +97 +10 +97 98 -102 -103 -102 +97 10 -102 +97 10 -103 -10 -103 -102 -10 -102 -10 -103 -102 -103 98 -99 +97 98 -118 -98 -102 -98 -102 -103 -98 -102 -10 -103 -10 -102 -98 -102 -98 -102 -103 -10 -102 -98 -102 -10 -102 -10 -102 -10 -102 -103 -10 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -103 -102 -98 -102 -10 -103 -102 -103 -102 -10 -102 -103 -10 -102 -10 -102 -103 -144 -102 -145 -102 -10 -102 -10 -102 -103 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -10 -102 -98 -102 -98 -102 -103 -10 -102 -103 -102 -103 -145 -102 -10 -102 -10 -103 -10 -102 -103 -10 -102 -5 -103 -10 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -102 -10 -103 -10 -102 -103 -102 -103 -10 -102 -103 -10 -103 -10 -103 -102 -10 -102 -103 -102 -103 -10 -100 -102 -146 -102 +97 98 10 98 -99 -98 -99 +97 10 98 -102 -98 +97 10 -98 -99 -98 -99 -98 -99 -10 -99 -98 -99 -98 -99 -98 -107 -98 -99 -10 -102 -98 -99 -10 -98 -99 -98 -10 -98 -99 -10 -98 -107 -98 +97 10 98 10 -98 -99 -98 -99 +97 10 98 10 98 -99 +97 +98 +10 +97 +10 +98 +97 +98 +97 +10 +97 +10 +97 +10 +97 +98 +97 98 1 -118 +98 +97 +10 +97 +98 +97 +99 +97 +112 +99 +10 +97 +99 +97 +10 +134 +97 102 -98 -118 -99 -98 +101 10 -98 +102 +101 +97 +101 +97 10 -98 +102 +101 +97 10 -98 -99 +97 +101 +97 +101 +102 +101 +102 +101 +102 +101 +106 +102 +97 +102 +97 10 -98 -99 -98 +101 10 +101 98 +101 +102 +97 10 -98 -99 -98 -99 -98 -99 -98 +101 +102 +97 +102 +101 +68 +102 +101 10 -99 -98 -99 -98 -99 -98 -99 -98 -99 -98 +101 10 -98 -99 -98 +101 +97 10 -98 -99 -98 +101 10 -98 -99 -98 +101 +102 +101 +97 +101 10 -98 -10 -98 -10 -98 -10 -98 +101 +102 +101 102 10 102 -103 -98 -99 +101 +102 +101 +102 +10 +101 +10 +101 +102 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +102 +10 +101 +10 +101 +10 +101 +102 +101 +102 +10 +101 +10 +101 +102 +10 +101 +102 +101 +102 +10 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +97 +101 98 10 98 -99 +97 10 -99 +97 +10 +97 +102 +101 +10 +101 98 10 +97 +101 +98 +101 +10 +101 +10 +98 +97 +10 +97 +101 +98 +101 +97 +101 +10 +98 +102 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +102 +101 +10 +102 +101 +102 +101 +102 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +97 +101 +10 +101 +10 +101 +102 +101 +97 +101 +10 +101 +10 +101 +10 +101 +102 +10 +101 +10 +101 +10 +102 +101 +10 +101 +102 +10 +101 +10 +102 +10 +101 +10 +101 +10 +97 +101 +102 +101 +10 +102 +10 +102 +101 +10 +101 +10 +101 +102 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +102 +10 +101 +10 +101 +102 +101 +10 +101 +10 +102 +101 +102 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +10 +102 +10 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +102 +101 +102 +101 +10 +102 +101 +102 +10 +101 +10 +101 +10 +101 +10 +102 +101 +10 +101 +10 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +10 +101 +102 +10 +101 +10 +101 +102 +101 +10 +101 +10 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +10 +102 +101 +10 +101 +10 +101 +97 +98 +10 +101 +98 +97 +101 +10 +101 +102 +101 +10 +101 +102 +101 +10 +102 +101 +10 +101 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +101 +10 +101 +102 +10 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +102 +101 +10 +101 +102 +101 +10 +101 +102 +10 +101 +102 +10 +102 +101 +102 +101 +102 +101 +10 +101 +132 +101 +102 +101 +102 +10 +101 +10 +101 +10 +101 +10 +101 +102 +10 +101 +10 +101 +10 +101 +102 +10 +102 +101 +10 +101 +10 +101 +10 +101 +102 +10 +101 +102 +101 +10 +97 +101 +10 +101 +10 +102 +10 +101 +102 +101 +10 +101 +102 +101 +102 +10 +101 +102 +101 +10 +101 +102 +101 +10 +101 +102 +132 +101 +102 +101 +102 +10 +102 +10 +101 +102 +101 +98 +10 +97 +10 +97 +10 +97 +10 +97 +98 +10 +98 +97 +10 +98 +97 +98 +97 +10 +98 +10 +97 +98 +97 +98 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +10 +98 +97 +98 +10 +97 +98 +10 +97 +98 +10 +97 +98 +97 +10 +98 +10 +97 +98 +97 +10 +97 +10 +97 +98 +97 +10 +97 +10 +97 +98 +10 +97 +10 98 10 98 10 +97 98 -99 +97 +10 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +101 +97 +10 +98 +10 +97 +98 +97 +101 +97 +10 +97 +98 +97 +98 +97 +98 +97 +10 +97 +101 +10 +98 +97 +98 +97 +101 +102 +101 +10 +101 +10 +97 +98 +97 +98 +101 +97 +10 +101 +97 +10 +97 +10 +97 +98 +10 +97 +98 +97 +10 +97 +98 +10 +97 +10 +97 +98 +97 +98 +10 +98 +97 +98 +10 +97 +98 +97 +10 +98 +97 +10 +98 +97 +10 +97 +98 +10 +98 +97 +10 +97 +98 +97 +98 +10 +97 +98 +10 +98 +97 +101 +10 +97 +10 +101 +102 +101 +97 +10 +101 +97 +98 +10 +97 +101 +97 +98 +97 +102 +101 +98 +97 +10 +97 +101 +102 +101 +10 +101 +97 +10 +97 +101 +98 +97 +98 +10 +98 +97 +10 +97 +10 +101 +97 +139 +97 +101 +10 +97 +98 +97 +10 +97 +101 +10 +101 +97 +98 +97 +10 +98 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +98 +97 +98 +97 +98 +97 +98 +97 +98 +97 +101 +97 +98 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +140 +97 +10 +97 +105 +10 +97 +10 +97 98 10 98 10 -99 -10 98 -99 +97 +10 +97 98 10 +97 +10 +98 +97 +10 +97 +98 +97 +98 +10 +97 +10 +97 +10 +97 +10 +97 +10 +97 +98 +97 +10 +98 +97 +10 +97 +98 +97 +10 +98 +10 +97 +10 +97 +98 +97 +10 +97 +98 +10 +98 +10 +97 +10 +97 +10 +97 +98 +97 +98 +10 +98 +97 +98 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +141 +10 +97 +10 +98 +97 +98 +97 +10 +98 +97 +10 +97 +10 +97 +98 +97 +10 +97 +98 +97 +98 +97 +101 +97 +101 +97 +10 +97 +10 +97 +101 +102 +101 +10 +101 +98 +97 +98 +97 +98 +10 +97 +10 +97 +98 +97 +98 +97 +101 +102 +101 +102 +101 +97 +101 +97 +98 +10 +97 +98 +10 +97 +10 +97 +10 +97 +98 +97 +10 +97 +98 +10 +97 +98 +10 +97 +10 +97 +98 +10 +97 +10 +97 +98 +10 +97 +98 +105 +97 +10 +97 +98 +10 +98 +97 +98 +97 +98 +97 +10 +97 +98 +10 +97 +98 +97 +10 +98 +97 +98 +97 +98 +97 +10 +97 +10 +97 +98 +10 +97 +10 +97 +98 +97 +10 +98 +10 +98 +97 +101 +117 +97 +101 +97 +101 +97 +98 +97 +98 +97 +98 +97 +10 +97 +101 +97 +101 +102 +142 +97 +10 +97 +98 +10 +97 +10 +98 +97 +98 +10 +98 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +98 +10 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +98 +10 +97 +10 +97 +98 +10 +98 +97 1 -103 -102 -103 +97 +101 +97 10 -102 -103 -102 -103 -102 -118 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -103 -102 -103 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -10 -102 -103 -102 -10 -102 -103 -10 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -103 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -10 -102 -10 -102 -103 -102 -10 -102 -103 -102 -103 -102 -103 -102 -103 -102 -103 -10 -102 -103 -102 -103 -102 -10 -102 -103 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 -10 -102 +105 +97 1 -102 -103 -102 +97 +105 +97 98 -102 +97 +10 +97 98 -113 +97 +98 +97 +10 +97 +98 +97 +10 +98 +97 +98 +97 +99 +100 +10 +100 +99 +100 +99 +10 +99 +100 +99 +101 +99 +10 +99 +101 +99 +100 129 +99 100 +99 +101 +10 +99 +101 +99 +101 +99 +101 +99 +10 +100 +99 +10 +100 +99 +100 +10 +99 +100 +99 +10 +99 +100 +10 +99 +100 +143 +99 +100 +99 +10 +99 +10 +99 +97 +100 +99 +10 +100 +99 +10 +100 +99 +100 +99 +100 +10 +99 +101 +99 +100 +99 +97 +99 +97 +99 +100 +99 +97 +101 +102 +101 +10 +101 +10 +102 +10 +102 +101 +10 +101 +10 +102 +101 +102 +97 98 +97 +117 +97 +101 +97 +101 +102 +97 +101 +10 +102 +10 +101 +97 +101 +97 +101 +102 +10 +101 +97 +101 +10 +101 +10 +101 +10 +101 +102 +10 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +102 +101 +97 +101 +10 +102 +101 +102 +101 +10 +101 +102 +10 +101 +10 +101 +102 +144 +101 +145 +101 +10 +101 +10 +101 +102 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +10 +101 +97 +101 +97 +101 +102 +10 +101 +102 +101 +102 +145 +101 +10 +101 +10 +102 +10 +101 +102 +10 +101 +5 +102 +10 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +101 +10 +102 +10 +101 +102 +101 +102 +10 +101 +102 +10 +102 +10 +102 +101 +10 +101 +102 +101 +102 +10 +99 +101 +146 +101 +97 +10 +97 +98 +97 +98 +10 +97 +101 +97 +10 +97 +98 +97 +98 +97 +98 +10 +98 +97 +98 +97 +98 +97 +106 +97 +98 +10 +101 +97 +98 +10 +97 +98 +97 +10 +97 +98 +10 +97 +106 +97 +10 +97 +10 +97 +98 +97 +98 +10 +97 +10 +97 +98 +97 +1 +117 +101 +97 +117 +98 +97 +10 +97 +10 +97 +10 +97 +98 +10 +97 +98 +97 +10 +97 +10 +97 +98 +97 +98 +97 +98 +97 +10 +98 +97 +98 +97 +98 +97 +98 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +10 +97 +98 +97 +10 +97 +10 +97 +10 +97 +10 +97 +101 +10 +101 +102 +97 +98 +97 +10 +97 +98 +10 +98 +97 +10 +97 +10 +97 +10 +97 +98 +97 +10 +97 +10 +98 +10 +97 +98 +97 +10 +1 +102 +101 +102 +10 +101 +102 +101 +102 +101 +117 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +102 +101 +102 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +10 +101 +102 +101 +10 +101 +102 +10 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +102 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +10 +101 +10 +101 +102 +101 +10 +101 +102 +101 +102 +101 +102 +101 +102 +101 +102 +10 +101 +102 +101 +102 +101 +10 +101 +102 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +10 +101 +1 +101 +102 +101 +97 +101 +97 +112 +128 +99 +97 1 2 78 @@ -157842,12 +157837,12 @@ 147 10 147 -119 +118 10 1 18 1 -119 +118 146 10 93 @@ -158089,7 +158084,7 @@ 86 10 1 -111 +110 86 10 1 @@ -158358,7 +158353,7 @@ 1 15 1 -138 +137 1 2 1 @@ -158551,18 +158546,18 @@ 2 1 27 -111 +110 1 2 1 77 1 171 -128 +127 10 171 10 -128 +127 1 5 1 @@ -158658,9 +158653,9 @@ 2 1 10 -102 +101 10 -102 +101 1 2 5 @@ -159087,7 +159082,7 @@ 2 1 2 -108 +107 18 1 40 @@ -159538,7 +159533,7 @@ 2 10 67 -108 +107 10 2 71 @@ -159849,7 +159844,7 @@ 10 71 1 -138 +137 1 71 6 @@ -161096,7 +161091,7 @@ 1 2 1 -108 +107 2 1 2 @@ -162098,7 +162093,7 @@ 1 71 1 -138 +137 5 1 10 @@ -162310,22 +162305,22 @@ 2 15 1 -136 +135 71 -142 -136 -142 -136 +141 +135 +141 +135 1 240 -142 +141 18 241 10 -142 +141 10 1 -136 +135 5 2 25 @@ -162491,7 +162486,7 @@ 248 2 1 -108 +107 20 1 25 @@ -163329,7 +163324,7 @@ 2 1 10 -111 +110 264 1 2 @@ -163566,7 +163561,7 @@ 71 2 10 -111 +110 1 2 272 @@ -163884,7 +163879,7 @@ 71 9 1 -111 +110 1 20 10 @@ -165092,7 +165087,7 @@ 10 5 71 -138 +137 1 2 1 @@ -165392,7 +165387,7 @@ 1 5 2 -138 +137 71 2 71 @@ -165606,7 +165601,7 @@ 1 2 1 -111 +110 2 1 2 @@ -165775,7 +165770,7 @@ 1 2 1 -108 +107 2 1 2 @@ -165835,7 +165830,7 @@ 294 2 3 -108 +107 1 5 10 @@ -165874,59 +165869,58 @@ 3 1 296 -297 24 +297 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 299 +298 296 297 298 -296 300 -296 +298 1 -296 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 +297 298 +297 301 302 -297 +296 303 -297 +296 302 -297 +296 302 -297 +296 303 -297 +296 301 304 301 305 301 -297 +296 302 306 -297 +296 306 1 -297 +296 301 307 304 @@ -165958,7 +165952,7 @@ 307 304 301 -296 +298 301 304 307 @@ -165979,7 +165973,7 @@ 304 301 304 -297 +296 307 1 301 @@ -166006,7 +166000,7 @@ 308 10 301 -297 +296 301 305 301 @@ -166014,14 +166008,14 @@ 301 305 301 -297 +296 302 301 305 301 304 301 -297 +296 301 304 301 @@ -166033,28 +166027,28 @@ 304 301 303 -297 +296 302 1 302 1 -297 +296 1 -297 +296 310 -297 +296 306 302 311 -297 +296 1 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 304 10 301 @@ -166065,19 +166059,19 @@ 301 312 301 -297 +296 1 302 1 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 301 304 301 @@ -166089,73 +166083,73 @@ 305 304 301 -297 296 298 +297 15 -296 +298 10 -296 +298 300 -297 296 +298 1 300 +298 +297 296 +297 298 297 298 -296 -298 -296 299 -296 +298 313 -296 298 -296 -298 -296 -314 -296 -1 -298 -296 297 +298 +297 +298 +314 +298 +1 +297 +298 +296 301 308 301 306 302 310 -297 +296 310 -297 +296 10 310 10 -297 +296 302 -297 +296 302 -297 +296 1 302 -297 +296 10 302 1 310 -297 +296 302 -297 +296 301 40 -297 +296 1 -297 +296 302 -297 +296 310 304 308 @@ -166165,15 +166159,15 @@ 308 304 301 -297 +296 301 304 301 308 301 -297 +296 302 -297 +296 307 301 1 @@ -166188,7 +166182,7 @@ 301 308 301 -297 +296 301 308 301 @@ -166196,19 +166190,19 @@ 301 10 310 -297 +296 302 -297 +296 302 -297 +296 310 10 -297 +296 1 302 -297 +296 302 -297 +296 5 10 302 @@ -166217,45 +166211,45 @@ 1 15 302 -297 +296 1 302 1 302 310 -297 +296 303 -297 +296 310 -297 +296 1 5 1 -297 +296 1 -297 +296 302 -297 +296 1 302 -297 +296 302 -297 +296 306 -297 +296 10 -297 +296 306 -297 +296 1 306 -297 +296 302 310 302 -297 +296 10 -297 +296 253 10 310 @@ -166265,210 +166259,210 @@ 302 10 310 -297 +296 306 -297 +296 306 10 -297 +296 10 -297 +296 302 -297 +296 1 302 -297 +296 10 316 -297 +296 306 -297 +296 302 -297 +296 10 302 -297 +296 10 306 -297 +296 306 -297 +296 302 -297 +296 310 -297 +296 1 -297 +296 302 10 310 -297 +296 310 -297 +296 302 -297 +296 301 -297 +296 306 303 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 310 306 302 -297 +296 305 304 307 304 1 301 -297 +296 303 -297 +296 306 -297 +296 301 -297 +296 308 -297 +296 302 -297 +296 302 -297 +296 317 -297 +296 1 -297 +296 303 -297 +296 1 -297 +296 1 -297 +296 302 -297 +296 306 302 -297 +296 302 -297 +296 306 1 302 -297 +296 302 306 -297 +296 310 302 1 302 -297 +296 302 -297 +296 301 -297 +296 303 -297 +296 1 -297 +296 310 -297 +296 310 301 318 308 301 302 -297 +296 301 308 304 301 -297 +296 302 319 1 -297 +296 301 -297 +296 302 -297 +296 320 306 10 -297 +296 15 -297 +296 306 -297 +296 1 10 -297 +296 10 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 1 -297 +296 302 -297 +296 304 301 1 -297 +296 304 10 301 -297 +296 302 -297 +296 301 303 -297 +296 10 321 -297 +296 302 306 -297 +296 302 -297 +296 322 -297 +296 301 -297 +296 301 -297 +296 302 1 -297 +296 303 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 1 15 1 -297 +296 304 301 304 @@ -166486,7 +166480,7 @@ 301 308 301 -297 +296 301 10 304 @@ -166528,64 +166522,64 @@ 301 10 301 +297 298 -296 314 -296 +298 10 +297 298 -296 314 -296 298 -296 +297 +298 314 1 +298 296 +314 +298 +1 +297 +298 +297 +298 +297 +298 +300 +298 +299 +298 +297 +298 +297 +298 +297 +298 297 314 -296 -1 +297 298 -296 -298 -296 -298 -296 +297 300 -296 +298 +297 +298 299 -296 -298 -296 -298 -296 -298 -296 -298 -314 -298 -296 -298 -300 -296 -298 -296 -299 -296 -1 -296 298 1 -296 298 -296 -298 -296 -298 -296 +297 1 -296 +298 +297 +298 +297 +298 +297 +298 +1 +298 308 10 308 @@ -166595,72 +166589,72 @@ 306 302 323 -297 +296 310 301 10 301 10 -297 +296 1 306 -297 +296 301 -297 +296 304 301 -297 +296 301 -297 +296 301 308 301 308 304 301 -297 +296 301 324 -297 +296 306 -297 +296 1 -297 +296 301 310 -297 +296 15 301 304 301 -297 +296 323 -297 +296 302 301 -297 +296 301 -297 +296 304 325 -297 +296 324 -297 +296 306 -297 +296 326 1 301 -297 +296 326 302 -297 +296 301 -297 +296 301 305 301 -297 +296 301 304 301 @@ -166673,221 +166667,221 @@ 301 304 301 -297 +296 308 -297 +296 301 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 301 -297 +296 301 -297 +296 302 -297 +296 301 302 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 10 310 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 306 -297 +296 302 -297 +296 310 306 -297 +296 327 302 -297 +296 306 10 302 -297 +296 303 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 306 302 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 3 -297 +296 302 301 304 306 -297 +296 328 302 -297 +296 1 324 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 1 302 -297 +296 310 306 327 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 325 302 -297 +296 302 -297 +296 306 -297 +296 1 302 -297 +296 306 302 1 -297 +296 325 1 -297 +296 1 -297 +296 302 -297 +296 325 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 10 302 -297 +296 310 -297 +296 306 -297 +296 306 302 -297 +296 302 -297 +296 302 306 -297 +296 306 -297 +296 306 -297 +296 306 -297 +296 1 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 306 10 302 -297 +296 302 -297 +296 327 306 -297 +296 1 310 10 -297 +296 1 323 1 @@ -166901,11 +166895,11 @@ 301 10 301 -297 +296 323 -297 +296 307 -297 +296 301 1 301 @@ -166913,7 +166907,7 @@ 329 301 1 -297 +296 301 304 324 @@ -166926,23 +166920,23 @@ 308 302 306 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 302 1 301 330 244 2 -297 +296 302 1 -297 +296 302 3 2 @@ -166950,21 +166944,21 @@ 301 304 301 -297 +296 306 310 -297 +296 302 1 302 10 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 301 304 301 @@ -166986,9 +166980,9 @@ 5 1 301 -297 +296 302 -297 +296 308 304 1 @@ -167006,135 +167000,135 @@ 308 305 301 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 306 302 -297 +296 331 302 310 -297 +296 303 -297 +296 302 -297 +296 1 306 -297 -310 -297 -1 -297 -302 -297 -302 -297 -302 -297 -1 -297 -302 -297 296 -297 +310 +296 +1 +296 302 -297 +296 302 -297 +296 302 -297 +296 +1 +296 +302 +296 +298 +296 +302 +296 +302 +296 +302 +296 321 -297 +296 310 -297 296 -297 -302 -297 -306 +298 296 302 -297 -296 -297 296 306 -296 -297 -310 -297 +298 302 -297 296 +298 +296 +298 +306 +298 +296 +310 +296 +302 +296 +298 302 1 -296 +298 302 310 302 -297 +296 1 302 -297 +296 302 -297 +296 302 -297 +296 327 -297 -302 -310 -297 -302 -297 -302 -297 -310 -297 -1 -297 -302 -297 -302 -297 -310 -297 -302 -297 -1 -297 -1 -302 -1 -297 296 -297 +302 +310 +296 +302 +296 +302 +296 +310 +296 +1 +296 +302 +296 +302 +296 +310 +296 +302 +296 +1 +296 +1 +302 +1 +296 +298 +296 302 306 -297 +296 302 -297 +296 302 -297 +296 302 310 10 -297 +296 301 -297 +296 302 -297 +296 3 -297 +296 3 301 304 @@ -167143,71 +167137,71 @@ 301 305 1 -297 +296 302 310 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 306 -297 +296 303 -297 +296 302 1 -297 +296 306 -297 +296 302 3 327 310 302 -297 +296 302 -297 +296 310 -297 +296 5 -297 +296 306 -297 +296 302 306 10 332 -297 +296 302 -297 +296 302 10 -297 +296 310 10 -297 +296 302 1 -297 +296 1 306 302 -297 +296 10 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 304 305 301 @@ -167216,14 +167210,14 @@ 10 301 302 -297 +296 310 -297 +296 302 -297 +296 306 5 -297 +296 305 301 304 @@ -167232,88 +167226,88 @@ 308 301 311 -297 +296 1 -297 +296 302 -297 +296 303 -297 +296 302 -297 +296 1 -297 +296 1 -297 +296 332 -297 +296 1 -297 +296 310 5 10 -297 +296 1 -297 +296 303 -297 +296 301 306 302 -297 +296 302 -297 +296 302 -297 +296 302 1 -297 +296 301 -297 +296 301 -297 +296 301 324 -297 +296 302 -297 +296 301 1 -297 +296 301 304 301 -297 +296 3 -297 +296 302 -297 +296 310 302 -297 +296 306 10 302 -297 +296 302 -297 +296 301 -297 +296 309 301 302 -297 +296 1 -297 +296 302 -297 +296 304 301 -297 +296 301 -297 +296 301 -297 +296 304 301 308 @@ -167414,56 +167408,56 @@ 301 1 301 -297 +296 1 302 20 302 -297 +296 310 302 10 302 335 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 1 -297 +296 1 -297 +296 1 302 -297 +296 301 302 -297 +296 302 -297 +296 5 1 -297 +296 310 -297 +296 302 1 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 5 -297 +296 2 308 301 @@ -167517,63 +167511,63 @@ 302 328 10 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 310 302 -297 +296 302 -297 +296 302 -297 +296 10 -297 +296 10 -297 +296 306 -297 +296 306 -297 +296 301 302 -297 +296 301 302 1 -297 +296 302 -297 +296 302 304 301 -297 +296 301 308 10 302 310 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 304 301 304 301 -297 +296 301 307 -297 +296 301 -297 +296 301 1 301 @@ -167614,222 +167608,222 @@ 308 1 302 +298 +296 +310 296 297 310 +296 +310 +298 297 298 -310 297 -310 -296 -298 -296 -298 321 336 302 -296 -297 -299 -296 298 296 +299 +298 +297 +298 310 -296 +298 302 321 +298 296 -297 -296 +298 302 -297 296 -297 +298 296 298 297 296 298 +297 +298 +302 +298 296 +298 302 296 -297 +298 296 -302 -297 -296 -297 +298 296 297 298 -296 310 300 +298 296 -297 -296 -297 +298 296 +298 299 -296 -302 -297 -296 -297 -296 +298 302 296 +298 +296 +298 +302 +298 314 -296 +298 302 +298 296 297 298 -296 1 +298 296 -297 +298 296 -297 -296 -297 +298 296 +298 310 321 -297 +296 +298 296 297 298 -296 -298 297 +296 5 -296 298 -296 +297 +298 314 -296 298 -296 -298 -296 -299 -296 297 -296 +298 +297 298 299 +298 296 +298 297 +299 +298 +296 302 306 -296 -297 -1 -296 298 +296 +1 +298 +297 302 310 -297 296 -302 298 -296 +302 +297 +298 301 302 -297 296 -297 +298 +296 302 310 1 302 310 302 -297 -1 -297 -310 -297 -302 296 +1 +296 +310 +296 +302 +298 302 324 -297 +296 306 302 +298 +302 296 302 297 +298 302 298 -296 -302 -296 10 306 -297 296 -297 -296 -297 -337 -297 -303 -297 -310 -296 -297 -302 -297 -296 -297 -302 298 296 +298 +296 +337 +296 +303 +296 +310 +298 +296 +302 +296 +298 +296 +302 +297 +298 306 -297 296 -297 +298 +296 302 -297 +296 302 -297 +296 302 -297 +296 1 -296 +298 302 -297 +296 1 5 1 -297 +296 301 304 301 -297 +296 301 310 -297 +296 302 -297 +296 301 303 -297 +296 302 -297 +296 302 -297 +296 304 -297 +296 301 -297 +296 301 -297 +296 301 -297 +296 1 301 1 @@ -167848,29 +167842,29 @@ 84 1 302 -297 +296 5 -297 +296 302 -297 +296 1 5 1 301 -297 +296 310 -297 +296 3 -297 +296 1 -297 +296 310 -297 +296 1 -297 +296 302 1 -297 +296 2 301 1 @@ -167922,33 +167916,33 @@ 301 1 302 -297 +296 302 1 -297 +296 301 304 302 -297 +296 10 -297 +296 305 301 -297 +296 302 -297 +296 306 -297 +296 302 303 1 -297 +296 302 1 -297 +296 310 302 -297 +296 1 301 307 @@ -167956,14 +167950,14 @@ 308 301 308 -297 +296 310 -297 +296 302 306 -297 +296 310 -297 +296 310 301 307 @@ -167974,300 +167968,300 @@ 301 1 302 -297 +296 304 301 -297 +296 302 -297 +296 301 -297 +296 306 -297 +296 1 310 -297 +296 10 306 -297 +296 305 301 -297 +296 1 -297 +296 302 -297 +296 302 -297 +296 301 304 301 1 301 -297 +296 304 1 307 301 -297 +296 306 303 +296 +298 297 -296 298 -296 +297 298 -296 5 +297 298 -296 338 -296 +298 +297 +1 +297 +298 +1 +297 298 1 298 -296 -1 +297 298 -296 -1 -296 -298 -296 314 -296 +298 28 -296 -1 -296 298 -296 +1 +298 +297 +298 314 -296 298 +297 300 +298 +3 +305 +10 +308 +1 +5 +301 +5 +10 +301 +1 +301 +305 296 -3 -305 -10 -308 -1 -5 -301 -5 -10 -301 -1 -301 -305 -297 310 -297 +296 310 10 -297 +296 302 -297 +296 310 -297 +296 302 3 302 -297 +296 303 -297 +296 306 -297 +296 306 10 -297 +296 306 302 -297 +296 10 -297 +296 310 -297 +296 302 -297 +296 10 -297 +296 306 -297 +296 302 1 -297 +296 302 -297 +296 305 1 301 -297 +296 301 -297 +296 301 308 10 301 308 -297 +296 308 10 -297 +296 301 -297 +296 308 301 -297 +296 302 310 302 310 -297 +296 10 1 -297 +296 301 -297 +296 304 301 -297 +296 301 304 -297 +296 310 301 -297 +296 301 -297 +296 305 -297 +296 301 -297 +296 10 -297 +296 306 -297 +296 302 -297 +296 1 -297 +296 1 302 1 -297 +296 302 -297 +296 302 -297 +296 302 1 -297 +296 306 1 310 302 -297 +296 302 -297 +296 302 -297 +296 306 310 302 -297 +296 302 306 310 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 301 302 -297 +296 306 -297 +296 302 -297 +296 302 306 -297 +296 306 -297 +296 302 306 -297 +296 302 306 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 310 302 -297 +296 310 -297 +296 301 302 75 -297 +296 301 -297 +296 306 -297 +296 310 -297 +296 10 -297 +296 302 -297 +296 10 -297 +296 302 -297 +296 302 -297 +296 302 325 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 301 -297 +296 304 302 304 301 304 301 -297 +296 308 1 301 -297 +296 301 304 1 @@ -168287,194 +168281,194 @@ 301 304 301 -297 +296 309 308 10 301 308 301 -297 +296 302 -297 +296 306 -297 +296 301 -297 +296 301 -297 +296 301 -297 +296 301 -297 +296 301 308 301 -297 -306 -297 -302 -297 296 +306 +296 +302 +296 +298 331 314 1 -296 +298 300 -298 -296 -1 +297 298 1 -296 -298 -296 +297 1 -296 298 -10 -296 +297 +298 1 -296 298 -314 -296 -298 -296 -298 -296 -298 -314 -296 -298 -314 +297 10 298 +1 +298 +297 +314 +298 +297 +298 +297 +298 +297 +314 +298 +297 +314 +10 +297 321 -296 +298 5 -296 298 -296 +297 +298 339 -296 -1 -296 298 -296 +1 +298 +297 +298 299 301 -297 +296 301 304 -297 +296 301 -297 +296 10 -297 +296 301 -297 +296 304 301 -297 +296 302 -297 +296 302 -297 +296 303 -297 +296 302 -297 +296 302 1 -297 +296 302 -297 +296 302 -297 +296 310 10 -297 +296 302 323 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 301 -297 +296 301 -297 +296 324 301 302 -297 +296 302 10 340 -297 +296 302 -297 +296 304 301 -297 +296 301 -297 +296 302 -297 +296 304 -297 +296 301 302 -297 +296 303 -297 +296 310 -297 +296 310 -297 +296 317 306 -297 +296 303 306 -297 +296 20 -297 +296 302 -297 +296 302 -297 +296 1 75 -297 +296 310 1 -297 +296 1 10 302 1 -297 +296 302 -297 +296 303 -297 +296 310 -297 +296 5 -297 +296 301 -297 +296 304 301 5 @@ -168482,69 +168476,69 @@ 1 310 306 -297 +296 302 -297 +296 310 -297 +296 5 -297 +296 302 -297 +296 306 -297 +296 310 306 -297 +296 304 301 -297 +296 310 -297 +296 1 302 -297 +296 302 -297 +296 310 18 10 306 -297 +296 10 -297 +296 5 -297 +296 5 -297 +296 310 5 10 310 -297 +296 310 -297 +296 302 -297 +296 2 301 306 310 -297 +296 302 -297 +296 304 301 -297 +296 301 304 301 -297 +296 304 301 -297 +296 1 -297 +296 302 28 1 @@ -168552,59 +168546,59 @@ 1 303 1 -297 +296 310 10 -297 +296 306 -297 +296 310 -297 +296 310 1 -297 +296 3 -297 +296 304 305 301 305 301 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 302 306 -297 +296 306 -297 +296 306 -297 +296 302 1 -297 +296 306 -297 +296 302 -297 +296 1 306 -297 +296 310 -297 +296 302 -297 +296 302 304 301 @@ -168613,116 +168607,116 @@ 304 301 310 -297 +296 310 -297 +296 301 308 301 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 304 301 1 +297 +1 +298 +297 +298 +297 +298 +299 +297 +298 +297 +298 +297 298 1 -296 298 -296 +297 +298 +297 298 -296 299 298 -296 +297 298 -296 +297 298 -296 -1 -296 +297 298 -296 -298 -296 -299 -296 -298 -296 -298 -296 -298 -296 -298 -296 +297 298 +297 300 -296 +298 314 -296 +298 314 -296 +298 299 +297 298 -296 314 +297 298 -296 341 342 -296 +298 314 +297 298 -296 +297 298 -296 314 10 +297 298 -296 300 -296 -314 -298 -296 -298 -296 -298 -296 298 314 -296 +297 +298 +297 +298 +297 +298 +297 +314 +298 +297 298 -296 299 343 -296 298 -296 +297 +298 +297 298 -296 321 -296 298 +297 +298 +306 +296 +302 296 306 -297 -302 -297 +296 306 -297 -306 -297 +296 304 -297 +296 302 -297 +296 301 -297 +296 301 307 304 @@ -168733,55 +168727,55 @@ 304 301 305 -297 +296 301 302 310 -297 +296 5 1 10 -297 +296 10 306 -297 +296 306 -297 +296 10 302 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 310 -297 +296 332 310 10 -297 +296 302 -297 +296 301 5 -297 +296 302 301 304 301 305 308 -297 +296 302 -297 +296 301 -297 +296 310 -297 +296 310 -297 +296 304 301 5 @@ -168791,7 +168785,7 @@ 304 302 308 -297 +296 301 304 301 @@ -168800,249 +168794,249 @@ 1 301 10 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 10 302 -297 +296 301 -297 +296 5 -297 +296 302 -297 +296 344 -297 +296 302 -297 +296 1 302 -297 +296 306 -297 +296 310 -297 +296 302 -297 +296 302 327 306 -297 +296 302 -297 +296 302 -297 +296 302 325 1 306 302 -297 +296 306 -297 +296 302 303 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 325 302 -297 +296 308 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 306 302 5 1 -297 +296 302 -297 +296 301 -297 +296 302 -297 +296 302 301 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 10 306 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 301 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 1 306 -297 +296 302 -297 +296 301 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 1 -297 +296 301 -297 +296 1 -297 +296 302 -297 +296 1 302 303 -297 +296 302 -297 +296 1 -297 +296 306 10 -297 +296 306 302 -297 +296 302 1 -297 +296 302 -297 +296 302 -297 +296 10 302 -297 +296 306 302 -297 +296 306 -297 +296 302 -297 +296 1 310 -297 +296 310 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 306 10 -297 +296 306 10 -297 +296 302 -297 +296 3 302 -297 +296 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 10 -297 +296 301 -297 +296 308 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 5 -297 +296 306 310 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 301 302 -297 +296 302 -297 +296 306 -297 +296 304 301 1 @@ -169051,7 +169045,7 @@ 308 10 301 -297 +296 301 305 10 @@ -169072,92 +169066,92 @@ 1 71 305 -297 +296 301 10 -297 +296 301 304 301 1 301 -297 +296 301 -297 +296 301 304 1 301 -297 +296 301 -297 +296 1 302 -297 +296 301 308 304 -297 +296 301 -297 +296 301 340 302 -297 +296 301 -297 +296 301 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 301 -297 +296 301 -297 +296 40 1 71 1 345 -296 +298 1 -296 298 +297 314 -296 298 +297 346 299 306 -296 +298 1 10 +298 296 -297 302 321 -297 296 +298 314 +298 296 -297 -296 -297 +298 296 +298 299 10 -296 298 297 296 +298 1 321 -296 +298 301 305 301 @@ -169178,44 +169172,44 @@ 12 301 308 -297 +296 301 -297 +296 301 302 -297 +296 301 308 10 301 302 -297 +296 10 304 301 306 -297 +296 306 -297 +296 302 -297 +296 302 1 -297 +296 306 -297 +296 325 -297 +296 310 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 301 304 301 @@ -169236,7 +169230,7 @@ 2 1 301 -297 +296 2 301 308 @@ -169258,25 +169252,25 @@ 304 301 304 -297 +296 1 301 307 301 -297 +296 301 -297 +296 301 305 301 302 -297 +296 301 308 301 10 301 -297 +296 301 333 301 @@ -169285,7 +169279,7 @@ 10 308 304 -297 +296 301 307 1 @@ -169295,7 +169289,7 @@ 304 301 308 -297 +296 304 301 308 @@ -169308,7 +169302,7 @@ 1 301 304 -297 +296 301 304 301 @@ -169327,11 +169321,11 @@ 301 308 301 -297 +296 301 -297 +296 301 -297 +296 301 304 301 @@ -169347,111 +169341,111 @@ 1 304 301 +297 298 +302 296 302 -297 -302 -297 +296 327 -297 +296 306 -297 +296 306 -297 +296 302 1 306 -297 +296 302 1 302 1 -297 +296 302 -297 +296 302 301 -297 +296 306 340 302 -297 +296 1 -297 +296 310 -297 +296 306 -297 +296 306 -297 +296 306 10 -297 +296 302 -297 +296 310 -297 +296 348 -297 +296 302 -297 +296 302 1 -297 +296 1 -297 +296 306 302 -297 296 +298 302 331 +298 296 -297 +298 296 -297 +298 296 -297 302 -297 +296 71 301 10 302 301 -297 +296 301 302 -297 +296 301 -297 +296 301 304 301 308 301 -297 +296 304 308 -297 +296 10 301 -297 +296 301 304 305 304 301 304 -297 +296 305 301 308 301 -297 +296 301 -297 +296 301 304 301 @@ -169464,9 +169458,9 @@ 301 10 301 -297 +296 301 -297 +296 301 308 301 @@ -169492,27 +169486,27 @@ 301 310 302 -297 +296 302 301 -297 +296 325 -297 +296 302 -297 +296 301 -297 +296 301 306 301 -297 +296 302 306 -297 +296 301 303 301 -297 +296 308 302 301 @@ -169522,11 +169516,11 @@ 301 308 301 -297 +296 301 308 301 -297 +296 301 308 301 @@ -169536,7 +169530,7 @@ 301 304 301 -297 +296 308 301 308 @@ -169592,14 +169586,14 @@ 301 303 1 -297 +296 302 1 301 -297 +296 310 306 -297 +296 301 304 308 @@ -169644,7 +169638,7 @@ 301 308 301 -297 +296 301 308 301 @@ -169655,190 +169649,190 @@ 301 308 301 -297 +296 306 -297 +296 310 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 306 10 -297 +296 306 -297 +296 302 -297 +296 306 10 -297 +296 306 -297 +296 306 -297 +296 317 -297 +296 302 1 -297 +296 10 -297 +296 1 -297 +296 306 -297 +296 306 -297 +296 10 -297 +296 306 -297 +296 1 -297 +296 10 -297 +296 301 -297 +296 302 -297 +296 303 306 -297 +296 302 -297 +296 1 -297 +296 301 -297 +296 349 302 -297 +296 310 306 302 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 302 310 -297 +296 303 1 -297 +296 304 -297 +296 301 -297 +296 1 -297 +296 301 302 301 304 301 -297 +296 302 -297 +296 1 -297 +296 310 1 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 310 1 -297 +296 310 302 -297 +296 302 -297 +296 1 302 310 -297 +296 302 -297 +296 302 -297 +296 325 -297 +296 302 -297 +296 310 1 302 -297 +296 303 302 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 308 -297 +296 301 302 -297 +296 304 301 -297 +296 301 308 10 301 302 -297 +296 301 -297 +296 1 301 -297 +296 304 301 1 301 306 -297 +296 301 -297 +296 304 301 -297 +296 301 -297 +296 306 -297 +296 304 307 301 @@ -169850,231 +169844,231 @@ 1 304 301 -297 +296 310 -297 +296 302 -297 +296 301 -297 +296 302 -297 +296 301 308 10 301 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 302 310 302 306 -297 +296 306 -297 +296 302 1 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 306 302 -297 +296 310 306 -297 +296 302 -297 +296 306 -297 +296 304 302 310 -297 +296 306 -297 +296 302 -297 +296 1 -297 +296 302 306 -297 +296 310 -297 +296 350 -297 +296 316 10 -297 +296 302 -297 +296 10 -297 +296 306 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 302 1 -297 +296 10 302 -297 +296 302 -297 +296 302 303 -297 +296 306 -297 +296 302 1 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 306 310 -297 +296 306 -297 +296 310 302 -297 +296 302 -297 +296 302 303 -297 +296 310 -297 +296 302 -297 +296 310 -297 +296 301 302 308 302 1 302 -297 +296 310 -297 +296 301 302 1 -297 +296 303 -297 +296 302 1 302 -297 +296 302 -297 +296 302 -297 +296 301 304 301 -297 +296 10 301 1 -297 +296 351 -297 +296 302 -297 +296 306 -297 +296 303 -297 +296 302 -297 +296 302 -297 +296 302 1 -297 +296 306 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 302 -297 +296 303 -297 +296 306 -297 +296 306 -297 +296 310 -297 +296 10 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 2 304 324 310 303 -297 +296 302 -297 +296 302 -297 +296 302 324 1 302 -297 +296 302 -297 +296 301 10 310 -297 +296 302 -297 +296 5 -297 +296 302 -297 +296 302 -297 +296 304 301 306 @@ -170082,180 +170076,180 @@ 301 305 1 -297 +296 310 -297 +296 302 -297 +296 306 -297 +296 306 10 -297 +296 10 -297 +296 306 -297 +296 310 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 10 -297 +296 302 -297 +296 1 -297 +296 302 -297 +296 302 301 302 -297 +296 302 -297 +296 302 -297 +296 306 -297 +296 5 -297 +296 1 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 10 +296 297 298 -296 1 +297 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 -298 -296 -301 -298 -296 -298 -1 -298 -296 +297 298 301 -296 +297 298 +297 +1 +297 +298 +297 +301 +298 +297 337 +297 298 -296 301 -298 +297 10 299 10 1 +297 298 -296 1 -296 +298 10 1 -296 -301 -296 -301 -296 298 -296 301 -296 +298 +301 +298 +297 +298 +301 +298 314 299 10 -296 +298 299 1 -296 -10 -296 298 +10 +298 +297 314 1 -296 +298 10 -296 +298 352 -296 +298 10 299 -296 +298 300 -296 298 -296 +297 +298 +297 298 -296 314 -296 +298 339 10 -296 298 297 296 298 -296 +297 298 -296 +297 298 -296 +297 298 -296 +297 +298 +297 298 -296 301 -296 +298 302 299 -296 +298 314 -296 +298 1 +297 298 -296 -298 +297 331 5 +298 296 -297 301 308 301 @@ -170268,27 +170262,27 @@ 301 302 310 -297 +296 302 -297 +296 323 -297 +296 301 302 -297 +296 1 302 301 -297 +296 301 305 1 301 -297 +296 301 -297 +296 301 -297 +296 301 308 10 @@ -170299,7 +170293,7 @@ 301 308 301 -297 +296 301 308 301 @@ -170345,11 +170339,11 @@ 5 10 301 -297 +296 301 305 301 -297 +296 301 305 301 @@ -170398,94 +170392,94 @@ 10 27 301 -296 +298 301 2 354 -297 +296 310 -297 +296 1 310 -297 +296 310 -297 +296 10 -297 +296 301 302 -297 +296 1 -297 +296 302 1 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 303 -297 +296 1 -297 +296 1 305 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 310 -297 +296 310 -297 +296 306 310 -297 +296 302 -297 +296 302 -297 +296 328 -297 +296 302 310 -297 +296 10 -297 +296 303 -297 +296 1 -297 +296 1 310 10 -297 +296 302 -297 +296 302 -297 +296 302 310 302 -297 +296 302 -297 +296 302 -297 +296 10 -297 +296 302 -297 +296 302 -297 +296 1 71 2 @@ -170496,164 +170490,164 @@ 1 324 301 -297 +296 324 310 1 -297 +296 302 -297 +296 310 -297 +296 302 -297 +296 1 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 1 -297 +296 1 -297 +296 1 -297 +296 303 1 -297 +296 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 302 -297 +296 310 302 1 -297 +296 302 -297 +296 302 -297 +296 310 -297 +296 302 5 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 355 -297 +296 10 302 -297 +296 301 -297 +296 301 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 -297 +296 302 1 -297 +296 306 10 -297 +296 10 -297 +296 306 -297 +296 306 -297 +296 10 -297 +296 306 -297 +296 302 -297 +296 306 -297 +296 306 -297 +296 306 10 -297 +296 356 -297 +296 355 356 -297 +296 310 10 -297 +296 10 -297 +296 10 -297 +296 357 356 -297 +296 357 -297 +296 306 -297 +296 306 302 -297 +296 306 -297 +296 306 -297 +296 302 -297 +296 306 10 -297 +296 306 10 306 -297 +296 310 -297 +296 302 -297 +296 306 302 -297 +296 306 -297 +296 306 -297 +296 355 -297 +296 356 -297 +296 302 -297 +296 356 -297 +296 356 -297 +296 229 301 304 @@ -170705,14 +170699,14 @@ 308 10 301 -297 -301 -297 -306 -297 -321 296 -297 +301 +296 +306 +296 +321 +298 +296 1 2 3 @@ -170969,7 +170963,7 @@ 2 1 71 -111 +110 2 18 71 @@ -171002,7 +170996,7 @@ 1 3 2 -108 +107 70 71 10 @@ -171092,7 +171086,7 @@ 1 10 3 -111 +110 2 71 2 @@ -171199,7 +171193,7 @@ 2 1 2 -108 +107 2 71 212 @@ -171370,9 +171364,9 @@ 1 71 1 -111 +110 71 -108 +107 71 61 1 @@ -171476,7 +171470,7 @@ 10 1 10 -111 +110 10 7 1 @@ -171495,18 +171489,18 @@ 7 10 7 -111 +110 7 10 7 71 1 7 -111 +110 7 13 7 -111 +110 7 10 1 @@ -171993,7 +171987,7 @@ 1 3 10 -111 +110 1 13 1 @@ -172468,7 +172462,7 @@ 1 2 1 -108 +107 2 1 184 @@ -172599,7 +172593,7 @@ 71 1 21 -108 +107 1 40 1 @@ -172861,7 +172855,7 @@ 1 2 1 -108 +107 1 5 71 @@ -172879,7 +172873,7 @@ 1 71 2 -108 +107 18 402 1 @@ -173675,7 +173669,7 @@ 5 10 3 -138 +137 10 5 10 @@ -173975,7 +173969,7 @@ 2 1 77 -108 +107 1 71 1 @@ -174821,7 +174815,7 @@ 2 1 2 -111 +110 1 7 1 @@ -175004,7 +174998,7 @@ 1 2 1 -108 +107 1 2 1 @@ -176455,12 +176449,12 @@ 431 10 71 -135 +134 432 10 -135 +134 433 -135 +134 434 432 10 @@ -176494,9 +176488,9 @@ 71 70 71 -136 +135 10 -136 +135 1 3 1 @@ -176561,20 +176555,20 @@ 5 78 1 -138 +137 5 1 -138 +137 1 -138 +137 1 10 1 -138 +137 440 2 1 -138 +137 2 71 3 @@ -176696,7 +176690,7 @@ 27 446 10 -136 +135 10 9 19 @@ -176801,16 +176795,16 @@ 71 1 19 -138 +137 1 -136 -142 +135 +141 10 -136 +135 10 71 10 -136 +135 71 1 10 @@ -176831,7 +176825,7 @@ 71 19 1 -136 +135 71 1 2 @@ -176875,9 +176869,9 @@ 431 145 67 -138 +137 10 -138 +137 27 456 10 @@ -176902,10 +176896,10 @@ 9 57 10 -142 +141 1 395 -111 +110 13 1 15 @@ -177787,7 +177781,7 @@ 1 3 1 -111 +110 1 3 1 @@ -178192,10 +178186,10 @@ 10 476 3 -139 +138 1 10 -139 +138 1 146 2 @@ -178806,7 +178800,7 @@ 18 75 1 -108 +107 1 10 1 @@ -178830,7 +178824,7 @@ 2 1 41 -138 +137 25 2 6 @@ -178879,7 +178873,7 @@ 1 2 1 -108 +107 71 1 2 @@ -179103,7 +179097,7 @@ 2 71 1 -108 +107 1 2 1 @@ -179145,7 +179139,7 @@ 1 2 1 -108 +107 1 5 3 @@ -179154,7 +179148,7 @@ 1 71 2 -108 +107 18 1 2 @@ -179168,7 +179162,7 @@ 71 1 2 -108 +107 1 2 1 @@ -179207,7 +179201,7 @@ 1 2 1 -108 +107 1 71 1 @@ -182159,7 +182153,7 @@ 2 10 1 -138 +137 1 15 71 @@ -191171,7 +191165,7 @@ 1 82 9 -111 +110 3 19 1 @@ -196200,7 +196194,7 @@ 2 15 1 -111 +110 20 10 2 @@ -196212,7 +196206,7 @@ 19 40 71 -111 +110 2 1 2 @@ -198109,7 +198103,7 @@ 10 1 10 -111 +110 738 19 10 @@ -198795,7 +198789,7 @@ 1 61 1 -108 +107 1 2 74 @@ -198927,7 +198921,7 @@ 71 2 1 -108 +107 71 1 71 @@ -199019,7 +199013,7 @@ 1 3 1 -119 +118 71 2 1 @@ -199123,7 +199117,7 @@ 1 2 1 -119 +118 1 2 1 @@ -199152,7 +199146,7 @@ 1 93 1 -119 +118 1 748 1 @@ -199211,22 +199205,22 @@ 93 1 71 -119 +118 1 749 91 40 -119 +118 1 10 1 40 1 91 -119 +118 2 1 -119 +118 2 3 1 @@ -199336,7 +199330,7 @@ 1 93 70 -138 +137 1 40 71 @@ -199544,11 +199538,11 @@ 5 1 10 -119 +118 1 24 26 -119 +118 2 769 1 @@ -199562,7 +199556,7 @@ 10 772 10 -119 +118 71 1 2 @@ -199601,7 +199595,7 @@ 1 2 1 -119 +118 1 5 1 @@ -199658,9 +199652,9 @@ 1 5 1 -102 +101 10 -102 +101 1 40 1 @@ -199702,7 +199696,7 @@ 1 2 68 -103 +102 10 778 88 @@ -199748,7 +199742,7 @@ 71 1 71 -102 +101 1 71 3 @@ -199796,7 +199790,7 @@ 5 10 1 -102 +101 10 5 10 @@ -200645,10 +200639,10 @@ 1 71 91 +101 102 -103 10 -102 +101 10 1 2 @@ -200755,7 +200749,7 @@ 18 1 3 -111 +110 71 1 2 @@ -200769,7 +200763,7 @@ 1 18 1 -108 +107 71 1 2 @@ -200833,14 +200827,14 @@ 1 10 71 -102 +101 1 10 71 -103 -10 102 10 +101 +10 71 1 71 @@ -200867,9 +200861,9 @@ 10 795 2 -102 +101 10 -102 +101 2 1 5 @@ -200937,7 +200931,7 @@ 40 71 1 -108 +107 18 2 1 @@ -201108,7 +201102,7 @@ 93 2 71 -119 +118 70 5 40 @@ -201120,7 +201114,7 @@ 1 91 1 -119 +118 93 1 2 @@ -201745,7 +201739,7 @@ 12 18 20 -119 +118 2 1 15 @@ -201783,7 +201777,7 @@ 71 2 1 -108 +107 1 2 1 @@ -201803,7 +201797,7 @@ 10 1 829 -119 +118 18 1 10 @@ -201841,7 +201835,7 @@ 71 1 71 -119 +118 2 1 2 @@ -201899,7 +201893,7 @@ 3 10 1 -119 +118 1 10 1 @@ -201958,21 +201952,21 @@ 1 2 1 -111 +110 1 2 1 2 1 2 -111 +110 1 2 1 5 10 1 -119 +118 10 71 1 @@ -202167,7 +202161,7 @@ 1 836 1 -108 +107 1 2 837 @@ -202250,7 +202244,7 @@ 71 2 1 -108 +107 2 1 2 @@ -202502,7 +202496,7 @@ 1 9 1 -138 +137 1 82 1 @@ -202523,7 +202517,7 @@ 1 5 10 -111 +110 1 71 1 @@ -202559,7 +202553,7 @@ 1 2 1 -109 +108 40 1 3 @@ -202675,7 +202669,7 @@ 18 1 71 -108 +107 71 1 2 @@ -205016,7 +205010,7 @@ 1 10 1 -138 +137 1 10 1 @@ -205028,13 +205022,13 @@ 1 10 1 -138 +137 10 5 10 1 10 -138 +137 10 5 10 @@ -205197,7 +205191,7 @@ 61 18 1 -138 +137 15 5 10 @@ -205236,9 +205230,9 @@ 1 70 10 -138 +137 10 -138 +137 1 10 2 @@ -205312,7 +205306,7 @@ 10 5 1 -138 +137 1 2 71 @@ -205450,7 +205444,7 @@ 2 10 1 -111 +110 71 860 2 @@ -205750,8 +205744,6 @@ 0||0|0 2|othe|13|10 2|othe|12|10 -1 -3||12|10 2 2||13|10 2||12|10 @@ -205945,6 +205937,8 @@ 2||12|10 1|ad|13|10 1 +3||12|10 +1 1||12|10 1 1||13|10 @@ -206464,12 +206458,12 @@ 1 3|ing|12|10 1 -4||14|10 -1 3||14|10 2 4||14|10 0||50|50 +1 +4||14|10 2 0||0|0 4||14|10 diff --git a/english/src/test/java/org/apache/lucene/morphology/english/EnglishAnalayzerTest.java b/english/src/test/java/org/apache/lucene/morphology/english/EnglishAnalayzerTest.java index c74f9aa..2ad4b43 100644 --- a/english/src/test/java/org/apache/lucene/morphology/english/EnglishAnalayzerTest.java +++ b/english/src/test/java/org/apache/lucene/morphology/english/EnglishAnalayzerTest.java @@ -32,7 +32,7 @@ import java.util.HashSet; public class EnglishAnalayzerTest { @Test - public void shoudGiveCorretWords() throws IOException { + public void shouldGiveCorrectWords() throws IOException { InputStream stream = this.getClass().getResourceAsStream("/org/apache/lucene/morphology/english/englsih-analayzer-answer.txt"); BufferedReader breader = new BufferedReader(new InputStreamReader(stream, "UTF-8")); String[] strings = breader.readLine().replaceAll(" +", " ").trim().split(" "); diff --git a/morph/src/main/java/org/apache/lucene/morphology/Heuristic.java b/morph/src/main/java/org/apache/lucene/morphology/Heuristic.java index b805361..4335f30 100644 --- a/morph/src/main/java/org/apache/lucene/morphology/Heuristic.java +++ b/morph/src/main/java/org/apache/lucene/morphology/Heuristic.java @@ -19,33 +19,33 @@ import java.io.Serializable; public class Heuristic implements Serializable { - byte actualSuffixLengh; + byte actualSuffixLength; String actualNormalSuffix; short formMorphInfo; short normalFormMorphInfo; public Heuristic(String s) { String[] strings = s.split("\\|"); - actualSuffixLengh = Byte.valueOf(strings[0]); + actualSuffixLength = Byte.valueOf(strings[0]); actualNormalSuffix = strings[1]; formMorphInfo = Short.valueOf(strings[2]); normalFormMorphInfo = Short.valueOf(strings[3]); } - public Heuristic(byte actualSuffixLengh, String actualNormalSuffix, short formMorphInfo, short normalFormMorphInfo) { - this.actualSuffixLengh = actualSuffixLengh; + public Heuristic(byte actualSuffixLength, String actualNormalSuffix, short formMorphInfo, short normalFormMorphInfo) { + this.actualSuffixLength = actualSuffixLength; this.actualNormalSuffix = actualNormalSuffix; this.formMorphInfo = formMorphInfo; this.normalFormMorphInfo = normalFormMorphInfo; } - public String transofrmWord(String w) { - if (w.length() - actualSuffixLengh < 0) return w; - return w.substring(0, w.length() - actualSuffixLengh) + actualNormalSuffix; + public String transformWord(String w) { + if (w.length() - actualSuffixLength < 0) return w; + return w.substring(0, w.length() - actualSuffixLength) + actualNormalSuffix; } - public byte getActualSuffixLengh() { - return actualSuffixLengh; + public byte getActualSuffixLength() { + return actualSuffixLength; } public String getActualNormalSuffix() { @@ -67,7 +67,7 @@ public class Heuristic implements Serializable { Heuristic heuristic = (Heuristic) o; - if (actualSuffixLengh != heuristic.actualSuffixLengh) return false; + if (actualSuffixLength != heuristic.actualSuffixLength) return false; if (formMorphInfo != heuristic.formMorphInfo) return false; if (normalFormMorphInfo != heuristic.normalFormMorphInfo) return false; if (actualNormalSuffix != null ? !actualNormalSuffix.equals(heuristic.actualNormalSuffix) : heuristic.actualNormalSuffix != null) @@ -78,7 +78,7 @@ public class Heuristic implements Serializable { @Override public int hashCode() { - int result = (int) actualSuffixLengh; + int result = (int) actualSuffixLength; result = 31 * result + (actualNormalSuffix != null ? actualNormalSuffix.hashCode() : 0); result = 31 * result + (int) formMorphInfo; result = 31 * result + (int) normalFormMorphInfo; @@ -87,6 +87,6 @@ public class Heuristic implements Serializable { @Override public String toString() { - return "" + actualSuffixLengh + "|" + actualNormalSuffix + "|" + formMorphInfo + "|" + normalFormMorphInfo; + return "" + actualSuffixLength + "|" + actualNormalSuffix + "|" + formMorphInfo + "|" + normalFormMorphInfo; } } diff --git a/morph/src/main/java/org/apache/lucene/morphology/LuceneMorphology.java b/morph/src/main/java/org/apache/lucene/morphology/LuceneMorphology.java index b2515d1..7e97b6b 100644 --- a/morph/src/main/java/org/apache/lucene/morphology/LuceneMorphology.java +++ b/morph/src/main/java/org/apache/lucene/morphology/LuceneMorphology.java @@ -55,7 +55,7 @@ public class LuceneMorphology extends MorphologyImpl { for (Heuristic heuristic : heuristics) { boolean isAdded = true; for (Heuristic ch : result) { - isAdded = isAdded && !(ch.getActualNormalSuffix().equals(heuristic.getActualNormalSuffix()) && (ch.getActualSuffixLengh() == heuristic.getActualSuffixLengh())); + isAdded = isAdded && !(ch.getActualNormalSuffix().equals(heuristic.getActualNormalSuffix()) && (ch.getActualSuffixLength() == heuristic.getActualSuffixLength())); } if (isAdded) { result.add(heuristic); diff --git a/morph/src/main/java/org/apache/lucene/morphology/MorphologyImpl.java b/morph/src/main/java/org/apache/lucene/morphology/MorphologyImpl.java index bba682f..5efca38 100644 --- a/morph/src/main/java/org/apache/lucene/morphology/MorphologyImpl.java +++ b/morph/src/main/java/org/apache/lucene/morphology/MorphologyImpl.java @@ -68,7 +68,7 @@ public class MorphologyImpl implements Morphology { int[] ints = decoderEncoder.encodeToArray(revertWord(s)); int ruleId = findRuleId(ints); for (Heuristic h : rules[rulesId[ruleId]]) { - result.add(h.transofrmWord(s)); + result.add(h.transformWord(s)); } return result; } @@ -78,7 +78,7 @@ public class MorphologyImpl implements Morphology { int[] ints = decoderEncoder.encodeToArray(revertWord(s)); int ruleId = findRuleId(ints); for (Heuristic h : rules[rulesId[ruleId]]) { - result.add(h.transofrmWord(s) + "|" + grammaInfo[h.getFormMorphInfo()]); + result.add(h.transformWord(s) + "|" + grammaInfo[h.getFormMorphInfo()]); } return result; } @@ -180,9 +180,9 @@ public class MorphologyImpl implements Morphology { rules = new Heuristic[amount][]; for (int i = 0; i < amount; i++) { String s1 = bufferedReader.readLine(); - Integer ruleLenght = Integer.valueOf(s1); - rules[i] = new Heuristic[ruleLenght]; - for (int j = 0; j < ruleLenght; j++) { + Integer ruleLength = Integer.valueOf(s1); + rules[i] = new Heuristic[ruleLength]; + for (int j = 0; j < ruleLength; j++) { rules[i][j] = new Heuristic(bufferedReader.readLine()); } } @@ -197,7 +197,6 @@ public class MorphologyImpl implements Morphology { } private void readSeparators(BufferedReader bufferedReader, Integer amount) throws IOException { - HashSet intetger = new HashSet(); separators = new int[amount][]; for (int i = 0; i < amount; i++) { String s1 = bufferedReader.readLine(); @@ -206,7 +205,6 @@ public class MorphologyImpl implements Morphology { for (int j = 0; j < wordLenght; j++) { separators[i][j] = Integer.valueOf(bufferedReader.readLine()); } - intetger.add(separators[i][0]); } }